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 = 5 VERSION_RELEASE = 0 VERSION_REVISION ?= 1 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) EXE_EXT = DOF = $(OPTF) DEBUGDIR = $(OS)$(ARCH).Debug OPTDIR = $(OS)$(ARCH).Opt BININST = bin/$(OS)$(ARCH) LIBINST = lib/$(OS)$(ARCH) IMP_LIBINST = lib/$(OS)$(ARCH) 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 = -fno-common 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 = icpc CXXFLAGS += -x c++ -cxxlib-gcc -gcc-version=323 DEF += -fPIC OPTF = -fno-common 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 = -fno-common 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) SYSARCH := $(shell uname -p) 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 = -fno-common DBGF = -g SHARED = -shared ifeq ($(SYSARCH),amd64) ARCHARGS = -fPIC else ARCHARGS = endif LINKARGS = $(PTHREAD_LIBS) 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 = -fno-common 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 = -fno-common DBGF = -g SHARED = -shared \ -Wl,--out-implib,lib$(TARGET_BASENAME).dll.a \ -Wl,--export-all-symbols EXE_EXT =.exe ARCH = 32 ARCHARGS = LINKARGS = -W -Wall DYNAMICLIBRARYLIB = GL_LIBS = -lglu32 -lopengl32 X_LIBS = -lgdi32 -luser32 SOCKET_LIBS = OTHER_LIBS = $(GL_LIBS) PTHREAD_LIB = -lpthread LIBINST = bin/$(OS)$(ARCH) IMP_LIBINST = lib/$(OS)$(ARCH) LIB_PREFIX = cyg LIB_EXT = dll IMP_LIB_EXT = dll.a LINK = cp -f INST_LOCATION ?= /usr/local/OpenThreads INST_INCLUDE = $(INST_LOCATION)/include INST_SHARE_PREFIX = $(INST_LOCATION) 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 MAKEDIST = $(TOPDIR)/Make/makeinnosetup endif #### Cygwin/Mingw specific definitions ifeq ($(OS),MINGW) CXX = c++ -mthreads DEPARG = -M INC += DEF += -DWIN32 -Wall -DOPENTHREADS_EXPORTS OPTF = -fno-common DBGF = -g SHARED = -shared -mthreads \ -Wl,--export-all-symbols \ -Wl,--output-def,lib$(TARGET_BASENAME).def \ -Wl,--out-implib,lib$(TARGET_BASENAME).dll.a \ EXE_EXT =.exe 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 LIBINST = bin/$(OS)$(ARCH) IMP_LIBINST = lib/$(OS)$(ARCH) LIB_PREFIX = lib LIB_EXT = dll IMP_LIB_EXT = dll.a PLUGIN_EXT = dll LINK = cp -f INST_LOCATION ?= /usr/local/OpenThreads INST_LIBS = $(INST_LOCATION)/bin INST_IMP_LIBS = $(INST_LOCATION)/lib INST_INCLUDE = $(INST_LOCATION)/include INST_SHARE = $(INST_LOCATION) 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 INSTXCMD = install -c -m 755 INSTRCMD = install -c -m 644 endif #### AIX Specific Additions ifeq ($(OS),AIX) CXX = g++ -D_REENTRANT DEPARG = -M INC += DEF += OPTF = -O DBGF = -g SHARED = ARCH = 32 LDFLAGS = LINKARGS = -lpthread LIB_EXT = a PLUGIN_EXT = a DYNAMICLIBRARYLIB = -ldld OTHER_LIBS = -lm endif VPATH=..