# # Jamfile to build Jam (a make(1)-like program) # # There are no user-serviceable parts in this file. # # Some sections have been hidden because their targets are in # managed files, and overwriting them unecessarily causes # problems. To reveal them: # # - set DO_GRAMMAR if you want make new jamgram.* files # # - set DO_JAMBASE if you want jam to make new jambase.c # # Put executables in platform-specific subdirectory. # If $(OSVER) isn't set, second value is used. 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 = execunix.c filent.c pathunix.c ; } else if $(OS2) { code = execunix.c fileos2.c pathunix.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 ; } if $(DO_GRAMMAR) { code += jamgram.y ; } else { code += jamgram.c ; } if $(OS) = NT { CCFLAGS += /DNT ; } if $(OS) = MVS { CCFLAGS += -DMVS ; } if $(OS)$(OSVER) = AIX41 { CCFLAGS += -D_AIX41 ; } # # 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 ; if $(DO_JAMBASE) { GenFile jambase.c : mkjambase Jambase ; } Library libjam.a : command.c compile.c $(code) expand.c glob.c hash.c headers.c lists.c make.c make1.c newstr.c option.c parse.c regexp.c rules.c scan.c search.c timestamp.c variable.c ; # # On UNIX, we install this stuff for easy use. # if $(UNIX) { InstallBin $(BINDIR) : jam ; } #### --- cut if $(UNIX) && $(DO_GRAMMAR) { GenFile jamgram.y jamgramtab.h : yyacc jamgram.yy ; } rule TempCopy { DEPENDS $(<) : $(>) ; } actions TempCopy { cp $(>) $(<) } ALLSOURCE = Build.com Build.mpw Jam.html Jambase Jambase.html Jamfile Jamfile.html Jamlang.html Makefile Porting README RELNOTES command.c command.h compile.c compile.h execcmd.h execmac.c execunix.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 headers.c headers.h jam.c jam.h jambase.c jambase.h jamgram.c jamgram.h jamgram.y 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 timestamp.c timestamp.h variable.c variable.h ; rule Ball { DEPENDS $(<) : $(>) ; PreBall $(<) ; switch $(<) { case *.tar : Tar $(<) : $(>) ; case *.shar : Shar $(<) : $(>) ; case *.zip : Zip $(<) : $(>) ; } PostBall $(<) ; } actions PreBall { mv Jamfile Jamfile.sav sed '/--- cut/,$d' Jamfile.sav > Jamfile } actions PostBall { mv Jamfile.sav Jamfile } VERSION = jam-2.2 ; actions Tar { ln -s . $(VERSION) tar cvhf $(<) $(VERSION)/$(>) rm $(VERSION) } actions Shar { shar -l97 -o $(<) $(>) } actions Zip { zip $(<) $(>) } Ball SHAR : $(ALLSOURCE) ; Ball $(VERSION).tar : $(ALLSOURCE) ; Depends TAR : $(VERSION).tar ; Ball ZIP : $(ALLSOURCE) ;