1##
2# Makefile for OpenLDAP
3##
4
5# Project info
6Project               = OpenLDAP
7ProjectName           = OpenLDAP
8UserType              = Administrator
9ToolType              = Commands
10
11MACOSX_DEPLOYMENT_TARGET ?= $(shell "$(SRCROOT)/os.sh")
12RC_ProjectSourceVersion  ?= 999
13PROJVERSION               = $(RC_ProjectSourceVersion)
14
15ifeq ($(strip $(PROJVERSION)),)
16PROJVERSION = 999
17endif
18
19Extra_CC_Flags        = -DLDAP_RESPONSE_RB_TREE=1 -DLDAP_DEPRECATED=1 -DLDAP_CONNECTIONLESS=1 -DSLAP_DYNACL=1 -DUSES_KRBNAME=1 -DTGT_OS_VERSION="\\\"$(MACOSX_DEPLOYMENT_TARGET)\\\"" -DPROJVERSION="\\\"$(PROJVERSION)\\\"" -I/usr/local/BerkeleyDB/include -I/usr/include/krb5 -I${SRCROOT}/OpenLDAP/include -I${OBJROOT}/include -I${SRCROOT}/OpenLDAP/libraries/libldap -I${SRCROOT}/OpenLDAP/servers/slapd -I/usr/include/sasl -fno-common
20Extra_LD_Flags        = -L${OBJROOT}/libraries -L/usr/local/BerkeleyDB/lib/
21Extra_Environment     = CPPFLAGS="-I/usr/include/sasl -I/usr/local/BerkeleyDB/include"
22Extra_Environment    += AR=${SRCROOT}/ar.sh
23
24ifeq "$(DSS_BUILD_PARALLEL)" "yes"
25ncpus = $(shell sysctl hw.ncpu | awk '{print $$2}')
26Extra_Make_Flags    += -j$(ncpus)
27endif
28
29ifeq "$(RC_ProjectName)" "LDAPFramework"
30GnuAfterInstall = apple_framework
31else
32GnuAfterInstall = apple_port
33endif
34
35include $(MAKEFILEPATH)/CoreOS/ReleaseControl/GNUSource.make
36
37Extra_Configure_Flags = --disable-shared --disable-cleartext --enable-bdb  --x-libraries=/usr/local/BerkeleyDB/lib
38Extra_Configure_Flags += --prefix=${DSTROOT}/private --sysconfdir=${DSTROOT}/private/etc --localstatedir=${DSTROOT}/private/var/db/openldap --enable-aci=yes
39#Extra_Configure_Flags +=  DESTDIR="${DSTROOT}" --bindir="$(BINDIR)" --sbindir="$(SBINDIR)" --libexecdir="/usr/libexec" --datadir="$(SHAREDIR)/openldap" --sysconfdir="$(ETCDIR)" --localstatedir="${VARDIR}/db/openldap"
40Extra_Configure_Flags +=  --enable-overlays=yes --enable-dynid=yes --enable-auditlog=yes --enable-unique=yes --enable-odlocales=yes --enable-odusers=yes
41Install_Target = install
42
43Extra_CC_Flags        += -F/System/Library/PrivateFrameworks -F/System/Library/Frameworks/OpenDirectory.framework/Frameworks
44Extra_LD_Libraries    += -framework CoreFoundation -framework Security -framework SystemConfiguration -framework IOKit 
45ifeq "$(RC_ProjectName)" "LDAPFramework"
46Extra_LD_Libraries    += 
47else
48Extra_LD_Libraries    += -framework Heimdal -framework OpenDirectory -framework HeimODAdmin -framework CommonAuth -lpac -framework PasswordServer -framework AccountPolicy
49endif
50Extra_Configure_Flags += --enable-local --enable-crypt --with-tls --program-transform-name="s/^sl/ni-sl/"
51
52Extra_CC_Flags        += -isysroot ${SDKROOT}
53
54ifeq "$(RC_ProjectName)" "LDAPFramework"
55Extra_Configure_Flags += --enable-slapd="no"
56else
57Extra_Configure_Flags += --enable-slapd="yes"
58endif
59
60ORDERFILE=${SRCROOT}/AppleExtras/LDAP.order
61ifeq "$(shell test -f $(ORDERFILE) && echo YES )" "YES"
62	LDAP_SECTORDER_FLAGS=-sectorder __TEXT __text $(ORDERFILE)
63else
64	LDAP_SECTORDER_FLAGS=
65endif
66
67apple_port:
68	cp ${OBJROOT}/servers/slapd/slapd ${SYMROOT}/slapd
69	dsymutil ${SYMROOT}/slapd
70	for client in `ls ${OBJROOT}/clients/tools/`; do \
71		if [ ! -f ${OBJROOT}/clients/tools/$$client ]; then \
72			continue; \
73		fi; \
74		isobj=`echo $$client | grep -c "\.[o,c]"`; \
75		if [ "$$isobj" == "0" ]; then \
76			cp ${OBJROOT}/clients/tools/$$client ${SYMROOT}/; \
77			dsymutil ${SYMROOT}/$$client; \
78		fi; \
79	done
80	mkdir -p $(DSTROOT)/usr/local/OpenSourceLicenses/
81	cp $(SRCROOT)/OpenLDAP/LICENSE $(DSTROOT)/usr/local/OpenSourceLicenses/OpenLDAP.txt
82	mkdir -p $(DSTROOT)/usr/local/OpenSourceVersions/
83	cp $(SRCROOT)/AppleExtras/Resources/OpenLDAP.plist $(DSTROOT)/usr/local/OpenSourceVersions/
84	mkdir -p $(DSTROOT)/System/Library/LaunchDaemons
85	cp $(SRCROOT)/AppleExtras/Resources/org.openldap.slapd.plist $(DSTROOT)/System/Library/LaunchDaemons
86	rm -rf ${DSTROOT}/usr/include # remove includes from server target
87	rm -rf ${DSTROOT}/usr/local/include # remove local includes from server target
88	rm -f ${DSTROOT}/private/etc/openldap/slapd.ldif* # remove unused files from server target
89
90apple_framework:
91	rm -rf ${OBJROOT}/libraries/liblber/*test.o
92	rm -rf ${OBJROOT}/libraries/libldap/*test.o
93	rm -rf ${OBJROOT}/libraries/libldap_r/*test.o
94	xcrun cc ${RC_CFLAGS} -install_name /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP -compatibility_version 1.0.0 -current_version 2.4.0 \
95		-o ${SYMROOT}/LDAP ${LDAP_SECTORDER_FLAGS} ${OBJROOT}/libraries/liblber/*.o ${OBJROOT}/libraries/libldap_r/*.o \
96		-lsasl2 -framework Security -F/System/Library/PrivateFrameworks -framework CoreDaemon -lresolv ${Extra_LD_Libraries} "-Wl,-exported_symbols_list" \
97		${SRCROOT}/AppleExtras/ldap.exp -twolevel_namespace -dead_strip "-Wl,-single_module" -dynamiclib
98	mkdir -p ${DSTROOT}/System/Library/Frameworks/LDAP.framework/Versions/A/Headers
99	mkdir -p ${DSTROOT}/System/Library/Frameworks/LDAP.framework/Versions/A/PrivateHeaders
100	mkdir -p ${DSTROOT}/System/Library/Frameworks/LDAP.framework/Versions/A/Resources
101	ln -sf A  ${DSTROOT}/System/Library/Frameworks/LDAP.framework/Versions/Current
102	ln -sf Versions/Current/Headers ${DSTROOT}/System/Library/Frameworks/LDAP.framework/Headers
103	ln -sf Versions/Current/PrivateHeaders ${DSTROOT}/System/Library/Frameworks/LDAP.framework/PrivateHeaders
104	ln -sf Versions/Current/LDAP ${DSTROOT}/System/Library/Frameworks/LDAP.framework/LDAP
105	ln -sf Versions/Current/Resources ${DSTROOT}/System/Library/Frameworks/LDAP.framework/Resources
106	strip -x ${SYMROOT}/LDAP -o ${DSTROOT}/System/Library/Frameworks/LDAP.framework/Versions/A/LDAP
107	echo "#include <ldap.h>" > "${DSTROOT}/System/Library/Frameworks/LDAP.framework/Versions/A/Headers/ldap.h"
108	echo "#include <lber.h>" > "${DSTROOT}/System/Library/Frameworks/LDAP.framework/Versions/A/Headers/lber.h"
109	cp ${DSTROOT}/usr/local/include/ldap_private.h ${DSTROOT}/System/Library/Frameworks/LDAP.framework/Versions/A/PrivateHeaders
110
111	cp ${SRCROOT}/AppleExtras/Resources/Info.plist ${DSTROOT}/System/Library/Frameworks/LDAP.framework/Versions/A/Resources
112	cp ${SRCROOT}/AppleExtras/Resources/version.plist ${DSTROOT}/System/Library/Frameworks/LDAP.framework/Versions/A/Resources
113	rm -rf ${DSTROOT}/usr/lib
114	mkdir -p ${DSTROOT}/usr/lib
115	ln -sf /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP ${DSTROOT}/usr/lib/liblber.dylib
116	ln -sf /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP ${DSTROOT}/usr/lib/libldap.dylib
117	ln -sf /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP ${DSTROOT}/usr/lib/libldap_r.dylib
118	rm -rf ${DSTROOT}/usr/share # remove man pages from framework target
119	rm -rf ${DSTROOT}/private # remove default ldap.conf from framework target
120	rm -rf ${DSTROOT}/usr/bin # remove utilities from framework target
121