- #
- # Jamfile to build Jam (a make(1)-like program)
- #
- # There are no user-serviceable parts in this file.
- #
- # Put executables in platform-specific subdirectory.
- if $(VMS) { LOCATE_TARGET ?= [.binvms] ; }
- else if $(MAC) { LOCATE_TARGET ?= :bin.mac ; }
- else { LOCATE_TARGET ?= bin.$(OSFULL[1]:L) ; }
- # Leave generated source in current directory; it would be nice to use
- # these lines below to build the source into the platform-specific
- # directory, but getting scan.c to include the right jambase.h is
- # hard: with ""'s, it always gets the bootstrap version; with <>'s,
- # it won't find the bootstrap version.
- # SEARCH_SOURCE ?= $(LOCATE_TARGET) $(DOT) ;
- # LOCATE_SOURCE ?= $(LOCATE_TARGET) ;
- #
- # We have some different files for UNIX, VMS, and NT.
- #
- if $(NT) { code = execnt.c filent.c pathunix.c ; }
- else if $(OS2)
- {
- # special case for OS/2. When building Jam with GCC/EMX
- # we need to use the "fileunix.c" file
- #
- # when we build it with other toolsets, we use "fileos2.c"
- #
- code = execunix.c pathunix.c ;
- if $(TOOLSET) = EMX
- {
- CCFLAGS += -D__OS2__ ;
- code += fileunix.c ;
- }
- else
- {
- code += fileos2.c ;
- }
- }
- else if $(VMS) { code = execvms.c filevms.c pathvms.c ; }
- else if $(MAC) { code = execmac.c filemac.c pathmac.c ; }
- else { code = execunix.c fileunix.c pathunix.c ; }
- # We have to signal jam.h for these
- if $(OS) = NT
- {
- if $(TOOLSET) = MINGW || $(TOOLSET) = LCC
- {
- CCFLAGS += -DNT ;
- }
- else
- {
- CCFLAGS += /DNT ;
- }
- }
- # Do we know yacc?
- if $(YACC) { code += jamgram.y ; }
- else { code += jamgram.c ; }
- #
- # Build the jamgram.y from the jamgram.yy
- # yyacc is a slippery script that makes grammars a little
- # easier to read/maintain.
- #
- if $(UNIX) && $(YACC)
- {
- GenFile jamgram.y jamgramtab.h : ./yyacc jamgram.yy ;
- }
- #
- # How to build the compiled in jambase.
- #
- Main mkjambase : mkjambase.c ;
- #
- # The guts of the Jamfile: how to build Jam
- #
- Main jam : jam.c jambase.c ;
- LinkLibraries jam : libjam.a ;
- GenFile jambase.c : mkjambase Jambase ;
- Library libjam.a :
- command.c compile.c $(code) expand.c glob.c
- hash.c headers.c hdrmacro.c lists.c make.c make1.c newstr.c
- option.c parse.c regexp.c rules.c scan.c search.c subst.c
- timestamp.c variable.c ;
- if $(BINDIR) { InstallBin $(BINDIR) : jam ; }
- #
- # Distribution making from here on out.
- #
- ALLSOURCE =
- Build.com Build.mpw Jam.html Jambase Jambase.html Jamfile
- Jamfile.html Makefile Porting README RELNOTES command.c command.h
- compile.c compile.h execcmd.h execmac.c execunix.c execnt.c execvms.c
- expand.c expand.h filemac.c filent.c fileos2.c filesys.h fileunix.c
- filevms.c glob.c hash.c hash.h hdrmacro.c hdrmacro.h headers.c
- headers.h jam.c jam.h jambase.c jambase.h jamgram.c jamgram.h
- jamgram.y jamgram.yy jamgramtab.h lists.c lists.h make.c make.h
- make1.c mkjambase.c newstr.c newstr.h option.c option.h parse.c
- parse.h patchlevel.h pathmac.c pathunix.c pathvms.c regexp.c regexp.h
- rules.c rules.h scan.c scan.h search.c search.h subst.c timestamp.c
- timestamp.h variable.c variable.h yyacc
- INSTALL
- common.mk
- builds/win32-visualc.mk
- builds/win32-borlandc.mk
- builds/win32-gcc.mk
- ;
- rule Binary
- {
- NotFile package ;
- Depends package : $(<) ;
- DEPENDS $(<) : $(>) ;
- switch $(<)
- {
- case *-win32.zip : Zip-Exe $(<) : $(>) ;
- case *-os2.zip : Zip-Exe $(<) : $(>) ;
- case *-linux-libc6.tar : GZip-Exe $(<) : $(>) ;
- }
- }
- rule Package
- {
- NotFile package ;
- Depends package : $(<) ;
- DEPENDS $(<) : $(>) ;
- switch $(<)
- {
- case *.tar : { Tar-Gz $(<) : $(>) ; Tar-Bz2 $(<) : $(>) ; }
- case *.zip : Zip $(<) : $(>) ;
- }
- }
- VERSION = ftjam-2.3.5 ;
- actions Tar-Gz
- {
- ln -s . $(VERSION)
- tar cvhf $(<) $(VERSION)/$(>)
- rm $(VERSION)
- gzip -9 $(<)
- }
- actions Tar-Bz2
- {
- ln -s . $(VERSION)
- tar cvhf $(<) $(VERSION)/$(>)
- rm $(VERSION)
- bzip2 -9 $(<)
- }
- actions Zip
- {
- zip -9r $(<) $(>)
- }
- actions Zip-Exe
- {
- zip -9j $(<) $(LOCATE_TARGET)\jam.exe
- }
- actions GZip-Exe
- {
- ln -s $(LOCATE_TARGET)/jam jam
- strip jam
- tar chf $(<) jam
- rm -f jam
- gzip -9 $(<)
- }
- if $(NT)
- {
- Binary $(VERSION)-win32.zip : $(ALLSOURCE) ;
- Package $(VERSION).zip : $(ALLSOURCE) ;
- }
- else if $(OS2)
- {
- Binary $(VERSION)-os2.zip : $(ALLSOURCE) ;
- Package $(VERSION).zip : $(ALLSOURCE) ;
- }
- else if $(OS) = LINUX
- {
- # how can we detect the C library version reliably ??
- # for now, this should only be used for convenience
- # purposes, until we add .rpm and .deb support in..
- Binary $(VERSION)-linux-libc6.tar : jam ;
- Package $(VERSION).tar : $(ALLSOURCE) ;
- Package $(VERSION).zip : $(ALLSOURCE) ;
- }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#10 | 714 | david_turner | updated the build system to run correctly on Unix systems | 24 years ago | |
#9 | 713 | david_turner | updating the build system, documentation, etc.. for the 2.3.5... release « |
24 years ago | |
#8 | 711 | david_turner | important updates to the Jam build system: - builds ea...sily on Unix systems - specific Makefiles for Visual C++ and Borland C++ in the "builds" directory. More to come.. - the "jam package" command can be launched once the jam executable was generated on Windows and OS/2 systems in order to build pre-compiled binary packages (simple zip files, no installer)) added a new built-in named FAIL_EXPECTED. See the page http://www.freetype.org/jam/changes.html for more details on this.. « |
24 years ago | |
#7 | 675 | david_turner | fixing original Makefile/Jamfile to run on Unix systems where the current directory isn't... in the path « |
24 years ago | |
#6 | 618 | david_turner | See www.freetype.org/jam/index.html for a detailed list of changes.. added a new "subs...t" built-in rule ANSI-fied mkjambase.c added gdi32.lib and user32.lib to the default libraries of the Visual C++ toolset « |
24 years ago | |
#5 | 600 | david_turner | fixed Jamfile for new supported toolsets | 24 years ago | |
#4 | 599 | david_turner | Adding/Upgrading support for Windows compilers: Visual C/C++ Intel C/C++... Win32-LCC Watcom C/C++ Borland C/C++ MingW (gcc without cygwin) Adding support for new compilers on OS/2: Watcom C/C++ EMX-GCC Note that there is a new scheme to select the compiler you want to use on a given platform: - define one of the following environment variable, with the appropriate value according to this list: Variable Toolset Description BORLANDC Borland C++ BC++ install path VISUALC Microsoft Visual C++ VC++ install path VISUALC16 Microsoft Visual C++ 16 bit VC++ 16 bit install INTELC Intel C/C++ IC++ install path WATCOM Watcom C/C++ Watcom install path MINGW MinGW (gcc) MinGW install path LCC Win32-LCC LCC-Win32 install path - define the JAM_TOOLSET environment variable with the *name* of the toolset variable you want to use. e.g.: set VISUALC=C:\Visual6 set JAM_TOOLSET=VISUALC if Jam is invoked with no JAM_TOOLSET defined, it will print a table of valid values and their expected meaning.. « |
24 years ago | |
#3 | 597 | david_turner | Adding support for Windows 95/98 through a specific implementation of the "exec" module,... named "execnt.c" « |
24 years ago | |
#2 | 595 | david_turner | Adding support for the new HDRMACRO builtin. The latter is used to specify a file contain...ing macro definitions that are later used in #include statements, as in: #include MYFILE_H A line like: HDRMACRO mydefs.h ; will parse the file "mydefs.h" for lines of the form: #define MACRO <.......> and #define MACRO "......." and will store their definition in a global dictionary. When a line like #include MACRO is later found during header file processing, the macro will be resolved accordingly.. « |
24 years ago | |
#1 | 591 | david_turner | This branch contains some improvements made to Jam for the Fre...eType 2 project: « |
24 years ago |