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 = . 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 = 0 VERSION_MINOR = 9 VERSION_RELEASE = 3 VERSION_REVISION ?= 0 ifneq (,$(OSG_VERSION_REVISION)) VERSION_REVISION = $(OSG_VERSION_REVISION) endif VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_RELEASE) INC = -I$(TOPDIR)/include DEF = -DOSG_VERSION="$(VERSION)"\ -DOSG_VERSION_REVISION="$(VERSION_REVISION)" ############################################################################ ## NOTE - Semantics for the use of ARCH, ARCHARGS, and ARCHINST parameters ## ARCH - must be defined if the OS supports both 64 and 32 bit ## architectures may remain undefined if it does not. ## ARCHARGS - Compiler directives to indicate for which architecture ## to build for ## ARCHINST - Installation target directory. Define if the OS supports ## more than one architecture (32 and 64). ## for ARCH=32 - define ARCHINST only if the system uses an ## extension on 'lib' to indicate 32 bit. e.g. ## IRIX defines /usr/lib32 ## for ARCH=64 - Always define ARCHINST. Even if the OS ## doesn't make a distinction, we will. ############################################################################ CXXFLAGS = $(ARCHARGS) $(DOF) $(DEF) $(INC) LDFLAGS = $(ARCHARGS) $(DOF) $(LINKARGS) -L$(TOPDIR)/lib/$(OS)$(ARCH) OBJS = $(C++FILES:.cpp=.o) \ $(CXXFILES:.cpp=.o) \ $(CFILES:.c=.o) \ DOF = $(OPTF) DEBUGDIR = $(OS)$(ARCH).Debug OPTDIR = $(OS)$(ARCH).Opt BININST = bin LIBINST = lib PLUGININST = lib/$(OS)$(ARCH)/osgPlugins INST_LOCATION = /usr/local INST_LIBS = $(INST_LOCATION)/lib$(ARCHINST) INST_PLUGINS = $(INST_LOCATION)/lib$(ARCHINST)/osgPlugins INST_INCLUDE = $(INST_LOCATION)/include INST_SHARE = $(INST_LOCATION)/share INST_EXAMPLES = $(INST_SHARE)/OpenSceneGraph/bin INST_SRC = $(INST_SHARE)/OpenSceneGraph/src INST_DOC = $(INST_SHARE)/OpenSceneGraph/doc INST_DATA = $(INST_SHARE)/OpenSceneGraph/data INST_EXAMPLE_SRC = $(INST_SRC)/examples LINK = ln -sf INSTBINCMD = install -m 755 INSTDEVCMD = install -m 644 INSTLINKBINCMD = $(LINK) INSTLINKDEVCMD = $(LINK) LIB_PREFIX = lib LIB_EXT = so PLUGIN_PREFIX = osgdb_ PLUGIN_EXT = so MAKEDIST = echo " === Distribution build is not implemented yet for $(OS)"; printf "\n" INSTLOGFILE = /tmp/.osg_inst_log RECURSIVE_TARGETS = \ opt\ debug\ clean\ cleandepend\ cleandependopt\ cleandependdbg\ cleandbg\ cleanopt\ cleantarget\ cleantargetopt\ cleantargetdbg\ clobber\ clobberdbg\ clobberopt\ beautify\ docs\ depend\ #### SUN OS Specific definitions ifeq ($(OS),SunOS) #### if useing g++ on a sun ifeq ($(COMPILER),gnu) C++ = g++ DEPARG = -M INC += DEF += -W -Wall -fPIC -fpermissive OPTF = -O2 DBGF = -g -DOSG_COMPILE_UNIT_TESTS SHARED = -shared -fPIC ARCH = 32 ifeq ($(ARCH),64) ARCHARGS = -m64 -DARCH64 ARCHINST = 64 else ARCHARGS = endif GIF_LIBS = -lgif TIFF_LIB = -ltiff JPEG_LIBS = -ljpeg PNG_LIBS = -lpng -lz FREETYPE_LIB = -lfreetype OTHER_LIBS = #### using forte compilers (default) else C++ = CC DEPARG = -xM1 INC += DEF += -features=extensions -w OPTF = -xO4 DBGF = -g -DOSG_COMPILE_UNIT_TESTS SHARED = -G ARCH = 32 ifeq ($(ARCH),64) ARCHARGS = -xarch=v9 -DARCH64 ARCHINST = 64 else ARCHARGS = ARCHINST = endif OTHER_LIBS = -lCstd LINKARGS = GIF_LIBS = /usr/local/lib/libgif.a TIFF_LIB = /usr/local/lib/libtiff.a JPEG_LIBS = /usr/local/lib/libjpeg.a PNG_LIBS = /usr/local/lib/libpng.a /usr/local/lib/libz.a FREETYPE_LIB = /usr/local/lib/libfreetype.a endif DYNAMICLIBRARYLIB = -ldl OSG_LIBS = -losgGA -losgDB -losgUtil -losg GL_LIBS = -lGLU -lGL X_LIBS = -lXext -lXmu -lXi -lX11 SOCKET_LIBS = -lsocket -lnsl INSTBINCMD = cp INSTDEVCMD = cp INST_LOCATION = /opt/OpenSceneGraph MAKEDIST = $(TOPDIR)/Make/makepkg endif #### IRIX Specific definitions ifeq ($(OS),IRIX) LINKARGS = -L${TOPDIR}/lib -LANG:std -OPT:Olimit=0 C++ = CC DEPARG = -M INC += -I${TOPDIR}/include -I/usr/freeware/include DEF += -LANG:std -OPT:Olimit=0 \ -DEBUG:woff=1681 -DEBUG:woff=1682 -DEBUG:woff=3303\ -MDupdate $(MAKEDEPEND) OPTF = -O2 DBGF = -g -DOSG_COMPILE_UNIT_TESTS SHARED = -shared PFLIBS = \ -lpf3ds -lpfdem -lpfdted -lpfdwb -lpfdxf -lpfevt \ -lpfflt -lpfgds -lpfgfo -lpfim -lpflsa -lpflsb \ -lpfnff -lpfobj -lpfpegg -lpfpfb -lpfphd -lpfpts \ -lpfrot -lpfscale -lpfsgf -lpfsgo -lpfsphere -lpfsv \ -lpftri -lpfunc -lpfvct -lpfdu -lpfutil -lpf -all -limage FREETYPE_LIB = -lfreetype ARCH = 32 ifeq ($(ARCH),64) ARCHARGS = -64 -DARCH64 ARCHINST = 64 LINKARGS += -L/usr/freeware/lib64 PF_XTRA_LIBS = -L/usr/lib64/libpfdb -rpath /usr/lib64/libpfdb \ $(PFLIBS) else ARCHARGS = -n32 ARCHINST = 32 LINKARGS += -L/usr/freeware/lib32 PF_XTRA_LIBS = -L/usr/lib32/libpfdb -rpath /usr/lib32/libpfdb \ $(PFLIBS) endif DYNAMICLIBRARYLIB = OSG_LIBS = -losgGA -losgDB -losgUtil -losg GL_LIBS = -lGLU -lGL X_LIBS = -lXext -lXi -lXmu -lX11 SOCKET_LIBS = OTHER_LIBS = -lm PNG_LIBS = -lpng JPEG_LIBS = -ljpeg TIFF_LIB = -ltiff GIF_LIBS = -lungif MAKEDIST = $(TOPDIR)/Make/makeirixdist endif #### Linux specific definitions ifeq ($(OS),Linux) ifeq (x$(CXX),x) C++ = g++ else C++ = $(CXX) endif DEPARG = -M INC += ifeq ($(COMPILER),intel) C++ = ecc LIBS = -lgcc_s DEF += -KPIC OPTF = -O2 DBGF = -g -DOSG_COMPILE_UNIT_TESTS ifeq ($(SYSARCH),ia64) ARCHARGS = ARCH = IA64 ARCHINST = IA64 else ARCHARGS = ARCH = 32 ARCHINST = endif else LIBS = -lstdc++ DEF += -W -Wall -fPIC OPTF = -O2 DBGF = -g -gstabs+ -DOSG_COMPILE_UNIT_TESTS SYSARCH := $(shell arch) ifeq ($(SYSARCH),x86_64) ARCHARGS = ARCH = 64 ARCHINST = 64 else ARCHARGS = ARCH = 32 ARCHINST = endif endif SHARED = -shared ifeq ($(SYSARCH),x86_64) LINKARGS = -L/usr/X11R6/lib64 else LINKARGS = -L/usr/X11R6/lib endif DYNAMICLIBRARYLIB = -ldl OSG_LIBS = -losgGA -losgDB -losgUtil -losg FREETYPE_LIB = -lfreetype GL_LIBS = -lGLU -lGL X_LIBS = -lXi -lXmu -lX11 PF_XTRA_LIBS = -L/usr/lib/libpfdb -Xlinker -rpath /usr/lib/libpfdb \ -lpfdu -lpfutil -lpf SOCKET_LIBS = OTHER_LIBS = -lpthread PNG_LIBS = -lpng JPEG_LIBS = -ljpeg TIFF_LIB = -ltiff GIF_LIBS = -lungif MAKEDIST = $(TOPDIR)/Make/makerpms endif #### FreeBSD specific definitions ifeq ($(OS),FreeBSD) C++ = g++ DEPARG = -MM INC += -I/usr/local/include -I/usr/X11R6/include DEF += -W -Wall OPTF = -O2 DBGF = -g -DOSG_COMPILE_UNIT_TESTS SHARED = -shared ARCH = ARCHINST = ARCHARGS = LINKARGS = -L/usr/X11R6/lib -L/usr/local/lib -rpath /usr/local/lib DYNAMICLIBRARYLIB = OSG_LIBS = -losgGA -losgDB -losgUtil -losg FREETYPE_LIB = -lfreetype GL_LIBS = -lGLU -lGL X_LIBS = -lXmu -lX11 SOCKET_LIBS = OTHER_LIBS = INST_LOCATION = /opt/X11R6 INST_SHARE = /usr/share/OpenSceneGraph endif #### MacOS X specific definitions ifeq ($(OS),Darwin) C++ = c++ INC += DEF += -Wall -D__DARWIN_OSX__ OPTF = -O2 DBGF = -g -DOSG_COMPILE_UNIT_TESTS DEPARG = -M $(DEF) SHARED = -shared ARCH = ARCHINST = ARCHARGS = LINKARGS = DYNAMICLIBRARYLIB = OSG_LIBS = -losgGA -losgDB -losgUtil -losg FREETYPE_LIB = -lfreetype CARBON_LIB = -framework Carbon GL_LIBS = -framework OpenGL $(CARBON_LIB) X_LIBS = SOCKET_LIBS = OTHER_LIBS = -lm -lstdc++ -lobjc LIB_EXT = dylib QUICKTIME = -framework QuickTime $(CARBON_LIB) TIFF_LIB = -ltiff LIBVERSION = -dylib_current_version 0.9.3 endif #### Cygwin/Mingw specific definitions ifeq ($(OS),CYGWIN) C++ = c++ DEPARG = -M INC += DEF += -DWIN32 -W -Wall -DNOMINMAX OPTF = -O2 DBGF = -g -DOSG_COMPILE_UNIT_TESTS SHARED = -shared\ -Wl,--export-all-symbols \ -Wl,--output-def,lib$(TARGET_BASENAME).def \ -Wl,--out-implib,$(TOPDIR)/lib/lib$(TARGET_BASENAME).dll.a ARCH = ARCHINST = ARCHARGS = LINKARGS = -W -Wall DYNAMICLIBRARYLIB = OSG_LIBS = -losgGA -losgDB -losgUtil -losg GL_LIBS = -lglu32 -lopengl32 X_LIBS = -lgdi32 -luser32 SOCKET_LIBS = OTHER_LIBS = $(GL_LIBS) PNG_LIBS = -lpng -lz JPEG_LIBS = -ljpeg GIF_LIBS = -lungif TIFF_LIB = -ltiff -lz -ljpeg FREETYPE_LIB = -lfreetype2 LIB_PREFIX = cyg LIB_EXT = dll PLUGIN_EXT = dll LINK = cp -f INST_SYS_PREFIX = /usr/local/OpenSceneGraph INST_LIBS = $(INST_SYS_PREFIX)/bin INST_PLUGINS = $(INST_SYS_PREFIX)/bin INST_INCLUDE = $(INST_SYS_PREFIX)/include INST_SHARE_PREFIX = /usr/local/OpenSceneGraph INST_SRC = $(INST_SHARE_PREFIX)/src INST_EXAMPLES = $(INST_SHARE_PREFIX)/bin INST_EXAMPLE_SRC = $(INST_SHARE_PREFIX)/src/demos INST_DOC = $(INST_SHARE_PREFIX)/doc INST_DATA = $(INST_SHARE_PREFIX)/data endif #### Cygwin/Mingw specific definitions ifeq ($(OS),MINGW) C++ = c++ DEPARG = -M INC += DEF += -DWIN32 -Wall # -W OPTF = -O2 DBGF = -g -DOSG_COMPILE_UNIT_TESTS SHARED = -shared\ -Wl,--export-all-symbols \ -Wl,--output-def,lib$(TARGET_BASENAME).def \ -Wl,--out-implib,$(TOPDIR)/lib/lib$(TARGET_BASENAME).dll.a ARCH = ARCHINST = ARCHARGS = LINKARGS = -W -Wall DYNAMICLIBRARYLIB = OSG_LIBS = -losgGA -losgDB -losgUtil -losg GL_LIBS = -lglu32 -lopengl32 X_LIBS = -lgdi32 -luser32 SOCKET_LIBS = OTHER_LIBS = $(GL_LIBS) PNG_LIBS = -lpng -lz JPEG_LIBS = -ljpeg GIF_LIBS = -lungif TIFF_LIB = -ltiff -lz -ljpeg FREETYPE_LIB = -lfreetype # LIB_PREFIX = cyg LIB_PREFIX = lib LIB_EXT = dll PLUGIN_EXT = dll LINK = cp -f INST_SYS_PREFIX = /usr/local/OpenSceneGraph INST_LIBS = $(INST_SYS_PREFIX)/bin INST_PLUGINS = $(INST_SYS_PREFIX)/bin INST_INCLUDE = $(INST_SYS_PREFIX)/include INST_SHARE_PREFIX = /usr/local/OpenSceneGraph INST_SRC = $(INST_SHARE_PREFIX)/src INST_EXAMPLES = $(INST_SHARE_PREFIX)/bin INST_EXAMPLE_SRC = $(INST_SHARE_PREFIX)/src/examples INST_DOC = $(INST_SHARE_PREFIX)/doc INST_DATA = $(INST_SHARE_PREFIX)/data endif #### HP-UX Specific definitions # contributed by tino.schwarze@informatik.tu-chemnitz.de ifeq ($(OS),HP-UX) C++ = g++ DEPARG = -M INC += DEF += -W -Wall -fPIC OPTF = -O2 # gcc 3.1 uses DWARF as default, my GDB might not yet support this... # at least I've got problems everywhere DBGF = -g -gstabs+ -DOSG_COMPILE_UNIT_TESTS SHARED = -shared -fPIC ARCH = 32 ifeq ($(ARCH),64) # not yet tested ARCHARGS = -march=2.0 -DARCH64 ARCHINST = 64 else # at least my gcc 3.1 defaults to HP-PA RISC 1.1 ARCHARGS = ARCHINST = endif LINKARGS = -lpthread LIB_EXT = sl PLUGIN_EXT = sl DYNAMICLIBRARYLIB = -ldld OSG_LIBS = -losgGA -losgDB -losgUtil -losg GL_LIBS = -L/opt/graphics/OpenGL/lib -lGLU -lGL X_LIBS = -L/usr/lib/X11R6 -lXext -lXi -lX11 -L/usr/lib/X11R4 -lXmu SOCKET_LIBS = # make sure that global constructors/destructors are called upon # shl_load() / shl_unload() - this is a gcc specific workaround OTHER_LIBS = -lm -Wl,+init -Wl,_GLOBAL__DI -Wl,+fini -Wl,_GLOBAL__DD FREETYPE_INCLUDE = -I/opt/freetype/include -I/opt/freetype/include/freetype2 FREETYPE_LIB = -L/opt/freetype/lib -lfreetype PNG_INCLUDE = -I/opt/libpng/include PNG_LIBS = -L/opt/libpng/lib -lpng -L/opt/zlib/lib -lz JPEG_INCLUDE = -I/opt/jpeg-6/include JPEG_LIBS = -L/opt/jpeg-6/lib -ljpeg TIFF_INCLUDE = -I/opt/tiff-3.5/include TIFF_LIB = -L/opt/tiff-3.5/lib -ltiff GIF_INCLUDE = -I/opt/libungif/include GIF_LIBS = -L/opt/libungif/lib -lungif endif VPATH=..