| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871 |
- # $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 <[email protected]>
- # 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)
- # 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 = 99
- EXTRAVERSION = -dev15
- 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/" -e "s/cobalt/mips2/" )
- 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/ser/
- 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)
- 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=$(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)
- DEFS+= $(extra_defs) \
- -DNAME='"$(MAIN_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_MCAST \
- -DUSE_TCP \
- -DDISABLE_NAGLE \
- -DF_MALLOC \
- # -DDBG_QM_MALLOC \
- # -DDBG_F_MALLOC \
- #-DF_MALLOC \
- #-DNO_DEBUG \
- #-DNO_LOG
- #-DEXTRA_DEBUG \
- #-DDBG_QM_MALLOC \
- #-DVQ_MALLOC
- #-DCONTACT_BUG
- #-DDBG_LOCK
- #-DNOSMP \
- #-DEXTRA_DEBUG \
- #-DUSE_SHM_MEM \
- #-DSTATS \
- #-DWITH_SNMP_MOD \
- #-DNO_LOG
- #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 </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), 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 ($(ARCH), mips2)
- # mips2 arch and newer (mips3=R4000, mips4=R5000 a.s.o)
- 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=
- # setting CFLAGS
- ifeq ($(mode), release)
- #if i386
- ifeq ($(ARCH), i386)
- # if gcc
- ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS=-g -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=-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)
- #common stuff
- CFLAGS=-g -O9 -funroll-loops -Wcast-align $(PROFILE) \
- -Wall \
- #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
- else # CC_NAME, gcc
- ifeq ($(CC_NAME), icc)
- 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 sparc
- ifeq ($(ARCH), sparc64)
- #if gcc
- ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS=-g -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+=-g -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
- #if >=mips2 (R4000, R5000, R6000 ....)
- ifeq ($(ARCH), mips2)
- # if gcc
- ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS= -mips2 -O9 -funroll-loops $(PROFILE) \
- -Wall \
- #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
-
- else # CC_NAME, gcc
- #other compilers
- $(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
- endif #CC_NAME, gcc
- endif #ARCH, mips2
- 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=-g -Wcast-align $(PROFILE)
- ifeq ($(ARCH), sparc64)
- CFLAGS+= -mcpu=ultrasparc
- 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)
- 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
- #*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= -lfl -ldl -lresolv
- #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)
|