# # 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 $(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 $(UNIX) || $(NEXT_ROOT) { code += jamgram.y ; } else { code += jamgram.c ; } if $(NEXT_ROOT) { if $(NT) { CCFLAGS += -DNT ; } CFLAGS += -g ; } else 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 # if $(OS) in NT { PRODUCT = jam.exe ; } else { PRODUCT = jam ; } Main $(PRODUCT) : jam.c jambase.c ; LinkLibraries $(PRODUCT) : libjam.a ; GenFile jambase.c : mkjambase pbxJambase ; 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 ; # # We also install this stuff for easy use. Note that I am # hard-coding NEXT_ROOT. This is because the NT Install rule # uses the Copy rule, which uses the 'copy' command, which cannot # handle forward-slashes in the filename. # if $(OS) in NT { NEXT_ROOT ?= C:\\Apple ; DSTROOT ?= $(NEXT_ROOT) ; BINDIR = $(DSTROOT)\\Local\\Developer\\Executables ; } else { NEXT_ROOT ?= "" ; DSTROOT ?= $(NEXT_ROOT) ; BINDIR = $(DSTROOT)/usr/bin ; } InstallBin $(BINDIR) : $(PRODUCT) ;