buildtools/jam
Franck LeCodeur 4b7b6c63e8 jam: Remove ignored archiver flag modifier
The call of make in buildtools/jam produces the following output:

LINKLIBS= ./jam0
...patience...
...found 271 target(s)...
...updating 33 target(s)...
MkDir1 bin.linuxx86
Cc bin.linuxx86/builtins.o
< reduced output >
Cc bin.linuxx86/variable.o
Archive bin.linuxx86/libjam.a
ar: `u' modifier ignored since `D' is the default (see `U')
ar: creating bin.linuxx86/libjam.a
...

'make' bootstraps 'jam0' which calls 'ar' to create the static library 'libjam.a'.
The call looks like this:

ar ru bin.linuxx86/libjam.a bin.linuxx86/builtins.o <reduced output> bin.linuxx86/variable.o

The modifier 'u' gets ignored.

The underlying cause is that the build was done in deterministic mode ('D'), a.o. NOT using timestamps, which is completely fine.
But because of this the archiver tool (ar) can never update files in the archive based on timestamps.
"ru" means replace files (flag 'r') only if they are updated (flag suffix 'u') based on timestamps.
This patch removes the flag suffix 'u'.

Change-Id: I57fa2d50c2081ee66d1b71648714e773ecb7cd59
Reviewed-on: https://review.haiku-os.org/c/buildtools/+/4419
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-13 06:10:36 +00:00
..
beos_stat_cache.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
beos_stat_cache.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
Build.com Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
Build.mpw Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
builtins.c Increase MAXSYM and add sanity checks. 2017-07-16 19:40:50 +02:00
builtins.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
command.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
command.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
compile.c jam: add internal dependencies for multi-file generating actions 2014-10-21 20:57:59 +13:00
compile.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
execcmd.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
execmac.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
execunix.c jam: Fix build warning. Add missing include for Linux. 2021-08-30 16:36:29 +00:00
execvms.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
expand.c jam: Fix build warning. Correct expression. 2021-09-02 19:32:44 +00:00
expand.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
filemac.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
filent.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
fileos2.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
filesys.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
fileunix.c jam: Fix build warnings. Add missing include for POSIX compliant systems. 2021-09-02 19:34:43 +00:00
filevms.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
glob.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
hash.c Fix format-related warnings during build of jam. 2014-08-10 17:16:21 +02:00
hash.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
hcache.c Fix format-related warnings during build of jam. 2014-08-10 17:16:21 +02:00
hcache.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
headers.c Increase MAXSYM and add sanity checks. 2017-07-16 19:40:50 +02:00
headers.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
jam.c buildtools: Remove build warnings which are caused by missing return type declarations. 2021-08-27 13:29:07 +00:00
jam.h jam: add an option to generate compile_commands.json 2020-09-28 07:08:15 +00:00
Jam.html Created new jam variable JAMJOBS, which is set by the -jx flag. 2011-12-22 21:54:22 +00:00
Jambase jam: Remove ignored archiver flag modifier 2021-09-13 06:10:36 +00:00
jambase.c jam: Remove ignored archiver flag modifier 2021-09-13 06:10:36 +00:00
jambase.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
Jambase.html Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
Jamfile * should now be able to build jam on Zeta, too. 2006-08-13 14:28:32 +00:00
Jamfile.html Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
jamgram.c Generated files. 2008-03-28 14:15:10 +00:00
jamgram.h Generated files. 2008-03-28 14:15:10 +00:00
jamgram.y Generated files. 2008-03-28 14:15:10 +00:00
jamgram.yy Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
jamgramtab.h Generated files. 2008-03-28 14:15:10 +00:00
jcache.c jam: jcache: Accept empty input files 2019-08-13 20:22:35 +00:00
jcache.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
lists.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
lists.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
make1.c jam: add an option to generate compile_commands.json 2020-09-28 07:08:15 +00:00
make.c jam: Fix warning. Include missing header file. 2021-08-28 06:25:13 +00:00
make.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
Makefile Revert "jam: Fix build/run on Windows." 2015-08-07 17:22:50 +02:00
mkjambase.c buildtools: Remove build warnings which are caused by missing return type declarations. 2021-08-27 13:29:07 +00:00
newstr.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
newstr.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
option.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
option.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
parse.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
parse.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
patchlevel.h Bumped up the VERSION and made JAMVERSYM identical to it. 2011-12-22 21:55:54 +00:00
pathmac.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
pathsys.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
pathunix.c Fix warnings when building jam. 2014-05-12 23:18:24 +02:00
pathvms.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
Porting Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
README Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
README.CHANGES Make the ..patience.. count comparison postinc so it shows one at the start and use every 10k target instead. 2011-05-01 12:18:17 +00:00
regexp.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
regexp.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
RELNOTES Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
rules.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
rules.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
scan.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
scan.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
search.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
search.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
StatCacheServer.cpp StatCacheServer changes: 2007-06-03 16:25:35 +00:00
StatCacheServer.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
StatCacheServer.rdef Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
StatCacheServerImpl.h StatCacheServer changes: 2007-06-03 16:25:35 +00:00
timestamp.c Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
timestamp.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
variable.c jam: Fix warning. Argument has type long int but indicated format was int. 2021-08-30 16:34:35 +00:00
variable.h Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00
yyacc Moved jam into the buildtools modules, where it belongs. 2005-12-29 18:40:48 +00:00

Jam - make(1) redux

    /+\
    +\	Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
    \+/

    This is Release 2.5 of Jam, a make-like program.

    License is hereby granted to use this software and distribute it
    freely, as long as this copyright notice is retained and modifications 
    are clearly marked.

    ALL WARRANTIES ARE HEREBY DISCLAIMED.

FEATURES

   ->	Jam is a make(1) replacement that makes building simple things
	simple and building complicated things manageable.

   ->	Jam's language is expressive, making Jamfiles (c.f. Makefiles) 
	compact.  Here's a sample:

	    Main smail : main.c map.c resolve.c deliver.c
			 misc.c parser.y alias.c pw.c headers.c
			 scanner.l getpath.c str.c ;

	This builds "smail" from a dozen source files.  Jam handles 
	header file dependencies automatically and on-the-fly.

   ->	Jam is very portable: it runs on UNIX, VMS, Mac, and NT.  
	Most Jamfiles themselves are portable, like the sample above.

   ->   Jam is unintrusive: it is small, it has negligible CPU 
	overhead, and it doesn't create any of its own funny files
	(c.f. Odin, nmake, SunOS make).

   ->	Jam can build large projects spread across many directories
	in one pass, without recursing, tracking the relationships
	among all files. Jam can do this with multiple, concurrent 
	processes.

   ->   Jam isn't under the blinkin GNU copyright, so you can 
	incorporate it into commercial products.


INFORMATION GUIDE

    Jam.html		jam and language reference.

    Jambase.html	Reference for the Jambase boilerplate file.

    Jamfile.html	Easy reading on creating a Jamfile and using jam.

    RELNOTES		Release 2.3 release notes.

    Porting		Notes on porting jam to wildcat platforms.

    README		This file.  Includes installation instructions.

    jam.c		Contains the jam command's main() as well as an 
			introduction to the code, for serious hackers.


INSTALLING

    The Makefile (UNIX, NT), build.com (VMS), Build.mpw (Mac MPW) are 
    for bootstrapping.  Once jam is built, it can rebuild itself.

    UNIX

	Build jam with make(1) on:

	    Platform		$(OS) 
	    -------------------------
	    AIX			AIX		*	
	    BSD/386 1.0		BSDI
	    COHERENT/386	COHERENT
	    DGUX 5.4		DGUX
	    FreeBSD		FREEBSD
	    HPUX 9.0		HPUX
	    IRIX 5.0		IRIX
	    Linux		LINUX
	    NEXTSTEP 3.2	NEXT
	    OSF/1		OSF
	    PTX V2.1.0		PTX
	    Solaris 2		SOLARIS		*
	    SunOS4.1		SUNOS
	    Ultrix 4.2		ULTRIX
	    BeOS		BEOS		*

	    * requires editing Makefile

    Windows

	Build jam with nmake on:

	    Platform		$(OS)
	    -------------------------
	    NT			NT		*
	    OS/2		OS2		*

	The NT MAXLINE (command line length) is still set in jam.h to
	996, which was apparently the NT 3.5 limit. On 4.0, the limit 
	is somewhere around 10K. For now, you can increase MAXLINE in 
	jam.h so that a jam running on 4.0 will use the full command
	line length, but that jam.exe will fail miserably on the older OS.

	On NT, a variable must be set before invoking jam to tell
	it where the C compiler lives.  The name of this variable
	depends on which compiler you are using:

	    BCCROOT:	The Borland C compiler
	    MSVCDIR:	The Microsoft Compiler 6.0 (for NT)
	    MSVCNT:	The Microsoft Compiler 5.0 (for NT)
	    MSVC:	The Microsoft Compiler 1.5 (for Windows)

	Only MSVCNT and MSVCDIR have really been tested and are known
	to work.

    Macintosh

	Build jam with Build.mpw on:

	    Platform		$(OS)
	    -------------------------
	    Macintosh		MAC		

	You'll need to edit Build.mpw to set CW.  

    VMS

    	Build jam with @build.com on:

	    Platform		$(OS)
	    -------------------------
	    VMS 5.4		VMS
	    OPENVMS		OPENVMS

Comments to the author!

November, 1993 - release 1.0
March, 1995 - release 2.0 
February, 1996 - release 2.1
November, 1997 - release 2.2
December, 2000 - release 2.3
March, 2002 - release 2.4
December, 2002 - release 2.5


Christopher Seiwald

seiwald@perforce.com