mirror of
https://review.haiku-os.org/buildtools
synced 2024-11-23 07:18:49 +01:00
742ec4efee
git-svn-id: file:///srv/svn/repos/haiku/buildtools/trunk@18504 a95241bf-73f2-0310-859d-f6bbb57e9c96
280 lines
6.1 KiB
Plaintext
280 lines
6.1 KiB
Plaintext
#
|
|
# 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 = execunix.c filent.c pathunix.c ; }
|
|
else if $(MINGW) { 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 ; }
|
|
|
|
# For jam profiling/debugging.
|
|
|
|
if $(PROFILE)
|
|
{
|
|
CCFLAGS += -pg ;
|
|
LINKFLAGS += -pg ;
|
|
LOCATE_TARGET = $(LOCATE_TARGET)/pg ;
|
|
}
|
|
|
|
if $(DEBUG)
|
|
{
|
|
CCFLAGS += -g ;
|
|
C++FLAGS += -g ;
|
|
LINKFLAGS += -g ;
|
|
LOCATE_TARGET = $(LOCATE_TARGET)/g ;
|
|
}
|
|
|
|
# We have to signal jam.h for these
|
|
|
|
if $(OS) = NT { CCFLAGS += /DNT ; }
|
|
|
|
### LOCAL CHANGE
|
|
#
|
|
# Include:
|
|
# * header caching
|
|
# * jamfile caching
|
|
# * definition of JAM_TARGETS variable
|
|
#
|
|
DEFINES += OPT_HEADER_CACHE_EXT ;
|
|
DEFINES += OPT_JAMFILE_CACHE_EXT ;
|
|
DEFINES += OPT_JAM_TARGETS_VARIABLE_EXT ;
|
|
#
|
|
### LOCAL CHANGE
|
|
|
|
### LOCAL CHANGE
|
|
#
|
|
# Include rule profiling support, if specified in the environment.
|
|
#
|
|
if $(OPT_RULE_PROFILING_EXT) {
|
|
DEFINES += OPT_RULE_PROFILING_EXT ;
|
|
}
|
|
#
|
|
### LOCAL CHANGE
|
|
|
|
### LOCAL CHANGE
|
|
#
|
|
# Include stat cache server under BeOS.
|
|
#
|
|
if $(OS) = BEOS {
|
|
DEFINES += OPT_STAT_CACHE_SERVER_EXT ;
|
|
}
|
|
#
|
|
### LOCAL CHANGE
|
|
|
|
# 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 $(YACC) && $(SUFEXE) = ""
|
|
{
|
|
GenFile jamgram.y jamgramtab.h : yyacc jamgram.yy ;
|
|
}
|
|
|
|
### LOCAL CHANGE
|
|
#
|
|
# These files contain locally developed improvements.
|
|
#
|
|
code += jcache.c ;
|
|
# code primarily not written locally, but grabbed from the net
|
|
code += hcache.c ;
|
|
#
|
|
### LOCAL CHANGE
|
|
|
|
### LOCAL CHANGE
|
|
#
|
|
# Include stat cache server under BeOS.
|
|
#
|
|
if $(OS) = BEOS {
|
|
code += beos_stat_cache.c ;
|
|
}
|
|
#
|
|
### LOCAL CHANGE
|
|
|
|
#
|
|
# How to build the compiled in jambase.
|
|
#
|
|
|
|
Main mkjambase : mkjambase.c ;
|
|
|
|
if $(VMS)
|
|
{
|
|
CC = cxx ;
|
|
LINK = cxxlink ;
|
|
CCFLAGS += /define=VMS ;
|
|
}
|
|
|
|
if $(OS) = BEOS {
|
|
}
|
|
|
|
#
|
|
# The guts of the Jamfile: how to build Jam
|
|
#
|
|
|
|
Main jam : jam.c jambase.c ;
|
|
LinkLibraries jam : libjam.a ;
|
|
GenFile jambase.c : mkjambase Jambase ;
|
|
|
|
if $(OS) = BEOS {
|
|
local haveBone = [ GLOB /boot/develop/headers/be/bone/arpa : inet.h ] ;
|
|
if ! $(haveBone) {
|
|
LINKLIBS on jam += -lnet ;
|
|
}
|
|
local haveZeta = [ GLOB /boot/beos/system/lib : libzeta.so ] ;
|
|
if $(haveZeta) {
|
|
DEFINES += _ZETA_USING_DEPRECATED_API_=1 ;
|
|
}
|
|
}
|
|
|
|
Library libjam.a :
|
|
builtins.c 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 ;
|
|
|
|
|
|
if $(BINDIR) { InstallBin $(BINDIR) : jam ; }
|
|
|
|
### LOCAL CHANGE
|
|
#
|
|
# Build stat cache server under BeOS.
|
|
#
|
|
if $(OS) = BEOS {
|
|
# RC must be defined, if we are to compile the resources.
|
|
if ! $(RC) && ! $(NO_STAT_CACHE_SERVER_RESOURCES) {
|
|
Echo "NOTE: The variable RC is not defined, and therefore the" ;
|
|
Echo "NOTE: built StatCacheServer won't have resources (it will thus" ;
|
|
Echo "NOTE: appear in the Deskbar). If you want to have resources," ;
|
|
Echo "NOTE: define RC as an absolute or relative path referring to" ;
|
|
Echo "NOTE: the rc program, or just the program name, if it lives in" ;
|
|
Echo "NOTE: the PATH." ;
|
|
NO_STAT_CACHE_SERVER_RESOURCES = 1 ;
|
|
}
|
|
|
|
rule CompileResources
|
|
{
|
|
SEARCH on $(2) += $(SEARCH_SOURCE) ;
|
|
MakeLocate $(1) : $(LOCATE_TARGET) ;
|
|
Depends $(1) : $(2) ;
|
|
LocalClean clean : $(1) ;
|
|
}
|
|
|
|
actions CompileResources
|
|
{
|
|
$(RC) -o "$(1)" "$(2)"
|
|
}
|
|
|
|
rule AddResources
|
|
{
|
|
SEARCH on $(2) += $(SEARCH_SOURCE) ;
|
|
Depends $(1) : $(2) ;
|
|
}
|
|
|
|
actions AddResources
|
|
{
|
|
xres -o "$(1)" $(2)
|
|
}
|
|
|
|
LINK on StatCacheServer = g++ ;
|
|
LINKLIBS on StatCacheServer
|
|
= [ on StatCacheServer return $(LINKLIBS) ] -lbe ;
|
|
Main StatCacheServer : StatCacheServer.cpp ;
|
|
if ! $(NO_STAT_CACHE_SERVER_RESOURCES) {
|
|
CompileResources StatCacheServer.rsrc : StatCacheServer.rdef ;
|
|
AddResources StatCacheServer : StatCacheServer.rsrc ;
|
|
}
|
|
if $(BINDIR) { InstallBin $(BINDIR) : StatCacheServer ; }
|
|
}
|
|
#
|
|
### LOCAL CHANGE
|
|
|
|
#
|
|
# Distribution making from here on out.
|
|
#
|
|
|
|
ALLSOURCE =
|
|
Build.com Build.mpw Jam.html Jambase Jambase.html Jamfile
|
|
Jamfile.html Makefile Porting README RELNOTES builtins.c builtins.h
|
|
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 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 pathsys.h
|
|
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 yyacc ;
|
|
|
|
### LOCAL CHANGE
|
|
#
|
|
ALLSOURCE += LOCAL_DIFFERENCES.txt ;
|
|
#
|
|
### LOCAL CHANGE
|
|
|
|
rule Ball
|
|
{
|
|
NotFile balls ;
|
|
Depends balls : $(<) ;
|
|
|
|
DEPENDS $(<) : $(>) ;
|
|
|
|
switch $(<)
|
|
{
|
|
case *.tar : Tar $(<) : $(>) ;
|
|
case *.shar : Shar $(<) : $(>) ;
|
|
case *.zip : Zip $(<) : $(>) ;
|
|
}
|
|
}
|
|
|
|
VERSION = jam-2.5rc1 ;
|
|
|
|
actions Tar
|
|
{
|
|
ln -s . $(VERSION)
|
|
tar cvhf $(<) $(VERSION)/$(>)
|
|
rm $(VERSION)
|
|
}
|
|
|
|
actions Shar
|
|
{
|
|
shar $(>) > $(<)
|
|
}
|
|
|
|
actions Zip
|
|
{
|
|
zip $(<) $(>)
|
|
}
|
|
|
|
Ball $(VERSION).shar : $(ALLSOURCE) ;
|
|
Ball $(VERSION).tar : $(ALLSOURCE) ;
|
|
Ball $(VERSION).zip : $(ALLSOURCE) ;
|