scripts to build a W32 DLL
authorWerner Koch <wk@gnupg.org>
Fri, 3 Aug 2001 11:22:39 +0000 (11:22 +0000)
committerWerner Koch <wk@gnupg.org>
Fri, 3 Aug 2001 11:22:39 +0000 (11:22 +0000)
w32-dll/build-def [new file with mode: 0755]
w32-dll/build-dll [new file with mode: 0755]

diff --git a/w32-dll/build-def b/w32-dll/build-def
new file mode 100755 (executable)
index 0000000..3619c72
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+
+#
+# build-def - Build the needed .def file for the libgcrypt DLL
+#
+
+$gcrypt_h="../src/gcrypt.h";
+$i = 1;
+
+open(FD, $gcrypt_h) || die "$gcrypt_h: $!";
+@filebuf = <FD>;
+close(FD);
+
+open(FD, ">libgcrypt.def") || die "$!";
+print FD "EXPORTS\n";
+foreach $in (@filebuf) {
+       if ($in !~ m/\#define/ && $in !~ m/\\/ && $in !~ m/\t/) {
+               if ($in =~ m/gcry_/ && $' =~ m/\( /) {
+               print FD "\tgcry_$`\t\@$i\n";
+               $i++;
+               }
+       }
+}
+close(FD);
diff --git a/w32-dll/build-dll b/w32-dll/build-dll
new file mode 100755 (executable)
index 0000000..b0cc51a
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+#
+# build-dll - Build the libgcrypt.dll file
+#
+
+OBJS=
+
+for i in $(ls ../cipher/*.o); do
+       #o=`basename $i`
+       o=$i
+       OBJS="$OBJS $o"
+done
+for i in $(ls ../mpi/*.o); do
+       o=$i
+       OBJS="$OBJS $o"
+done
+for i in $(ls ../src/*.o); do
+       o=$i
+       OBJS="$OBJS $o"
+done
+for i in $(ls ../jnlib/*.o); do
+       o=$i
+       OBJS="$OBJS $o"
+done
+
+
+echo 'running dlltool the first time' >&2
+mingw32 dlltool --nodelete  \
+       --as i386--mingw32-as \
+       --def libgcrypt.def \
+       --output-exp libgcrypt.exp \
+       --output-lib libgcrypt.imp \
+       --dllname libgcrypt.dll $OBJS
+echo 'doing dummy link to create the base file' >&2
+mingw32 gcc -v -mdll -Wl,--base-file -Wl,libgcrypt.base \
+   -o libgcrypt.dll libgcrypt.exp $OBJS
+echo 'running dlltool the second time' >&2
+mingw32 dlltool --nodelete \
+               --as i386--mingw32-as \
+               --def libgcrypt.def \
+               --output-exp libgcrypt.exp \
+        --output-lib libgcrypt.imp \
+               --base-file libgcrypt.base \
+               --dllname libgcrypt.dll $OBJS
+
+echo 'doing final link' >&2
+mingw32 gcc -v -mdll -o libgcrypt.dll libgcrypt.exp $OBJS
+mingw32 strip libgcrypt.dll
+
+echo 'clean up'
+rm -f dh.o dh.s dt.o dt.s
+rm -f libgcrypt.base libgcrypt.exp