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 #OS := MINGW 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 OPENTHREADS_VERSION_REVISION overrides default ## e.g.: ## % setenv OPENTHREADS_VERSION_REVISION 5 ## % make version ## Command line overrides env variable ## % make VERSION_REVISION= ####################################################################### VERSION_MAJOR = 1 VERSION_MINOR = 3 VERSION_RELEASE = 0 VERSION_REVISION ?= 0 ifneq (,$(OPENTHREADS_VERSION_REVISION)) VERSION_REVISION = $(OPENTHREADS_VERSION_REVISION) endif VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_RELEASE) DEF = -DOPENTHREADS_VERSION=\"$(VERSION)\"\ -DOPENTHREADS_VERSION_REVISION="$(VERSION_REVISION)" # -DGLX_GLXEXT_PROTOTYPES ALLOW_PRIORITY_SCHEDULING = 0; ifeq ($(ALLOW_PRIORITY_SCHEDULING),1) DEF += -DALLOW_PRIORITY_SCHEDULING endif STATICLIB_EXT = a STATICLIB = $(LIB).$(STATICLIB_EXT) INC = -I$(TOPDIR)/include CXXFLAGS = $(ARCHARGS) $(DOF) $(DEF) $(INC) LDFLAGS = $(ARCHARGS) $(DOF) $(LINKARGS) -L$(TOPDIR)/lib/$(OS)$(ARCH) OBJS = $(CXXFILES:.cpp=.o) \ $(C++FILES:.c++=.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 INST_DEMOS = $(INST_LOCATION)/OpenThreads/bin INST_SRC = $(INST_LOCATION)/OpenThreads/src INST_DOC = $(INST_LOCATION)/OpenThreads/doc INST_DATA = $(INST_SHARE)/OpenThreads/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 MAKEDIST = echo " === Distribution build is not implemented yet for $(OS)"; printf "\n" INSTLOGFILE = /tmp/.openThreads_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\ ifeq ($(USE_OPEN_THREAD),1) DEF += -D_USE_OPEN_THREAD INC += $(INC_OPEN_THREAD) LDFLAGS += $(LIB_OPEN_THREAD) OPEN_THREAD_LIB = -lOpenThreads else PTHREAD_LIB = -lpthread endif #### 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 = -O3 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/OpenThreads INST_LIBS = $(INST_LOCATION)/lib$(ARCH_EXT) INST_INCLUDE = $(INST_LOCATION)/include MAKEDIST = $(TOPDIR)/Make/makepkg endif #### IRIX Specific definitions ifeq ($(OS),IRIX) 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 endif #### Linux specific definitions ifeq ($(OS),Linux) SYSARCH := $(shell arch) ifeq ($(COMPILER),intel) CXX = ecc CXXFLAGS += -x c++ DEF += -KPIC 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 OPTF = -O2 DBGF = -ggdb -gstabs ifeq ($(SYSARCH),x86_64) ARCH = 64 ifeq (x$(CXX),x) CXX = g++ endif DEF += -fPIC 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 endif #### FreeBSD specific definitions ifeq ($(OS),FreeBSD) ifeq (x$(CXX),x) CXX = g++ endif DEPARG = -MM INC += -I/usr/local/include -I/usr/X11R6/include DEF += -W -Wall OPTF = -O2 DBGF = -g SHARED = -shared ARCH = 32 ARCHARGS = INST_LOCATION = /usr/local INST_SHARE = /usr/share/OpenThreads endif #### MacOS X specific definitions ifeq ($(OS),Darwin) ifeq (x$(CXX),x) CXX = g++ endif DEPARG = -M INC += -I/usr/X11R6/include DEF += -Wall -D__DARWIN_OSX__ OPTF = -O2 DBGF = -gstabs+ -ggdb SHARED = -shared ARCH = 32 ARCHARGS = LINKARGS = -L/usr/X11R6/lib -framework Carbon LIB_EXT = dylib endif #### Cygwin/Mingw specific definitions ifeq ($(OS),CYGWIN) CXX = c++ DEPARG = -M INC += -DWIN32 DEF += -DWIN32 -Wall -DOPENTHREADS_EXPORTS OPTF = -O2 DBGF = -g SHARED = -shared \ -Wl,--export-all-symbols \ -Wl,--output-def,lib$(TARGET_BASENAME).def \ -Wl,--out-implib,$(TOPDIR)/lib/lib$(TARGET_BASENAME).dll.a \ ARCH = 32 ARCHARGS = LINKARGS = -W -Wall DYNAMICLIBRARYLIB = GL_LIBS = -lglu32 -lopengl32 X_LIBS = -lgdi32 -luser32 SOCKET_LIBS = OTHER_LIBS = $(GL_LIBS) PTHREAD_LIB = -lpthread LIB_PREFIX = cyg LIB_EXT = dll LINK = cp -f INST_LOCATION = /usr/local/OpenThreads INST_LIBS = $(INST_LOCATION)/bin INST_PLUGINS = $(INST_LOCATION)/bin INST_INCLUDE = $(INST_LOCATION)/include INST_SHARE = /usr/local/OpenThreads INST_DEMOS = $(INST_SHARE)/bin INST_DEMO_SRC = $(INST_SHARE)/src/demos INST_DOC = $(INST_SHARE)/doc INST_DATA = $(INST_SHARE)/data MAKEDIST = $(TOPDIR)/Make/makeinnosetup endif #### Cygwin/Mingw specific definitions ifeq ($(OS),MINGW) CXX = c++ -mthreads DEPARG = -M INC += DEF += -DWIN32 -Wall -DOPENTHREADS_EXPORTS OPTF = -O2 DBGF = -g SHARED = -shared -mthreads \ -Wl,--export-all-symbols \ -Wl,--output-def,lib$(TARGET_BASENAME).def \ -Wl,--out-implib,$(TOPDIR)/lib/lib$(TARGET_BASENAME).dll.a \ ARCH = 32 ARCHARGS = LINKARGS = -W -Wall DYNAMICLIBRARYLIB = GL_LIBS = -lglu32 -lopengl32 X_LIBS = -lgdi32 -luser32 SOCKET_LIBS = OTHER_LIBS = $(GL_LIBS) -lwinmm PTHREAD_LIB = OPEN_THREAD_LIB = -lOpenThreadsWin32 # LIB_PREFIX = cyg LIB_PREFIX = lib LIB_EXT = dll PLUGIN_EXT = dll LINK = cp -f INST_LOCATION = /usr/local/OpenThreads INST_LIBS = $(INST_LOCATION)/bin INST_INCLUDE = $(INST_LOCATION)/include INST_SHARE = /usr/local/OpenThreads INST_DEMOS = $(INST_SHARE)/bin INST_DEMO_SRC = $(INST_SHARE)/src/demos INST_DOC = $(INST_SHARE)/doc INST_DATA = $(INST_SHARE)/data MAKEDIST = $(TOPDIR)/Make/makeinnosetup endif #### HP-UX Specific definitions ifeq ($(OS),HP-UX) CXX = aCC -AA -mt DEPARG = -w +make -E INC += DEF += +Z -z OPTF = +O2 DBGF = -g SHARED = +Z -b -z -Wl,+s ARCH = 32 LDFLAGS = LINKARGS = -lpthread LIB_EXT = sl PLUGIN_EXT = sl DYNAMICLIBRARYLIB = -ldld OTHER_LIBS = -lm endif VPATH=..