# $Id: Makefile.osarch,v 1.25.2.1 2003/01/31 23:58:11 bko Exp $

######################################################################

# these options are NECESSARY options for a give operating system or
# architecture.  If they could or should be turned off, they shouldn't
# be here (or they should be wrapped in if code that is controllable
# by Makefile.opt).



############################## FreeBSD ##############################

# recent FreeBSDs (as of 6/1999) should have a sufficiently modern
# version of ecgs to build this code cleanly with the default c++
# compiler, but the releases generally don't.  install the ecgs
# port/package for older versions.

ifeq ($(OSTYPE),FreeBSD)

    CXXFLAGS += -D_REENTRANT -D_THREAD_SAFE
    CFLAGS += -D_REENTRANT -D_THREAD_SAFE
    USE_LIBGETOPT = 1
    USE_R_WRAPPER = 1

    ifeq ($(VOCAL_USE_SYSTEM_LIBS),true)
        VOCAL_USE_SYSTEM_IMAP := true
	VOCAL_USE_SYSTEM_XERCES_C := true
	VOCAL_USE_SYSTEM_LIBXML := true
	VOCAL_USE_SYSTEM_LIBSNDFILE := true
    endif
endif


############################## Linux ##############################

ifeq ($(OSTYPE),Linux)

    CXXFLAGS += -D_REENTRANT
    CFLAGS   += -D_REENTRANT

    ifeq ($(VOCAL_USE_SYSTEM_LIBS),true)
        VOCAL_USE_SYSTEM_IMAP := false
	VOCAL_USE_SYSTEM_XERCES_C := true
	VOCAL_USE_SYSTEM_LIBXML := true
	VOCAL_USE_SYSTEM_LIBSNDFILE := false
    endif
endif


############################# QNX ##################################

ifeq ($(OSTYPE),QNX)

    CXXFLAGS += -D_REENTRANT
    CFLAGS   += -D_REENTRANT
    LDLIBS_LAST   += -lsocket -lstdc++ 
    VOCAL_USE_OPENSSL = 0
endif


############################## Solaris ##############################

ifeq ($(OSTYPE),SunOS)

    USE_LIBGETOPT = 1
    CFLAGS += -DSUNXIL_WARNING_DISABLE
    CXXFLAGS += -DSUNXIL_WARNING_DISABLE
    INSTALL_PATH_DEFAULT = /opt/vocal

    ifeq ($(VOCAL_TOOLCHAIN_TYPE),gnu)

        CXXFLAGS += -D_REENTRANT
        CFLAGS   += -D_REENTRANT
        LDLIBS_LAST_PURE   += -lnsl -lsocket -nodefaultlibs -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -lc -lgcc -lm
        LDLIBS_LAST   += -R/usr/local/lib -lnsl -lsocket

# you may also need to override the version of AR to use GNU ar

        ifneq ($(VOCAL_AR_PATH),)
            AR = $(VOCAL_AR_PATH)
        endif

    else

        CXXFLAGS += -D_REENTRANT -mt -D_RWSTD_MULTI_THREAD -dalign -xarch=v8plus
        CFLAGS   += -D_REENTRANT -xarch=v8plus
        LDFLAGS  +=  -DTHREAD=MULTI -mt  -dalign -xarch=v8plus -L/opt/SUNWspro/WS6/lib/rw7 -L/opt/SUNWspro/WS6/lib/ -L/usr/local/ssl/lib/ 
        LDLIBS_LAST_PURE   += -lnsl -lsocket -lm
        LDLIBS_LAST   += -lrwtool -liostream -lnsl -lsocket -lCstd

        ifeq ($(USE_VARARG_HACK),1)
            CFLAGS+= -DVARARG_HACK
            CXXFLAGS+= -DVARARG_HACK
            FILEPP = $(HOME)/filepp-1.2.0/filepp
        endif

    endif

endif


############################## MacOS X ##############################

# Mac OS X is missing poll and some pthreads bits which are built by
# the 

ifeq ($(OSTYPE),Darwin)

    USE_LIBGETOPT = 1
    USE_R_WRAPPER = 1

    ifeq ($(VOCAL_USE_SYSTEM_LIBS),true)
        VOCAL_USE_SYSTEM_IMAP := true
	VOCAL_USE_SYSTEM_XERCES_C := true
	VOCAL_USE_SYSTEM_LIBXML := true
	VOCAL_USE_SYSTEM_LIBSNDFILE := true
    endif
endif


############################ cygwin ##################################

ifeq ($(OSTYPE),cygwin)
    USE_LIBGETOPT = 1
    CFLAGS += -I$(ROOT)/contrib/win32/mingw/include \
              -I$(ROOT)/contrib/win32/pthreads
    CXXFLAGS += -I$(ROOT)/contrib/win32/mingw/include \
                -I$(ROOT)/contrib/win32/pthreads
endif


ifeq ($(VOCAL_PROCESSOR_OPTS),1)
    ifeq ($(ARCH),i686)
        CXXFLAGS += -march=i686
        CFLAGS += -march=i686
        LDFLAGS  +=
        LDLIBS	 +=
    endif
endif



# set up general compilation options

LDFLAGS  += 
CXXFLAGS += -DUSE_PTHREADS
CFLAGS   += -DUSE_PTHREADS
LDLIBS   +=
INCDIRS  += $(BUILD)



######################################################################

# this section lets you override the default compile type

######################################################################

ifdef CODE_OPTIMIZE
VOCAL_COMPILE_TYPE := opt
endif

ifdef CODE_GOPTIMIZE
VOCAL_COMPILE_TYPE := gopt
endif

ifdef CODE_PROFILE
VOCAL_COMPILE_TYPE := prof
endif

ifdef CODE_NODEBUG
VOCAL_COMPILE_TYPE := nodebug
endif

ifdef CODE_SMALL
VOCAL_COMPILE_TYPE := small
endif

ifdef LIB_DYNAMIC
VOCAL_BUILD_SHARED_LIBS := yes
endif

TARGET_TYPE := $(VOCAL_COMPILE_TYPE)


ifeq ($(VOCAL_COMPILE_TYPE),small)
CXXFLAGS += $(COMPILE_SMALL_FLAG)
CFLAGS += $(COMPILE_SMALL_FLAG)
endif

ifeq ($(VOCAL_COMPILE_TYPE),nodebug)
endif

ifeq ($(VOCAL_COMPILE_TYPE),debug)
CXXFLAGS += $(DEBUG_FLAG)
CFLAGS   += $(DEBUG_FLAG)
endif


ifeq ($(VOCAL_COMPILE_TYPE),opt)
ifneq ($(CODE_OPTIMIZE), 1)
CXXFLAGS += -O$(CODE_OPTIMIZE) -DCODE_OPTIMIZE
CFLAGS += -O$(CODE_OPTIMIZE) -DCODE_OPTIMIZE
else
CXXFLAGS += -O -DCODE_OPTIMIZE
CFLAGS += -O -DCODE_OPTIMIZE
endif
endif

ifeq ($(VOCAL_COMPILE_TYPE),gopt)
CXXFLAGS += $(DEBUG_FLAG)
CFLAGS   += $(DEBUG_FLAG)
ifneq ($(CODE_GOPTIMIZE), 1)
CXXFLAGS += -O$(CODE_GOPTIMIZE) -DCODE_OPTIMIZE
CFLAGS += -O$(CODE_GOPTIMIZE) -DCODE_OPTIMIZE
else
CXXFLAGS += -O -DCODE_OPTIMIZE
CFLAGS += -O -DCODE_OPTIMIZE
endif
endif


# profiling

ifeq ($(VOCAL_COMPILE_TYPE),prof)
LDFLAGS  += -pg 
CXXFLAGS += -pg
CFLAGS   += -pg
endif

ifeq ($(USE_YARROW),1)
DEFINES += USE_CRYPTO_RANDOM 
DEFINES += USE_YARROW
endif

ifeq ($(VOCAL_USE_OPENSSL),true)
VOCAL_USE_OPENSSL=1
endif

ifeq ($(VOCAL_USE_OPENSSL),1)
# HAS, not USE, in defines
DEFINES += VOCAL_HAS_OPENSSL
endif

ifeq ($(VOCAL_USE_DEPRECATED),1)
DEFINES += VOCAL_USE_DEPRECATED
endif

ifeq ($(VOCAL_WARN_DEPRECATED),1)
DEFINES += VOCAL_WARN_DEPRECATED
endif

ifeq ($(ARCH),i586) 
DEFINES += VOCAL_USING_PENTIUM
endif

ifeq ($(ARCH),i686)
DEFINES += VOCAL_USING_PENTIUM
endif

ifdef VOCAL_USE_SOCKLEN_T
ifneq ($(VOCAL_USE_SOCKLEN_T),socklen_t)
DEFINES += VOCAL_USE_SOCKLEN_T=$(VOCAL_USE_SOCKLEN_T)
endif
endif

ifdef VOCAL_USE_SOCKET_BUFFER
ifneq ($(VOCAL_USE_SOCKET_BUFFER),void)
DEFINES += VOCAL_USE_SOCKET_BUFFER=$(VOCAL_USE_SOCKET_BUFFER)
endif
endif

######################################################################
#              More Toolchain defaults
######################################################################


ifeq ($(OSCLASS),VXWORKS)

# these are VxWorks defaults

# by default, we will use a real linker as the linker

ifndef LINKER
LINKER = $(LD)
endif

LDFLAGS += -Ur

endif




# SH hardware -- this code should actually be separated as this is
# toolchain stuff, by and large.


ifeq ($(ARCH),sh)

CXX=sh-wrs-vxworks-g++
DEP=sh-wrs-vxworks-gcc
CC=sh-wrs-vxworks-gcc
AR=sh-wrs-vxworks-ar
LD=sh-wrs-vxworks-ld
CROSS_COMPILE=1

DEFINES += BSD43_COMPATIBLE

CXXFLAGS += 
CFLAGS   += 
LDFLAGS  += -L/usr/local/lib/gcc-lib/sh-wrs-vxworks/2.95.1/m2
LDLIBS_LAST   +=  -lstdc++ -lgcc

OSCLASS = VXWORKS

USE_LEAKTRACE=
endif


OS_ARCH  := $(OSTYPE).$(ARCH)

TARGET_NAME := $(TARGET_TYPE).$(OS_ARCH)


syntax highlighted by Code2HTML, v. 0.9.1