- # p4/Jamrules
- #
- # This Jamrules describes how to build most of Perforce, exclusive of
- # windows only products.
- #
- # This file is organized into sections:
- #
- # Section 1. Global variable settings.
- # Section 2. Library names.
- # Section 3. Per-build type variable settings.
- # Section 4. Per-platform variable settings.
- # Section 5. Perforce-special rules and actions.
- # Section 6. Perforce-special Windows rules.
- # Section 7. QT build rules and actions.
- # Section 8. Per-platform actions.
- #
-
- #################################################
- #
- # Section 1. Global variable settings.
- #
- #################################################
-
- if $(JAMBASEDATE) < 2002.05.09 {
- Exit Jamrules requires Jambase 2002.05.09 ($(JAMBASEDATE)) ;
- }
-
- # enable for AS400 port (cheesy)
- # OS = AS400 ; OSPLAT = ;
-
- # This is jam idiomatic, but the result is that
- # P4BIN is set to ../p4-bin (relative to P4)
-
- SubDir AllP4 p4 ; # where we are
- SubDir AllP4 p4-bin ; # where we want to be
- SubDir P4BIN ; # name is that
- SubDir AllP4 p4 ; # back to where we started
-
- # Build dir: p4-bin/bin.xxx[/type]
-
- EXEC_TOKENS = P4BIN bin.$(OS:L)$(OSVER:EL)$(OSPLAT:EL) $(TYPE) ;
- EXEC ?= [ FSubDirPath $(EXEC_TOKENS) ] ;
- ALL_LOCATE_TARGET = $(EXEC) ;
-
- # version file
- # Ident'ed executables depend on this
-
- SEARCH on Version Jamrules = $(P4) ;
- include Version ;
-
- API = p4api.tar ;
- STRIP = strip ;
- TYPE ?= opt ;
-
- DEFINES +=
- OS_$(OS)
- OS_$(OS)$(OSVER)
- OS_$(OS)$(OSPLAT)
- OS_$(OS)$(OSVER)$(OSPLAT) ;
-
- HDRS +=
- [ FSubDirPath P4 msgs ]
- [ FSubDirPath P4 support ]
- [ FSubDirPath P4 sys ] ;
-
- #################################################
- #
- # Section 2. Library names.
- #
- #################################################
-
- rule SetLibName
- {
- $(1) = $(2:S=$(SUFLIB)) ;
- LOCATE on $($(1)) = $(EXEC) ;
- }
-
- SetLibName CLIENTLIB : libclient ;
- SetLibName CPPUNIT : libcppunit ;
- SetLibName DBLIB : libdb ;
- SetLibName DBOPENLIB : libdbopen ;
- SetLibName DBSUPPLIB : libdbsupp ;
- SetLibName DMCLIB : libdmc ;
- SetLibName DMLIB : libdm ;
- SetLibName FTPLIB : libp4ftp ;
- SetLibName LBRLIB : liblbr ;
- SetLibName P4LIB : libp4 ;
- SetLibName P4SCCLIB : libp4scc ;
- SetLibName P4WINLIB : libp4win ;
- SetLibName P4WINCMNLIB : libp4wcmn ;
- SetLibName P4WINDIFFLIB : libp4wdf ;
- SetLibName P4WINMRGLIB : libp4wmrg ;
- SetLibName PLUGINLIB : libplugin ;
- SetLibName PROXYLIB : libproxy ;
- SetLibName QTMERGELIB : libqtmerge ;
- SetLibName QTUTILLIB : libqtutil ;
- SetLibName QTREELIB : libqtree ;
- SetLibName RPCLIB : librpc ;
- SetLibName SANDSTORM : libstorm ;
- SetLibName P4V : libp4v ;
- SetLibName P4VTEST : libp4vtest ;
- SetLibName SCCDLLLIB : libscc ;
- SetLibName SERVERLIB : libserver ;
- SetLibName SUPPORTLIB : libsupp ;
- SetLibName WEBGIZMOLIB : libp4web ;
-
- #################################################
- #
- # Section 3. Per-build type variable settings.
- #
- #################################################
-
- switch $(TYPE)
- {
- case dyn : OPTIM = -O2 ;
- case dyng : OPTIM = -g ;
- case fast : OPTIM = ;
- case g : OPTIM = -g ;
- case lower : OPTIM = -DCASE_INSENSITIVE -O2 ;
- case lpg : OPTIM = -DCASE_INSENSITIVE -O2 -pg ; LINKFLAGS = -pg ;
- case mm : OPTIM = -g -pedantic -ansi -Wall ;
- case opt : OPTIM = -O2 ;
- case optg : OPTIM = -O2 -g ;
- case pg : OPTIM = -pg -O ; LINKFLAGS = -pg ;
- case pic : OPTIM = -O2 -fPIC ; NO_OPTIM = -fPIC ;
- case sym : OPTIM = -opt off -sym full ; LINKFLAGS = -sym full ;
- case * : Echo "Warning -- unknown compilation TYPE" $(TYPE) ;
- }
-
- # TYPE_DEBUG for all debug builds.
- # TYPE_DYNAMIC for all dynamic builds.
-
- switch $(TYPE) { case *g : TYPE_DEBUG = true ; }
- switch $(TYPE) { case dyn* : TYPE_DYNAMIC = true ; }
-
- #################################################
- #
- # Section 4. Per-platform variable settings.
- #
- #################################################
-
- # Flags for Perforce
- #
- # CASE_INSENSITIVE -- case folding server
- # ENUM_INT -- force enums to int sized for watcom
- # USE_CRLF -- ascii opened as binary needs special handling
- # USE_CR -- special CR <-> LF translation for mac
- # USE_EBCDIC -- ascii <-> ebcdic translation in rpc
-
- GENFLAGS = CCFLAGS C++FLAGS ;
-
- switch $(OS)$(OSVER) $(OS)
- {
- case AIX32 :
- # using GNU
- CC = gcc ;
- C++ = gcc ;
- C++FLAGS += -DBSD -Dunix ;
- LINK = gcc ;
-
- case AIX43 :
- # using GNU
- C++ = gcc ;
- CC = gcc ;
- C++FLAGS += -DBSD -Dunix ;
- LINK = gcc ;
-
- case AIX5 :
- C++ = xlc ;
- CC = xlc ;
- C++FLAGS += -L/usr/lib/ia64l64 -Dunix ;
- LINK = xlc -lC ;
-
- case AIX51 :
- C++ = xlc ;
- CC = xlc ;
- C++FLAGS += -L/usr/lib/ia64l64 -Dunix ;
- LINK = xlC_r -lC ;
-
- case AMIGA :
- CC = gcc ;
- LINK = gcc ;
-
- case AS400 :
- # qifs=32 stdio works right
- # W1 suppress warnings
- # O40 optimization
- # AScp500 set code page
- # /Xi don't look for INCLUDE_400 by default
- # (so we can put it in 1st)
- # and get the right version of errno.h.
- # switch /O40 to /O- /Ti+ for debugging
-
- NT = ;
- C++ = iccas ;
- CC = iccas ;
- C++FLAGS += /DUSE_EBCDIC /Xi /qifs=32 /W1 /AScp500 ;
- STDHDRS = $(INCLUDE_400) ;
- NOARSCAN = true ;
- STRIP = ;
- OPTIM = /O40 ;
-
- case BEOS :
- STRIP = ;
- LINKLIBS += -lroot ;
-
- case CYGWIN :
- STRIP = ;
- CC = gcc ;
- C++ = gcc ;
- LINK = g++ ;
- C++FLAGS += -DUSE_CRLF ;
-
- case DARWIN :
- CC = cc ;
- C++ = cc ;
- C++FLAGS += -DCASE_INSENSITIVE ;
-
- case DARWIN60 :
- CC = cc ;
- C++ = cc ;
- LINK = g++ ;
- C++FLAGS += -DCASE_INSENSITIVE ;
-
- case DGUX :
- CC = ec++ ;
- C++ = ec++ ;
- LINK = ec++ ;
-
- case FREEBSD22 :
- CC = gcc ;
- LINK = gcc ;
- if $(OSPLAT) != AXP { LINKFLAGS += -static ; }
-
- case FREEBSD4 :
- CC = gcc ;
- $(GENFLAGS) += -pipe ;
- # to test writeable strings
- # $(GENFLAGS) += -Wwrite-strings -Dconst_char='const char' ;
- LINK = gcc ;
- if $(OSPLAT) != AXP { LINKFLAGS += -static ; }
-
- case HPUX10old :
- CC = c89 ;
- C++ = aCC ;
- OPTIM = -O ;
- C++FLAGS += -Dunix ;
- CCFLAGS += -D_INCLUDE_POSIX_SOURCE ;
- LINK = aCC ;
- LINKFLAGS += -Wl,-a,archive ;
-
- case HPUX10 :
- CC = gcc ;
- LINK = gcc -static ;
-
- case HPUX11 :
- CC = aCC ;
- C++ = aCC ;
- C++FLAGS += -D_LARGEFILE64_SOURCE ;
- LINK = aCC ;
- OPTIM = +O1 ;
- $(GENFLAGS) += -Dconst_char='const char' ;
-
- case HPUX9 :
- CC = gcc ;
- LINK = gcc ;
-
- case INTERIX :
- # using GNU
- CC = gcc ;
- C++ = gcc ;
- C++FLAGS += -Dunix ;
- LINK = gcc ;
-
- case IRIX62 :
- CC = cc -Olimit 5000 -o32 ;
- C++ = CC -Olimit 5000 -o32 ;
- $(GENFLAGS) += -nostdinc -I /irix62/usr/include ;
- LINK = CC -o32 -nostdlib -L /irix62/lib ;
-
- case IRIX65o32 :
- CC = cc -OPT:Olimit 5000 -o32 ;
- C++ = CC -OPT:Olimit 5000 -o32 ;
- LINK = CC -o32 ;
-
- case IRIX65 :
- CC = cc -OPT:Olimit 5000 -64 -mips3 ;
- C++ = CC -OPT:Olimit 5000 -64 -mips3 ;
- LINK = CC -64 ;
-
- if $(TYPE) = PIC
- {
- C++FLAGS += -KPIC ;
- CCFLAGS += -KPIC ;
- }
-
- case LINUX80 :
- CC = gcc ;
- C++ = g++ ;
- LINK = g++ ;
- $(GENFLAGS) += -D_GNU_SOURCE ;
-
- case LINUX :
- CC = gcc ;
- LINK = gcc ;
- if $(OSPLAT) = X86
- {
- Exit Set OSVER to 42/52 [RedHat M.n], or 22/24 [uname -r M.n] ;
- }
- if $(OSPLAT) = IA64 { $(GENFLAGS) += -Dconst_char='const char' ; }
- if $(OSPLAT) = PPC { LINKFLAGS += -static ; }
-
- case LINUX22 : # redhat 6.2
- CC = egcs ;
- C++ = egcs ;
- LINK = egcs ;
- if $(OSPLAT) = X86 { $(GENFLAGS) += -D_GNU_SOURCE ; }
-
- case LINUX24 :
- CC = gcc ;
- LINK = gcc ;
- if $(OSPLAT) = AXP { LINKFLAGS += -static ; }
- $(GENFLAGS) += -D_GNU_SOURCE ;
-
- case LINUX72 : # redhat 7.2 (p4v builds)
- CC = gcc ;
- LINK = gcc ;
- $(GENFLAGS) += -D_GNU_SOURCE ;
-
- case LINUX90 : # Red Hat 9. Currently only used to build p4v
- # on a test machine.
- CC = gcc ;
- LINK = g++ ;
- # if $(OSPLAT) = AXP { LINKFLAGS += -static ; }
- # LINKFLAGS += -static ;
- LINKFLAGS += -shared ;
- $(GENFLAGS) += -D_GNU_SOURCE ;
-
- case LINUX42 : # redhat 4.2
- CC = gcc ;
- LINK = gcc ;
- if $(OSPLAT) = AXP { LINKFLAGS += -static ; }
-
- case LINUX52 : # redhat 5.2
- CC = gcc ;
- LINK = gcc ;
- if $(OSPLAT) = AXP { LINKFLAGS += -static ; }
- if $(OSPLAT) = X86 { $(GENFLAGS) += -D_GNU_SOURCE ; }
-
- case LYNX :
- # using GNU
- CC = gcc ;
- C++ = g++ ;
- C++FLAGS += -Dunix ;
- LINK = gcc ;
- LINKLIBS += -lnetinet ;
-
- case MAC68K :
- EXEC = :bin.mac68k ;
- EXEC = $(EXEC:R=$(P4)) ;
- CC = mwc68k ;
- C++ = mwc68k ;
- $(GENFLAGS) += -model far -w off -D OS_MAC ;
- LINK = mwlink68k ;
- LINKFLAGS += -model far ;
- STRIP = ;
-
- case MAC :
- #
- # We do our own cr->lf mapping
-
- $(GENFLAGS) += -nomapcr ;
-
- # morefiles
- # UniversalInterfaces
-
- MF ?= :::mac-dev:MoreFiles ; MF = $(MF:R=$(P4)) ;
- UI ?= :::mac-dev:UniversalInterfaces ; UI = $(UI:R=$(P4)) ;
-
- HDRS +=
- "$(UI):Universal:Interfaces:CIncludes"
-
- "$(CW):MSL:MSL_C:MSL_Common:Include"
- "$(CW):MSL:MSL_C:MSL_Common:Include:sys"
- "$(CW):MSL:MSL_C:MSL_MacOS:Include"
-
- "$(MF):CHeaders" ;
-
- if $(OSPLAT) = CARBON
- {
- LINKLIBS =
- "$(UI):Universal:Libraries:StubLibraries:Carbonlib"
- "$(MF):MoreFilesCarbon.lib"
- $(MPWLIBS) ;
-
- $(GENFLAGS) += -d USE_CARBON -d TARGET_API_MAC_CARBON=1 ;
- }
- else
- {
- LINKLIBS =
- "$(UI):Universal:Libraries:StubLibraries:Mathlib"
- "$(UI):Universal:Libraries:StubLibraries:TextEncodingConverter"
- "$(UI):Universal:Libraries:StubLibraries:TextCommon"
- "$(UI):Universal:Libraries:StubLibraries:OpenTransportLib"
- "$(UI):Universal:Libraries:StubLibraries:OpenTptInternetLib"
- "$(UI):Universal:Libraries:PPCLibraries:OpenTptInetPPC.o"
- "$(UI):Universal:Libraries:PPCLibraries:OpenTransportExtnPPC.o"
- "$(UI):Universal:Libraries:StubLibraries:InternetConfigLib"
- "$(UI):Universal:Libraries:StubLibraries:ThreadsLib"
-
- "{MPW}:Interfaces&Libraries:Libraries:PPCLibraries:PPCToolLibs.o"
- "$(MF):MoreFilesPPC.lib"
- $(MPWLIBS) ;
-
- LINKFLAGS +=
- "-weakimport \"$(UI):Universal:Libraries:StubLibraries:Interfacelib\"" ;
- }
-
- $(GENFLAGS) += -d USE_CR ;
-
- STRIP = ;
- OPTIM = ;
-
- if $(TYPE) = cw
- {
- $(GENFLAGS) += -align mac68k ;
- }
-
- case MACHTEN :
- LINK = gcc ;
- CC = gcc ;
-
- case MPEIX :
- STRIP = ;
- LINKLIBS += -lsocket ;
-
- case MACOSX :
- CC = cc ;
- C++ = cc ;
- $(GENFLAGS) += -DCASE_INSENSITIVE ;
- $(GENFLAGS) += -fpascal-strings ;
- LINKFLAGS += -framework Carbon ;
-
- case MACOSX102 :
- CC = cc ;
- C++ = cc ;
- LINK = g++ ;
- $(GENFLAGS) += -DCASE_INSENSITIVE ;
- $(GENFLAGS) += -fpascal-strings ;
- LINKFLAGS += -framework Carbon ;
-
- case MACOSXN :
- CC = cc ;
- C++ = cc ;
-
- case MVS :
- CC = cc ;
- C++ = c++ -+ ;
- $(GENFLAGS) += -D_OE_SOCKETS -DUSE_EBCDIC -DNO_LONG_LONG ;
- LINK = c++ ;
- OPTIM = -O ;
-
- case NETBSD :
- CC = gcc ;
- C++ = g++ ;
- $(GENFLAGS) += -pipe -Dunix -I/usr/pkg/include ;
- LINK = gcc ;
- switch $(TYPE) {
- case pic : OPTIM = -O1 -fPIC ; NO_OPTIM = -fPIC ;
- }
-
- case OPENBSD31 :
- CC = gcc ;
- $(GENFLAGS) += -pipe -Dunix ;
- LINK = gcc ;
- if $(OSPLAT) != AXP { LINKFLAGS += -static ; }
-
- case OPENBSD29 :
- CC = gcc ;
- $(GENFLAGS) += -pipe -Dunix ;
- LINK = gcc ;
-
- case VMS* :
- API = p4api.bck ;
- # use C++ compiler: we're cheap
- CC = cxx ;
- C++ = cxx ;
- DEFINES += NO_MEMCPY ;
- LINKLIBS += sys$library:libcxxstd.olb/lib ;
- STRIP = ;
- OPTIM = ;
-
- case OS2 :
- $(GENFLAGS) += /DUSE_CRLF ;
- C++FLAGS += /DENUM_INT ;
- LINKLIBS += $(WATCOM)\\lib386\\so32dll.lib
- $(WATCOM)\\lib386\\tcp32dll.lib ;
- OPTIM = ;
- STRIP = ;
-
- case OSFSTATIC :
- CC = gcc ;
- C++ = gcc ;
- LINK = gcc ;
- $(GENFLAGS) += -mcpu=ev5 ;
- LINKFLAGS += -static ;
-
- case OSF :
- CC = gcc ;
- C++ = gcc ;
- LINK = gcc ;
-
- case NEXT :
- CC = cc ;
- C++ = cc ;
- $(GENFLAGS) += -arch m68k -arch i386 -arch hppa -arch sparc ;
- $(GENFLAGS) += -D_POSIX_SOURCE ;
- LINKFLAGS += -arch m68k -arch i386 -arch hppa -arch sparc ;
- LINKLIBS += -lg++ ;
- LINK = cc ;
-
- case NCR :
- CC = gcc ;
- CCFLAGS += -D_ATT4 ;
- C++FLAGS += -D_ATT4 ;
- LINK = gcc ;
- LINKLIBS += /usr/ucblib/libucb.a -lsocket -lnsl ;
-
- case NT* :
- # Use setargv.obj to get wildcard expansion.
- # The "rc" tool needs MS headers:
-
- BINDIR = e:\\perforce ;
- JAMSHELL ?= $(P4)\\Jamsh.bat % ;
- if $(OSPLAT) != IA64 { JAMSHELL ?= $(P4)\\Jamsh.bat % ; }
-
- C++FLAGS += /DCASE_INSENSITIVE /DUSE_CRLF ;
- LINKLIBS = setargv.obj advapi32.lib oldnames.lib
- kernel32.lib wsock32.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 ;
- CCFLAGS += /MTd ;
- C++FLAGS += /MTd ;
- }
- else if $(TYPE) = dyn
- {
- # Dynamic link version, for qt products
-
- OPTIM = /O2 /Zi ;
- RCFLAGS = /d NDEBUG /r ;
- CCFLAGS += /MD ;
- C++FLAGS += /MD ;
- LINKFLAGS = /MAP ;
- }
- else if $(TYPE) = dyng
- {
- # Dynamic Debugging build
-
- OPTIM = /Zi /Gm ;
- RCFLAGS = /d DEBUG /r ;
- LINKFLAGS = /DEBUG /NODEFAULTLIB:msvcrt.lib ;
- CCFLAGS += /MDd ;
- C++FLAGS += /MDd ;
- }
- 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 /Zi ;
- RCFLAGS = /d NDEBUG /r ;
- CCFLAGS += /MD ;
- C++FLAGS += /MD ;
- LINKFLAGS = /MAP ;
- }
- else
- {
- # Static link version, for command line products
-
- OPTIM = /O2 ;
- RCFLAGS = /d NDEBUG /r ;
- CCFLAGS += /MT ;
- C++FLAGS += /MT ;
- LINKFLAGS = /DEBUG /MAP ;
- }
-
- case PTX :
- C++ = CC ;
- LINK = CC ;
- LINKLIBS += -lsocket -lnsl ;
-
- case QNX :
- C++FLAGS += -DENUM_INT -Dbool=int -Dtrue=1 -Dfalse=0 ;
- STRIP = ;
-
- case QNXNTO :
- CC = cc ;
- C++ = cc ;
- LINKLIBS += -lsocket ;
-
- case RHAPSODY :
- CC = cc ;
- C++ = cc ;
-
- case SCO :
- C++ = gcc ;
- CC = gcc ;
- LINK = gcc ;
- LINKLIBS += -lsocket ;
-
- case SINIX :
- C++ = CC ;
- LINK = CC ;
- LINKLIBS += -lsocket -lnsl ;
-
- case SOLARIS25 :
- CC = gcc ;
- $(GENFLAGS) += -Dsolaris ;
- LINK = gcc ;
- LINKLIBS += /usr/ucblib/libucb.a -lsocket -lnsl ;
- AR = /usr/ccs/bin/ar ru ;
- STRIP = /usr/ccs/bin/strip ;
-
- case SOLARIS26 :
- CC = gcc ;
- C++ = gcc ;
- $(GENFLAGS) += -Dsolaris -D_LARGEFILE64_SOURCE -D__STDC__=0 ;
- LINK = gcc ;
- LINKLIBS += -lsocket -lnsl ;
- AR = /usr/ccs/bin/ar ru ;
- STRIP = /usr/ccs/bin/strip ;
-
- case SOLARIS27 :
- CC = cc ;
- C++ = CC ;
- $(GENFLAGS) += -Dsolaris -D_LARGEFILE64_SOURCE -D_STDC_=0
- -Dconst_char='const char' ;
- LINK = CC ;
- LINKLIBS += -lsocket -lnsl ;
- AR = /usr/ccs/bin/ar ru ;
- STRIP = /usr/ccs/bin/strip ;
- OPTIM = -0 ;
-
- case SOLARIS8 :
- CC = gcc ;
- C++ = g++ ;
- $(GENFLAGS) += -Dsolaris -D_LARGEFILE64_SOURCE
- -Dconst_char='const char' ;
- LINK = g++ ;
- LINKLIBS += -lsocket -lnsl ;
- AR = /usr/ccs/bin/ar ru ;
- STRIP = /usr/ccs/bin/strip ;
- OPTIM = -O ;
-
- case SUNOS :
- CC = gcc ;
- LINK = gcc ;
- LINKFLAGS += -static ;
-
- case UNICOS :
- C++ = CC ;
- LINK = CC ;
-
- case UNIXWARE2 :
- C++ = CC ;
- LINK = CC ;
- LINKLIBS += -lsocket /usr/ccs/lib/libgen.a ;
-
- case UNIXWARE7 :
- CC = gcc ;
- C++ = gcc ;
- LINK = gcc ;
- $(GENFLAGS) += -D_LARGEFILE64_SOURCE ;
- LINKLIBS += -lsocket ;
-
- case * :
- Exit Don't know $(OS) ;
- }
-
- #################################################
- #
- # Section 5. Perforce-special rules and actions.
- #
- #################################################
-
- #
- # Special Rules
- #
- # Ident exe ; -- define bits for program ident string
- # LinkP4WebMacOptions exe ; - adjusting LINKLIBS/LINKFLAGS
- # ListAC ??? ;
- # P4ClientHdrs ; - add all p4 client headers for building Web, ftp
- # Strip exe ; strip executable of symbols after building
- # TarBall x.tar : sources ; - tar up sources into archive
- #
-
- rule Ident
- {
- # Set up special defines
-
- local osid = $(OS)$(OSVER:E)$(OSPLAT:E) ;
-
- rule Fconcat { return $(<:J) ; }
-
- ObjectDefines $(<) :
- [ Fconcat ID_OS= [ FQuote $(osid[1]:U) ] ]
- [ Fconcat ID_REL= [ FQuote $(RELEASE) ] ]
- [ Fconcat ID_PATCH= [ FQuote $(PATCHLEVEL)$(SPECIAL:E) ] ]
- [ Fconcat ID_Y= [ FQuote $(SUPPDATE[1]) ] ]
- [ Fconcat ID_M= [ FQuote $(SUPPDATE[2]) ] ]
- [ Fconcat ID_D= [ FQuote $(SUPPDATE[3]) ] ] ;
-
- # Source file includes Version
-
- Includes [ FGristSourceFiles $(<) ] : Version ;
- }
-
- rule LinkP4WebMacOptions
- {
- # LinkP4WebMacOptions exe ; - adjusting LINKLIBS/LINKFLAGS
-
- local _t = [ FAppendSuffix $(<) : $(SUFEXE) ] ;
-
- # sizemax 2560: because the 384K default is too small
- # sizeflags canbackground: app gets null events to keep it
- # alive when other apps (like netscape!) are running
-
- if $(OSPLAT) = CARBON
- {
- LINKFLAGS on $(_t) =
- -warn -application -sizemax 2560 -sizemin 1536
- -@export :Mac:p4-web.exp -term OTCFMExit ;
-
- LINKLIBS on $(_t) =
- "$(UI):Universal:Libraries:StubLibraries:CarbonLib"
- "$(MF):MoreFilesCarbon.lib"
- "$(CW):MacOS Support:Libraries:Runtime:Libs:MSL_Runtime_PPC.Lib"
- "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_SIOUX_Carbon.Lib"
- "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_C_Carbon.Lib"
- "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_Extras_Carbon.Lib" ;
- }
- else
- {
- LINKFLAGS on $(_t) =
- -warn -application -sizemax 2560 -sizemin 1536 -@export
- :Mac:p4-web.exp -term OTCFMExit "-weakimport
- \"$(UI):Universal:Libraries:StubLibraries:Interfacelib\"" ;
-
- LINKLIBS on $(_t) =
- "$(UI):Universal:Libraries:StubLibraries:Mathlib"
- "$(UI):Universal:Libraries:StubLibraries:TextEncodingConverter"
- "$(UI):Universal:Libraries:StubLibraries:UnicodeConverter"
- "$(UI):Universal:Libraries:StubLibraries:TextCommon"
- "$(UI):Universal:Libraries:StubLibraries:OpenTransportLib"
- "$(UI):Universal:Libraries:StubLibraries:OpenTptInternetLib"
- "$(UI):Universal:Libraries:PPCLibraries:OpenTptInetPPC.o"
- "$(UI):Universal:Libraries:PPCLibraries:OpenTransportExtnPPC.o"
- "$(UI):Universal:Libraries:StubLibraries:InternetConfigLib"
- "$(UI):Universal:Libraries:StubLibraries:ThreadsLib"
- "$(UI):Universal:Libraries:StubLibraries:UTCUtils"
- "$(MF):MoreFilesPPC.lib"
- $(SIOUXLIBS)
- "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL_Extras_PPC.Lib" ;
- }
- }
-
- rule ListAC
- {
- # Special jam trickery to display AC numbers with "jam AC"
-
- NOTFILE $(<) ;
- ALWAYS $(<) ;
- SEARCH on $(>) = $(SEARCH_SOURCE) ;
- Depends $(<) : $(>) ;
- }
-
- actions ListAC
- {
- $(AWK) 'BEGIN {L=0; FS=","} /AC_/ {print L, $1; L++}' $(>)
- }
-
- rule MacRes
- {
- local _t = [ FAppendSuffix $(<) : $(SUFEXE) ] ;
- Depends $(_t) : $(>) ;
- SEARCH on $(>) = $(SEARCH_SOURCE) ;
-
- if $(OS) = MAC
- {
- MacRes1 $(_t) : $(>) ;
- }
- }
-
- actions MacRes1
- {
- rez -a -o $(<) $(>)
- }
-
- rule P4ClientHdrs
- {
- # P4ClientHdrs ; - add p4 client headers for building Web, ftp
-
- SubDirHdrs $(P4) client ;
- SubDirHdrs $(P4) diff ;
- SubDirHdrs $(P4) i18n ;
- SubDirHdrs $(P4) middle ;
- SubDirHdrs $(P4) net ;
- SubDirHdrs $(P4) web ;
- }
-
- rule LinkLibraries
- {
- # make library dependencies of target
- # set NEEDLIBS variable used by 'actions Main'
-
- local _t = [ FAppendSuffix $(<) : $(SUFEXE) ] ;
- local _s = [ FAppendSuffix $(>) : $(SUFLIB) ] ;
-
- Depends $(_t) : $(_s) ;
- NEEDLIBS on $(_t) += $(_s) ;
- }
-
- rule Strip
- {
- if $(STRIP) && $(TYPE:E=opt) = opt
- {
- Strip1 $(<:S=$(SUFEXE)) ;
- }
- }
-
- actions Strip1
- {
- $(STRIP) $(<)
- }
-
- rule TarBall
- {
- NotFile api ;
- Depends api : $(<) ;
- Depends $(<) : $(>) ;
- LOCATE on $(<) = $(EXEC) ;
- SEARCH on $(>) += $(HDRS) $(SUBDIRHDRS) $(SUBDIR) ;
- TarBallPre $(<) : $(>) ;
- TarBallCopy $(<) : $(>) ;
- TarBallPost $(<) : $(>) ;
- }
-
- rule TarBallPre { }
- rule TarBallPost { }
-
- actions TarBallCopy
- {
- t=/tmp/td.$$
- trap 'rm -rf $t' 0
- mkdir $t
- cp $(>) $t
- ( cd $t; tar cvf - * ) > $(<)
- }
-
- #################################################
- #
- # Section 5. Perforce-special Windows rules.
- #
- #################################################
-
- #
- # Special p4-win rules:
- #
- # P4SccDefines - set C++ flags for (old) p4scc.dll
- # P4WinDefines - set C++ flags for p4-win/gui
- # P4WinDiffDefines - set C++ flags for p4-win/diff, merge
- # WinDefines opts : defines ; - set C++ flags for p4-win
- # WinDllDeffile exe : file ; - set /def: file for link
- # WinDllLinkage exe : libs ; - set up link flags windows DLL
- # WinDllNoMain exe ; - setup exe with no main
- # WinLinkage exe : libs ; - set up link flags windows exe
- # WinRes exe : *.rc : flags ; - compile .rc->.res, link against exe
- #
-
- rule P4SccDefines
- {
- WinDefines /GX : _USRDLL _WINDLL ;
- }
-
- rule P4WinDefines
- {
- local u = ;
-
- # Unicode builds except on Win98.
-
- if $(OSVER) != 98
- {
- u += [ FDefines UNICODE ] ;
- }
-
- switch $(TYPE_DEBUG)
- {
- case true : u += /GR /GX /GS ;
- case * : u += /GR /GX /GS /GF /Gy /Ob1 ;
- }
-
- WinDefines $(u) : STRICT ;
- }
-
- rule P4WinDiffDefines
- {
- WinDefines /GR /GX : P4DIFF ;
- }
-
- rule WinDefines
- {
- SubDirC++Flags
- /W3 $(1)
- [ FDefines NDEBUG WIN32 _WINDOWS _MBCS $(2) ] ;
-
- if $(TYPE_DYNAMIC)
- {
- SubDirC++Flags [ FDefines _AFXDLL ] ;
- }
- }
-
- rule WinDllDeffile
- {
- # WinDllDeffile exe : file ; - set /def: file for link
-
- SEARCH on $(>) = $(SEARCH_SOURCE) ;
- DEFFILE on $(<) = $(>) ;
- DEPENDS $(<) : $(>) ;
-
- # Have to redefine actions for the DEFFILE
- # Should move to jambase
-
- actions Link bind NEEDLIBS DEFFILE
- {
- $(LINK) $(LINKFLAGS) /out:$(<) /def:$(DEFFILE) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)
- }
- }
-
- rule WinDllLinkage
- {
- # WinDllLinkage exe : libs ; - set up link flags windows DLL
-
- WinLinkage $(<) : $(>) ;
-
- LINKFLAGS on $(<) += /dll ;
- }
-
- rule WinDllNoMainLinkage
- {
- # WinDllNoMain exe ;
-
- LINKFLAGS on $(<) += /NOENTRY /MACHINE:I386 /SUBSYSTEM:WINDOWS /DLL ;
-
- LINKLIBS on $(<) = $(2) ;
- }
-
- rule WinLinkage
- {
- # WinLinkage exe : libs ; - set up link flags windows exe
-
- local _lf = /subsystem:windows ;
-
- switch $(TYPE_DEBUG)
- {
- case true : _lf += /DEBUG ;
- case * : _lf += /MAP ;
- }
-
- if $(OSVER) != 98
- {
- _lf += /ENTRY:"wWinMainCRTStartup" ;
- }
-
- switch $(OSPLAT)
- {
- case X86 : _lf += /MACHINE:X86 ;
- }
-
- LINKFLAGS on $(<) = $(LINKFLAGS) $(_lf) ;
-
- LINKLIBS on $(<) =
- gdi32.lib comctl32.lib shlwapi.lib
- user32.lib version.lib shell32.lib
- advapi32.lib oldnames.lib kernel32.lib wsock32.lib
- shlwapi.lib version.lib wsock32.lib winmm.lib
- $(2) ;
- }
-
- rule WinRes
- {
- # WinRes exe : *.rc : flags ; - compile .rc->.res, link
-
- # Compile .rc into .res for linking into executable.
- # (Strictly MSVCNT, I presume.)
-
- local s r e ;
-
- e = [ FAppendSuffix $(<) : $(SUFEXE) ] ;
- s = [ FGristSourceFiles $(>) ] ;
- r = $(s:S=.res:G=) ;
-
- DEPENDS $(e) : $(r) ;
- DEPENDS $(r) : $(s) ;
-
- LinkLibraries $(e) : $(r) ;
-
- LOCATE on $(r) = $(LOCATE_TARGET) ;
- SEARCH on $(s) = $(SEARCH_SOURCE) ;
-
- # .rc files have #includes, but we're pretty sure
- # they include only files local to the .rc's directory
-
- HDRRULE on $(>) = HdrRule ;
- HDRSCAN on $(>) = $(HDRPATTERN) ;
- HRDSEARCH on $(>) = $(SEARCH_SOURCE) ;
- HDRGRIST on $(>) = $(HDRGRIST) ;
-
- # Bind headers
-
- RCFLAGS on $(r) = $(RCFLAGS) $(3) ;
- RCHDRS on $(r) = [ on $(r) FIncludes
- $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ] ;
-
- WinRc $(r) : $(s) ;
-
- Clean clean : $(r) ;
- }
-
- actions WinRc {
- rc /fo $(<) $(RCFLAGS) $(RCHDRS) $(>)
- }
-
-
- #################################################
- #
- # Section 7. QT build rules and actions.
- #
- #################################################
-
- #
- # QtDefines ; - Add defines/headers for building with QT
- # QtLinkage exe ; - Add linkflags/libs to exe for building with QT
- # QtFormLibrary lib : *.ui ; make .h's and archive .obj's
- # QtMocLibrary lib : *.h ; - moc, compile, & archive
- # QtImages x.h : files ; - make a .h from image files
- # QtEmbed x.h : files : flags ; - preprocess with qembed
- # QtMoc x.cpp : x.h ; - preprocess with moc
- # QtUicCpp x.cpp : x.ui x.h ; - preprocess with uic to make .cpp
- # QtUicHdr x.h : x.ui ; - preprocess with uic to make .h
- #
-
- rule QtDefines
- {
- # QtDefines ; - Add defines/headers for building with QT
-
- if ! $(QTDIR)
- {
- Exit Can't build in QT directories without QTDIR set. ;
- }
-
- if $(JAMVERSION) < 2.4.1 {
- Exit QT builds require 2.4.1 ;
- }
-
- QTMOC = [ FDirName $(QTDIR) bin moc ] ;
- QTUIC = [ FDirName $(QTDIR) bin uic ] ;
- QEMBED = [ FDirName $(QTDIR) bin qembed ] ;
-
- local _d _f ;
-
- _d += QT_NO_STL ;
- _d += QT_THREAD_SUPPORT ;
-
- if $(TEST) { _d += TEST ; }
-
- # Source code debugging
- # DEBUG is in our code -- conditional compilations
- # QT_NO_* is in QT code
-
- switch $(TYPE_DEBUG)
- {
- case true : _d += DEBUG ;
- case * : _d += QT_NO_DEBUG QT_NO_CHECK ;
- }
-
- switch $(OS)
- {
- case NT :
- _f += /GX /GR ;
- # from Qt's Makefile
- _f += /Zm200 /W3 ;
-
- case MACOSX :
- if ! $(TYPE_DEBUG) { OPTIM = -O4 ; }
-
- case * :
- #_f += -frepo ;
- }
-
- SubDirC++Flags [ FDefines $(_d) ] $(_f) ;
- SubDirHdrs [ FDirName $(QTDIR) include ] ;
- SubDirHdrs $(LOCATE_SOURCE[1]) ;
- }
-
- rule QtLinkage
- {
- # QtLinkage exe ; - linkflags/libs for building with QT
-
- local _t = [ FAppendSuffix $(<) : $(SUFEXE) ] ;
-
- switch $(OS)
- {
- case FREEBSD :
- LINKFLAGS on $(_t) +=
- -Wl,-rpath,$(QTDIR)/lib
- -L$(QTDIR)/lib -L/usr/X11R6/lib ;
-
- LINKLIBS on $(_t) +=
- -lqt-mt -lSM -lICE -lXext -lX11
- -lGL # for qtree
- -lm -pthread ;
-
- case SOLARIS :
- LINKFLAGS on $(_t) +=
- -Wl,-R,$(QTDIR)/lib
- -L$(QTDIR)/lib -L/usr/X11R6/lib ;
-
- LINKLIBS on $(_t) +=
- -lqt-mt -lqui -lSM -lICE -lXext -lX11
- -lxnet -ldl -lpthread -lposix4 -lrt
- -lm ;
-
- case NETBSD :
- LINKFLAGS on $(_t) +=
- -Wl,-rpath,$(QTDIR)/lib
- -Wl,-rpath,/usr/X11R6/lib
- -Wl,-rpath,/usr/pkg/lib
- -L$(QTDIR)/lib -L/usr/X11R6/lib -L/usr/pkg/lib ;
-
- LINKLIBS on $(_t) +=
- -lqt-mt -lSM -lICE -lXext -lX11
- -lGL # for qtree
- -lm -lpthread ;
-
- if ! $(TYPE_DYNAMIC) {
- LINKFLAGS on $(_t) += -static ;
- }
-
- case LINUX :
- LINKFLAGS on $(_t) +=
- -Wl,-rpath,$(QTDIR)/lib
- -L$(QTDIR)/lib -L/usr/X11R6/lib
- ;
-
- LINKLIBS on $(_t) +=
- -lqt-mt -lSM -lICE -lXext -lX11 -lm -pthread -ldl ;
-
- case MACOSX :
- LINKFLAGS on $(_t) +=
- -prebind
- -L$(QTDIR)/lib
- -framework Carbon
- -framework QuickTime
- ;
-
- LINKLIBS on $(_t) += -lqt-mt -lz ;
- #LINKLIBS on $(_t) += -lqt ;
-
- if ! $(TYPE_DYNAMIC)
- {
- LINKLIBS on $(_t) += -lz ;
- }
-
- QtMacPackage $(<) ;
-
- case NT :
-
- # warn about non-dynamic builds on NT
-
- if ! $(TYPE_DYNAMIC) && ! $(QTWARNED)
- {
- echo Warning: you really want jam -sTYPE=dyn
- for QT on NT. ;
- QTWARNED = 1 ;
- }
-
- # no dos box unless debug
-
- if ! $(TYPE_DEBUG)
- {
- LINKFLAGS on $(_t) +=
- $(LINKFLAGS)
- /subsystem:windows
- ;
- }
-
- LINKLIBS on $(_t) =
- [ Glob [ FDirName $(QTDIR) lib ] : qt-mt*.lib ]
- [ FDirName $(QTDIR) lib qtmain.lib ]
- advapi32.lib # for qtree
- user32.lib
- gdi32.lib
- comdlg32.lib
- ole32.lib
- oleaut32.lib
- shell32.lib
- uuid.lib
- imm32.lib
- winmm.lib
- wsock32.lib
- winspool.lib
- ;
-
- case * :
- Exit Don't know how to link QT executables on $(OS). ;
- }
- }
-
- rule QtDllLinkage
- {
- # QtLinkage exe ; - linkflags/libs for building with QT
-
- switch $(OS)
- {
- case NT :
-
- # warn about non-dynamic builds on NT
-
- if ! $(TYPE_DYNAMIC) && ! $(QTWARNED)
- {
- echo Warning: you really want jam -sTYPE=dyn
- for QT on NT. ;
- QTWARNED = 1 ;
- }
-
- LINKFLAGS on $(<) +=
- $(LINKFLAGS)
- /DLL
- ;
-
- echo Warning: you are building a dll $(LINKFLAGS) ;
-
- # no dos box unless debug
-
- if ! $(TYPE_DEBUG)
- {
- LINKFLAGS on $(<) +=
- $(LINKFLAGS)
- /subsystem:windows
- ;
- }
-
- LINKLIBS on $(<) =
- [ Glob [ FDirName $(QTDIR) lib ] : qt-mt*.lib ]
- [ FDirName $(QTDIR) lib qtmain.lib ]
- advapi32.lib # for qtree
- user32.lib
- gdi32.lib
- comdlg32.lib
- ole32.lib
- oleaut32.lib
- shell32.lib
- uuid.lib
- imm32.lib
- winmm.lib
- wsock32.lib
- winspool.lib
- shlwapi.lib
- ;
-
- case * :
- Exit Don't know how to link QT executables on $(OS). ;
- }
- }
-
- # Mac special package - make a raw executable into a .app folder
- # This does x things:
-
- # 1. locates the actual exe in exe.app/Contents/MacOS/exe
- # 2. Creates exe.app/Contents/PkgInfo
- # 3. Creates exe.app/Contents/Info.plist
- # 4. Creates exe.app/Contents/Resources/application.icns
-
- rule QtMacPackage
- {
- # QtMacPackage exe ;
-
- Depends $(<) : <$(<)>PkgInfo ;
- Depends $(<) : <$(<)>Info.plist ;
- Depends $(<) : <$(<)>application.icns ;
-
- MakeLocate $(<) :
- [ FSubDirPath $(EXEC_TOKENS) $(<:S=.app) Contents MacOS ] ;
- MakeLocate <$(<)>PkgInfo :
- [ FSubDirPath $(EXEC_TOKENS) $(<:S=.app) Contents ] ;
- MakeLocate <$(<)>Info.plist :
- [ FSubDirPath $(EXEC_TOKENS) $(<:S=.app) Contents ] ;
- MakeLocate <$(<)>application.icns :
- [ FSubDirPath $(EXEC_TOKENS) $(<:S=.app) Contents Resources ] ;
-
- QtMacPlist <$(<)>Info.plist :
- <qt>Info.plist.app : application.icns p4v ;
-
- SEARCH on <qt>Info.plist.app =
- [ FDirName $(QTDIR) mkspecs default ] ;
-
- QtMacPackageInfo <$(<)>PkgInfo ;
- }
-
- actions QtMacPackageInfo
- {
- echo "APPL????" > $(<)
- }
-
- rule QtMacIcons
- {
- File <$(<)>application.icns : $(>) ;
- }
-
- rule QtMacPlist
- {
- Depends files : $(<) ;
- Depends $(<) : $(>) ;
- QMI on $(<) = $(3[1]) ;
- QME on $(<) = $(3[2]) ;
- SEARCH on $(>) = $(SEARCH_SOURCE) ;
- MODE on $(<) = $(FILEMODE) ;
- Chmod $(<) ;
- }
-
- actions QtMacPlist
- {
- sed 's/@ICON@/$(QMI)/;s/@EXECUTABLE@/$(QME)/' $(>) > $(<)
- }
-
- # Library rules
-
- rule QtHdrRule
- {
- # Our own HdrRule that knows a .ui doesn't itself include
- # a .h, but instead causes the resulting .cpp to do so.
- # What .cpp? TCPP is set on the .ui by QtFormLibrary,
- # and that's how we know it's this rigged dependency.
-
- HdrRule $(TCPP:E=$(<)) : $(>) ;
- }
-
- rule QtFormLibrary
- {
- # QtFormLibrary lib : *.ui ; make .h's and archive .obj's
-
- # For each x.ui file we generate _3_ files:
- #
- # x.h (uic x.ui)
- # tx.cpp (uic x.ui x.h) (temp)
- # mx.cpp (moc x.h) (temp)
- #
- # The tx.cpp and mx.cpp get compiled into tx.o and mx.o
- # and archived into the library.
-
- Library $(<) : m$(>:S=.cpp) ;
- Library $(<) : t$(>:S=.cpp) ;
-
- local i ;
-
- for i in $(>)
- {
- local h = $(i:S=.h) ;
- local ui = [ FGristSourceFiles $(i) ] ;
- local mcpp = [ FGristSourceFiles m$(i:S=.cpp) ] ;
- local tcpp = [ FGristSourceFiles t$(i:S=.cpp) ] ;
- local mobj = $(mcpp:S=$(SUFOBJ)) ;
- local tobj = $(tcpp:S=$(SUFOBJ)) ;
-
- # .ui's can include .h files, though what it actually
- # means is that the generated tx.cpp includes the .h's,
- # so we pass the tx.cpp name down to our own QtHdrRule.
-
- TCPP on $(ui) = $(tcpp) ;
- HDRRULE on $(ui) = QtHdrRule ;
- HDRSCAN on $(ui) = "<include .*>(.*)</include>" ;
- HDRSEARCH on $(ui) =
- $(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ;
-
- QtUicHdr $(h) : $(ui) ;
- QtUicCpp $(tcpp) : $(ui) $(h) ;
- QtMoc $(mcpp) : $(h) ;
-
- if ! $(TYPE_DEBUG) { RmTemps $(mobj) : $(mcpp) ; }
- if ! $(TYPE_DEBUG) { RmTemps $(tobj) : $(tcpp) ; }
-
- Includes $(mcpp) : $(h) ;
- Includes $(tcpp) : $(h) ;
- }
- }
-
- rule QtMocLibrary
- {
- # QtMocLibrary lib : *.h ; - moc, compile, & archive
-
- # X.h -> temp mX.cpp -> temp mX.obj -> lib
- # Normal library rule on the generated m*.cpp files
-
- Library $(<) : m$(>:S=.cpp) ;
-
- # Make mX.cpp from X.h using moc
- # mX.cpp is a temp
-
- local h ;
-
- for h in $(>)
- {
- local cpp = [ FGristSourceFiles m$(h:S=.cpp) ] ;
- local obj = $(cpp:S=$(SUFOBJ)) ;
- QtMoc $(cpp) : $(h) ;
- if ! $(TYPE_DEBUG) { RmTemps $(obj) : $(cpp) ; }
- }
- }
-
- # Source file rules
-
- rule QtImages
- {
- # QtImages x.h : files ; - make a .h from image files
-
- # Delete and do piecemeal append for line-length limited NT.
-
- QtEmpty $(<) ;
-
- QEMBED on $(<) = $(QTUIC) ;
- QtEmbed $(<) : $(>) : -embed $(<:B) ;
- }
-
- actions QtEmpty
- {
- $(RM) $(<)
- }
-
- rule QtEmbed
- {
- # QtEmbed x.h : files : flags ; - preprocess with qembed
-
- NotFile src ;
- Depends src : $(<) ;
-
- Depends all : $(<) ;
- Depends $(<) : $(>) ;
- Clean clean : $(<) ;
-
- SEARCH on $(>) = $(SEARCH_SOURCE) ;
- MakeLocate $(<) : $(LOCATE_SOURCE) ;
-
- QEMBEDFLAGS on $(<) = $(3) ;
- }
-
- actions piecemeal QtEmbed
- {
- $(QEMBED) $(QEMBEDFLAGS) $(>) >> $(<)
- }
-
- rule QtMoc
- {
- # QtMoc x.cpp : x.h ; - preprocess with moc
-
- # Derive a .cpp from .h using Qt's moc
-
- NotFile src ;
- Depends src : $(<) ;
-
- Depends all : $(<) ;
- Depends $(<) : $(>) ;
- Clean clean : $(<) ;
-
- SEARCH on $(>) = $(SEARCH_SOURCE) ;
- MakeLocate $(<) : $(LOCATE_SOURCE) ;
- }
-
- actions QtMoc
- {
- $(QTMOC) $(>) -o $(<)
- }
-
- rule QtUicCpp
- {
- # QtUicCpp x.cpp : x.ui x.h ; - preprocess with uic to make .cpp
-
- NotFile src ;
- Depends src : $(<) ;
-
- Depends all : $(<) ;
- Depends $(<) : $(>) ;
- Clean clean : $(<) ;
-
- SEARCH on $(>) = $(SEARCH_SOURCE) ;
- MakeLocate $(<) : $(LOCATE_SOURCE) ;
- }
-
- # don't include dir name in x.h
-
- actions QtUicCpp
- {
- $(QTUIC) $(>[1]) -i $(>[2]:D=) -o $(<)
- }
-
- rule QtUicHdr
- {
- # QtUicHdr x.h : x.ui ; - preprocess with uic to make .h
-
- NotFile src ;
- Depends src : $(<) ;
-
- Depends all : $(<) ;
- Depends $(<) : $(>) ;
- Clean clean : $(<) ;
-
- SEARCH on $(>) = $(SEARCH_SOURCE) ;
- MakeLocate $(<) : $(LOCATE_SOURCE) ;
- }
-
- actions QtUicHdr
- {
- $(QTUIC) $(>) -o $(<)
- }
-
-
- #################################################
- #
- # Section 8. Per-platform actions.
- #
- #################################################
-
- if $(OS) = AS400
- {
- actions Archive {
- echo > $(<)
- }
-
- actions Link {
- echo > $(<)
- }
-
- actions Cc {
- $(CC) /Q+ /C $(CCFLAGS) $(CCDEFS) /I$(HDRS) /I$(STDHDRS) $(>)
- if not errorlevel 1 echo > $(<)
- }
-
- actions C++ {
- $(C++) /Q+ /C $(C++FLAGS) $(CCDEFS) /I$(HDRS) /I$(STDHDRS) $(>)
- if not errorlevel 1 echo > $(<)
- }
- }
-
- if $(MSVCNT)
- {
- actions updated together piecemeal Archive {
- pushd $(<:D)
- if exist $(<:BS) set _$(<:B)_=$(<:BS)
- $(AR) /nologo /out:$(<:BS) %_$(<:B)_% $(>:BS)
- popd
- }
-
- actions QtEmpty {
- if exist $(<) $(RM) $(<)
- }
- }
-
- if $(OS) = VMS
- {
- actions TarBallCopy {
- $(MKDIR) [.p4api]
- $(CP) $(>[1]) ,$(>[2-]) [.p4api]
- backup [.p4api]*.* $(<)/save
- delete [.p4api]*.*;*
- set file/prot=(o:d) p4api.dir
- delete p4api.dir;
- }
- }
-
- if $(OS) = NT
- {
- actions TarBallPre {
- $(MKDIR) p4api.dir
- }
-
- actions piecemeal TarBallCopy {
- cp $(>) p4api.dir
- }
-
- actions TarBallPost {
- cd p4api.dir
- tar cvf ../p4api.tmp *
- cd ..
- mv p4api.tmp $(<)
- rm -rf p4api.dir
- }
- }