+all-local-srv: all-cffiles
+
+NT_DYN_DEFS = -DLBER_DECL=dllimport -DLDAP_DECL=dllimport
+
+DEFINES = $(@PLAT@_@LIB_LINKAGE@_DEFS)
+
+# The tricky part about building slapd in NT is that it will export symbols
+# like a DLL. The symbols that it exports should be representative of all
+# of the static symbols that it knows about.
+
+NT_EXP = slapd.exp
+NT_IMPLIB = libslapd.a
+NT_DUMMY = symdummy.o
+
+# Add extra def targets here
+EXTRA_DEFS =
+
+# NT needs this if libltdl is built statically. You'll have to fix the path
+# to point to where libltdl was built, then put ltdl.def in EXTRA_DEFS
+ltdl.def: ../../../libtool/libltdl/*.o
+ dlltool --export-all-symbols --output-def $@ $^
+
+DYNAMIC_DEFS = liblber.def libldap_r.def
+
+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 $<