- #
- # For Linux 2.6: export OSVER=26 (or the appropriate number for your system)
- #
- # These Jamrules mostly copied from the P4API distribution.
- rule SetLibName
- {
- $(1) = $(2:S=$(SUFLIB)) ;
- LOCATE on $($(1)) = $(EXEC) ;
- }
- #####################################################################
- # P4API libs and includes.
- #####################################################################
- rule IncludeP4API
- {
- # Add includes for building P4API apps.
- if ! $(P4APIDIR)
- {
- Exit Please set P4APIDIR to the path of the P4API distribution. ;
- }
- P4INCLUDE = $(P4APIDIR)$(SLASH)include$(SLASH)p4 ;
- P4LIBS = $(P4APIDIR)$(SLASH)lib ;
- SubDirHdrs $(P4INCLUDE) ;
- SetLibName CLIENTLIB : libclient ;
- SetLibName RPCLIB : librpc ;
- SetLibName SUPPORTLIB : libsupp ;
- CLIENTLIB = $(P4LIBS)$(SLASH)$(CLIENTLIB) ;
- RPCLIB = $(P4LIBS)$(SLASH)$(RPCLIB) ;
- SUPPORTLIB = $(P4LIBS)$(SLASH)$(SUPPORTLIB) ;
- }
- ###################################################################
- # OS settings.
- ###################################################################
- if $(OS) = NT
- {
- JAMSHELL = cmd.exe /c ;
- }
- GENFLAGS = CCFLAGS C++FLAGS ;
- switch $(OS)$(OSVER) $(OS)
- {
- case AIX53 :
- #using GNU
- C++ = g++ ;
- CC = gcc ;
- C++FLAGS += -DBSD -Dunix -D_LARGE_FILES=1 ;
- LINK = gcc ;
- LINKLIBS += -lsupc++ ;
- case CYGWIN :
- STRIP = ;
- CC = gcc ;
- C++ = gcc ;
- LINK = g++ ;
- C++FLAGS += -DUSE_CRLF ;
- case DARWIN :
- CC = cc ;
- C++ = cc ;
- C++FLAGS += -DCASE_INSENSITIVE ;
- case DARWIN60cs : #case-sensitive
- CC = cc ;
- C++ = cc ;
- LINK = g++ ;
- case DARWIN8* :
- CC = gcc ;
- C++ = g++ ;
- LINK = g++ ;
- MACOSX_SDK ?= /Developer/SDKs/MacOSX10.4u.sdk ;
- LINKFLAGS += -Wl,-syslibroot,$(MACOSX_SDK) ;
- switch $(OSVER:U) {
- case *CS :
- case * : C++FLAGS += -DCASE_INSENSITIVE ;
- }
- switch $(OSPLAT) {
- case X86 : _arch = i386 ;
- case X86_64 : _arch = x86_64 ;
- case * : _arch = ppc ;
- }
- $(GENFLAGS) += -arch $(_arch) -DOS_DARWIN80 ;
- LINKFLAGS += -arch $(_arch) ;
- case FREEBSD :
- Exit Set OSVER to 4, 5, or 6 for FreeBSD ;
- case FREEBSD4 :
- CC = gcc ;
- C++ = g++ ;
- LINK = gcc ;
- switch $(OSCOMP)
- {
- case GCC3 : LINKLIBS += -lsupc++ ;
- }
- if $(OSPLAT) != AXP { LINKFLAGS += -static ; }
- $(GENFLAGS) += -pipe ;
- case FREEBSD[56789]* :
- CC = gcc ;
- C++ = g++ ;
- LINK = gcc ;
- # supc++ library on freebsd5.x and later is missing some
- # modules (this is a bug), so we can't use it.
- # But we still do not want to link stdc++ dynamically.
- #LINKLIBS += -lsupc++ ;
- LINKLIBS += -Wl,-dn,-lstdc++,-dy ;
- _mflags = ;
- switch $(OSPLAT)
- {
- case X86 : _mflags = -m32 ;
- case X86_64 : _mflags = -m64 ;
- }
- $(GENFLAGS) += $(_mflags) -pipe ;
- LINKFLAGS += $(_mflags) ;
- QTOPENGL ?= no ;
- case HPUX11 :
- switch $(OSPLAT:E)-$(OSCOMP:E)
- {
- # On IA64, hpux supports both 64-bit and 32-bit executables.
- # We build 64-bit for the benefit of p4d, and client apps are built
- # the same way for the sake of simplicity.
- case IA64-GCC :
- CC = gcc ;
- C++ = gcc ;
- $(GENFLAGS) += -mlp64 ;
- LINK = gcc ;
- LINKFLAGS += -mlp64 ;
- LINKLIBS += -lsupc++ -lunwind ;
- case IA64-* : # unbundled vendor compiler
- CC = aCC ;
- C++ = aCC ;
- OPTIM = +O1 ;
- if $(TYPE) = pic { OPTIM += +Z ; }
- $(GENFLAGS) += +DD64 ;
- # Suppress compiler warnings:
- # 2611: overloaded virtual function "x" is only partially overridden in class "y"
- # 2997: function "x::fn is hidden by y::fn" -- virtual function override intended?
- $(GENFLAGS) += +W2611,2997 ;
- LINK = aCC ;
- LINKFLAGS += +DD64 ;
- case PA11-* : # unbundled vendor compiler
- CC = aCC ;
- C++ = aCC ;
- LINK = aCC ;
- OPTIM = +O1 ;
- $(GENFLAGS) += -D_LARGEFILE64_SOURCE +DA1.1 ;
- case *-* : # assumed PA20 (32-bit) with unbundled vendor compiler
- CC = aCC ;
- C++ = aCC ;
- LINK = aCC ;
- OPTIM = +O1 ;
- $(GENFLAGS) += -D_LARGEFILE64_SOURCE ;
- }
- case IRIX65 :
- CC = cc -OPT:Olimit 5000 -64 -mips3 ;
- C++ = CC -woff 3439,1174,1178,1681,1682
- -OPT:Olimit 5000 -64 -mips3 ;
- LINK = CC -64 ;
- if $(TYPE) = pic
- {
- OPTIM = -O2 -KPIC ;
- }
- case LINUX :
- Exit Set OSVER to 24 or 26 ;
- case LINUX24 :
- CC = gcc ;
- C++ = g++ ;
- LINK = gcc ;
- LINKLIBS += -lsupc++ ; # Assumes gcc 3.x or later
- # be explicit about submodel since we may be compiling x86 code on
- # an x86/x86_64 biarch system, and the default may be uncertain.
- _mflags = ;
- switch $(OSPLAT)
- {
- case X86 : _mflags = -m32 ;
- case X86_64 : _mflags = -m64 ;
- }
- LINKLIBS on p4d += $(LINKLIBS) -ldl ;
- LINKLIBS on p4p += $(LINKLIBS) -ldl ;
- LINKLIBS on p4web += $(LINKLIBS) -ldl ;
- if $(SMARTHEAP) = yes { $(GENFLAGS) += -DUSE_SMARTHEAP ; }
- $(GENFLAGS) += $(_mflags) -D_GNU_SOURCE ;
- LINKFLAGS += $(_mflags) ;
- QTOPENGL ?= no ;
- case LINUX26 :
- CC = gcc ;
- C++ = g++ ;
- LINK = gcc ;
- LINKLIBS += -lsupc++ ;
- LINKLIBS on p4d += $(LINKLIBS) -ldl ;
- LINKLIBS on p4p += $(LINKLIBS) -ldl ;
- LINKLIBS on p4web += $(LINKLIBS) -ldl ;
- # be explicit about submodel since we may be compiling x86 code on
- # an x86/x86_64 biarch system, and the default may be uncertain.
- _mflags = ;
- switch $(OSPLAT)
- {
- case X86 : _mflags = -m32 ;
- case X86_64 : _mflags = -m64 ;
- case AXP : LINKFLAGS += -static ;
- }
- if $(SMARTHEAP) = yes { $(GENFLAGS) += -DUSE_SMARTHEAP ; }
- $(GENFLAGS) += $(_mflags) -D_GNU_SOURCE ;
- LINKFLAGS += $(_mflags) ;
- QTOPENGL ?= no ;
- case MACOSX :
- CC = cc ;
- C++ = cc ;
- $(GENFLAGS) += -DCASE_INSENSITIVE ;
- $(GENFLAGS) += -fpascal-strings ;
- # This looks like a flag but it is really a library macro
- # kind of thing and causes link problems if it at the front
- # of the link command so we make it a LIB
- LINKLIBS += -framework Carbon ;
- case MACOSX104 : # assumes using gcc 4.0.1 or newer
- CC = gcc ;
- C++ = g++ ;
- LINK = g++ ;
- MACOSX_SDK ?= /Developer/SDKs/MacOSX10.4u.sdk ;
- # The -fvisibility-inlines-hidden option is a C++-only
- # option, needed because Qt4 is built with it and all
- # statically-compiled objects need to use it consistently.
- C++FLAGS += -fvisibility-inlines-hidden ;
- $(GENFLAGS) += -DCASE_INSENSITIVE
- -fpascal-strings
- -isysroot$(MACOSX_SDK) ;
- LINKFLAGS += -Wl,-syslibroot,$(MACOSX_SDK) ;
- # This looks like a flag but it is really a library macro
- # and causes link problems if it's at the front of the link
- # command, so we make it a LIB.
- LINKLIBS += -framework Carbon ;
- switch $(OSPLAT)
- {
- # Note: we may elect at some point to generate universal
- # binaries, in which case just add multiple -arch [arch]
- # flags here.
- #case X86 : _arch = -arch i386 -arch ppc ;
- case X86 : _arch = -arch i386 ;
- case X86_64 : _arch = -arch x86_64 ;
- case * : _arch = -arch ppc ;
- }
- $(GENFLAGS) += $(_arch) -DCASE_INSENSITIVE ;
- LINKFLAGS += $(_arch) ;
- # This adds $(QTDIR)/lib as a frameworks directory, in case
- # Qt is built as frameworks. On the mac, it can be built
- # either as frameworks, regular unix-style shared
- # libraries, or unix-style static libaries.
- $(GENFLAGS) += -F$(QTDIR)/lib ;
- case NETBSD* :
- CC = /usr/pkg/gcc34/bin/gcc ;
- C++ = /usr/pkg/gcc34/bin/g++ ;
- $(GENFLAGS) += -pipe -Dunix ;
- LINK = /usr/pkg/gcc34/bin/g++ ;
- # NetBSD gcc choked on -O2 -fPIC
- if $(TYPE) = pic { OPTIM = -O1 -fPIC ; }
- case VMS* :
- # use C++ compiler: we're cheap
- CC = cxx ;
- C++ = cxx ;
- DEFINES += NO_MEMCPY ;
- STRIP = ;
- OPTIM = ;
- case NT* :
- # Use setargv.obj to get wildcard expansion.
- # The "rc" tool needs MS headers:
- BINDIR = e:\\perforce ;
- JAMSHELL ?= $(P4)\\Jamsh.bat $(OSPLAT) % "!" ;
- C++FLAGS += /DCASE_INSENSITIVE /DUSE_CRLF /wd4996 ;
- if $(SMARTHEAP) = yes { $(GENFLAGS) += /DUSE_SMARTHEAP ; }
- LINKLIBS = setargv.obj advapi32.lib oldnames.lib
- kernel32.lib ws2_32.lib ;
- STDHDRS = $(MSVCNT)\\include $(MSVCNT)\\atlmfc\\include ;
- STRIP = ;
- # Now, unset STDHDRS so Jam doesn't scan system headers (takes
- # too long when using compiler on networked machine):
- STDHDRS = ;
- if $(BCCROOT)
- {
- # Jeff Anton compiles with borland.
- OPTIM = -O2 ;
- RCFLAGS = /d NDEBUG /r ;
- AR = tlib /C /P128 ;
- LINKLIBS = $(BCCROOT)/lib/wildargs.obj ;
- }
- else if $(TYPE) = g
- {
- # Debugging build
- OPTIM = /Zi /Gm ;
- RCFLAGS = /d DEBUG /r ;
- LINKFLAGS += /DEBUG ;
- $(GENFLAGS) += /MTd ;
- }
- else if $(TYPE) = dyn
- {
- # Dynamic link version, for qt products
- if $(JAMFAST)
- {
- OPTIM = /Z7 /O2 ;
- }
- else
- {
- OPTIM = /Zi /O2 ;
- actions Cc
- {
- $(CC) /c /Fo$(<) /Fd$(EXEC)\ $(CCFLAGS) $(CCDEFS) $(CCHDRS) /I"$(STDHDRS)" $(>)
- }
- actions C++
- {
- $(C++) /c /Fo$(<) /Fd$(EXEC)\ $(C++FLAGS) $(CCDEFS) $(CCHDRS) /I"$(STDHDRS)" /Tp$(>)
- }
- }
- RCFLAGS = /d NDEBUG /r ;
- $(GENFLAGS) += /MD ;
- LINKFLAGS += /MAP /OPT:REF /OPT:ICF /DEBUG ;
- }
- else if $(TYPE) = dyng
- {
- # Dynamic Debugging build
- if $(JAMFAST)
- {
- OPTIM = /Z7 ;
- }
- else
- {
- OPTIM = /Zi /Gm ;
- actions Cc
- {
- $(CC) /c /Fo$(<) /Fd$(EXEC)\ $(CCFLAGS) $(CCDEFS) $(CCHDRS) /I"$(STDHDRS)" $(>)
- }
- actions C++
- {
- $(C++) /c /Fo$(<) /Fd$(EXEC)\ $(C++FLAGS) $(CCDEFS) $(CCHDRS) /I"$(STDHDRS)" /Tp$(>)
- }
- }
- RCFLAGS = /d DEBUG /r ;
- $(GENFLAGS) += /MDd ;
- LINKFLAGS += /DEBUG /NODEFAULTLIB:msvcrt.lib /fixed:no ;
- }
- else if $(TYPE) = vsdebug
- {
- # Static link with Visual Studio debug libraries.
- # This does not enable debugging our own code, just sets
- # linker dependencies for VS libraries.
- # This is intended for customer use.
- OPTIM = /O2 ;
- RCFLAGS = /d NDEBUG /r ;
- $(GENFLAGS) += /MTd ;
- LINKFLAGS += /MAP ;
- }
- else if $(TYPE) = dyn_vsdebug
- {
- # Dynamic link with Visual Studio debug libraries.
- # This does not enable debugging our own code, just sets
- # linker dependencies for VS libraries.
- # This is intended for customer use.
- OPTIM = /O2 ;
- RCFLAGS = /d NDEBUG /r ;
- $(GENFLAGS) += /MDd ;
- LINKFLAGS += /MAP /OPT:REF /OPT:ICF ;
- }
- else if $(OSVER) = 98
- {
- # Dynamic link version for win98 version of p4win
- # Goes into bin.win98 -- oddity.
- EXEC = [ FSubDirPath P4BIN bin.win98 ] ;
- ALL_LOCATE_TARGET = $(EXEC) ;
- OPTIM = /O2 ;
- if $(TYPE_DEBUG) = true { OPTIM += /Zi ; }
- RCFLAGS = /d NDEBUG /r ;
- $(GENFLAGS) += /MD ;
- LINKFLAGS = /MAP ;
- }
- else
- {
- # Static link version, for command line products
- OPTIM = /O2 ;
- RCFLAGS = /d NDEBUG /r ;
- $(GENFLAGS) += /MT ;
- LINKFLAGS += /MAP ;
- }
- case SCO* :
- C++ = gcc ;
- CC = gcc ;
- LINK = gcc ;
- LINKLIBS += -lsocket ;
- case SOLARIS* :
- switch $(OSCOMP)
- {
- case SUNC11 : # Sun Studio 11
- # Recommended jam flags: -sOSCOMP=SUNC11 -sBUILD=suncc
- CC = cc ;
- C++ = CC ;
- LINK = CC ;
- OPTIM = -xO3 ;
- switch $(OSPLAT)
- {
- case X86 :
- $(GENFLAGS) += -xtarget=generic ;
- case X86_64 :
- $(GENFLAGS) += -xtarget=opteron -xarch=generic64 ;
- LINKFLAGS += -xtarget=opteron -xarch=generic64 ;
- }
- case SUNC12 : # Sun Studio 12
- # Recommended jam flags: -sOSCOMP=SUNC12 -sBUILD=suncc
- CC = cc ;
- C++ = CC ;
- LINK = CC ;
- OPTIM = -xO3 ;
- switch $(OSPLAT)
- {
- case X86 :
- $(GENFLAGS) += -xtarget=generic ;
- case X86_64 :
- $(GENFLAGS) += -xtarget=opteron -m64 ;
- LINKFLAGS += -xtarget=opteron -m64 ;
- }
- case * : # GCC
- CC = gcc ;
- C++ = g++ ;
- LINK = gcc ;
- switch $(OSPLAT)
- {
- case *64 : # X86_64 or SPARC64
- LINKFLAGS += -m64 ;
- $(GENFLAGS) += -m64 ;
- }
- # supc++ needed for all apps since we use gcc >= 3.2.
- LINKLIBS += -lsupc++ ;
- }
- $(GENFLAGS) += -Dsolaris
- -D_LARGEFILE64_SOURCE
- -I/opt/lude/include ;
- LINKLIBS += -lsocket -lnsl ;
- AR = /usr/ccs/bin/ar ru ;
- STRIP = /usr/ccs/bin/strip ;
- COMPRESS = compress ;
- QTOPENGL ?= no ;
- case * :
- Exit Don't know "$(OS)$(OSVER) or " $(OS) ;
- }
- #####################################################################
- # Set up output directory.
- # Jamfile should use "SubDir BIN ;" to specify the current directory
- # as the root where the bin.* subdirectories will live.
- #####################################################################
- EXEC_LIB_TOKENS =
- BIN
- lib.$(OS:L)$(OSVER:EL)$(OSPLAT:EL)
- ;
- EXEC_LIB ?= [ FSubDirPath $(EXEC_LIB_TOKENS) ] ;
- EXEC_LIBEXEC_TOKENS =
- BIN
- libexec.$(OS:L)$(OSVER:EL)$(OSPLAT:EL)
- ;
- EXEC_LIBEXEC ?= [ FSubDirPath $(EXEC_LIBEXEC_TOKENS) ] ;
- # Build dir: p4-bin/bin.xxx[/build][/type]
- EXEC_TOKENS =
- BIN
- bin.$(OS:L)$(OSVER:EL)$(OSPLAT:EL)
- $(BUILD)
- $(TYPE:L)
- ;
- EXEC ?= [ FSubDirPath $(EXEC_TOKENS) ] ;
- ALL_LOCATE_TARGET = $(EXEC) ;
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 6304 | Sam Stafford | Add a Jamrules check for the P4APIDIR variable and wrap the P4API includes in a rule so t...hat they're optional. « |
17 years ago | |
#1 | 6302 | Sam Stafford | Jamming DeepAnnotate. | 17 years ago |