+STATIC_DEFS = libavl.def libldbm.def libldif.def liblutil.def slapd.def \
+ $(EXTRA_DEFS)
+
+libavl.def: $(LDAP_LIBDIR)/libavl/*.o
+ dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
+
+liblber.def: $(LDAP_LIBDIR)/liblber/*.o
+ dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
+
+libldap_r.def: $(LDAP_LIBDIR)/libldap_r/*.o
+ dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
+
+libldbm.def: $(LDAP_LIBDIR)/libldbm/*.o
+ dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
+
+libldif.def: $(LDAP_LIBDIR)/libldif/*.o
+ dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
+
+liblutil.def: $(LDAP_LIBDIR)/liblutil/*.o
+ dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
+
+slapd.def: $(OBJS) version.o
+ dlltool --export-all-symbols --exclude-symbols main,ServiceMain@8 --output-def $@ `ls $^ | grep -v test`
+
+# We don't want to include symbols from dynamic libraries.
+all.def: $(STATIC_DEFS) $(DYNAMIC_DEFS)
+ cat $(STATIC_DEFS) | grep " @ " | sed -e 's/ @ [0-9]*//' > $@
+ if test "@LIB_LINKAGE@" != "DYN" ; then \
+ cat $(DYNAMIC_DEFS) | grep " @ " | sed -e 's/ @ [0-9]*//' >> $@; \
+ fi
+ echo EXPORTS > tmp.def
+ sort $@ >> tmp.def
+ rm -f $@
+ dlltool --input-def tmp.def --output-def $@
+ rm -f tmp.def
+
+DUMMYTMP = symdummytmp.c
+
+symdummy.c: all.def $(ALL_DEFS)
+ rm -f $@
+ echo "static void never_called() {" > $(DUMMYTMP)
+ cat $< | grep " @ " | while read line; \
+ do \
+ set dummy $$line; \
+ case $$# in \
+ 5) \
+ echo "int $$2();" >> $@; \
+ echo "$$2();" >> $(DUMMYTMP); \
+ ;; \
+ 6) \
+ echo "extern int $$2;" >> $@; \
+ echo "$$2 = 0;" >> $(DUMMYTMP); \
+ ;; \
+ esac; \
+ done
+ echo "" >> $@
+ echo "}" >> $(DUMMYTMP)
+ cat $(DUMMYTMP) >> $@
+ rm -f $(DUMMYTMP)
+
+symdummy.o: symdummy.c
+ $(CC) $(CFLAGS) -c $<
+
+SLAPD_OBJS = $(OBJS) version.o symdummy.o
+
+slapd.exp: libbackends.a all.def $(SLAPD_OBJS)
+ $(LTLINK) -o slapd $(SLAPD_OBJS) $(LIBS) $(WRAP_LIBS) -Wl,--base-file,slapd.base
+ rm -f slapd.exe
+ dlltool --dllname slapd.exe --input-def all.def --base-file slapd.base --output-exp $@
+ $(LTLINK) -o slapd $(SLAPD_OBJS) $(LIBS) $(WRAP_LIBS) $@ -Wl,--base-file,slapd.base
+ rm -f slapd.exe
+ dlltool --dllname slapd.exe --input-def all.def --base-file slapd.base --output-exp $@
+
+libslapd.a: all.def
+ dlltool --dllname slapd.exe --input-def $< --output-lib $@
+
+slapd: libbackends.a version.o $(@PLAT@_EXP) $(@PLAT@_DUMMY)
+ $(LTLINK) -o $@ $(@PLAT@_EXP) $(@PLAT@_DUMMY) $(OBJS) version.o $(LIBS) $(WRAP_LIBS)
+ (cd tools; $(MAKE) $(MFLAGS) all)
+
+sslapd: version.o
+ $(LTLINK) -static -o $@ $(OBJS) version.o $(LIBS) $(WRAP_LIBS)
+
+.backend: $(@PLAT@_IMPLIB) FORCE