# # BEGIN COPYRIGHT BLOCK # This Program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation; version 2 of the License. # # This Program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along with # this Program; if not, write to the Free Software Foundation, Inc., 59 Temple # Place, Suite 330, Boston, MA 02111-1307 USA. # # In addition, as a special exception, Red Hat, Inc. gives You the additional # right to link the code of this Program with code not covered under the GNU # General Public License ("Non-GPL Code") and to distribute linked combinations # including the two, subject to the limitations in this paragraph. Non-GPL Code # permitted under this exception must only link to the code of this Program # through those well defined interfaces identified in the file named EXCEPTION # found in the source code files (the "Approved Interfaces"). The files of # Non-GPL Code may instantiate templates or use macros or inline functions from # the Approved Interfaces without causing the resulting work to be covered by # the GNU General Public License. Only Red Hat, Inc. may make changes or # additions to the list of Approved Interfaces. You must obey the GNU General # Public License in all respects for all of the Program code and other code used # in conjunction with the Program except the Non-GPL Code covered by this # exception. If you modify this file, you may extend this exception to your # version of the file, but you are not obligated to do so. If you do not wish to # provide this exception without modification, you must delete this exception # statement from your version and license this file solely under the GPL without # exception. # # # Copyright (C) 2001 Sun Microsystems, Inc. Used by permission. # Copyright (C) 2005 Red Hat, Inc. # All rights reserved. # END COPYRIGHT BLOCK # # # GNU Makefile for libslapd # FLAG_LDAP_4SLAPD=true LDAP_SRC = ../.. BUILD_ROOT = ../../.. NOSTDCLEAN=true # don't let nsconfig.mk define target clean NOSTDSTRIP=true # don't let nsconfig.mk define target strip NSPR20=true # probably should be defined somewhere else (not sure where) OBJDEST = $(OBJDIR)/servers/obj BINDIR = $(LIB_RELDIR) LIBDIR = $(OBJDIR)/lib ifndef INSTDIR INSTDIR = /opt/servers/ endif include $(BUILD_ROOT)/nsdefs.mk include $(BUILD_ROOT)/nsconfig.mk include $(LDAP_SRC)/nsldap.mk ifndef LDAP_USE_OLD_DB _ldap_db_depend:=$(DB_LIB_DEP) INCLUDES+=-I$(DB_INCLUDE) endif include $(LDAP_SRC)/nsdeps.mk INCLUDES += -I. -I$(BUILD_ROOT)/lib # uncomment the following to include support in slapd for hacky echo control #CFLAGS += -DSLAPD_ECHO_CONTROL CFLAGS+=$(SLCFLAGS) LIBSLAPD_OBJS=plugin_role.o getfilelist.o libglobs.o log.o ch_malloc.o entry.o pblock.o \ modutil.o schema.o attr.o value.o time.o dn.o \ filter.o filtercmp.o filterentry.o operation.o schemaparse.o pw.o \ backend.o defbackend.o ava.o charray.o regex.o \ str2filter.o dynalib.o plugin.o plugin_syntax.o plugin_mr.o \ slapi2nspr.o rwlock.o control.o plugin_internal_op.o \ result.o pw_retry.o agtmmap.o referral.o snmp_collator.o util.o \ dse.o errormap.o computed.o match.o fileio.o \ generation.o localhost.o ssl.o factory.o auditlog.o \ lenstr.o eventq.o uuid.o uniqueid.o uniqueidgen.o \ csngen.o utf8compare.o ntuserpin.o entrywsi.o valueset.o \ attrsyntax.o opshared.o add.o modify.o modrdn.o delete.o dl.o\ plugin_acl.o counters.o subentry.o object.o objset.o apibroker.o \ csn.o csnset.o slapd_plhash.o attrlist.o vattr.o bitset.o rdn.o \ mapping_tree.o backend_manager.o task.o resourcelimit.o \ bulk_import.o security_wrappers.o index_subsystem.o sasl_map.o ifeq ($(ARCH), AIX) ifeq ($(DEBUG), optimize) TEMP_CFLAGS = $(subst -O,,$(CFLAGS)) $(OBJDEST)/vattr.o: vattr.c $(CC) -o $(OBJDEST)/vattr.o -c $(TEMP_CFLAGS) $(MCC_INCLUDE) vattr.c endif endif ifeq ($(ARCH), WINNT) #find out why this isn't needed on UNIX DLL_LDFLAGS += $(NSPRLINK) /IMPLIB:$(LIBSLAPD) DLL_LDFLAGS += -def:"libslapd.def" LIBSLAPD_DEF = $(LDAP_SRC)/servers/slapd/libslapd.def SUBSYSTEM=windows LDAP_COMMON_EXTRALIBSLIST = libsi18n LDAP_COMMON_EXTRALIBS = $(addsuffix .$(LIB_SUFFIX), \ $(addprefix $(LDAP_LIBDIR)/, $(LDAP_COMMON_EXTRALIBSLIST))) LDAP_COMMON_LINK += libbase.$(LIB_SUFFIX) EXTRA_LIBS_DEP = $(SECURITY_DEP) $(NSPR_DEP) \ $(LDAP_COMMON_LIBS_DEP) $(LDAPSDK_DEP) \ $(LDAP_SDK_LIBSSLDAP_LIB_DEP) $(LIBLDAPU_DEP) $(_ldap_db_depend) \ $(SVRCORE_DEP) \ $(LDAP_COMMON_EXTRALIBS) EXTRA_LIBS += $(LDAPLINK) $(LIBSVRCORE) $(LIBSECURITY) $(LIBNSPR) \ $(LDAP_COMMON_LINK) \ $(LIBLDAPU) \ $(LDAP_COMMON_EXTRALIBS) # JCM - Warnings as Errors! CFLAGS += /WX else LDFLAGS = $(SSLLIBFLAG) EXTRA_LIBS_DEP = $(SECURITY_DEP) \ $(NSPR_DEP) $(LDAPSDK_DEP) $(SVRCORE_DEP) \ $(LDAP_LIBLDBM_DEP) $(LDAP_LIBAVL_DEP) $(LDAP_LIBLDIF_DEP) \ $(_ldap_db_depend) $(SVRCORE_DEP) EXTRA_LIBS = $(LDAP_LIBLITEKEY) -lavl -lldif \ $(SVRCORELINK) $(LDAPLINK) \ $(SECURITYLINK) $(NSPRLINK) \ $(ALIBS) $(DYNALIBS) $(THREADSLIB) endif ifeq ($(ARCH), AIX) LD=ld EXTRA_LIBS = $(LDAPLINK) $(SVRCORELINK) $(SECURITYLINK) $(NSPRLINK) \ $(LDAP_COMMON_LINK) \ $(LIBLDAPU) \ $(DYNALIBS) $(THREADSLIB) \ $(DLL_EXTRA_LIBS) \ $(LDAP_LIBLITEKEY) endif # Comment for the following comment: # Updating LDAP C SDK to V6.0 has introduced a new dependent library # (Cyrus SASL). Instead of adding the library to EXTRA_LIBS list, # comment out "-z defs". If check is needed, uncomment "-z defs" and # append necessary libraries to EXTRA_LIBS. ## for Solaris, our most common unix build platform, we check for undefined ## symbols at link time so we don't catch them at run time. To do this, we ## set the -z defs flag. We also have to add explicitly link with the C and ## C++ runtime libraries (e.g., -lc) because, even though ld and CC link ## with them implicitly, -z defs will throw errors if we do not link with ## them explicitly. ifeq ($(ARCH), SOLARIS) # LINK_DLL += -z defs # removed -lcx from the following line EXTRA_LIBS += -lm -lw -lc ifdef NS_USE_NATIVE EXTRA_LIBS += -lCstd -lCrun endif # with the Forte 6 and later compilers, we must use CC to link ifdef NS_USE_NATIVE LD=CC endif endif #ifeq ($(ARCH), OSF1) #DLL_LDFLAGS=-shared -all -error_unresolved -taso -ySVRCORE_RegisterPinObj #EXTRA_LIBS += -lc #endif OBJS = $(addprefix $(OBJDEST)/, $(LIBSLAPD_OBJS)) ERRORMAP.O = $(addprefix $(OBJDEST)/, errormap.o) all: $(OBJDEST) $(LIBDIR) $(BINDIR) $(BUILD_DEP) $(LIBSLAPD_DLL) $(LIBSLAPD_RELDLLS) static: $(OBJDEST) $(LIBDIR) $(LIBSLAPD) dummy: echo $(LINK_DLL) echo $(EXTRA_LIBS) clientSDK: static $(LIBSLAPD_DLL): $(EXTRA_LIBS_DEP) $(OBJS) $(LIBSLAPD_DEF) $(LINK_DLL) $(EXTRA_LIBS) veryclean: clean clean: -$(RM) $(OBJS) -$(RM) $(LIBSLAPD_DLL) # compilation dependencies: $(ERRORMAP.O): $(DIRVERDIR)/dberrstrs.h $(DIRVERDIR)/dberrstrs.h: $(DB_INCLUDE)/db.h ifeq ($(ARCH), WINNT) $(PERL) mkDBErrStrs.pl -nt -i $(DB_INCLUDE) -o $(DIRVERDIR) else $(PERL) mkDBErrStrs.pl -i $(DB_INCLUDE) -o $(DIRVERDIR) endif ifeq ($(ARCH), WINNT) $(OBJS): $(OBJDEST)/%.o : %.c endif # Target to push the built binary to an installed server LIBSLAPD_PUSH = $(addprefix $(INSTDIR)/, bin/slapd/server/libslapd.dll) push: $(LIBSLAPD_PUSH) $(LIBSLAPD_PUSH): $(LIBSLAPD_DLL) cp $(LIBSLAPD_DLL) $(LIBSLAPD_PUSH)