# # GNU Makefile Global Variable Defs # #---------------------------------------------------------------------------- # define the OS to dynamically figure out the configuration #---------------------------------------------------------------------------- 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 #OS := MINGW endif ## Make MINGW_XXXX MINGW so it's "Windows cross platform" :) ifeq ($(findstring MINGW,$(OS)),MINGW) OS := MINGW endif #============================================================================== # # DIRECTORIES # #============================================================================== #---------------------------------------------------------------------------- # General Unix systems will use these values #---------------------------------------------------------------------------- LOCALBASE = /usr/local X11BASE = /usr/X11R6 PREFIX = $(X11BASE) X_INC = $(X11BASE)/include X_LIB = $(X11BASE)/lib # Mac OS X users only FINK_LIB = /sw/lib FINK_INC = /sw/include OSX_APPS = $(VTP_ROOT)/OSX #---------------------------------------------------------------------------- # Common Build variables #---------------------------------------------------------------------------- CSRC = $(wildcard *.c) CXXSRC = $(wildcard *.cpp) CHEAD = $(wildcard *.h) CXXHEAD = $(wildcard *.hpp) HEADERS = $(CHEAD) $(CXXHEAD) OBJS = $(CSRC:%.c=%.o) $(CXXSRC:%.cpp=%.o) LIB_EXT = so SWITCHES = -DUNIX CFLAGS = $(COPT) $(SWITCHES) $(IFLAGS) CXXFLAGS = $(COPT) $(SWITCHES) $(IFLAGS) LIB = $(LIB_NAME).$(LIB_EXT) #---------------------------------------------------------------------------- # DIRECTORIES #---------------------------------------------------------------------------- # NOTE: VTP_ROOT is set in each Makefile APIS_DIR = /usr/local TERRAIN_SDK_DIR = $(VTP_ROOT)/TerrainSDK TERRAIN_APPS_DIR = $(VTP_ROOT)/TerrainApps VTDATA_DIR = $(TERRAIN_SDK_DIR)/vtdata VTLIB_DIR = $(TERRAIN_SDK_DIR)/vtlib VTUI_DIR = $(TERRAIN_SDK_DIR)/vtui VTOSG_DIR = $(VTLIB_DIR)/vtosg XMLHELPER_DIR = $(TERRAIN_SDK_DIR)/xmlhelper NETCDF_INC = $(LOCALBASE)/include NETCDF_LIB = $(LOCALBASE)/lib PNG_INC = $(LOCALBASE)/include PNG_LIB = $(LOCALBASE)/lib OSG_BASE = $(LOCALBASE) OSG_INC = $(OSG_BASE)/include OSG_LIB = $(OSG_BASE)/lib GDAL_INC = $(LOCALBASE)/include GDAL_LIB = $(LOCALBASE)/lib MINI_INC = $(LOCALBASE)/include MINI_LIB = $(LOCALBASE)/lib/libMini.a VTDATA_INST_DIR = $(VTDATA_DIR) VTUI_INST_DIR = $(VTUI_DIR) VTOSG_INST_DIR = $(VTOSG_DIR) XMLHELPER_INST_DIR = $(XMLHELPER_DIR) WX_DIR = /usr -include $(HOME)/.vtp-user.defs #============================================================================ # # OS Specific build parameters # #============================================================================ #---------------------------------------------------------------------------- # # IRIX Specific definitions # #---------------------------------------------------------------------------- ifeq ($(OS),IRIX) CXX = CC ifeq ($(CXX),CC) #-------------------------------------------------------------------- # SGI IRIX with MIPSPro compilers (tested with ver. 7.3.1.1m) # (IRIX Folks: Read TerrainApps/README.sgi!) #-------------------------------------------------------------------- CC = cc -n32 -mips4 -w CXX = CC -n32 -mips4 -w -LANG:std -exceptions -prelink -ptnone AR = CC -n32 -mips4 -ar -WR,-v -o COPT = -O -g LD = $(CXX) LD_SHARED = $(CXX) -shared GLUT_LIB = -lglut GLU_LIB = -lGLU LDIRFLAGS = $(LDIRS:%=-L%) \ -Wl,-rpath,$(subst $(space),$(colon),$(LDIRS)) else #-------------------------------------------------------------------- # SGI IRIX with GCC (tested with ver. 2.95.3-test2) # (IRIX Folks: Read TerrainApps/README.sgi!) #-------------------------------------------------------------------- CC = gcc CXX = g++ AR = ar ruv COPT = -O -g LD = $(CXX) LD_SHARED = $(CXX) -shared GLUT_LIB = $(HOME)/software/Mesa-3.4.1/lib/libglut.a GLU_LIB = $(HOME)/software/Mesa-3.4.1/lib/libGLU.a LDIRFLAGS = $(LDIRS:%=-L%) \ -Wl,-rpath,$(subst $(space),$(colon),$(LDIRS)) endif endif #------------------------------------------------------------------------------ # FreeBSD with GCC (tested with ver. 2.95.2) #------------------------------------------------------------------------------ ifeq ($(OS),FreeBSD) CC = gcc CXX = g++ AR = ar ruv #COPT = -O -fpic -DPIC LD = $(CXX) LD_SHARED = $(CXX) -shared PTHREAD_LIBS = -pthread GLUT_LIB = -lglut GLU_LIB = -lGLU EXTRA_LIBS = -lXi $(PTHREAD_LIBS) LDIRFLAGS = $(LDIRS:%=-L%) \ -rpath $(subst $(space),$(colon),$(LDIRS)) endif #------------------------------------------------------------------------------ # Mac OS X (10.2.6) with GCC (OSX) #------------------------------------------------------------------------------ ifeq ($(OS),Darwin) CC = gcc CXX = g++ AR = ar ruv COPT = -g -O -Dunix=1 -D__DARWIN_OSX__ -fPIC -I$(FINK_INC) LD = $(CXX) LD_SHARED = $(CXX) -dynamiclib LIB_EXT = dynlib GLUT_LIB = -framework GLUT GLU_LIB = -framework OpenGL -framework Carbon EXTRA_LIBS = -lXi LDIRFLAGS = $(LDIRS:%=-L%) # remove the "lib" string from the LIB_NAME NEW_LIB_NAME := $(subst lib, ,$(LIB_NAME)) LIB_NAME := $(strip $(NEW_LIB_NAME)) LIB_EXT = dylib FRAMEWORKS = $(VTP_ROOT)/OSX/Frameworks FRAMEWORK = $(FRAMEWORKS)/$(LIB_NAME).framework FRAMEWORK_LIB = $(FRAMEWORK)/Versions/A/$(LIB_NAME) # This path works if you want to copy the frameworks into each VT.app package #FRAMEWORK_INSTALL_NAME = /../Frameworks/$(LIB_NAME).framework/Versions/A/$(LIB_NAME) # This path allows the framework to be shared by all the VT applications FRAMEWORK_INSTALL_NAME = /../../../Frameworks/$(LIB_NAME).framework/Versions/A/$(LIB_NAME) FRAMEWORK_EXE = $(FRAMEWORK)/$(LIB_NAME) # flags COMMON_OPTS = -compatibility_version 1.2 -current_version 1.2.1 -L$(GDAL_LIB) -lgdal -L/sw/lib -lnetcdf -lpng -ljpeg -lcurl -lbz2 -lz -F$(FRAMEWORKS) # # Enumerates the build flags required to use each lib/framework # OSG_OPTS = -L$(OSG_LIB) -losg -losgGA -losgUtil \ -losgText -losgDB -losgGA -losgUtil -lOpenThreads XMLHELPER_OPTS = -framework xmlhelper VTDATA_OPTS = -framework vtdata # # options used by individual make files to build their respective packages. # E.g. if you need to modify the build opts for XmlHelper, modify the # XMLHELPER_LINK_OPTS variable. # XMLHELPER_LINK_OPTS = -lstdc++ -lz VTDATA_LINK_OPTS = $(COMMON_OPTS) \ $(XMLHELPER_OPTS) VTUI_LINK_OPTS = $(shell $(WX_DIR)/bin/wx-config --libs) \ $(COMMON_OPTS) \ -flat_namespace \ -undefined suppress \ $(GLU_LIB) \ $(OSG_OPTS) \ $(XMLHELPER_OPTS) \ $(VTDATA_OPTS) VTOSG_LINK_OPTS = $(OSG_OPTS) \ $(COMMON_OPTS) \ $(GLU_LIB) \ $(XMLHELPER_OPTS)\ $(VTDATA_OPTS) \ -losgText -lMini -lz # # The default rule for building an *.app package. Requires the # OSX_APPS directory. And EXEC = name of the App: Enviro, VTBuilder, # etc. # %.app: $(OSX_APPS) -mkdir -p $(OSX_APPS)/$(EXEC).app/Contents/MacOS -mkdir -p $(OSX_APPS)/$(EXEC).app/Contents/Resources # not recommended, as the frameworks are 60MB+ together # but if you do want a single application package, # change the -install_name option when you build. # See TerrainSDK/Make.defs # -cp -Rf $(FRAMEWORKS) $(OSX_APPS)/$(EXEC).app/Contents if [ -e osx/$(EXEC).plist ]; then \ cp osx/$(EXEC).plist $(OSX_APPS)/$(EXEC).app/Contents/Info.plist; \ fi echo -n "APPL????" > $(OSX_APPS)/$(EXEC).app/Contents/PkgInfo if [ -e osx/$(EXEC).rsrc ]; then \ cp osx/$(EXEC).rsrc $(OSX_APPS)/$(EXEC).app/Contents/Resources/$(EXEC).rsrc; \ fi if [ -e osx/$(EXEC).icns ]; then \ cp osx/$(EXEC).icns $(OSX_APPS)/$(EXEC).app/Contents/Resources/; \ fi %.framework: $(HEADERS) $(FRAMEWORKS) -mkdir -p $*.framework/Versions/A -mkdir -p $*.framework/Headers -ln -s $*.framework/Versions/A $*.framework/Versions/Current -cp $(HEADERS) $*.framework/Headers/ endif #------------------------------------------------------------------------------ # Linux with GCC (tested with ver. 2.95.3) #------------------------------------------------------------------------------ ifeq ($(OS),Linux) CC = gcc CXX = g++ AR = ar ruv LD = $(CXX) LD_SHARED = $(CXX) -shared GLUT_LIB = -lglut GLU_LIB = -lGLU EXTRA_LIBS = -lXi -lquikgrid NETCDF_INC = $(LOCALBASE)/include/netcdf-3 MINI_INC = $(LOCALBASE)/include/mini MINI_LIB = $(LOCALBASE)/lib/libMini.a ARCH := $(shell uname -m) ifeq ($(ARCH),x86_64) COPT = -O -g -fPIC LDIRFLAGS = -L/usr/lib64 $(LDIRS:%=-L%) X_LIB = $(X11BASE)/lib64 MINI_LIB = $(LOCALBASE)/lib64/libMini.a NETCDF_LIB = $(LOCALBASE)/lib64/netcdf-3 else COPT = -O -g LDIRFLAGS = $(LDIRS:%=-L%) NETCDF_LIB = $(LOCALBASE)/lib/netcdf-3 endif endif #------------------------------------------------------------------------------ # Cygwin with GCC (tested with ver. 2.95.3) #------------------------------------------------------------------------------ ifeq ($(OS),CYGWIN) CC = gcc-2 CXX = c++-2 AR = ar ruv COPT = -O2 -W -Wall -Wno-unused -g -DWIN32 -DNOMINMAX ### -fvtable-thunks SO_EXT = dll SO_PREFIX = cyg LD = $(CXX) $(COPT) LD_SHARED = $(CXX) $(COPT) -shared \ -Wl,--export-all-symbols \ -Wl,--allow-multiple-definition \ -W1,--enable-stdcall-fixup \ -Wl,--output-def,$(VTP_ROOT)/lib/lib$(TARGET_BASENAME).def \ -Wl,--out-implib,$(VTP_ROOT)/lib/lib$(TARGET_BASENAME).a PREFIX = $(VTP_ROOT) X_INC = X_LIB = OSG_BASE = $(VTP_ROOT)/OpenSceneGraph-0.9.2 GLUT_LIB = -lglut32 GLU_LIB = -lglu32 EXTRA_LIBS = LDIRFLAGS = $(LDIRS:%=-L%) endif #------------------------------------------------------------------------------ # End System specific defs #------------------------------------------------------------------------------ # Turns on debugging: to enable run "make -DDEBUG=1" ifeq ($(DEBUG),1) COPT += -DDEBUG=1 endif #------------------------------------------------------------------------------ colon:= : empty:= space:= $(empty) $(empty)