gecko-dev/directory/suncsdk/c-sdk/build.mk

544 строки
15 KiB
Makefile

#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is Mozilla Communicator client code, released
# March 31, 1998.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998-1999 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#
COMPVERSIONDIR = $(DEPTH)/directory/c-sdk
DEFAULT_VENDOR_NAME="Sun Microsystems Inc."
DEFAULT_VENDOR_VERSION=600
LDAPVERS = 60
LDAPVERS_SUFFIX = 6.0
ifndef VENDOR_NAME
VENDOR_NAME = $(DEFAULT_VENDOR_NAME)
endif
ifndef VENDOR_VERSION
VENDOR_VERSION = $(DEFAULT_VENDOR_VERSION)
endif
__BUILD_MARKER = "\"$(VENDOR_VERSION) $(OS_ARCH)$(OS_RELEASE) \
$(USER) $(BUILD_NOTE)\""
DEFINES += -D__BUILD_MARKER=$(__BUILD_MARKER)
ifeq ($(OS_ARCH), WINNT)
COMPONENT_PULL_METHOD=FTP
endif
ifdef HAVE_CCONF
# component tags for internal build only
include $(COMPVERSIONDIR)/component_versions.mk
endif
ifeq ($(DEBUG), full)
DBG_OR_OPT = DBG
else
DBG_OR_OPT = OPT
endif
# Ldap library
ifeq ($(OS_ARCH), WINNT)
LDAP_LIBNAME = nsldap32v$(LDAPVERS)
else
LDAP_LIBNAME = ldap$(LDAPVERS)
endif
DIR_VERSION = $(LDAPVERS_SUFFIX)
DIRSDK_VERSION = $(LDAPVERS_SUFFIX)
# PrLdap library
ifeq ($(OS_ARCH), WINNT)
PRLDAP_LIBNAME = nsldappr32v$(PRLDAPVERS)
else
PRLDAP_LIBNAME = prldap$(PRLDAPVERS)
endif
# lber library
ifeq ($(OS_ARCH), WINNT)
LBER_LIBNAME = nslber32v$(LBERVERS)
else
LBER_LIBNAME = lber$(LBERVERS)
endif
# ldif library
ifeq ($(OS_ARCH), WINNT)
LDIF_LIBNAME = nsldif32v$(LDIFVERS)
else
LDIF_LIBNAME = ldif$(LDIFVERS)
endif
# iutil library
ifeq ($(OS_ARCH), WINNT)
IUTIL_LIBNAME = nsiutil32v$(IUTILVERS)
else
IUTIL_LIBNAME = iutil$(IUTILVERS)
endif
# util library
ifeq ($(OS_ARCH), WINNT)
UTIL_LIBNAME = nsutil32v$(UTILVERS)
else
UTIL_LIBNAME = util$(UTILVERS)
endif
# ssl library
ifeq ($(OS_ARCH), WINNT)
SSLDAP_LIBNAME = nsldapssl32v$(SSLDAPVERS)
else
SSLDAP_LIBNAME = ssldap$(SSLDAPVERS)
endif
# nss library
NSS_LIBNAME = nss$(NSSVERS)
SSL_LIBNAME = ssl$(NSSVERS)
STKN_LIBNAME = softokn$(NSSVERS)
HYBRID_LIBNAME = freebl_hybrid_$(NSSVERS)
PURE32_LIBNAME = freebl_pure32_$(NSSVERS)
FREEBL_LIBNAME = freebl*
COPYFREEBL = 1
ifneq ($(USE_64), 1)
ifeq ($(OS_ARCH), SunOS)
ifneq ($(OS_TEST),i86pc)
COPYFREEBL = 1
endif
endif
ifeq ($(OS_ARCH), HP-UX)
COPYFREEBL = 1
endif
endif
# svrcore library
SVRCOREVERS =
SVRCOREVERS_SUFFIX =
SVRCORE_LIBNAME = svrcore$(SVRCOREVERS)
#
# NSPR library
#
ifeq ($(OS_TARGET), WIN95)
PLC_BASENAME=plc$(NSPR_LIBVERSION)
PLDS_BASENAME=plds$(NSPR_LIBVERSION)
NSPR_BASENAME=nspr$(NSPR_LIBVERSION)
else
PLC_BASENAME=libplc$(NSPR_LIBVERSION)
PLDS_BASENAME=libplds$(NSPR_LIBVERSION)
NSPR_BASENAME=libnspr$(NSPR_LIBVERSION)
endif
PLCBASE=plc$(NSPR_LIBVERSION)
PLDSBASE=plds$(NSPR_LIBVERSION)
NSPRBASE=nspr$(NSPR_LIBVERSION)
DYNAMICNSPR = -l$(PLCBASE) -l$(PLDSBASE) -l$(NSPRBASE)
PLC_LIBNAME=plc$(NSPR_LIBVERSION)
PLDS_LIBNAME=plds$(NSPR_LIBVERSION)
NSPR_LIBNAME=nspr$(NSPR_LIBVERSION)
#
# SASL library
#
LIBSASL_INCLUDES_LOC = /share/builds/integration/sasl$(SASLVERS)/$(SASL_RELEASE_TAG)/$(OBJDIR_NAME)/include
LIBSASL_LIB_LOC = /share/builds/integration/sasl$(SASLVERS)/$(SASL_RELEASE_TAG)/$(OBJDIR_NAME)/lib
ifeq ($(HAVE_SASL_LOCAL), 1)
LIBSASL_INCLUDES = /usr/include/sasl
LIBSASL_LIBDIR =
else
LIBSASL_INCLUDES =../../../../../dist/public/libsasl
LIBSASL_LIBDIR =../../../../../dist/$(OBJDIR_NAME)/libsasl
endif
SASL_LIBNAME=sasl
SASL_BASENAME=sasl32
################################
# LIB ICU (for I18N) #
################################
# default setting
ICU_COMP_NAME = icu
ICUOBJDIR=$(OBJDIR_NAME)
#ifeq ($(OS_ARCH), SunOS)
# ifeq ($(OS_TEST),i86pc)
# ICUOBJDIR = SunOS5.8_x86_$(DBG_OR_OPT).OBJ
# endif
#endif
# because we don't have a real Win 95 ICU component...
ifeq ($(OS_TARGET), WIN95)
ICUOBJDIR = WINNT4.0_$(DBG_OR_OPT).OBJ
endif
ifeq ($(OS_ARCH), Linux)
ifeq ($(USE_64), 1)
ICUOBJDIR = $(OS_ARCH)$(OS_RELEASE)_64$(OBJDIR_TAG).OBJ
else
ICUOBJDIR = $(OS_ARCH)$(OS_RELEASE)$(OBJDIR_TAG).OBJ
endif
endif
ifeq ($(OS_ARCH), AIX)
ICU_VERS_NUM = 2.1
ICU_LIBVERSION = 2.1.6
LIBICU_RELDATE = 20040126_21.1
ICU_RELDATE = 20040126_21.1
else
ICU_VERS_NUM = 3.2
ICU_LIBVERSION = 3.2
LIBICU_RELDATE = 20051214
ICU_RELDATE = 20051214
endif
ICU_VERSION = $(ICU_RELDATE)
ICU_COMP_DIR = lib$(ICU_COMP_NAME)$(ICU_VERS_NUM)
ICU_INT=
ifeq ($(ICU_INT), 1)
LIBICU_INCLUDES_LOC = /share/builds/components/icu/$(ICU_LIBVERSION)/$(ICU_RELDATE)/$(ICUOBJDIR)/include
LIBICU_LIB_LOC = /share/builds/components/icu/$(ICU_LIBVERSION)/$(ICU_RELDATE)/$(ICUOBJDIR)/lib
else
LIBICU_INCLUDES_LOC = /share/builds/integration/icu/$(ICU_LIBVERSION)/$(ICU_RELDATE)/$(ICUOBJDIR)/include
LIBICU_LIB_LOC = /share/builds/integration/icu/$(ICU_LIBVERSION)/$(ICU_RELDATE)/$(ICUOBJDIR)/lib
endif
ifneq ($(HAVE_LIBICU_LOCAL), 1)
LIBICU_DIR = ../../../../../dist/libicu$(ICU_LIBVERSION)
LIBICU_INCLUDES =../../../../../dist/public/libicu
LIBICU_LIBDIR =../../../../../dist/$(OBJDIR_NAME)/libicu
else
LIBICU_DIR =
LIBICU_INCLUDES = /usr/include
LIBICU_LIBDIR =
endif
ICU_LIBPATH = $(LIBICU_LIBDIR)
ICU_INCLUDE = $(LIBICU_INCLUDEDIR)
ifeq ($(OS_ARCH), WINNT)
ICU_RELEASE = $(COMPONENTS_DIR)/icu/$(ICU_VERSION)/$(ICUOBJDIR)
ICU_LIBNAMES = icuin icuuc icudt
ICU_LIBS = $(addsuffix .lib, $(ICU_LIBNAMES))
ICUDLL_NAMES = $(addsuffix .dll, $(ICU_LIBNAMES))
LIBICU = $(addprefix $(ICU_LIBPATH)/, $(ICU_LIBS))
ICUOBJNAME = $(ICU_LIBNAMES)
else # WINNT
ICU_LIBNAMES = icudata icui18n icuuc
ICU_SOLIB_NAMES = $(addsuffix $(DLL_PRESUF), $(ICU_LIBNAMES))
ICU_LIBS = $(addsuffix .a, $(ICU_SOLIB_NAMES))
ICU_SOLIBS = $(addsuffix .$(DLL_SUFFIX), $(ICU_SOLIB_NAMES))
ICUOBJNAME = $(ICU_SOLIBS)
LIBICU = $(addprefix $(ICU_LIBPATH)/, $(ICU_SOLIBS))
ICULINK = -L$(ICU_LIBPATH) $(addprefix -l, $(addsuffix $(DLL_PRESUF), $(ICU_LIBNAMES)))
ICULINK_STATIC = $(addprefix $(ICU_LIBPATH)/, $(ICU_LIBS))
ifeq ($(OS_ARCH),SOLARIS)
ICULINK += -lw
endif # Solaris
ifeq ($(OS_ARCH),HPUX)
#linking with libC is *BAD* on HPUX11
ICULINK = -L$(ICU_LIBPATH) $(addprefix -l, $(addsuffix $(DLL_PRESUF), $(ICU_LIBNAMES)))
ICULINK_STATIC = $(addprefix $(ICU_LIBPATH)/, $(ICU_LIBS))
endif # HPUX
ifeq ($(OS_ARCH),Linux)
ICULINK += -lresolv
ICULINK_STATIC += -lresolv
endif # Linux
endif #WINNT
RM = rm -f
SED = sed
# uncomment to enable support for LDAP referrals
LDAP_REFERRALS = -DLDAP_REFERRALS
DEFNETSSL = -DNET_SSL
NOLIBLCACHE = -DNO_LIBLCACHE
NSDOMESTIC = -DNS_DOMESTIC
#for including SASL options
ifdef HAVE_SASL
HAVESASLOPTIONS = -DLDAP_SASLIO_HOOKS -DHAVE_SASL_OPTIONS -DHAVE_SASL_OPTIONS_2
else
HAVESASLOPTIONS =
endif
ifdef BUILD_OPT
LDAP_DEBUG =
else
LDAP_DEBUG = -DLDAP_DEBUG
endif
ifdef HAVE_LIBICU
HAVELIBICU = -DHAVE_LIBICU
else
HAVELIBICU =
endif
ifdef BUILD_CLU
BUILDCLU = 1
else
BUILDCLU =
endif
#
# DEFS are included in CFLAGS
#
DEFS = $(PLATFORMCFLAGS) $(LDAP_DEBUG) $(HAVELIBICU) \
$(CLDAP) $(DEFNETSSL) $(NOLIBLCACHE) \
$(LDAP_REFERRALS) $(LDAP_DNS) $(STR_TRANSLATION) \
$(LIBLDAP_CHARSETS) $(LIBLDAP_DEF_CHARSET) \
$(NSDOMESTIC) $(LDAPSSLIO) $(HAVESASLOPTIONS)
ifeq ($(OS_ARCH), WINNT)
DIRVER_PROG=$(COMMON_OBJDIR)/dirver.exe
else
DIRVER_PROG=$(COMMON_OBJDIR)/dirver
endif
ifeq ($(OS_ARCH), WINNT)
EXE_SUFFIX=.exe
RSC=rc
OFFLAG=/Fo
else
OFFLAG=-o
endif
ifeq ($(OS_ARCH), Linux)
DEFS += -DLINUX2_0 -DLINUX1_2 -DLINUX2_1
endif
ifeq ($(OS_ARCH), WINNT)
DLLEXPORTS_PREFIX=/DEF:
USE_DLL_EXPORTS_FILE = 1
endif
ifeq ($(OS_ARCH), SunOS)
DLLEXPORTS_PREFIX=-Blocal -M
USE_DLL_EXPORTS_FILE = 1
endif
ifeq ($(OS_ARCH), IRIX)
DLLEXPORTS_PREFIX=-exports_file
USE_DLL_EXPORTS_FILE = 1
endif
ifeq ($(OS_ARCH), HP-UX)
DEFS += -Dhpux -D_REENTRANT
endif
ifeq ($(OS_ARCH),AIX)
DLLEXPORTS_PREFIX=-bE:
DL=-ldl
USE_DLL_EXPORTS_FILE = 1
endif
ifeq ($(OS_ARCH),OSF1)
DEFS += -DOSF1V4
DL=
endif
ifeq ($(OS_ARCH),ReliantUNIX)
DL=-ldl
endif
ifeq ($(OS_ARCH),UnixWare)
DL=
endif
RPATHFLAG = ..:../lib:../../lib:../../../lib:../../../../lib:../lib-private
ifeq ($(OS_ARCH), SunOS)
# flag to pass to cc when linking to set runtime shared library search path
# this is used like this, for example: $(RPATHFLAG_PREFIX)../..
RPATHFLAG_PREFIX=-Wl,-R,
# flag to pass to ld when linking to set runtime shared library search path
# this is used like this, for example: $(LDRPATHFLAG_PREFIX)../..
LDRPATHFLAG_PREFIX=-R
# OS network libraries
PLATFORMLIBS+=-lresolv -lsocket -lnsl -lgen -ldl -lposix4
endif
ifeq ($(OS_ARCH), OSF1)
# flag to pass to cc when linking to set runtime shared library search path
# this is used like this, for example: $(RPATHFLAG_PREFIX)../..
RPATHFLAG_PREFIX=-Wl,-rpath,
# flag to pass to ld when linking to set runtime shared library search path
# this is used like this, for example: $(LDRPATHFLAG_PREFIX)../..
LDRPATHFLAG_PREFIX=-rpath
# allow for unresolved symbols
DLL_LDFLAGS += -expect_unresolved "*"
endif # OSF1
ifeq ($(OS_ARCH), AIX)
# Flags to set runtime shared library search path. For example:
# $(CC) $(RPATHFLAG_PREFIX)../..$(RPATHFLAG_EXTRAS)
RPATHFLAG_PREFIX=-blibpath:
RPATHFLAG_EXTRAS=:/usr/lib:/lib
# flag to pass to ld when linking to set runtime shared library search path
# this is used like this, for example: $(LDRPATHFLAG_PREFIX)../..
LDRPATHFLAG_PREFIX=-blibpath:/usr/lib:/lib:
DLL_LDFLAGS= -bM:SRE -bnoentry \
-L.:/usr/lib/threads:/usr/lpp/xlC/lib:/usr/lib:/lib
DLL_EXTRA_LIBS= -bI:/usr/lib/lowsys.exp -lC_r -lC -lpthreads -lc_r -lm \
/usr/lib/libc.a
EXE_EXTRA_LIBS= -bI:/usr/lib/syscalls.exp -lsvld -lpthreads
endif # AIX
ifeq ($(OS_ARCH), HP-UX)
# flag to pass to cc when linking to set runtime shared library search path
# this is used like this, for example: $(RPATHFLAG_PREFIX)../..
RPATHFLAG_PREFIX=-Wl,+s,+b,
# flag to pass to ld when linking to set runtime shared library search path
# this is used like this, for example: $(LDRPATHFLAG_PREFIX)../..
LDRPATHFLAG_PREFIX=+s +b
# we need to link in the rt library to get sem_*()
PLATFORMLIBS += -lrt
PLATFORMCFLAGS=
endif # HP-UX
ifeq ($(OS_ARCH), Linux)
# flag to pass to cc when linking to set runtime shared library search path
# this is used like this, for example: $(RPATHFLAG_PREFIX)../..
RPATHFLAG_PREFIX=-Wl,-rpath,
# flag to pass to ld when linking to set runtime shared library search path
# this is used like this, for example: $(LDRPATHFLAG_PREFIX)../..
# note, there is a trailing space
LDRPATHFLAG_PREFIX=-rpath
endif # Linux
#
# XXX: does anyone know of a better way to solve the "LINK_LIB2" problem? -mcs
#
# Link to produce a console/windows exe on Windows
#
ifeq ($(OS_ARCH), WINNT)
DEBUG_LINK_OPT=/DEBUG:FULL
ifeq ($(BUILD_OPT), 1)
DEBUG_LINK_OPT=
endif
SUBSYSTEM=CONSOLE
LINK_EXE = link $(DEBUG_LINK_OPT) -OUT:"$@" /MAP $(ALDFLAGS) $(LDFLAGS) $(ML_DEBUG) \
$(LCFLAGS) /NOLOGO /PDB:NONE /DEBUGTYPE:BOTH /INCREMENTAL:NO \
/NODEFAULTLIB:MSVCRTD /SUBSYSTEM:$(SUBSYSTEM) $(DEPLIBS) \
$(EXTRA_LIBS) $(PLATFORMLIBS) $(OBJS)
LINK_LIB = lib -OUT:"$@" $(OBJS)
LINK_DLL = link $(DEBUG_LINK_OPT) /nologo /MAP /DLL /PDB:NONE /DEBUGTYPE:BOTH \
$(ML_DEBUG) /SUBSYSTEM:$(SUBSYSTEM) $(LLFLAGS) $(DLL_LDFLAGS) \
$(EXTRA_LIBS) /out:"$@" $(OBJS)
else # WINNT
#
# UNIX link commands
#
LINK_LIB = $(RM) $@; $(AR) $(OBJS); $(RANLIB) $@
LINK_LIB2 = $(RM) $@; $(AR) $@ $(OBJS2); $(RANLIB) $@
ifdef SONAMEFLAG_PREFIX
LINK_DLL = $(LD) $(DSO_LDOPTS) $(RPATHFLAG_PREFIX)$(RPATHFLAG) $(ALDFLAGS) $(DLL_LDFLAGS) \
$(DLL_EXPORT_FLAGS) -o $@ $(SONAMEFLAG_PREFIX)$(notdir $@) $(OBJS)
else # SONAMEFLAG_PREFIX
LINK_DLL = $(LD) $(RPATHFLAG_PREFIX)$(RPATHFLAG) $(ALDFLAGS) $(DLL_LDFLAGS) $(DLL_EXPORT_FLAGS) \
-o $@ $(OBJS)
endif # SONAMEFLAG_PREFIX
ifeq ($(OS_ARCH), OSF1)
# The linker on OSF/1 gets confused if it finds an so_locations file
# that doesn't meet its expectations, so we arrange to remove it before
# linking.
SO_FILES_TO_REMOVE=so_locations
endif
ifeq ($(OS_ARCH), HP-UX)
# On HPUX, we need a couple of changes:
# 1) Use the C++ compiler for linking, which will pass the +eh flag on down to the
# linker so the correct exception-handling-aware libC gets used (libnshttpd.sl
# needs this).
# 2) Add a "-Wl,-E" option so the linker gets a "-E" flag. This makes symbols
# in an executable visible to shared libraries loaded at runtime.
LINK_EXE = $(CCC) -AA -Wl,-E $(ALDFLAGS) $(LDFLAGS) $(RPATHFLAG_PREFIX)$(RPATHFLAG) -o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
ifeq ($(USE_64), 1)
LINK_EXE = $(CCC) -AA -DHPUX_ACC -D__STDC_EXT__ -D_POSIX_C_SOURCE=199506L +DA2.0W +DS2.0 -Wl,-E $(ALDFLAGS) $(LDFLAGS) $(RPATHFLAG_PREFIX)$(RPATHFLAG) -o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
endif
else # HP-UX
# everything except HPUX
ifeq ($(OS_ARCH), ReliantUNIX)
# Use the C++ compiler for linking if at least ONE object is C++
export LD_RUN_PATH=$(RPATHFLAG)
LINK_EXE = $(CXX) $(ALDFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
else # ReliantUNIX
ifdef USE_LD_RUN_PATH
#does RPATH differently. instead we export RPATHFLAG as LD_RUN_PATH
#see ns/netsite/ldap/clients/tools/Makefile for an example
export LD_RUN_PATH=$(RPATHFLAG)
LINK_EXE = $(CC) $(ALDFLAGS) $(LDFLAGS) \
-o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
LINK_EXE_NOLIBSOBJS = $(CC) $(ALDFLAGS) $(LDFLAGS) -o $@
else # USE_LD_RUN_PATH
LINK_EXE = $(CC) $(ALDFLAGS) $(LDFLAGS) \
$(RPATHFLAG_PREFIX)$(RPATHFLAG)$(RPATHFLAG_EXTRAS) \
-o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
LINK_EXE_NOLIBSOBJS = $(CC) $(ALDFLAGS) $(LDFLAGS) \
$(RPATHFLAG_PREFIX)$(RPATHFLAG)$(RPATHFLAG_EXTRAS) -o $@
endif # USE_LD_RUN_PATH
endif # ReliantUNIX
endif # HP-UX
endif # WINNT
ifeq ($(OS_ARCH), OSF1)
LINK_EXE = $(CCC) $(ALDFLAGS) $(LDFLAGS) $(RPATHFLAG_PREFIX)$(RPATHFLAG) \
-o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
endif
ifeq ($(OS_ARCH), SunOS)
ifeq ($(USE_64), 1)
LINK_EXE = $(CCC) $(ALDFLAGS) $(LDFLAGS) -R:$(RPATHFLAG)\
-o $@ $(OBJS) $(EXTRA_LIBS) $(PLATFORMLIBS)
endif
endif
PERL = perl
#
# shared library symbol export definitions
#
ifeq ($(OS_ARCH), WINNT)
GENEXPORTS=cmd /c $(PERL) $(LDAP_SRC)/build/genexports.pl
else
GENEXPORTS=$(PERL) $(LDAP_SRC)/build/genexports.pl
endif