* mpiutil.c (mpi_set_opaque, mpi_get_opaque): Make the length of an opaque
[gnupg.git] / mpi / config.links
1 # config.links - helper for ../configure
2 # Copyright (C) 1998, 1999, 2000, 2001, 2002,
3 #               2003 Free Software Foundation, Inc.
4 #
5 # This file is part of GnuPG.
6 #
7 # GnuPG is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
11
12 # GnuPG is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
20
21 # sourced by ../configure to get the list of files to link
22 # this should set $mpi_ln_list.
23 # Note: this is called from the above directory.
24
25
26 mpi_extra_modules=
27 mpi_sflags=
28
29 test -d ./mpi || mkdir ./mpi
30
31 echo '/* created by config.links - do not edit */' >./mpi/asm-syntax.h
32 echo "/* Target: ${target} */" >>./mpi/asm-syntax.h
33
34 if test "$try_asm_modules" = "yes" ; then
35 case "${target}" in
36     powerpc-apple-darwin*)
37         echo '/* No working assembler modules available */' >>./mpi/asm-syntax.h
38         path=""
39         ;;
40     i[3467]86*-*-freebsd*-elf  | \
41     i[3467]86*-*-freebsd[3-9]* | \
42     i[3467]86*-*-freebsdelf*   | \
43     i[3467]86*-*-netbsd*       | \
44     i[3467]86*-*-k*bsd*)
45        echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
46        cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
47        path="i386"
48        ;;
49     i586*-*-freebsd*-elf  | \
50     i586*-*-freebsd[3-9]* | \
51     i586*-*-freebsdelf*   | \
52     i586*-*-netbsd*          | \
53     i586*-*-k*bsd*           | \
54     pentium-*-netbsd*        | \
55     pentiumpro-*-netbsd*)
56        echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
57        cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
58        path="i586 i386"
59        ;;
60     i[34]86*-*-bsdi4*)
61        echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
62        cat  $srcdir/mpi/i386/syntax.h    >>./mpi/asm-syntax.h
63        path="i386"
64        ;;
65 # Use old assembler syntax for OpenBSD as their assembler is really old.
66     i[34567]86*-*-openbsd*)
67         echo '#define BSD_SYNTAX' >>./mpi/asm-syntax.h
68         echo '#define X86_BROKEN_ALIGN' >>./mpi/asm-syntax.h
69         cat  $srcdir/mpi/i386-openbsd/syntax.h      >>./mpi/asm-syntax.h
70         path="i386-openbsd"
71         ;;
72     i[3467]86*-*-linuxaout*  | \
73     i[3467]86*-*-linuxoldld* | \
74     i[3467]86*-*-*bsd*)
75         echo '#define BSD_SYNTAX' >>./mpi/asm-syntax.h
76         echo '#define X86_BROKEN_ALIGN' >>./mpi/asm-syntax.h
77         cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
78         path="i386"
79         ;;
80     i586*-*-linuxaout*  | \
81     i586*-*-linuxoldld* | \
82     i586*-*-*bsd*)
83         echo '#define BSD_SYNTAX' >>./mpi/asm-syntax.h
84         echo '#define X86_BROKEN_ALIGN' >>./mpi/asm-syntax.h
85         cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
86         path="i586 i386"
87         ;;
88     i[3467]86*-msdosdjgpp*)
89         echo '#define BSD_SYNTAX'        >>./mpi/asm-syntax.h
90         cat  $srcdir/mpi/i386/syntax.h   >>./mpi/asm-syntax.h
91         path="i386"
92         ;;
93     i586*-msdosdjgpp*)
94         echo '#define BSD_SYNTAX'        >>./mpi/asm-syntax.h
95         cat  $srcdir/mpi/i386/syntax.h   >>./mpi/asm-syntax.h
96         path="i586 i386"
97         ;;
98     i[3467]86*-*-*)
99         echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
100         cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
101         path="i386"
102         ;;
103     i586*-*-*  | \
104     pentium-*-*   | \
105     pentiumpro-*-*)
106         echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
107         cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
108         path="i586 i386"
109         ;;
110     alpha*-*-*)
111         echo '/* configured for alpha */' >>./mpi/asm-syntax.h
112         path="alpha"
113         mpi_extra_modules="udiv-qrnnd"
114         ;;
115     hppa7000*-*-*)
116         echo '/* configured for HPPA (pa7000) */' >>./mpi/asm-syntax.h
117         path="hppa1.1 hppa"
118         mpi_extra_modules="udiv-qrnnd"
119         ;;
120     hppa1.0*-*-*)
121         echo '/* configured for HPPA 1.0 */' >>./mpi/asm-syntax.h
122         path="hppa"
123         mpi_extra_modules="udiv-qrnnd"
124         ;;
125     hppa*-*-*)  # assume pa7100
126         echo '/* configured for HPPA (pa7100) */' >>./mpi/asm-syntax.h
127         path="pa7100 hppa1.1 hppa"
128         mpi_extra_modules="udiv-qrnnd"
129         ;;
130     sparc64-*-linux-gnu)
131         # An extra rule because we have an report for this one only.
132         # Should be compared against the next GMP version
133         echo '/* configured for sparc64-*-linux-gnu */' >>./mpi/asm-syntax.h
134         path="sparc32v8 sparc32"
135         mpi_extra_modules="udiv"
136         ;;
137     sparc64-sun-solaris2*)
138         # Got a report that udiv is missing, so we try this one
139         echo '/* configured for sparc64-sun-solaris2 */' >>./mpi/asm-syntax.h
140         path="sparc32v8 sparc32"
141         mpi_extra_modules="udiv"
142         ;;
143     sparc64-*-netbsd* | sparc64-*-freebsd* | sparc64-*-openbsd*)
144        # There are no sparc64 assembler modules that work on the
145        # *BSDs, so use the generic C functions.
146        echo '/* No working assembler modules available */' >>./mpi/asm-syntax.h
147        path=""
148        ;;
149     sparc9*-*-*     | \
150     sparc64*-*-*    | \
151     ultrasparc*-*-* )
152         echo '/* configured for sparc9 or higher */' >>./mpi/asm-syntax.h
153         path="sparc32v8 sparc32"
154         ;;
155     sparc8*-*-*     | \
156     microsparc*-*-*)
157         echo '/* configured for sparc8 */' >>./mpi/asm-syntax.h
158         path="sparc32v8 sparc32"
159         ;;
160     supersparc*-*-*)
161         echo '/* configured for supersparc */' >>./mpi/asm-syntax.h
162         path="supersparc sparc32v8 sparc32"
163         mpi_extra_modules="udiv"
164         ;;
165     sparc*-*-*)
166         echo '/* configured for sparc */' >>./mpi/asm-syntax.h
167         path="sparc32"
168         mpi_extra_modules="udiv"
169         ;;
170     mips[34]*-*-* | \
171     mips*-*-irix6*)
172        echo '/* configured for MIPS3 */' >>./mpi/asm-syntax.h
173        path="mips3"
174        ;;
175     mips*-*-*)
176        echo '/* configured for MIPS2 */' >>./mpi/asm-syntax.h
177        path="mips2"
178        ;;
179
180     # Motorola 68k configurations.  Let m68k mean 68020-68040.
181     # mc68000 or mc68060 configurations need to be specified explicitly
182     m680[234]0*-*-linuxaout* | \
183     m68k*-*-linuxaout*)
184         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
185         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
186         path="m68k/mc68020 m68k"
187         ;;
188     m68060*-*-linuxaout*)
189         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
190         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
191         path="m68k"
192         ;;
193     m680[234]0*-*-linux* | \
194     m68k*-*-linux*)
195         echo '#define ELF_SYNTAX'           >>./mpi/asm-syntax.h
196         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
197         ;;
198     m68060*-*-linux*)
199         echo '#define ELF_SYNTAX'           >>./mpi/asm-syntax.h
200         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
201         path="m68k"
202         ;;
203     m68k-atari-mint)
204         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
205         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
206         path="m68k/mc68020 m68k"
207         ;;
208     m68000*-*-* | \
209     m68060*-*-*)
210         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
211         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
212         path="m68k/mc68000"
213         ;;
214     m680[234]0*-*-* | \
215     m68k*-*-*)
216         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
217         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
218         path="m68k/mc68020 m68k"
219         ;;
220
221     powerpc*-*-linux*)
222         echo '/* configured for powerpc/ELF */' >>./mpi/asm-syntax.h
223         echo '#define ELF_SYNTAX'               >>./mpi/asm-syntax.h
224         cat   $srcdir/mpi/powerpc32/syntax.h    >>./mpi/asm-syntax.h
225         path="powerpc32"
226         ;;
227
228     powerpc*-*-netbsd* | powerpc*-*-openbsd*)
229        echo '/* configured for {Open,Net}BSD on powerpc */' >>./mpi/asm-syntax.h
230        echo '#define ELF_SYNTAX'                 >>./mpi/asm-syntax.h
231        cat   $srcdir/mpi/powerpc32/syntax.h      >>./mpi/asm-syntax.h
232        mpi_sflags="-Wa,-mppc"
233        path="powerpc32"
234        ;;
235
236     rs6000-*-aix[456789]*    | \
237     rs6000-*-aix3.2.[456789])
238         mpi_sflags="-Wa,-mpwr"
239         path="power"
240         mpi_extra_modules="udiv-w-sdiv"
241         ;;
242     rs6000-*-* | \
243     power-*-*  | \
244     power2-*-*)
245         mpi_sflags="-Wa,-mppc"
246         path="power"
247         mpi_extra_modules="udiv-w-sdiv"
248         ;;
249     powerpc-ibm-aix4.2.* )
250         # I am not sure about this one but a machine identified by
251         # powerpc-ibm-aix4.2.1.0 cannot use the powerpc32 code.
252         mpi_sflags="-Wa,-mpwr"
253         path="power"
254         mpi_extra_modules="udiv-w-sdiv"
255         ;;
256     ppc601-*-*)
257         mpi_sflags="-Wa,-mppc"
258         path="power powerpc32"
259         ;;
260     ppc60[234]*-*-* | \
261     powerpc*-*-*)
262         mpi_sflags="-Wa,-mppc"
263         path="powerpc32"
264         ;;
265     ppc620-*-*      | \
266     powerpc64*-*-*)
267         mpi_sflags="-Wa,-mppc"
268         path="powerpc64"
269         ;;
270
271     *)
272         echo '/* No assembler modules configured */' >>./mpi/asm-syntax.h
273         path=""
274         ;;
275 esac
276 else
277     echo '/* Assembler modules disabled on request */' >>./mpi/asm-syntax.h
278     path=""
279 fi
280
281
282 # Make sysdep.h
283 echo '/* created by config.links - do not edit */' >./mpi/sysdep.h
284 if test x$ac_cv_sys_symbol_underscore = xyes; then
285     cat <<EOF >>./mpi/sysdep.h
286 #if __STDC__
287 #define C_SYMBOL_NAME(name) _##name
288 #else
289 #define C_SYMBOL_NAME(name) _/**/name
290 #endif
291 EOF
292 else
293     cat <<EOF >>./mpi/sysdep.h
294 #define C_SYMBOL_NAME(name) name
295 EOF
296 fi
297
298
299 # fixme: grep these modules from Makefile.in
300 mpi_ln_modules="${mpi_extra_modules} mpih-add1 mpih-mul1 mpih-mul2 mpih-mul3 \
301                  mpih-lshift mpih-rshift mpih-sub1"
302
303 mpi_ln_objects=
304 mpi_ln_list=
305
306 # try to get file to link from the assembler subdirectory and
307 # if this fails get it from the generic subdirectory.
308 path="$path generic"
309 for fn in $mpi_ln_modules ; do
310     mpi_ln_objects="$mpi_ln_objects $fn.o"
311     for dir in $path ; do
312         rm -f $srcdir/mpi/$fn.[Sc]
313         if test -f $srcdir/mpi/$dir/$fn.S ; then
314             mpi_ln_list="$mpi_ln_list mpi/$fn.S:mpi/$dir/$fn.S"
315             break;
316         elif test -f $srcdir/mpi/$dir/$fn.c ; then
317             mpi_ln_list="$mpi_ln_list mpi/$fn.c:mpi/$dir/$fn.c"
318             break;
319         fi
320     done
321 done
322
323 # Same thing for the file which defines the limb size
324 path="$path generic"
325 for dir in $path ; do
326     rm -f $srcdir/mpi/mpi-asm-defs.h
327     if test -f $srcdir/mpi/$dir/mpi-asm-defs.h ; then
328         mpi_ln_list="$mpi_ln_list mpi/mpi-asm-defs.h:mpi/$dir/mpi-asm-defs.h"
329         break;
330     fi
331 done