SHELL = /bin/sh OS := $(shell uname) ## We don't care about architectural distinguishers in the OS ## such as IRIX64, IRIX32, etc. so we truncate IRIX?? to IRIX ifeq ($(findstring IRIX,$(OS)),IRIX) OS := IRIX endif ## Make CYGWIN_XXXX CYGWIN so it's "Windows cross platform" :) ifeq ($(findstring CYGWIN,$(OS)),CYGWIN) OS := CYGWIN endif ## Make MINGW_XXXX MINGW so it's "Windows cross platform" :) ifeq ($(findstring MINGW,$(OS)),MINGW) OS := MINGW endif # TOPDIR needs to be redefined for every GNUmakefile TOPDIR ?= ../ THISDIR = . MAKEFILE = GNUmakefile MAKEDEPEND = ignore ####################################################################### ## ## VERSIONING SEMANTICS ## ## Version consistes of . . - ## Where: ## major : Production (0 = pre-production) ## minor : 0-7 = Production minor, 8 = Alpha, 9 = Beta ## release : Release tag ## revision: Release revision - 0 = development (cutting edge). ## ## Usage: ## Default - VERSION_REVISION is set to the value defined here ## Env variable PRODUCER_VERSION_REVISION overrides default ## e.g.: ## % setenv PRODUCER_VERSION_REVISION 5 ## % make version ## Command line overrides env variable ## % make VERSION_REVISION= ####################################################################### VERSION_MAJOR = 1 VERSION_MINOR = 1 VERSION_RELEASE = 0 VERSION_REVISION ?= 1 ifneq (,$(PRODUCER_VERSION_REVISION)) VERSION_REVISION = $(PRODUCER_VERSION_REVISION) endif VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_RELEASE) DEF = -DPRODUCER_VERSION=\"$(VERSION)\" \ -DPRODUCER_VERSION_REVISION="$(VERSION_REVISION)" INC = -I$(TOPDIR)/include CXXFLAGS = $(ARCHARGS) $(DOF) $(DEF) $(INC) LDFLAGS = $(ARCHARGS) $(DOF) $(LINKARGS) -L$(TOPDIR)/lib/$(OS)$(ARCH) OBJS = $(CXXFILES:.cpp=.o) \ $(CFILES:.c=.o) \ $(YACCFILES:.y=.o) \ $(LEXFILES:.l=.o) DOF = $(OPTF) DEBUGDIR = $(OS)$(ARCH).Debug OPTDIR = $(OS)$(ARCH).Opt BININST = bin LIBINST = lib INST_LOCATION ?= /usr/local INST_LIBS = $(INST_LOCATION)/lib$(ARCH_EXT) INST_INCLUDE = $(INST_LOCATION)/include INST_SHARE = $(INST_LOCATION)/share/Producer INST_DEMOS = $(INST_SHARE)/bin INST_SRC = $(INST_SHARE)/src INST_DOC = $(INST_SHARE)/doc INST_DATA = $(INST_SHARE)/data INST_DEMO_SRC = $(INST_SRC)/demos LINK = ln -sf INSTXCMD = install -m 755 INSTRCMD = install -m 644 INSTLINKCMD = $(LINK) LIB_PREFIX = lib LIB_EXT = so EXE_EXT = MAKEDIST = echo " === Distribution build is not implemented yet for $(OS)"; printf "\n" INSTLOGFILE = /tmp/.producer_inst_log YFLAGS = -d RECURSIVE_TARGETS = \ opt \ debug \ static \ staticdebug \ clean \ cleandepend \ cleandependopt \ cleandependdbg \ cleandbg \ cleanopt \ cleantarget \ cleantargetopt \ cleantargetdbg \ clobber \ clobberdbg \ clobberopt \ beautify \ docs \ depend \ ifneq ("$(OPENTHREADS_INC_DIR)","") INC += -I$(OPENTHREADS_INC_DIR) endif ifneq ("$(OPENTHREADS_LIB_DIR)","") LDFLAGS += -L$(OPENTHREADS_LIB_DIR) endif OPEN_THREAD_LIB = -lOpenThreads PTHREAD_LIB = -lpthread STATICLIB_EXT = a STATICLIB = $(LIB).$(STATICLIB_EXT) #### SUN OS Specific definitions ifeq ($(OS),SunOS) ARCH = 32 #### if using g++ on a sun ifeq ($(COMPILER),gnu) ifeq (x$(CXX),x) CXX = g++ endif INC += DEPARG = -M DEF += -W -Wall -fPIC -fpermissive OPTF = -O2 DBGF = -g SHARED = -shared -fPIC ifeq ($(ARCH),64) ARCHARGS = -m64 else ARCHARGS = endif #### using forte compilers (default) else CXX = CC INC += DEPARG = -xM1 DEF += -features=extensions -mt -KPIC OPTF = -xO4 DBGF = -g SHARED = -G ifeq ($(ARCH),64) ARCHARGS = -xarch=v9 else ARCHARGS = endif endif LINKARGS = -mt INSTXCMD = cp INSTRCMD = cp INST_LOCATION = /opt/Producer INST_LIBS = $(INST_LOCATION)/lib$(ARCH_EXT) INST_INCLUDE = $(INST_LOCATION)/include MAKEDIST = $(TOPDIR)/Make/makepkg GL_LIBS = -lGL X_LIBS = -lXmu -lX11 OPEN_THREAD_LIB = -lOpenThreads -lpthread endif #### IRIX Specific definitions ifeq ($(OS),IRIX) CXX = CC ifeq ($(CXX),CC) CXX = CC DEPARG = -M INC += -I${TOPDIR}/include DEF += -LANG:std -OPT:Olimit=0 \ -DEBUG:woff=1682 -DEBUG:woff=3303 \ -MDupdate $(MAKEDEPEND) \ OPTF = -O2 DBGF = -g SHARED = -shared ARCH = 32 ifeq ($(ARCH),64) ARCHARGS = -64 else ARCHARGS = -n32 endif ARCH_EXT = $(ARCH) LINKARGS = -L${TOPDIR}/lib -LANG:std -OPT:Olimit=0 INSTXCMD = cp INSTRCMD = cp else CXX = g++ INC += -I${TOPDIR}/include OPTF = -O2 DBGF = -g DEF = -fPIC -W -Wno-unused SHARED = -shared ARCH = 32 ifeq ($(ARCH),64) ARCHARGS = -mabi=64 -mips4 else ARCHARGS = -mabi=n32 -mips4 endif ARCH_EXT = $(ARCH) LINKARGS = -L${TOPDIR}/lib INSTXCMD = cp INSTRCMD = cp endif GL_LIBS = -lGL X_LIBS = -lXmu -lX11 OPEN_THREAD_LIB = -lOpenThreads -lpthread endif #### Linux specific definitions ifeq ($(OS),Linux) DEF += -DGLX_GLXEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES SYSARCH := $(shell arch) ifeq ($(COMPILER),intel) CXX = icpc CXXFLAGS += -x c++ -cxxlib-gcc -gcc-version=323 DEF += -fPIC OPTF = -O2 DBGF = -g ifeq ($(SYSARCH),ia64) ARCH = IA64 else ARCH = 32 endif else ifeq (x$(CXX),x) CXX = g++ endif ifeq ("$(COMPILE_OSG_OP_OT_WITH_SONAMES)","YES") LDFLAGS += -Wl,-soname -Wl,$@.$(LIB_EXT).0 endif DEF += -fPIC -pthread OPTF = -O2 DBGF = -ggdb -gstabs ifeq ($(SYSARCH),x86_64) ARCH = 64 ifeq (x$(CXX),x) CXX = g++ endif else ARCH = 32 endif endif DEPARG = -M INC += DEF += SHARED = -shared ARCHARGS = ifeq ($(SYSARCH),x86_64) LINKARGS = -L/usr/X11R6/lib64 else LINKARGS = -L/usr/X11R6/lib endif MAKEDIST = $(TOPDIR)/Make/makerpms GL_LIBS = -lGL X_LIBS = -lXmu -lX11 OPEN_THREAD_LIB = -lOpenThreads -lpthread LDFLAGS += -pthread endif #### FreeBSD specific definitions ifeq ($(OS),FreeBSD) SYSARCH := $(shell uname -p) DEF += -DGLX_GLXEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES ifeq (x$(CXX),x) CXX = g++ endif ifeq (x$(PTHREAD_CFLAGS),x) PTHREAD_CFLAGS = -pthread endif ifeq (x$(PTHREAD_LIBS),x) PTHREAD_LIBS = -pthread endif ifeq (x$(ARCH),x) ARCH = $(SYSARCH) endif DEPARG = -MM INC += -I/usr/local/include -I/usr/X11R6/include DEF += -W -Wall $(PTHREAD_CFLAGS) OPTF = -O2 DBGF = -g SHARED = -shared ifeq ($(SYSARCH),amd64) ARCHARGS = -fPIC else ARCHARGS = endif LINKARGS = -L/usr/local/lib -L/usr/X11R6/lib $(PTHREAD_LIBS) GL_LIBS = -lGL X_LIBS = -lXmu -lX11 OPEN_THREAD_LIB = -lOpenThreads endif #### MacOS X specific definitions ifeq ($(OS),Darwin) ifeq (x$(CXX),x) CXX = g++ endif DEPARG = -M #### Default to AGL? Will try it temporary while waiting for feedback USE_AGL ?= yes ifeq ($(USE_AGL),yes) DEF += -Wall -D__DARWIN_OSX__ -D__USE_OSX_AGL_IMPLEMENTATION__ LINKARGS = -framework Carbon -framework AGL X_LIBS = GL_LIBS = -framework OpenGL else ifeq ($(USE_CGL),yes) DEF += -Wall -D__DARWIN_OSX__ -D__USE_OSX_CGL_IMPLEMENTATION__ LINKARGS = -framework Carbon X_LIBS = GL_LIBS = -framework OpenGL else DEF += -Wall -D__DARWIN_OSX__ -DGLX_GLXEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES INC += -I/usr/X11R6/include LINKARGS = -L/usr/X11R6/lib -framework Carbon X_LIBS = -lXmu -lX11 GL_LIBS = -lGL endif endif OPTF = -O2 DBGF = -gstabs+ -ggdb SHARED = -dynamiclib ARCH = 32 ARCHARGS = LIB_EXT = dylib OPEN_THREAD_LIB = -lOpenThreads -lpthread endif #### Cygwin/Mingw specific definitions ifeq ($(OS),CYGWIN) CXX = c++ INC += ifeq ("$(OPENTHREADS_INC_DIR)","") INC += -I/usr/local/OpenThreads/include endif DEF += -DWIN32 -W -Wall -DPR_LIBRARY -DNOMINMAX -mnop-fun-dllimport DEPARG = -M $(DEF) OPTF = -O2 DBGF = -g SHARED = -shared \ -Wl,--export-all-symbols \ -Wl,--out-implib,libProducer.dll.a EXE_EXT =.exe ARCH = 32 ARCHARGS = LINKARGS = -W -Wall DYNAMICLIBRARYLIB = GL_LIBS = -lglu32 -lopengl32 X_LIBS = -lgdi32 -luser32 OPEN_THREAD_LIB = -lOpenThreads -lpthread SOCKET_LIBS = LIB_PREFIX = cyg LIB_EXT = dll IMP_LIB_EXT = dll.a LINK = cp -f INST_LOCATION = /usr/local/Producer INST_LIBS = $(INST_LOCATION)/bin INST_IMP_LIBS = $(INST_LOCATION)/lib INST_INCLUDE = $(INST_LOCATION)/include INST_SHARE = $(INST_LOCATION) MAKEDIST = $(TOPDIR)/Make/makeinnosetup ifeq ("$(OPENTHREADS_LIB_DIR)","") LDFLAGS += -L/usr/local/OpenThreads/lib endif endif #### Cygwin/Mingw specific definitions ifeq ($(OS),MINGW) CXX = c++ -mthreads DEPARG = -M INC += DEF += -DWIN32 -Wall -DPR_LIBRARY -DNOMINMAX OPTF = -O2 DBGF = -g SHARED = -shared -mthreads \ -Wl,--export-all-symbols \ -Wl,--out-implib,libProducer.dll.a EXE_EXT =.exe ARCH = 32 ARCHARGS = LINKARGS = -W -Wall DYNAMICLIBRARYLIB = GL_LIBS = -lglu32 -lopengl32 X_LIBS = -lgdi32 -luser32 OPEN_THREAD_LIB = -lOpenThreads SOCKET_LIBS = LIB_PREFIX = lib LIB_EXT = dll IMP_LIB_EXT = dll.a PLUGIN_EXT = dll LINK = cp -f INST_LOCATION = /usr/local/Producer INST_LIBS = $(INST_LOCATION)/bin INST_IMP_LIBS = $(INST_LOCATION)/lib INST_INCLUDE = $(INST_LOCATION)/include INST_SHARE = $(INST_LOCATION) MAKEDIST = $(TOPDIR)/Make/makeinnosetup endif #### HP-UX Specific definitions # contributed by tino.schwarze@informatik.tu-chemnitz.de ifeq ($(OS),HP-UX) CXX = aCC -AA -mt DEPARG = -w +make -E INC += -I/opt/graphics/OpenGL/include -I/usr/contrib/X11R6/include DEF += +Z -z OPTF = +O2 DBGF = -g SHARED = -b +Z -z -Wl,+s ARCH = 32 LDFLAGS += -L/opt/graphics/OpenGL/lib -L/usr/contrib/X11R6/lib/ LINKARGS = -lpthread LIB_EXT = sl PLUGIN_EXT = sl DYNAMICLIBRARYLIB = -ldld OTHER_LIBS = GL_LIBS = -lGL X_LIBS = -lX11 OPEN_THREAD_LIB = -lOpenThreads -lpthread INSTXCMD = install -c -m 755 INSTRCMD = install -c -m 644 endif ifeq ($(OS),AIX) CXX = g++ -D_REENTRANT -D__cplusplus DEPARG = -M OPTF = -O DBGF = -g LINKARGS = -lpthread LIB_EXT = a PLUGIN_EXT = a OTHER_LIBS = -lm endif VPATH=..