2003-06-11 Moritz Schulte <moritz@g10code.com>
[libgcrypt.git] / w32-dll / build-dll
1 #!/bin/sh
2 # Run this to generate the libgcrypt W32 DLL
3 #
4 # Copyright (C) 2001, 2002 Free Software Foundation, Inc.
5 #
6 # This file is free software; as a special exception the author gives
7 # unlimited permission to copy and/or distribute it, with or without
8 # modifications, as long as this notice is preserved.
9 #
10 # This program is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
12 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
14 AS=`mingw32 --get-path as`
15 OBJS=
16
17 grep "#define HAVE_DOSISH_SYSTEM" ../config.h
18 if [ $? = 1 ]; then
19     exit
20 fi
21
22 for i in $(ls ../cipher/*.o); do
23         OBJS="$OBJS $i"
24 done
25 for i in $(ls ../mpi/*.o); do
26         OBJS="$OBJS $i"
27 done
28 for i in $(ls ../src/*.o); do
29         OBJS="$OBJS $i"
30 done
31
32 # add asm code which is postfixed with .lo
33 OBJS="$OBJS ../mpi/mpih-sub1.lo ../mpi/mpih-add1.lo ../mpi/mpih-lshift.lo"
34 OBJS="$OBJS ../mpi/mpih-mul2.lo ../mpi/mpih-mul1.lo ../mpi/mpih-rshift.lo"
35 OBJS="$OBJS ../mpi/mpih-mul3.lo"
36
37 echo 'running dlltool the first time' >&2
38 mingw32 dlltool --nodelete  \
39         --as $AS \
40         --def libgcrypt.def \
41         --output-exp libgcrypt.exp \
42         --output-lib libgcrypt.imp \
43         --dllname libgcrypt.dll $OBJS
44 echo 'doing dummy link to create the base file' >&2
45 mingw32 gcc -mdll -Wl,--base-file -Wl,libgcrypt.base \
46                         -o libgcrypt.dll libgcrypt.exp $OBJS
47 echo 'running dlltool the second time' >&2
48 mingw32 dlltool --nodelete \
49                 --as $AS \
50                 --def libgcrypt.def \
51                 --output-exp libgcrypt.exp \
52         --output-lib libgcrypt.imp \
53                 --base-file libgcrypt.base \
54                 --dllname libgcrypt.dll $OBJS
55
56 echo 'doing final link' >&2
57 mingw32 gcc -mdll -o libgcrypt.dll libgcrypt.exp $OBJS
58 mingw32 strip libgcrypt.dll
59
60 mingw32 dlltool --def libgcrypt.def \
61                         --as $AS \
62                         --dllname libgcrypt.dll \
63                         --output-lib libgcrypt.lib
64
65 echo 'clean up'
66 rm -f dh.o dh.s dt.o dt.s
67 rm -f libgcrypt.base libgcrypt.exp libgcrypt.imp tlibgcrypt.exp