$Revision: 1.70 $
$Date: 2003/07/14 09:51:35 $
$Author: fedorov $
$tag_prefix: dfmakefiles_ $

$Log: .release,v $
Revision 1.70  2003/07/14 09:51:35  fedorov
../INSTALL.GENERIC
* Prerequisit for GNU make version changed from 3.76+ to 3.77+
  due to using of user defined 'call' function
* kgcc notion removed

GNU-MAKE-COMPATIBILITY added

* inst phony targets moved from phony.rules.make to inst.rules.make

inst.rules.make
* missing empty rules restored
* {exec_,lkmod_,}prefix_dir_uninstall targets added to clean up upper level
  empty directories on uninstall

rmdir_p
* usage added

---------------------------------------------------------------------------

Revision 1.69  2003/07/13 12:17:52  fedorov
newrel.sh now accepts multiple file names instead of single module

---------------------------------------------------------------------------

Revision 1.68  2003/07/13 11:48:00  fedorov
tiny change in ../INSTALL.GENERIC

---------------------------------------------------------------------------

Revision 1.67  2003/07/07 18:54:08  fedorov
* bug fixed: extr '-' was appended to tar file name w/o EXTRA_VERSION_DATE
  fix: date -> date_suffix

* don't try to newrel/checkrel if .release absent
---------------------------------------------------------------------------

Revision 1.66  2003/07/07 13:34:14  fedorov
Great changes:

top Makefile:
* new directory recursion method - generate list, sort it with dfmakefiles
  and libraries dirs (with .libname file marks) first.
  Allows to single pass for traverse directories!
* automatic absolute TOP_DIR; automatic local .defs.make with TOP_DIR
* .rules.make added, the same as for .defs.make before
* echoing message on creating/deleting .defs.make and .subdirs.make

* new step: BUILD_TYPE implemented

* subdirs.make added - generate subdirs list (.subdirs.make)
  as makefile fragment

* new script code to search Linux kernel headers in that order:
  LKSRCDIR, LKVERSION, INCDIRS, `uname -r`
  KERNEL_RELEASE -> lkversion and so forth

* /usr/lib/kernel/include added to search path for kernel headers
  in order to adapt to Alt/Linux perversions

* MAKEFILE-LAYOUT added - description of Makefile layout

* only user-supplied parameter variables should be in upper case.
  all others lowercased

* use ?= conditional assignment VAR ?= VALUE instead of
  ifndef VAR; VAR = VALUE; endif
* single common $(date) for rules.make and dist.rules.make

* LIB_NAME from .libname file
* LKMOD, LKMOD_NAME from .lkmodname file
* dfmake_dir, dfmake_defs dfmake_rules vars added
* phony.defs.make -> phony.rules.make
* avoid using := whenever possible without needs

* default values for SRCS and OBJS in dfmakefiles/defs.make
* TOP_INC_{DIR,FILES} added - list of headers to link in top_inc_dir
  at config stage
* RELEASE_FILES added for newrel and relcheck targets
* EXTRA_{CLEAN,CVSIGNORE,DEPS} -> %_FILES
* NOINSTALL -> DONT_INSTALL
* EXECS -> BIN_NAMES, EXECPROJ -> BIN_NAME
* RDIR -> RCOPY_DIR

* new rmdir_p (like rmdir -p) script added, RMDIR_P

* no kgcc checks

---------------------------------------------------------------------------

Revision 1.65  2003/05/20 18:15:52  fedorov
* config.sh
  /usr/lib/kernel/include added to search path for kernel headers
  in order to adapt to Alt/Linux perversions

Revision 1.64  2003/05/20 07:41:52  fedorov
* /usr/lib/kernel/$KERNEL_RELEASE/include added to search path of
  linux kernel headers (ALT Linux Master 2.2)
* -nostdinc -I$GCC_INC_DIR -I/usr/include options added to lkversion
  compilation
* use user supplied KERNEL_RELEASE env. var. for point to target kernel
  on improperly configured hosts
---------------------------------------------------------------------------

Revision 1.63  2003/05/15 09:35:17  fedorov
* install targets section moved to inst.rules.make
* phony targets moved to phony.defs.make
* dist target section moved to dist.rules.make
* distprep target added;
  make symlinks from $(TOPDIR) to $(DIST_FILES_TO_TOPDIR) for tarball
* $TOPDIR/{INSTALL.GENERIC,Makefile} are included in tarball by default
* it is not need to exclude files which are cleaned on distclean
* shtool added for INSTALL and MKDIR; SHTOOL var added and used

* top dirs generated at config stage, dir targets removed

* user supplied dir vars (PREFIX ...) uppercased
* TOP([A-Z]*)DIR -> TOP_\1_DIR
* LIB_FILE:=lib$(LIB_NAME).a
  TOP_LIB_FILE:=$(TOP_LIB_DIR)/$(LIB_FILE)
* EXTRA_EXPORT_EXCLUDE_FILES -> DIST_EXCLUDE_FILES
* NOEXPORT parameter removed
* EXTRA_EXPORT_EXCLUDE_FILES -> DIST_EXCLUDE_FILES
* EXTRA_EXPORT_DEPS -> EXTRA_DIST_DEPS
* export targets removed, dist used
* use REQUIRED_PACKAGES instead of EXTRA_FULLEXPORT_FILES
* No more "EXPORT" name used!
* export targets removed, dist used
* INST_ prepended to install dir/files vars

* use "find . -name Makefile" instead of descend script
* use := assignment for faster use of shell and wildcard functions

* make object files suffix by appending .o to source name
  instead of replacing; used for different object files handling
  with the source type

* missing conf_install targets are phony
* verbose flag values parsing fixed
* multiple ifeq "$(findstring ..." replaced by ifneq "$(filter ..."
* shell compatibility: no use 'function' keyword; use $(MKDIR) and -m 755
* -nostdinc support added for kernel modules
* GCCFLAG_* GXXFLAG_* vars: option type (f,W) prefix added
* -Wno-deprecated -fpermissive gcc flags added to non-strict mode
  -Wabi gcc flag added to strict mode
  -fno-use-cxa-atexit gcc flag to LKMOD section
  -Wno-non-virtual-dtor gcc options checking added
  -fvtable-gc added and commented out - it caused
   __cxa_pure_virtual references
  -finline-limit=3000 removed for C++

* lkmod target added
* .ko added to exclude-file-list for lkmod
* use $(LKMOD_FILE) instead of $(LKMOD_NAME) where appropriate

config-check.sh
	useless unquoted fmt_suffix call removed
config.sh
	* mistakely used fmt_suffix call removed
	* empty log lines moved into condition blocks
defs.make
	* lkmod_suffix added (now empty, will be .ko for 2.5 kernels)
	* use $(error ) make function for message "no rules for target $@"
	  to stop making
inst.rules.make
	* be smart with multiple targets - use functions to generate
	* headers_* targets removed, use include_ instead
	* use addsuffix function to reduce [un]install deps complexity
	* lib_file_* -> lib_files_* for easy target names generation
progdefs.make
	* MAKE := $(MAKE) -r to clean buil-in rules
	* LNS -> LN_S; LNS removed, only LN_S is useful
rules.make
	* make bug work-around
	* missing .o target in dep_gen_cmd script
	* %.s: -> %.c.s:
	* depend files generation changed: && and || shell control operators
	  used insted of 'if test' conditions
	* remove all C++ suffixes except the .cc
	* dep generation BUGs fixed:
	  1: '&' used in sed's regexp replacement is not stands as
		'rest of pattern' but as 'whole pattern matched'
	  2: sed's output was lost and unprocessed file was used as result
	* subst . to \. for file names in sed command for deps generation
	* sed's symbol '/' replaced by ! for avoid problems with direcory
	  separator
	* all source and make files marked as targets with empty command
	  to prune make's rule searching
	* %.d targets renamed to %.SRCSUFFIX.d to better prerequisities
	  handling
	* use := for $(wildcard .release) for speed-up
	* [un]mark_list_dont_install fixed
	* it is not need to exclude files which are cleaned on distclean
	* remove .cvsignoreclean from deps of distclean - .cvsignore
	  is in exclude pattern now
	* "cd ." removed
---------------------------------------------------------------------------

Revision 1.62  2003/01/01 10:52:45  fedorov
* extensive re-work of config.sh;
  use config.guess and config.sub from autoconf
* quoting fixed in many files

------------------------------------------------------------------------

Revision 1.61  2002/06/02 08:01:46  fedorov
check-lkh-patch.sh
check-lkh-patches.sh
	usage text cleanence

------------------------------------------------------------------------

Revision 1.60  2002/03/29 10:45:18  fedorov

config.sh
newrel.sh
descend-make.sh
	* echo redirection to stderr fixed

rules.make
	* variable quoted in mark_list_dont_install 'for' loop
	  in case of empty value

------------------------------------------------------------------------

Revision 1.59  2002/03/17 13:05:11  fedorov

config.sh
	* more alignment
	* check_g{cc,xx}_flag sets var specified as second arg
	* parameters number checking added to functions

config.sh
defs.make
	* almost useless gcc-3 warning options added,
	  -Wdisabled-optimization used only

------------------------------------------------------------------------

Revision 1.58  2002/02/19 12:08:34  fedorov
rules.make: export date format fixed

------------------------------------------------------------------------

Revision 1.57  2002/02/15 02:31:53  fedorov
config.sh
defs.make
	-Wpmf-conversions flag checking

------------------------------------------------------------------------

Revision 1.56  2002/01/25 14:06:13  fedorov
[un]mark_list_dont_install target quoting fixing ping-pong fixed

------------------------------------------------------------------------

Revision 1.55  2002/01/11 12:03:55  fedorov
config.sh
defs.make
	* STRICT env. var. checking at config stage added
	* warning supressing option -w added if compilation w/o STRICT
	  env. var.
	* CXXFLAG_VTABLE_THUNKS checking added
	* gcc flag -fno-keep-static-consts checking added
	* -fno-enforce-eh-specs C++ flag added
	* linux kernel processor flags must be defined for both of
	  C and C++ flags
	* -finline-limit option is in gcc-3 only
	* -Weffc++ flag checking removed

lk-patch-functions.sh
patch-lk-headers.sh
	* patch file name scheme changed to allow multiple separate
	  patches to one header file to make patching more reliable

------------------------------------------------------------------------

Revision 1.54  2001/12/27 11:23:35  fedorov
linux kernel patch checking automated

config.sh
	* DFCONFIG_TIME_STRICT added
	* 'for' loop does not need "in $@" construct if it is only one

functions.sh -> cvs-rev-tag-functions.sh

check-lkh-patch.sh
check-lkh-patches.sh
lk-patch-functions.sh
patch-lk-headers.sh
	* created
defs.make
	* DFCONFIG_TIME_STRICT added
mkrelh.sh
newrel.sh
	* using common cvs-rev-tag-functions.sh instead of copying them
rules.make
	* pwd for . fixed for directory symlinks (export targets)
	* export release date format fixed

------------------------------------------------------------------------

Revision 1.53  2001/12/12 05:39:05  fedorov
* cleaned linux kernel headers reimplemented by patches,
  not need to keep the same files for all of versions

* lkversplit added

* Linux kernel version and config handling reimplemented

* truncate slashes at end of directories

* -Wbad-function-cast, -Wstrict-prototypes -fstrict-prototype
  added to checked options since gcc 2.96 ingnores or deprecate
  them with warnings

* gcc 2.96 does not recognize -m586 and -m686,
  -mpentium and -mpentiumpro used instead.

progdefs.make
	* MV is "mv -f" now
rules.make
	* %.ver target: now handling case with moving the .ver file
	  to the same directory

------------------------------------------------------------------------

Revision 1.52  2001/11/30 14:41:56  fedorov
config.sh
	* print suffix righter
	* 'which' stderr output should be redirected to /dev/null
	* use kgcc whenever possible
	* always use '-W -Werror' flags to check compiler options
	* -Wbad-function-cast, -Wstrict-prototypes -fstrict-prototype
	  added to checked options since gcc 2.96 ingnore or deprecate
	  them with warnings

defs.make
	* gcc 2.96 does not recognize -m586 and -m686,
	  so -mpentium and -mpentiumpro used instead
------------------------------------------------------------------------

Revision 1.51  2001/10/22 11:12:09  fedorov
defs.make:
	defs.make: *export, .cvsignore, relcheck, newrel targets
	does not needs configuration;
rules.make:
	include $(deps) conditions reorganized;
	fixed genksyms command for old format with another target
	directory case

Revision 1.50  2001/09/19 05:43:47  fedorov
defs.make
	linux/modversions.h included only for linux kernel module projects
------------------------------------------------------------------------

Revision 1.49  2001/09/17 08:50:19  fedorov
common linux kernel module support added;
LK_ prefix prepended to Linux CONFIG_*;
kmod* -> lkmod*;

defs.make
	multiple inclusion prohibitor added;
	"all", "none" empty targets placed first;
------------------------------------------------------------------------

Revision 1.48  2001/09/12 13:45:25  fedorov
great enhancements in checkrel.pl;
optional date suffix fixed in rules.make.

Revision 1.47  2001/09/11 13:35:22  fedorov
ALL_C*_FLAGS moved from defs.make to rules.make

config.sh
	linux kernel version detection enhanced;
	Host and Target kernel versions marked.
rules.make
	EXTRA_EXPORT_VERSION replaced by EXTRA_VERSION_DATE flag;
	.release.h generation with EXTRA_VERSION_DATE.
mkrelh.sh
	extra version argument added
------------------------------------------------------------------------

Revision 1.46  2001/09/08 11:15:55  fedorov
linux kernel module symbol versioning support added
genksyms detection added

KERNEL_RELEASE no more supplied by user, it is obtained from
target kernel headers.

CONFIG_* flags from target kernel headers.

CONFIG_TIME_* -> DFCONFIG_TIME_*

verbose handling fixed;

PRE_INC_DIRS added;
EXTRA_EXPORT_VERSION added;
__GENDEPS__ symbol definition during dependence file generation;

message spaces adjusted
------------------------------------------------------------------------

Revision 1.45  2001/08/20 10:58:45  fedorov
.config.make and config target handling enhanced;

verbose flag variables handling moved from rules.make to defs.make;

CC and CXX version printing at config stage.

exporting package with all other required packages feature added;
use optional PACKAGE_NAME parameter variable to change default by
directory names;

marking packages to not install from main package feature added;

install rules fixed to avoid creating install directories w/o request.

*.lo, *.so, .dirtouch .dont-descend .dont-install flag file names
added to exclude-file-list*; obsolete .stop-descend removed;
------------------------------------------------------------------------

Revision 1.44  2001/08/18 12:34:36  fedorov
defs.make:
	LIBFILES commented out (unused);
	-lforms removed from XLD_FLAGS.

Revision 1.43  2001/08/10 14:11:55  fedorov
relaxing compiler flags w/o STRICT env var;
'> ' prepended to echo messages;
Copyright line format changed.

Revision 1.42  2001/06/24 11:31:46  fedorov
kernel modules installation stuff added - kmod_prefix, kmod_*install;
'> ' prepended to echo messages.

Revision 1.41  2001/06/09 08:16:05  fedorov
progdefs.make
	LN_S added
rules.make
	core files removing whildcard expanded

Revision 1.40  2001/04/10 12:04:02  fedorov
defs.make:
	directory handling shell function fixed

Revision 1.39  2001/04/10 10:35:29  fedorov
    defs.make:	extra variable quotation fixed
progdefs.make:	CXXPP support added
   rules.make:	use ssh with rsync in rcopy rule

Revision 1.38  2001/04/04 12:19:41  fedorov
export: fixed

Revision 1.37  2001/04/04 11:52:34  fedorov
directory handling cleanup
config.sh:
	CXXPP added;
	<linux/version.h> and <linux/modversions.h> handling enhanced
	-fhonor-std C++ flag support added
defs.make:
	{mr,rm}_dir functions fixed
	-Wctor-dtor-privacy C++ flag added
rules.make:
	some "install" has no -p flag

Revision 1.36  2001/03/03 10:49:13  fedorov
config.sh:
	use sed to parse KERNEL_RELEASE, commented out
descend[-make].sh:
	original copyright remembered

Revision 1.35  2001/02/01 18:17:11  fedorov
config.sh: space ajusted in output log

Revision 1.34  2001/02/01 14:48:39  fedorov
config time directory env. vars checking

Revision 1.33  2001/01/26 15:25:43  fedorov
defs.make:
	bug in {mk,rm}dir_function fixed
rules.make:
	docdir added;
	conf. files vars and rules added;
	{BIN,CONF,LIB,INCLUDE,DOC}_DIR var defaults added

Revision 1.32  2001/01/20 14:35:00  fedorov
export command fixed

Revision 1.31  2001/01/20 14:15:19  fedorov
LIBDIR -> TOPLIBDIR; TOPINCDIR, TOPEXPDIR vars added

Makefile:
	$(TOPDIR)/include creating/removing dynamically, need not to export.
config.sh:
	$(TOPDIR)/include creating/removing dynamically, need not to export;
	OS name detection added; OS release parsing for Linux only;
defs.make:
	{mk,rm}dir_function, {mk,rm}dir_target_cmd added and used.
rules.make:
	targets for directories making added;
	command lines for targets concatenated for speed.

Revision 1.30  2000/12/26 15:33:32  fedorov
[un]install targets enhanced significally;
dinamically creating/removing lib,export directories - don't export them;
default suffix rules deleted;
default rule stub added;
$topdir/lib/* library presence dependency bug fixed.

Revision 1.29  2000/12/22 09:02:35  fedorov
use $(CC) to link executables, reserve $(LD) to special linking

Revision 1.28  2000/10/05 12:31:52  fedorov
rules.make: RHOSTDIR -> RDIR

Revision 1.27  2000/09/22 13:12:43  fedorov
-cz options added to rsync command

Revision 1.26  2000/09/20 09:20:36  fedorov
RHOSTDIR env. var. used in rcopy: target rule

Revision 1.25  2000/09/16 09:06:12  fedorov
use '&&' as a shell commands separator instead of ';'.

Revision 1.24  2000/09/07 17:57:22  fedorov
doc [un]install support added

Revision 1.23  2000/09/07 13:38:25  fedorov
defs.make:
	[un]install target names changed;
	KERNEL_RELEASE by default added.
rules.make:
	[un]install target names changed;
	uninstall does not need dependencies

Revision 1.22  2000/08/26 13:36:23  fedorov
.release tag prefix support added

Revision 1.21  2000/08/12 11:03:19  fedorov
linux/modversions.h support added

Revision 1.20  2000/08/11 08:17:41  fedorov
Makefile:
	$(TOPDIR)/README* removed
defs.make:
	supress assembler warnings gcc option added
newrel.sh:
	module name argument added (useless)
rules.make:
	module name argument added to newrel.sh (useless)
	.release.h added to
	EXTRA_CVSIGNORE, EXTRA_EXPORT_EXCLUDE_FILES, EXTRA_CLEAN

Revision 1.19  2000/07/13 07:45:52  fedorov
many great improvements

Revision 1.18  2000/02/24 13:04:09  fedorov
$TOPDIR/include/linux/{Makefile,version.h} handling added
new makefile var EXTRA_EXPORT_EXCLUDE_FILES added

Revision 1.17  2000/02/24 10:02:55  fedorov
defs.make: INCDIRS var loop breaked

Revision 1.16  1996/08/21 12:20:35  fedorov
kernel release components support added.

Revision 1.15  2000/02/14 08:35:36  fedorov
config.sh:
	shell functions feature used;
defs.make:
	-fno-implicit-inline-templates added

Revision 1.14  2000/02/10 14:17:01  fedorov
defs.make: -Werror commented - latest glibc 2.1 headers generates warnings.

Revision 1.13  2000/01/27 15:19:06  fedorov
.release.h removed from CVSIGNORE, add it to local Makefiles

Revision 1.12  2000/01/24 07:59:01  fedorov
.release.h support re-implemented

Revision 1.11  2000/01/23 14:43:13  fedorov
.release.h support added

Revision 1.10  2000/01/23 14:40:09  fedorov
.release.h support added

Revision 1.9  2000/01/22 08:53:55  fedorov
many enhancements

Revision 1.8  2000/01/03 10:00:06  fedorov
C*_NO_STRICT_ALIASING removed from default flags

Revision 1.7  1999/12/30 13:12:25  fedorov
C*_NO_STRICT_ALIASING flags fixed; /usr/X11/include removed.

Revision 1.6  1999/12/26 15:28:36  fedorov
*** empty log message ***

Revision 1.5  1999/12/26 14:55:30  fedorov
.config.make dependency added

Revision 1.4  1999/12/22 14:54:35  fedorov
rules.make: don't create dependency file if generation failed;
library contents don't include depend files.

Revision 1.3  1999/12/16 13:22:29  fedorov
small changes

Revision 1.2  1999/12/03 06:18:43  fedorov
release system completed.

Revision 1.1  1999/12/02 11:46:29  fedorov
release version system created


