# sets e. g. to LINUX, OS_MAJOR_VERSION to 2 and OS_MINOR_VERSION to 6 # by calling the 'guess_env' shell script, where the actual probing happens # Also sets PLATFORM_COMPILE_FLAGS to be included when compiling C/C++ code # # requires: # - TOPDIR # # provides: # - PLATFORM # - OS_MAJOR_VERSION and OS_MINOR_VERSION # - GCC_MAJOR_VERSION and GCC_MINOR_VERSION # - PLATFORM_COMPILE_FLAGS # - EXE # - SO # - INSTALL # # author: Andreas Baumann, abaumann at yahoo dot com -include $(HOME)/config.mk -include $(TOPDIR)/makefiles/gmake/platform.mk.vars # set up defaults for the build switches WITH_SSL ?= 0 WITH_SYSTEM_SQLITE3 ?= 0 WITH_LOCAL_SQLITE3 ?= 0 WITH_PGSQL ?= 0 WITH_LIBXML2 ?= 0 ENABLE_NLS ?= 1 # variables guessed by 'guess_env' PLATFORM ?= $(shell $(SHELL) $(TOPDIR)/makefiles/gmake/guess_env --platform "$(CC)" "$(CURDIR)" $(TOPDIR)) OS_MAJOR_VERSION ?= $(shell $(SHELL) $(TOPDIR)/makefiles/gmake/guess_env --os-major-version "$(CC)" "$(CURDIR)" $(TOPDIR)) OS_MINOR_VERSION ?= $(shell $(SHELL) $(TOPDIR)/makefiles/gmake/guess_env --os-minor-version "$(CC)" "$(CURDIR)" $(TOPDIR)) COMPILER ?= $(shell $(SHELL) $(TOPDIR)/makefiles/gmake/guess_env --compiler "$(CC)" "$(CURDIR)" $(TOPDIR)) ifeq "$(PLATFORM)" "LINUX" LINUX_DIST ?= $(shell $(SHELL) $(TOPDIR)/makefiles/gmake/guess_env --linux-dist "$(CC)" "$(CURDIR)" $(TOPDIR)) LINUX_REV ?= $(shell $(SHELL) $(TOPDIR)/makefiles/gmake/guess_env --linux-rev "$(CC)" "$(CURDIR)" $(TOPDIR)) endif # set library path on Intel/AMD ifeq "$(PLATFORM)" "LINUX" ifeq "$(ARCH)" "x86" ifeq "$(LINUX_DIST)" "arch" LIBDIR=lib32 else LIBDIR=lib endif else LIBDIR=lib endif ifeq "$(ARCH)" "x86_64" ifeq "$(LINUX_DIST)" "arch" LIBDIR=lib else LIBDIR=lib64 endif else LIBDIR=lib endif endif ifeq "$(PLATFORM)" "FREEBSD" LIBDIR=lib endif ifeq "$(PLATFORM)" "OPENBSD" LIBDIR=lib endif ifeq "$(PLATFORM)" "NETBSD" LIBDIR=lib endif # Sparc or Intel, always 'lib' ifeq "$(PLATFORM)" "SUNOS" LIBDIR=lib endif # default location of system libraries per architecture SYSTEM_LIBDIR=/usr/$(LIBDIR) # platform specific flags ######################### PLATFORM_COMPILE_FLAGS = \ -D$(PLATFORM) \ -DOS_MAJOR_VERSION=$(OS_MAJOR_VERSION) \ -DOS_MINOR_VERSION=$(OS_MINOR_VERSION) ifeq "$(PLATFORM)" "LINUX" PLATFORM_COMPILE_FLAGS += \ -DLINUX_DIST=$(LINUX_DIST) -DLINUX_REV=$(LINUX_REV) endif # extensions for binaries ifeq "$(PLATFORM)" "CYGWIN" EXE = .exe else EXE = endif # extensions for shared libraries # (TOOD: HP/Unix has .shlib, Mac/X has .dylib, but we can't test it currently) SO = .so # name if the installation program # (TODO: use the MIT or openradio install-sh script instead?) ifndef INSTALL INSTALL = $(shell $(SHELL) $(TOPDIR)/makefiles/gmake/guess_env --install) ifeq "$(PLATFORM)" "SUNOS" INSTALL = /usr/ucb/install else INSTALL = install endif endif # dynamic linker ################ # the linker library for dynamically loadable modules # (TODO: check for all platforms, as soon we add loadable modules here from # old TextWolf) ifeq "$(PLATFORM)" "LINUX" LIBS_DL = -ldl else LIBS_DL = endif # Note for dlopen to work (at least on FreeBSD) with rtti information we have to export all symbols # in the binary and in the modules (see http://stackoverflow.com/questions/2351786/dynamic-cast-fails-when-used-with-dlopen-dlsym) LDFLAGS_DL = ifeq "$(PLATFORM)" "LINUX" LDFLAGS_DL = -Wl,-E endif ifeq "$(PLATFORM)" "FREEBSD" LDFLAGS_DL = -Wl,-E endif ifeq "$(PLATFORM)" "OPENBSD" LDFLAGS_DL = -Wl,-E endif ifeq "$(PLATFORM)" "NETBSD" LDFLAGS_DL = -Wl,-E endif # i18n, gettext/libintl ####################### ifeq "$(ENABLE_NLS)" "1" # we relly only on the GNU version, other versions (e.g. Solaris) are not # so nice.. MSGFMT=msgfmt MSGMERGE=msgmerge XGETTEXT=xgettext # the GNU internationalization support is sometimes in separate libarries ifeq "$(PLATFORM)" "LINUX" INCLUDE_FLAGS_LT = LDFLAGS_LT = LIBS_LT = endif ifeq "$(PLATFORM)" "SUNOS" LIBLT_DIR ?= /usr/local INCLUDE_FLAGS_LT = -I$(LIBLT_DIR)/include LDFLAGS_LT = -L$(LIBLT_DIR)/lib LIBS_LT = -lintl endif ifeq "$(PLATFORM)" "FREEBSD" INCLUDE_FLAGS_LT = -I/usr/local/include LDFLAGS_LT = -L/usr/local/lib LIBS_LT = -lintl endif ifeq "$(PLATFORM)" "OPENBSD" INCLUDE_FLAGS_LT = -I/usr/local/include LDFLAGS_LT = -L/usr/local/lib LIBS_LT = -lintl -liconv endif ifeq "$(PLATFORM)" "NETBSD" INCLUDE_FLAGS_LT = LDFLAGS_LT = LIBS_LT = -lintl endif ifeq "$(PLATFORM)" "CYGWIN" INCLUDE_FLAGS_LT = LDFLAGS_LT = LIBS_LT = -lintl endif PLATFORM_COMPILE_FLAGS += $(INCLUDE_FLAGS_LT) endif PLATFORM_COMPILE_FLAGS += \ -DENABLE_NLS=$(ENABLE_NLS) -DLOCALEDIR=\"$(localedir)\" # command line parser generator gengetopt ######################################## # location of gengetopt (default: in the path) GENGETOPT=gengetopt # some platform either have no getopt/getopt_long or a broken one, so # gengetopt can include its own one GENGETOPT_INCLUDE_GETOPT = ifeq "$(PLATFORM)" "SUNOS" ifeq "$(OS_MAJOR_VERSION)" "5" ifeq "$(OS_MINOR_VERSION)" "8" GENGETOPT_INCLUDE_GETOPT = --include-getopt endif endif endif # TCP/IP, DNS ############# ifeq "$(PLATFORM)" "LINUX" INCLUDE_FLAGS_NET = LDFLAGS_NET = LIBS_NET = endif ifeq "$(PLATFORM)" "SUNOS" INCLUDE_FLAGS_NET = LDFLAGS_NET = LIBS_NET = -lsocket -lnsl endif ifeq "$(PLATFORM)" "FREEBSD" INCLUDE_FLAGS_NET = LDFLAGS_NET = LIBS_NET = endif ifeq "$(PLATFORM)" "OPENBSD" INCLUDE_FLAGS_NET = LDFLAGS_NET = LIBS_NET = endif ifeq "$(PLATFORM)" "CYGWIN" INCLUDE_FLAGS_NET = LDFLAGS_NET = LIBS_NET = endif ifeq "$(PLATFORM)" "NETBSD" INCLUDE_FLAGS_NET = LDFLAGS_NET = LIBS_NET = endif PLATFORM_COMPILE_FLAGS += $(INCLUDE_FLAGS_NET) # OpenSSL ######### ifeq ($(WITH_SSL),1) ifeq "$(PLATFORM)" "LINUX" OPENSSL_LIBS ?= -lssl -lcrypto endif ifeq "$(PLATFORM)" "SUNOS" ifeq "$(OS_MAJOR_VERSION)" "5" ifeq "$(OS_MINOR_VERSION)" "10" OPENSSL_DIR ?= /usr/local/ssl OPENSSL_LIBS ?= -lssl -lcrypto endif endif endif ifeq "$(PLATFORM)" "FREEBSD" ifeq "$(OS_MAJOR_VERSION)" "8" OPENSSL_LIBS ?= -lssl -lcrypto endif ifeq "$(OS_MAJOR_VERSION)" "9" OPENSSL_LIBS ?= -lssl -lcrypto endif endif ifeq "$(PLATFORM)" "OPENBSD" ifeq "$(OS_MAJOR_VERSION)" "5" OPENSSL_LIBS ?= -lssl -lcrypto endif endif ifeq "$(PLATFORM)" "NETBSD" ifeq "$(OS_MAJOR_VERSION)" "5" OPENSSL_LIBS ?= -lssl -lcrypto endif endif endif # curl and curlpp ################# ifeq ($(WITH_CURL),1) ifeq "$(PLATFORM)" "LINUX" CURL_INCLUDES ?= CURL_LDFLAGS ?= CURL_LIBS ?= -lcurl -lcurlpp endif ifeq "$(PLATFORM)" "SUNOS" ifeq "$(OS_MAJOR_VERSION)" "5" ifeq "$(OS_MINOR_VERSION)" "10" CURL_INCLUDES ?= -I/opt/csw/include CURL_LDFLAGS ?= -L/opt/csw/lib CURL_LIBS ?= -lcurl -lcurlpp endif endif endif ifeq "$(PLATFORM)" "FREEBSD" ifeq "$(OS_MAJOR_VERSION)" "8" CURL_INCLUDES ?= -I/usr/local/include CURL_LDFLAGS ?= -L/usr/local/lib CURL_LIBS ?= -lcurl -lcurlpp endif ifeq "$(OS_MAJOR_VERSION)" "9" CURL_INCLUDES ?= -I/usr/local/include CURL_LDFLAGS ?= -L/usr/local/lib CURL_LIBS ?= -lcurl -lcurlpp endif endif ifeq "$(PLATFORM)" "OPENBSD" ifeq "$(OS_MAJOR_VERSION)" "5" CURL_INCLUDES ?= -I/usr/local/include CURL_LDFLAGS ?= -L/usr/local/lib CURL_LIBS ?= -lcurl -lcurlpp endif endif ifeq "$(PLATFORM)" "NETBSD" ifeq "$(OS_MAJOR_VERSION)" "5" CURL_INCLUDES ?= -I/usr/pkg/include CURL_LDFLAGS ?= -L/usr/pkg/lib CURL_LIBS ?= -lcurl -lcurlpp endif endif endif # tolua ####### ifeq ($(WITH_LUA),1) TOLUA_DIR = $(TOPDIR)/tolua LUA_DIR = $(TOPDIR)/lua TOLUA = LD_LIBRARY_PATH=$(LUA_DIR)/src $(TOLUA_DIR)/bin/tolua TOLUA_INCLUDES = -I$(TOLUA_DIR)/include -I$(LUA_DIR)/src TOLUA_LDFLAGS = -L$(LUA_DIR)/src TOLUA_LIBS = $(TOLUA_DIR)/lib/libtolua.a endif