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