# $Id$ # # makefile defs (CC, LD,a.s.o) # # Environment variables: # PREFIX, LOCALBASE, BASEDIR # INSTALL, TAR , CC, LEX, YACC, # CPU, CC_EXTRA_OPTS, # exclude_modules, skip_modules, include_modules # extra_defs # # History: # -------- # created by andrei # 2003-02-24 added LOCALBASE, fixed doc-dir for freebsd - patch provided # by Maxim Sobolev <sobomax@FreeBSD.org> # 2003-02-25 added -DDISABLE_NAGLE (andrei) # 2003-03-02 added -DDIGEST_DOMAIN (janakj) # 2003-03-10 added -xcode=pic32 for module compilation w/ sun cc # (too many symbols for pic13) (andrei) # 2003-04-16 added CC_EXTRA_OPTS, s/march/mcpu, added CPU (cpu to optimize # for, used only with gcc-3.x) (andrei) # 2003-05-23 check if this makefile was already included (andrei) # removed -DDIGEST_DOMAIN (andrei) # 2003-05-30 added extra_defs (andrei) # 2003-06-06 moved compiler detection before DEFS (andrei) # 2003-06-10 removed -m32 for gcc 3.x/sparc64 -- it will use # arch. default: -m32 on solaris, -m64 on *bsd (andrei) # 2003-09-25 added -pthread into LIBS when compiling on FreeBSD/alpha # and other FreeBSD arches for which no fast locking assembly # code exists (sobomax) # 2003-11-08 mips1 support introduced (andrei) # 2003-11-24 openbsd 3.4 (elf) fixes (andrei) # 2004-07-27 darwin (mac os x) port (andrei) # 2004-09-12 mips2 & cobalt support introduced (andrei) # 2004-09-28 x86_64 support introduced (andrei) # 2004-12-14 gcc-3.4 special case added (andrei) # 2004-12-15 HAVE_ALLOCA_H added (andrei) # 2004-12-19 amd64 transformed in x86_64 (andrei) # 2005-04-27 alpha support added (andrei) # 2005-06-01 use $(LOCALBASE) instead of /usr/{local,pkg} (andrei) # 2005-06-26 numeric OSREL & HAVE_KQUEUE added to the *BSD (andrei) # 2005-07-04 HAVE_DEVPOLL added to solaris (andrei) # 2005-07-06 gcc 4.0 optimizations support (andrei) # 2005-07-25 better solaris arch detection (andrei) # 2005-09-12 -mallign-double removed (too many problems) (andrei) # 2005-10-02 distcc get gcc version hack (andrei) # 2006-03-30 64 bit mode compile by default on sparc64 (-m64), added # CC_GCC_LIKE_ASM and SPARC64_MODE (andrei) # sparc <= v8 support (andrei) # 2006-03-31 armv6 & mips64 support added # mips and arm set to NOSMP by default (andrei) # 2006-07-10 added -DPROFILING (hscholz) # 2007-02-09 added TLS_HOOKS and CORE_TLS support, obsoleted TLS=1 # added TLS_EXTRA_LIBS (andrei) # check if already included/exported ifeq ($(makefile_defs), 1) else makefile_defs=1 export makefile_defs # main binary name MAIN_NAME=ser #version number VERSION = 2 PATCHLEVEL = 0 SUBLEVEL = 0 EXTRAVERSION = -rc1 SER_VER = $(shell expr $(VERSION) \* 1000000 + $(PATCHLEVEL) \* 1000 + \ $(SUBLEVEL) ) RELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) OS = $(shell uname -s | sed -e s/SunOS/solaris/ | tr "[A-Z]" "[a-z]") ifeq ($(OS),solaris) GETARCH=uname -p else GETARCH=uname -m endif ARCH := $(shell $(GETARCH) |sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ -e s/armv[3-5].*/arm/ -e s/armv6.*/arm6/ \ -e "s/Power Macintosh/ppc/" \ -e "s/cobalt/mips2/" \ -e s/amd64/x86_64/ ) # fix sparc -> sparc64 ifeq ($(ARCH),sparc) ifeq ($(shell uname -m),sun4u) ARCH := sparc64 endif endif OSREL = $(shell uname -r) # numerical version (good for comparisons: A.B.C => A*1000000+B*1000+C) OSREL_N= $(shell echo $(OSREL) | sed -e 's/^[^0-9]*//' \ -e 's/^\([0-9][0-9]*\(\.[0-9][0-9]*\)*\).*$$/\1/g' | \ (IFS=. read A B C D; R=0; \ [ -n "$$A" ] && R=`expr $$R \* 1000 + $$A` && \ [ -n "$$B" ] && R=`expr $$R \* 1000 + $$B` && \ [ -n "$$C" ] && R=`expr $$R \* 1000 + $$C`; echo $$R ) ) # TLS support CORE_TLS ?= # by default compile with tls hooks support (so that no ser recompile is # needed before the tls module can be used) TLS_HOOKS=1 ifeq ($(CORE_TLS), 1) RELEASE:=$(RELEASE)-tls TLS_HOOKS:=0 endif ifeq ($(TLS_HOOKS), 1) # RELEASE:=$(RELEASE)-tls endif # extra CC command line options (e.g -march=athlon-mp) CC_EXTRA_OPTS ?= # dirs cfg-dir = etc/ser/ bin-dir = sbin/ modules-dir = lib/ser/modules/ ifeq ($(OS), linux) doc-dir = share/doc/ser/ man-dir = share/man/ LOCALBASE ?= /usr/local else ifeq ($(OS), freebsd) doc-dir = share/doc/ser/ man-dir = man/ LOCALBASE ?= /usr/local else ifeq ($(OS), openbsd) doc-dir = share/doc/ser/ man-dir = man/ LOCALBASE ?= /usr/local else ifeq ($(OS), netbsd) doc-dir = share/doc/ser man-dir = man/ LOCALBASE ?= /usr/pkg else ifeq ($(OS), darwin) doc-dir = share/doc/ser/ man-dir = man/ LOCALBASE ?= /usr/local else doc-dir = doc/ser/ man-dir = man/ LOCALBASE ?= /usr/local endif endif endif endif endif # install location DESTDIR ?= $(LOCALBASE) PREFIX ?= $(DESTDIR) prefix = $(PREFIX) # install path is $(basedir) $(prefix) # example: # creating a bin. archive in /tmp, which unpacks in /usr/local # basedir=/tmp # prefix=/usr/local BASEDIR ?= basedir = $(BASEDIR) # install prefixes for various stuff cfg-prefix = $(basedir)$(prefix) bin-prefix = $(basedir)$(prefix) modules-prefix = $(basedir)$(prefix) doc-prefix = $(basedir)$(prefix) man-prefix = $(basedir)$(prefix) ut-prefix = $(basedir)$(prefix) # target dirs for various stuff cfg-target = $(prefix)/$(cfg-dir) bin-target = $(prefix)/$(bin-dir) modules-target = $(prefix)/$(modules-dir) doc-target = $(prefix)/$(doc-dir) ifeq ($(OS), solaris) #use GNU versions INSTALL ?= ginstall TAR ?= gtar else INSTALL ?= install TAR ?= tar endif INSTALL-TOUCH = touch # used to create the file first (good to # make solaris install work) INSTALL-CFG = $(INSTALL) -m 644 INSTALL-BIN = $(INSTALL) -m 755 INSTALL-MODULES = $(INSTALL) -m 755 INSTALL-DOC = $(INSTALL) -m 644 INSTALL-MAN = $(INSTALL) -m 644 #set some vars from the environment (and not make builtins) CC := $(shell echo "$${CC}") LEX := $(shell echo "$${LEX}") YACC := $(shell echo "$${YACC}") # find compiler name & version ifeq ($(CC),) CC=gcc endif LD= $(CC) CC_LONGVER=$(shell if $(CC) -v 2>/dev/null; then \ $(CC) -v 2>&1 ;\ else \ $(CC) -V 2>&1 ; \ fi ) MKTAGS=ctags -R . #find-out the compiler's name ifneq (,$(findstring gcc, $(CC_LONGVER))) CC_NAME=gcc CC_VER=$(word 1,$(CC)) $(shell $(CC) - --version|head -n 1|cut -d" " -f 3|\ sed -e 's/^.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/'\ -e 's/^[^0-9].*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/') # sun sed is a little brain damaged => this complicated expression MKDEP=$(CC) -MM #transform gcc version into 2.9x or 3.0 CC_SHORTVER=$(shell echo "$(CC_VER)" | cut -d" " -f 2| \ sed -e 's/[^0-9]*-\(.*\)/\1/'| \ sed -e 's/2\.9.*/2.9x/' -e 's/3\.[0-3]\..*/3.0/' -e \ 's/3\.[0-3]/3.0/' -e 's/3\.[4-9]\..*/3.4/' -e \ 's/3\.[4-9]/3.4/' -e 's/4\.[0-9]\..*/4.x/' -e \ 's/4\.[0-9]/4.x/' ) endif ifneq (, $(findstring Sun, $(CC_LONGVER))) CC_NAME=suncc CC_SHORTVER=$(shell echo "$(CC_LONGVER)"|head -n 1| \ sed -e 's/.*\([0-9]\.[0-9]\).*/\1/g' ) CC_VER=$(CC) $(CC_SHORTVER) MKDEP=$(CC) -xM1 endif ifneq (, $(findstring Intel(R) C++ Compiler, $(CC_LONGVER))) # very nice: gcc compatible CC_NAME=icc CC_FULLVER=$(shell echo "$(CC_LONGVER)"|head -n 1| \ sed -e 's/.*Version \([0-9]\.[0-9]\.[0-9]*\).*/\1/g' ) CC_SHORTVER=$(shell echo "$(CC_FULLVER)" | cut -d. -f1,2 ) CC_VER=$(CC) $(CC_FULLVER) MKDEP=$(CC) -MM endif ifeq (,$(CC_NAME)) #not found CC_NAME=$(CC) CC_SHORTVER=unknown CC_VER=unknown MKDEP=gcc -MM $(warning Unknown compiler $(CC)\; supported compilers: \ gcc, sun cc, intel icc ) endif # compile-time options # # -DSTATS # allows to print out number of packets processed on CTRL-C; # implementation still nasty and reports per-process # -DNO_DEBUG # turns off some of the debug messages (DBG(...)). # -DNO_LOG # completely turns of all the logging (and DBG(...)) # -DEXTRA_DEBUG # compiles in some extra debugging code # -DDNS_IP_HACK # faster ip address resolver for ip strings (e.g "127.0.0.1") # -DSHM_MEM # compiles in shared mem. support, needed by some modules and # by USE_SHM_MEM # -DSHM_MMAP # use mmap instead of SYSV shared memory # -DPKG_MALLOC # uses a faster malloc (exclusive w/ USE_SHM_MEM) # -DUSE_SHM_MEM # all pkg_malloc => shm_malloc (most mallocs use a common sh. # mem. segment); don't define PKG_MALLOC if you want this! # -DDBG_QM_MALLOC # qm_malloc debug code, will cause pkg_malloc and shm_malloc # to keep and display lot of debuging information: file name, # function, line number of malloc/free call for each block, # extra error checking (trying to free the same pointer # twice, trying to free a pointer alloc'ed with a different # malloc etc.) # -DVQ_MALLOC # additional option to PKG_MALLOC which utilizes a fater then # qm version # (not true anymore, q_malloc performs approx. the same) # -DF_MALLOC # an even faster malloc, not recommended for debugging # -DDBG_MALLOC # issues additional debugging information if lock/unlock is called # -DFAST_LOCK # uses fast arhitecture specific locking (see the arh. specific section) # -DUSE_SYSV_SEM # uses sys v sems for locking (slower & limited number) # -DUSE_PTHREAD_MUTEX # uses pthread mutexes, faster than sys v or posix sems, but do not # work on all systems inter-processes (e.g. linux) # -DUSE_POSIX_SEM # uses posix semaphores for locking (faster than sys v) # -DBUSY_WAIT # uses busy waiting on the lock (FAST_LOCK) # -DADAPTIVE_WAIT # try busy waiting for a while and if the lock is still held go to # force reschedule (FAST_LOCK) # -DADAPTIVE_WAIT_LOOPS=number # number of loops we busy wait, after "number" loops have elapsed we # force a reschedule (FAST_LOCK) # -DNOSMP # don't use smp compliant locking (faster but won't work on SMP machines) # (not yet enabled) (FAST_LOCK) # -DNO_PINGTEL_TAG_HACK # if enabled, To-header-field will be less liberal and will not accept # 'tag=' (tag parameter with equal sign and without value); it is called # this way because such message was sighted from a Pingtel phone # -DUSE_TCP # compiles in tcp support # -DDISABLE_NAGLE # disable the tcp Nagle algorithm (lower delay) # -DUSE_TLS # compiles in tls support, requires -DUSE_TCP. Note: this is only # generic support (parsing a.s.o.), it does not include the actual # "tls engine". If you really want tls you need also either # -DCORE_TLS and a tls/ subdir with the tls code or -DTLS_HOOKS and # the tls module loaded. # -DCORE_TLS # compiles tls in-core support. Requires -DUSE_TLS, conflicts # -DTLS_HOOKS. Please use make CORE_TLS=1 instead (it will set all the # needed defines automatically and extra libraries needed for linking). # -DTLS_HOOKS # compile tls module support (support for having the "tls engine" in a # module). Requires -DUSE_TLS, conflicts -DCORE_TLS. # Please use make TLS_HOOKS=1 (or TLS_HOOKS=0 to for disabling) instead # of setting -DTLS_HOOKS (it will set all the needed defines # automatically) # -DHAVE_RESOLV_RES # support for changing some of the resolver parameters present # (_res structure in <resolv.h>) # -DUSE_COMP # compiles in comp=[sergz|sigcomp] support (parsing uri & via, # adding it to via, lumps a.s.o). WARNING: right now this option # is useless since the compression code doesn't exist yet. # -DHONOR_MADDR # compiles in checks and use for maddr parameter in uri. # Required to support Windows Messenger 5.x over TCP connection # which (mis)uses this parameter. # -DUSE_DNS_CACHE # use an internal dns cache instead of making dns requests each time # -DUSE_DNS_FAILOVER # if the destination resolves to multiple ips, on send error fall back # to the others # -DUSE_DST_BLACKLIST # blacklist bad destination (timeout, failed to connect, error sending # a.s.o) # -DPROFILING # if enabled profiling will be enabled for child processes # Don't forget to set PROFILE (see below) # -DUSE_STUN # compiles in stun support # -DNO_SIG_DEBUG # turns off debugging messages in signal handlers (which might be # unsafe) # Sometimes is needes correct non-quoted $OS. HACK: gcc translates known OS to number ('linux'), so there is added underscore DEFS+= $(extra_defs) \ -DNAME='"$(MAIN_NAME)"' -DVERSION='"$(RELEASE)"' -DARCH='"$(ARCH)"' \ -DOS='$(OS)_' -DOS_QUOTED='"$(OS)"' -DCOMPILER='"$(CC_VER)"' -D__CPU_$(ARCH) -D__OS_$(OS) \ -DSER_VER=$(SER_VER) \ -DCFG_DIR='"$(cfg-target)"'\ -DPKG_MALLOC \ -DSHM_MEM -DSHM_MMAP \ -DDNS_IP_HACK \ -DUSE_IPV6 \ -DUSE_MCAST \ -DUSE_TCP \ -DDISABLE_NAGLE \ -DHAVE_RESOLV_RES \ -DUSE_DNS_CACHE \ -DUSE_DNS_FAILOVER \ -DUSE_DST_BLACKLIST \ -DDBG_QM_MALLOC \ #-DDBG_F_MALLOC \ #-DNO_DEBUG \ #-DEXTRA_DEBUG \ #-DVQ_MALLOC \ #-DDBG_LOCK \ #-DNOSMP \ #-DUSE_SHM_MEM \ #-DSTATS \ #-DNO_LOG \ #-DPROFILING \ #-DNO_SIG_DEBUG #PROFILE= -pg # set this if you want profiling # you may also want to set -DPROFILING # WARNING: do not add mode=debug or mode=release anymore in the Makefile, # use make mode=debug all instead. Anyway no by default ser is compiled w/ # debugging symbols in all cases (-g). --andrei ifeq ($(CORE_TLS), 1) DEFS+= -DUSE_TLS -DCORE_TLS endif ifeq ($(TLS_HOOKS), 1) DEFS+= -DUSE_TLS -DTLS_HOOKS endif ifneq ($(STUN),) DEFS+= -DUSE_STUN endif ifeq ($(mode),) mode = release endif ifeq ($(mode),debug) DEFS+= -DEXTRA_DEBUG endif # platform dependent settings # find ld & as name (gnu or solaris) ifeq ($(OS), solaris) ifeq ($(CC_NAME), gcc) LDGCC=$(shell $(CC) -v 2>&1 | grep with-ld| \ sed -e 's/.*--with-ld=\([^ ][^ ]*\).*/\1/' ) ASGCC=$(shell $(CC) -v 2>&1 | grep with-as| \ sed -e 's/.*--with-as=\([^ ][^ ]*\).*/\1/' ) LDPATH=$(shell if [ -z "$(LDGCC)" ] ; then echo "ld" ;\ else \ if $(LDGCC) -V 2>/dev/null 1>/dev/null; then \ echo $(LDGCC); \ else echo "ld" ; \ fi\ fi) ASPATH=$(shell if [ -z "$(ASGCC)" ] ; then echo "as" ;\ else \ if $(ASGCC) -V 2>/dev/null 1>/dev/null; then \ echo $(ASGCC); \ else echo "as" ; \ fi\ fi) LDTYPE=$(shell if $(LDPATH) -V 1>/dev/null 2>/dev/null; then \ if $(LDPATH) -V 2>&1|grep GNU >/dev/null; \ then echo gnu; \ else \ if $(LDPATH) -V 2>&1|grep Solaris >/dev/null;\ then echo solaris; \ else \ echo unknown ; \ fi \ fi \ fi) ASTYPE=$(shell if $(ASPATH) -V 1>/dev/null 2>/dev/null </dev/null; \ then \ if $(ASPATH) -V 2>&1 </dev/null |grep GNU >/dev/null; \ then echo gnu; \ else \ if $(ASPATH) -V 2>&1 </dev/null |grep Sun >/dev/null;\ then echo solaris; \ else \ echo unknown ; \ fi \ fi \ fi) #$(warning "using ld=$(LDPATH)/$(LDTYPE), as=$(ASPATH)/$(ASTYPE)") endif endif # arh. specific definitions ifeq ($(ARCH), i386) use_fast_lock=yes endif ifeq ($(ARCH), x86_64) use_fast_lock=yes endif ifeq ($(ARCH), sparc64) ifeq ($(CC_NAME), gcc) use_fast_lock=yes endif endif ifeq ($(ARCH), sparc) use_fast_lock=yes endif ifeq ($(ARCH), arm) use_fast_lock=yes DEFS+=-DNOSMP # very unlikely to have an smp arm endif ifeq ($(ARCH), arm6) use_fast_lock=yes endif ifeq ($(ARCH), ppc) use_fast_lock=yes endif ifeq ($(ARCH), ppc64) use_fast_lock=yes endif ifeq ($(ARCH), mips) # mips1 arch. (e.g. R3000) - no hardware locking support use_fast_lock=no DEFS+=-DMIPS_HAS_LLSC # likely DEFS+=-DNOSMP # very likely endif ifeq ($(ARCH), mips2) # mips2 arch and newer (mips3=R4000, mips4=R5000 a.s.o) use_fast_lock=yes endif ifeq ($(ARCH), mips64) # mips2 arch and newer (mips3=R4000, mips4=R5000 a.s.o) use_fast_lock=yes endif ifeq ($(ARCH), alpha) use_fast_lock=yes endif ifeq ($(use_fast_lock), yes) DEFS+= -DFAST_LOCK -DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 found_lock_method=yes endif CFLAGS= LDFLAGS= INCLUDES= # setting CFLAGS ifeq ($(mode), release) #if i386 ifeq ($(ARCH), i386) # if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM #common stuff CFLAGS=-g -O9 -funroll-loops -Wcast-align $(PROFILE) #if gcc 4.0+ ifeq ($(CC_SHORTVER), 4.x) CPU ?= athlon64 CFLAGS+=-minline-all-stringops \ -falign-loops \ -ftree-vectorize \ -mtune=$(CPU) else #if gcc 3.4+ ifeq ($(CC_SHORTVER), 3.4) CPU ?= athlon CFLAGS+=-minline-all-stringops \ -falign-loops \ -mtune=$(CPU) else #if gcc 3.0+ ifeq ($(CC_SHORTVER), 3.0) CPU ?= athlon CFLAGS+=-minline-all-stringops \ -falign-loops \ -mcpu=$(CPU) else ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc >= 3.1 \ for better results) CFLAGS+=-m486 \ -malign-loops=4 else #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) endif # CC_SHORTVER, 2.9x endif # CC_SHORTVER, 3.0 endif # CC_SHORTVER, 3.4 endif # CC_SHORTVER, 4.x else # CC_NAME, gcc ifeq ($(CC_NAME), icc) DEFS+=-DCC_GCC_LIKE_ASM CFLAGS=-g -O3 -ipo -ipo_obj -unroll $(PROFILE) \ -tpp6 -xK #-openmp #optimize for PIII # -prefetch doesn't seem to work #( ty to inline acroos files, unroll loops,prefetch, # optimize for PIII, use PIII instructions & vect., # mutlithread loops) else #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, icc endif #CC_NAME, gcc endif #ARCH, i386 #x86_64 ifeq ($(ARCH), x86_64) # if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM #common stuff CFLAGS=-g -O9 -funroll-loops -Wcast-align $(PROFILE) #if gcc 4.0+ ifeq ($(CC_SHORTVER), 4.x) CPU ?= opteron CFLAGS+=-minline-all-stringops \ -falign-loops \ -ftree-vectorize \ -mtune=$(CPU) else #if gcc 3.4 ifeq ($(CC_SHORTVER), 3.4) CPU ?= athlon64 CFLAGS+=-minline-all-stringops \ -falign-loops else #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CPU ?= athlon64 CFLAGS+=-minline-all-stringops \ -falign-loops #-mcpu=$(CPU) \ # not working on all x86_64 gccs #-mcpu=athlon else ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc >= 3.1 \ for better results) CFLAGS+=-m486 \ -malign-loops=4 else #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) endif # CC_SHORTVER, 2.9x endif # CC_SHORTVER, 3.0 endif # CC_SHORTVER, 3.4 endif # CC_SHORTVER, 4.x else # CC_NAME, gcc ifeq ($(CC_NAME), icc) DEFS+=-DCC_GCC_LIKE_ASM CFLAGS=-g -O3 -ipo -ipo_obj -unroll $(PROFILE) \ -tpp6 -xK #-openmp #optimize for PIII # -prefetch doesn't seem to work #( ty to inline acroos files, unroll loops,prefetch, # optimize for PIII, use PIII instructions & vect., # mutlithread loops) else #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, icc endif #CC_NAME, gcc endif #ARCH, x86_64 #if sparc64 ifeq ($(ARCH), sparc64) #if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM -DSPARC64_MODE #common stuff CFLAGS=-m64 -g -O9 -funroll-loops $(PROFILE) \ #-Wcast-align \ #-Wmissing-prototypes # use -m64 to force 64 bit (but add it also to LDFLAGS and # don't forget to define SPARC64_MODE) # -m32 for 32 bit (default on solaris), # nothing for arch. default LDFLAGS+=-m64 #if gcc 4.x ifeq ($(CC_SHORTVER), 4.x) CPU ?= ultrasparc #use 32bit for now CFLAGS+=-mcpu=ultrasparc -minline-all-stringops \ -mtune=$(CPU) \ -ftree-vectorize else #if gcc 3.4 ifeq ($(CC_SHORTVER), 3.4) CPU ?= ultrasparc #use 32bit for now CFLAGS+= -mcpu=ultrasparc -mtune=$(CPU) else #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CPU ?= ultrasparc #use 32bit for now CFLAGS+= -mcpu=ultrasparc -mtune=$(CPU) \ # -mcpu=v9 or ultrasparc? # -mtune implied by -mcpu #-mno-epilogue #try to inline function exit code #-mflat # omit save/restore #-,faster-structs #faster non Sparc ABI structure copy ops else # CC_SHORTVER, 3.0 ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc >= 3.1 \ for better results) ifneq ($(OS), netbsd) # on netbsd/sparc64, gcc 2.95.3 does not compile # ser with -mv8 CFLAGS+= -mv9 endif ifeq ($(ASTYPE), solaris) CFLAGS+= -Wa,-xarch=v8plus endif else #CC_SHORTVER, 2.9x #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) CFLAGS+= -mv9 ifeq ($(ASTYPE), solaris) CFLAGS+= -Wa,-xarch=v8plus endif endif #CC_SHORTVER, 2.9x endif #CC_SHORTVER, 3.0 endif #CC_SHORTVER, 3.4 endif #CC_SHORTVER, 4.x else #CC_NAME, gcc ifeq ($(CC_NAME), suncc) DEFS+=-DSPARC64_MODE CFLAGS+= -m64 -g -xO5 -fast -native -xarch=v9 -xCC \ -xc99 # C99 support # -Dinline="" # add this if cc < 5.3 (define inline as null) else #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, suncc endif #CC_NAME, gcc endif #ARCH, sparc64 #if sparc ifeq ($(ARCH), sparc) #if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM #common stuff CFLAGS=-g -O9 -funroll-loops $(PROFILE) \ #-Wcast-align \ #-Wmissing-prototypes #if gcc 4.x ifeq ($(CC_SHORTVER), 4.x) CPU ?= v8 #use 32bit for now CFLAGS+= -minline-all-stringops \ -mtune=$(CPU) \ -ftree-vectorize else #if gcc 3.4 ifeq ($(CC_SHORTVER), 3.4) CPU ?= v8 #use 32bit for now CFLAGS+= -mtune=$(CPU) else #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CPU ?= v8 #use 32bit for now CFLAGS+= -mtune=$(CPU) \ #-mno-epilogue #try to inline function exit code #-mflat # omit save/restore #-,faster-structs #faster non Sparc ABI structure copy ops else # CC_SHORTVER, 3.0 ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc >= 3.1 \ for better results) else #CC_SHORTVER, 2.9x #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) endif #CC_SHORTVER, 2.9x endif #CC_SHORTVER, 3.0 endif #CC_SHORTVER, 3.4 endif #CC_SHORTVER, 4.x else #CC_NAME, gcc ifeq ($(CC_NAME), suncc) CFLAGS+= -g -xO5 -fast -native -xCC \ -xc99 # C99 support # -Dinline="" # add this if cc < 5.3 (define inline as null) else #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, suncc endif #CC_NAME, gcc endif #ARCH, sparc #if ipaq/netwinder ifeq ($(ARCH), arm) # if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM #common stuff CFLAGS=-O9 -funroll-loops $(PROFILE) #if gcc 4.x+ ifeq ($(CC_SHORTVER), 4.x) CFLAGS+= -ftree-vectorize # not supported on arm: -minline-all-stringops else #if gcc 3.4+ ifeq ($(CC_SHORTVER), 3.4) CFLAGS+= else #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CFLAGS+= #-mcpu=athlon else ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \ for better results) CFLAGS+= else #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) endif # CC_SHORTVER, 2.9x endif # CC_SHORTVER, 3.0 endif # CC_SHORTVER, 3.4 endif # CC_SHORTVER, 4.0 else # CC_NAME, gcc #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, gcc endif #ARCH, arm #if armv6 cpu ifeq ($(ARCH), arm6) # if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM #common stuff CFLAGS=-march=armv6 -O9 -funroll-loops \ $(PROFILE) #if gcc 4.x+ ifeq ($(CC_SHORTVER), 4.x) CFLAGS+= -ftree-vectorize else #if gcc 3.4+ ifeq ($(CC_SHORTVER), 3.4) CFLAGS+= else #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CFLAGS+= #-mcpu=athlon else ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \ for better results) CFLAGS+= else #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) endif # CC_SHORTVER, 2.9x endif # CC_SHORTVER, 3.0 endif # CC_SHORTVER, 3.4 endif # CC_SHORTVER, 4.0 else # CC_NAME, gcc #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, gcc endif #ARCH, arm6 #if mips (R3000) ifeq ($(ARCH), mips) # if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM #common stuff CFLAGS=-O9 -funroll-loops $(PROFILE) #if gcc 4.0+ ifeq ($(CC_SHORTVER), 4.x) CFLAGS+=-march=r3000 -minline-all-stringops \ -ftree-vectorize else #if gcc 3.4+ ifeq ($(CC_SHORTVER), 3.4) CFLAGS+= -march=r3000 else #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CFLAGS+= -march=r3000 else ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \ for better results) CFLAGS+=-march=r3000 else #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) endif # CC_SHORTVER, 2.9x endif # CC_SHORTVER, 3.0 endif # CC_SHORTVER, 3.4 endif # CC_SHORTVER, 4.x else # CC_NAME, gcc #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, gcc endif #ARCH, mips #if >=mips2 (R4000, R5000, R6000 ....) ifeq ($(ARCH), mips2) # if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM #common stuff CFLAGS= -mips2 -O9 -funroll-loops $(PROFILE) #if gcc 4.0+ ifeq ($(CC_SHORTVER), 4.x) CFLAGS+=-minline-all-stringops -ftree-vectorize else #if gcc 3.4+ ifeq ($(CC_SHORTVER), 3.4) CFLAGS+= else #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CFLAGS+= else ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \ for better results) CFLAGS+= else #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) endif # CC_SHORTVER, 2.9x endif # CC_SHORTVER, 3.0 endif # CC_SHORTVER, 3.4 endif # CC_SHORTVER, 4.x else # CC_NAME, gcc #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, gcc endif #ARCH, mips2 #if >=mips64 ifeq ($(ARCH), mips64) # if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM #common stuff CFLAGS= -mips64 -O9 -funroll-loops $(PROFILE) #if gcc 4.0+ ifeq ($(CC_SHORTVER), 4.x) CFLAGS+=-minline-all-stringops -ftree-vectorize else #if gcc 3.4+ ifeq ($(CC_SHORTVER), 3.4) CFLAGS+= else #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CFLAGS+= else ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \ for better results) CFLAGS+= else #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) endif # CC_SHORTVER, 2.9x endif # CC_SHORTVER, 3.0 endif # CC_SHORTVER, 3.4 endif # CC_SHORTVER, 4.x else # CC_NAME, gcc #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, gcc endif #ARCH, mips64 #if alpha ifeq ($(ARCH), alpha) # if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM #common stuff CFLAGS= -O9 -funroll-loops $(PROFILE) #if gcc 4.0+ ifeq ($(CC_SHORTVER), 4.x) CFLAGS+= # not supported: -minline-all-stringops else #if gcc 3.4+ ifeq ($(CC_SHORTVER), 3.4) CFLAGS+= else #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CFLAGS+= else ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \ for better results) CFLAGS+= else #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) endif # CC_SHORTVER, 2.9x endif # CC_SHORTVER, 3.0 endif # CC_SHORTVER, 3.4 endif # CC_SHORTVER, 4.x else # CC_NAME, gcc #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, gcc endif #ARCH, alpha #if ppc ifeq ($(ARCH), ppc) # if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM #common stuff CFLAGS= -O9 -funroll-loops $(PROFILE) #if gcc 4.0+ ifeq ($(CC_SHORTVER), 4.x) CPU ?= powerpc CFLAGS+=-ftree-vectorize \ -mtune=$(CPU) -maltivec else #if gcc 3.4+ ifeq ($(CC_SHORTVER), 3.4) CFLAGS+= else #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CFLAGS+= else ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \ for better results) CFLAGS+= else #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) endif # CC_SHORTVER, 2.9x endif # CC_SHORTVER, 3.0 endif # CC_SHORTVER, 3.4 endif # CC_SHORTVER, 4.x else # CC_NAME, gcc #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, gcc endif #ARCH, ppc #if ppc64 ifeq ($(ARCH), ppc64) # if gcc ifeq ($(CC_NAME), gcc) DEFS+=-DCC_GCC_LIKE_ASM #common stuff CFLAGS= -O9 -funroll-loops $(PROFILE) ifeq ($(CC_SHORTVER), 4.x) CPU ?= powerpc64 CFLAGS+=-ftree-vectorize \ -mtune=$(CPU) -maltivec else #if gcc 3.4+ ifeq ($(CC_SHORTVER), 3.4) CFLAGS+= else #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CFLAGS+= else ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5]) $(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \ for better results) CFLAGS+= else #really old version $(warning You are using an old and unsupported gcc \ version ($(CC_SHORTVER)), compile at your own risk!) endif # CC_SHORTVER, 2.9x endif # CC_SHORTVER, 3.0 endif # CC_SHORTVER, 3.4 endif # CC_SHORTVER, 4.x else # CC_NAME, gcc #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, gcc endif #ARCH, ppc CFLAGS+= $(CC_EXTRA_OPTS) # setting LDFLAGS ifeq ($(CC_NAME), gcc) ifeq ($(LDTYPE), solaris) # solaris ld LDFLAGS+=-O2 $(PROFILE) MOD_LDFLAGS=-G $(LDFLAGS) else #gcc and maybe others, => gnu ld LDFLAGS+=-Wl,-O2 -Wl,-E $(PROFILE) MOD_LDFLAGS=-shared $(LDFLAGS) endif endif ifeq ($(CC_NAME), icc) #gcc and maybe others LDFLAGS+=-Wl,-O2 -Wl,-E $(PROFILE) MOD_LDFLAGS=-shared $(LDFLAGS) endif ifeq ($(CC_NAME), suncc) LDFLAGS+=-xO5 $(PROFILE) MOD_LDFLAGS=-G $(LDFLAGS) endif # we need -fPIC -DPIC only for shared objects, we don't need them for # the executable file, because it's always loaded at a fixed address # -andrei else #mode,release ifeq ($(CC_NAME), gcc) CFLAGS=-g -Wcast-align $(PROFILE) DEFS+=-DCC_GCC_LIKE_ASM ifeq ($(ARCH), sparc64) DEFS+=SPARC64_MODE CFLAGS+= -mcpu=ultrasparc -m64 LDFLAGS+=-m64 endif ifeq ($(LDTYPE), solaris) #solaris ld LDFLAGS+=-g $(PROFILE) MOD_LDFLAGS=-G $(LDFLAGS) else #gnu or other ld type LDFLAGS+=-g -Wl,-E $(PROFILE) MOD_LDFLAGS=-shared $(LDFLAGS) endif endif ifeq ($(CC_NAME), icc) DEFS+=-DCC_GCC_LIKE_ASM CFLAGS=-g $(PROFILE) LDFLAGS+=-g -Wl,-E $(PROFILE) MOD_LDFLAGS=-shared $(LDFLAGS) endif ifeq ($(CC_NAME), suncc) CFLAGS= -g $(PROFILE) LDFLAGS+=-g $(PROFILE) MOD_LDFLAGS=-G $(LDFLAGS) endif endif #mode=release # set pedantic compiler options ifeq ($(CC_NAME), gcc) CFLAGS+= -Wall else # no gcc ifeq ($(CC_NAME), icc) CFLAGS+= -Wall else # no icc ifeq ($(CC_NAME), suncc) # FIXME: is the default (-Xa ?) enough? endif # CC_NAME=suncc endif # CC_NAME=icc endif # CC_NAME=gcc #*FLAGS used for compiling the modules ifeq ($(CC_NAME), gcc) MOD_CFLAGS=-fPIC -DPIC $(CFLAGS) endif ifeq ($(CC_NAME), icc) MOD_CFLAGS=-Kpic $(CFLAGS) endif ifeq ($(CC_NAME), suncc) MOD_CFLAGS=-xcode=pic32 $(CFLAGS) endif ifeq ($(LEX),) LEX=flex endif ifeq ($(YACC),) YACC=bison endif YACC_FLAGS=-d -b cfg # on solaris add -lxnet (e.g. LIBS= -lxnet) LIBS= -ldl -lresolv #os specific stuff ifeq ($(OS), linux) DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \ -DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \ -DHAVE_TIMEGM ifneq ($(found_lock_method), yes) DEFS+= -DUSE_SYSV_SEM # try posix sems found_lock_method=yes else ifneq (,$(findstring -DUSE_POSIX_SEM, $(DEFS))) LIBS+=-lpthread endif ifneq (,$(findstring -DUSE_PTHREAD_MUTEX, $(DEFS))) LIBS+=-lpthread endif endif # check for >= 2.5.44 ifeq ($(shell [ $(OSREL_N) -ge 2005044 ] && echo has_epoll), has_epoll) ifeq ($(NO_EPOLL),) DEFS+=-DHAVE_EPOLL # linux + gcc >= 3.0 + -malign-double + epoll => problems CFLAGS:=$(filter-out -malign-double, $(CFLAGS)) endif endif # check for >= 2.2.0 ifeq ($(shell [ $(OSREL_N) -ge 2002000 ] && echo has_sigio), has_sigio) ifeq ($(NO_SIGIO),) DEFS+=-DHAVE_SIGIO_RT -DSIGINFO64_WORKARROUND endif endif ifeq ($(NO_SELECT),) DEFS+=-DHAVE_SELECT endif endif ifeq ($(OS), solaris) DEFS+= -DHAVE_GETIPNODEBYNAME -DHAVE_SYS_SOCKIO_H -DHAVE_SCHED_YIELD \ -DHAVE_ALLOCA_H -DUSE_SIGACTION ifneq ($(found_lock_method), yes) DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems found_lock_method=yes endif # check for ver >= 5.7 ifeq ($(shell [ $(OSREL_N) -gt 5007 ] && echo has_devpoll), has_devpoll) ifeq ($(NO_DEVPOLL),) DEFS+=-DHAVE_DEVPOLL endif endif ifeq ($(NO_SELECT),) DEFS+=-DHAVE_SELECT endif ifeq ($(mode), release) #use these only if you're using gcc with Solaris ld #LDFLAGS=-O2 $(PROFILE) #MOD_LDFLAGS=-O2 -G else #LDFLAGS=-g $(PROFILE) #MOD_LDFLAGS=-g -G endif YACC=yacc ifeq ($(CC_NAME), suncc) LIBS= -lfast -ldl -lresolv endif OLD_SOLARIS= $(shell echo "$(OSREL)" | \ sed -e 's/^5\.[0-6][^0-9]*$$/yes/' ) LIBS+= -L$(LOCALBASE)/lib -lxnet -lnsl ifeq ($(OLD_SOLARIS), yes) LIBS+=-lposix4 else LIBS+=-lrt endif # -lrt needed for sched_yield endif ifeq ($(OS), freebsd) DEFS+=-DHAVE_SOCKADDR_SA_LEN -DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN \ -DHAVE_SCHED_YIELD -DHAVE_MSGHDR_MSG_CONTROL \ -DHAVE_CONNECT_ECONNRESET_BUG -DHAVE_TIMEGM \ -DHAVE_NETINET_IN_SYSTM ifneq ($(found_lock_method), yes) DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems found_lock_method=yes LIBS+= -pthread #dlopen is in libc else LIBS= #dlopen is in libc endif # check for ver >= 4.1 ifeq ($(shell [ $(OSREL_N) -gt 4001 ] && echo has_kqueue), has_kqueue) ifeq ($(NO_KQUEUE),) DEFS+=-DHAVE_KQUEUE endif endif ifeq ($(NO_SELECT),) DEFS+=-DHAVE_SELECT endif YACC=yacc endif ifeq ($(OS), openbsd) DEFS+=-DHAVE_SOCKADDR_SA_LEN -DHAVE_GETHOSTBYNAME2 \ -DHAVE_UNION_SEMUN -DHAVE_MSGHDR_MSG_CONTROL \ -DHAVE_CONNECT_ECONNRESET_BUG -DHAVE_TIMEGM \ -DHAVE_NETINET_IN_SYSTM -DUSE_SIGWAIT ifneq ($(found_lock_method), yes) DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems found_lock_method=yes endif # check for ver >=2 9 ifeq ($(shell [ $(OSREL_N) -ge 2009 ] && echo has_kqueue), has_kqueue) ifeq ($(NO_KQUEUE),) DEFS+=-DHAVE_KQUEUE endif endif ifeq ($(NO_SELECT),) DEFS+=-DHAVE_SELECT endif # (symbols on openbsd are prefixed by "_") YACC=yacc # no sched_yield on openbsd unless linking with c_r (not recommended) # unfortunately pthread is needed for sigwait LIBS= -lpthread OPENBSD_IS_AOUT= $(shell echo "$(OSREL)" | \ sed -e 's/^3\.[0-3][^0-9]*$$/yes/' |sed -e 's/^[0-2]\..*/yes/') # exception: on sparc openbsd 3.2 is elf and not aout ifeq ($(OSREL), 3.2) ifeq ($(ARCH), sparc) OPENBSD_IS_AOUT:=no endif ifeq ($(ARCH), sparc64) OPENBSD_IS_AOUT:=no endif endif ifeq ($(OPENBSD_IS_AOUT), yes) DEFS+=-DDLSYM_PREFIX='"_"' LDFLAGS= # openbsd ld doesn't like -O2 or -E endif endif # if opensd ifeq ($(OS), netbsd) DEFS+=-DHAVE_SOCKADDR_SA_LEN -DHAVE_GETHOSTBYNAME2 \ -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_CONNECT_ECONNRESET_BUG -DHAVE_TIMEGM ifneq ($(found_lock_method), yes) DEFS+= -DUSE_SYSV_SEM # try pthread sems found_lock_method=yes endif # check for ver >= 2.0.0 ifeq ($(shell [ $(OSREL_N) -ge 2000000 ] && echo has_kqueue), has_kqueue) ifeq ($(NO_KQUEUE),) DEFS+=-DHAVE_KQUEUE # netbsd + kqueue and -malign-double don't work CFLAGS:=$(filter-out -malign-double, $(CFLAGS)) endif endif ifeq ($(NO_SELECT),) DEFS+=-DHAVE_SELECT endif YACC=yacc LIBS= endif # OS X support, same as freebsd ifeq ($(OS), darwin) DEFS+=-DHAVE_SOCKADDR_SA_LEN -DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN \ -DHAVE_SCHED_YIELD -DHAVE_MSGHDR_MSG_CONTROL \ -DUSE_ANON_MMAP \ -DNDEBUG -DHAVE_CONNECT_ECONNRESET_BUG -DHAVE_TIMEGM \ -DUSE_SIGWAIT # -DNDEBUG used to turn off assert (assert wants to call # eprintf which doesn't seem to be defined in any shared lib ifneq ($(found_lock_method), yes) DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems found_lock_method=yes LIBS= -pthread -lresolv #dlopen is in libc else LIBS= -lresolv #dlopen is in libc endif ifeq ($(NO_KQUEUE),) DEFS+=-DHAVE_KQUEUE endif ifeq ($(NO_SELECT),) DEFS+=-DHAVE_SELECT endif LDFLAGS= # darwin doesn't like -O2 or -E MOD_LDFLAGS= -bundle -bundle_loader ../../$(MAIN_NAME) YACC=yacc endif ifneq (,$(findstring CYGWIN, $(OS))) #cygwin is the same as common ifneq ($(found_lock_method), yes) DEFS+= -DUSE_SYSV_SEM # try sys v sems found_lock_method=yes endif endif #add libssl if needed ifeq ($(CORE_TLS), 1) DEFS+= -I$(LOCALBASE)/ssl/include LIBS+= -L$(LOCALBASE)/lib -L$(LOCALBASE)/ssl/lib -lssl -lcrypto \ $(TLS_EXTRA_LIBS) # NOTE: depending on the way in which libssl was compiled you might # have to add -lz -lkrb5 (zlib and kerberos5). # E.g.: make CORE_TLS=1 EXTRA_TLS_LIBS="-lz -lkrb5" endif ifneq ($(STUN),) DEFS+= -I$(LOCALBASE)/ssl/include LIBS+= -L$(LOCALBASE)/lib -L$(LOCALBASE)/ssl/lib -lcrypto endif ifneq ($(found_lock_method), yes) $(warning No locking method found so far, trying SYS V sems) DEFS+= -DUSE_SYSV_SEM # try sys v sems found_lock_method=yes endif endif # ifeq ($(makefile_defs, 1)