# $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 # 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) # 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 = 0 PATCHLEVEL = 8 SUBLEVEL = 14 EXTRAVERSION = RELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) OS = $(shell uname -s | sed -e s/SunOS/solaris/ | tr "[A-Z]" "[a-z]") ARCH = $(shell uname -m |sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ -e s/armv4l/arm/ -e "s/Power Macintosh/ppc/" ) OSREL = $(shell uname -r) # TLS support TLS ?= ifneq ($(TLS),) RELEASE:=$(RELEASE)-tls endif # extra CC command line options (e.g -march=athlon-mp) CC_EXTRA_OPTS ?= # install location # DESTDIR ?= /usr/local PREFIX ?= $(DESTDIR) # LOCALBASE ?= /usr/local 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) # dirs cfg-dir = etc/config/ bin-dir = sbin/ modules-dir = lib/ser/modules/ ifeq ($(OS), linux) doc-dir = share/doc/ser/ man-dir = share/man/ else ifeq ($(OS), freebsd) doc-dir = share/doc/ser/ man-dir = man/ else ifeq ($(OS), openbsd) doc-dir = share/doc/ser/ man-dir = man/ else ifeq ($(OS), netbsd) doc-dir = share/doc/ser man-dir = man/ else ifeq ($(OS), darwin) doc-dir = share/doc/ser/ man-dir = man/ else doc-dir = doc/ser/ man-dir = man/ endif endif endif endif endif ut-prefix = bin/ # target dirs for various stuff cfg-target = $(prefix)/$(cfg-dir) modules-target = $(prefix)/$(modules-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=$(CC) $(shell $(CC) --version|head -n 1| \ sed -e 's/^[^0-9]*\([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\..\..*/3.0/' -e \ 's/3\../3.0/') 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 # -DWITH_SNMP_MOD # if enabled, allows forking of the snmp agent just before child # forking (done at the top of main_loop). Needed if you want # to use the snmp module. # -DUSE_TCP # compiles in tcp support # -DDISABLE_NAGLE # disable the tcp Nagle algorithm (lower delay) # -DUSE_TLS # compiles in tls support, requires -DUSE_TCP. Please use # make TLS=1 instead. (tls support is highly experimental for now) export DEFS+= $(extra_defs) \ -DNAME='"$(NAME)"' -DVERSION='"$(RELEASE)"' -DARCH='"$(ARCH)"' \ -DOS='"$(OS)"' -DCOMPILER='"$(CC_VER)"' -D__CPU_$(ARCH) -D__OS_$(OS) \ -DCFG_DIR='"$(cfg-target)"'\ -DPKG_MALLOC \ -DSHM_MEM -DSHM_MMAP \ -DDNS_IP_HACK \ -DUSE_IPV6 \ -DUSE_TCP \ -DDISABLE_NAGLE \ -DF_MALLOC \ -DEXTRA_DEBUG # -DDBG_QM_MALLOC \ # -DDBG_QM_MALLOC \ # -DF_MALLOC \ # -DDBG_F_MALLOC \ # -DDBG_QM_MALLOC \ #-DF_MALLOC \ #-DNO_DEBUG \ #-DNO_LOG #-DDBG_QM_MALLOC \ #-DVQ_MALLOC #-DCONTACT_BUG #-DDBG_LOCK #-DNOSMP \ #-DUSE_SHM_MEM \ #-DSTATS \ #-DWITH_SNMP_MOD \ #PROFILE= -pg #set this if you want profiling # 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 ifneq ($(TLS),) DEFS+= -DUSE_TLS endif ifeq ($(mode),) mode = release endif ifeq ($(mode),debug) DEFS+= -DEXTRA_DEBUG endif # platform dependent settings # find ld & as name (gnu or solaris) ifeq ($(ARCH), sparc64) 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 &1 /dev/null; \ then echo gnu; \ else \ if $(ASPATH) -V 2>&1 /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), sparc64) ifeq ($(CC_NAME), gcc) use_fast_lock=yes endif endif ifeq ($(ARCH), arm) use_fast_lock=yes endif ifeq ($(ARCH), ppc) use_fast_lock=yes endif ifeq ($(ARCH), mips) # mips1 arch. (e.g. R3000) - no hardware locking support use_fast_lock=no endif ifeq ($(use_fast_lock), yes) DEFS+= -DFAST_LOCK -DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 found_lock_method=yes endif #CFLAGS= #LDFLAGS= # setting CFLAGS ifeq ($(mode), release) #if i386 ifeq ($(ARCH), i386) # if gcc ifeq ($(CC_NAME), gcc) #common stuff CFLAGS+= -O9 -funroll-loops -Wcast-align $(PROFILE) \ -Wall \ #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CPU ?= athlon CFLAGS+=-minline-all-stringops -malign-double \ -falign-loops \ -mcpu=$(CPU) \ #-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 else # CC_NAME, gcc ifeq ($(CC_NAME), icc) CFLAGS+= -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 #if sparc ifeq ($(ARCH), sparc64) #if gcc ifeq ($(CC_NAME), gcc) #common stuff CFLAGS+= -O9 -funroll-loops $(PROFILE) \ -Wall\ #-Wcast-align \ #-Wmissing-prototypes #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CPU ?= ultrasparc #use 32bit for now CFLAGS+= -mcpu=ultrasparc -mtune=$(CPU) \ # use -m64 to force 64 bit (but add it also to LDFLAGS), # -m32 for 32 bit (default on solaris), # nothing for arch. default # -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+= -mv8 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+= -mv8 ifeq ($(ASTYPE), solaris) CFLAGS+= -Wa,-xarch=v8plus endif endif #CC_SHORTVER, 2.9x endif #CC_SHORTVER, 3.0 else #CC_NAME, gcc ifeq ($(CC_NAME), suncc) CFLAGS+= -xO5 -fast -native -xarch=v8plusa -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) #common stuff CFLAGS+=-O9 -funroll-loops -Wcast-align $(PROFILE) \ -Wall \ #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CFLAGS+= -mcpu=strongarm1100 #-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 else # CC_NAME, gcc #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, gcc endif #ARCH, arm #if mips (R3000) ifeq ($(ARCH), mips) # if gcc ifeq ($(CC_NAME), gcc) #common stuff CFLAGS+=-O9 -funroll-loops -Wcast-align $(PROFILE) \ -Wall \ #if gcc 3.0 ifeq ($(CC_SHORTVER), 3.0) CFLAGS+= -mcpu=r3000 #-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+=-mcpu=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 else # CC_NAME, gcc #other compilers $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc) endif #CC_NAME, gcc endif #ARCH, mips CFLAGS+= $(CC_EXTRA_OPTS) # setting LDFLAGS ifeq ($(CC_NAME), gcc) ifeq ($(ARCH), sparc64) ifeq ($(LDTYPE), solaris) # solaris ld LDFLAGS+=-O2 $(PROFILE) MOD_LDFLAGS=-G $(LDFLAGS) else #gcc and maybe others, on solaris, with gnu ld LDFLAGS+=-Wl,-O2 -Wl,-E $(PROFILE) MOD_LDFLAGS=-shared $(LDFLAGS) endif else #gcc and maybe others 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+= -Wcast-align $(PROFILE) ifeq ($(ARCH), sparc64) CFLAGS+= -mcpu=ultrasparc endif ifeq ($(LDTYPE), solaris) #solaris ld LDFLAGS+= $(PROFILE) MOD_LDFLAGS=-G $(LDFLAGS) else #gnu or other ld type LDFLAGS+= -Wl,-E $(PROFILE) MOD_LDFLAGS=-shared $(LDFLAGS) endif endif ifeq ($(CC_NAME), icc) CFLAGS+= $(PROFILE) LDFLAGS+= -Wl,-E $(PROFILE) MOD_LDFLAGS=-shared $(LDFLAGS) endif ifeq ($(CC_NAME), suncc) CFLAGS+= $(PROFILE) LDFLAGS+= $(PROFILE) MOD_LDFLAGS=-G $(LDFLAGS) endif endif #mode=release #*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 += $(LDLIBS) $(LIBM) $(LIBRESOLV) LIBS += -ldl #os specific stuff ifeq ($(OS), linux) DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \ -DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL ifneq ($(found_lock_method), yes) DEFS+= -DUSE_SYSV_SEM # try posix sems found_lock_method=yes endif endif ifeq ($(OS), solaris) DEFS+= -DHAVE_GETIPNODEBYNAME -DHAVE_SYS_SOCKIO_H -DHAVE_SCHED_YIELD ifneq ($(found_lock_method), yes) DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems found_lock_method=yes 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 ifneq ($(TLS),) DEFS+= -I/usr/local/ssl/include endif YACC=yacc ifeq ($(CC_NAME), suncc) LIBS= -lfast -ldl -lresolv endif LIBS+= -L/usr/local/lib -lfl -lxnet -lrt -lnsl # -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 ifneq ($(found_lock_method), yes) DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems found_lock_method=yes LIBS= -pthread -lfl #dlopen is in libc else LIBS= -lfl #dlopen is in libc endif YACC=yacc endif ifeq ($(OS), openbsd) DEFS+=-DHAVE_SOCKADDR_SA_LEN -DHAVE_GETHOSTBYNAME2 \ -DHAVE_UNION_SEMUN -DHAVE_MSGHDR_MSG_CONTROL ifneq ($(found_lock_method), yes) DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems found_lock_method=yes endif # (symbols on openbsd are prefixed by "_") YACC=yacc # no sched_yield on openbsd unless linking with c_r (not recommended) LIBS= -lfl OPENBSD_IS_AOUT= $(shell echo "$(OSREL)" | \ sed -e 's/^3\.[0-3][^0-9]*$$/yes/' |sed -e 's/^[0-2]\..*/yes/') 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 ifneq ($(found_lock_method), yes) DEFS+= -DUSE_SYSV_SEM # try pthread sems found_lock_method=yes endif YACC=yacc LIBS= -lfl 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 # -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 -lfl -lresolv #dlopen is in libc else LIBS= -lfl -lresolv #dlopen is in libc 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 ifneq ($(TLS),) LIBS+= -L/usr/local/lib -L/usr/local/ssl/lib -lssl -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)