* config.links: Add special rule for OpenBSD on x86 to use special
[gnupg.git] / mpi / config.links
1 # config.links - helper for ../configure
2 # Copyright (C) 1998, 1999, 2000, 2001 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     i[3467]86*-*-freebsd*-elf  | \
35     i[3467]86*-*-freebsd[3-9]* | \
36     i[3467]86*-*-freebsdelf*   | \
37     i[3467]86*-*-netbsd* )
38        echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
39        cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
40        path="i386"
41        ;;
42     i586*-*-freebsd*-elf  | \
43     i586*-*-freebsd[3-9]* | \
44     i586*-*-freebsdelf*   | \
45     i586*-*-netbsd*          | \
46     pentium-*-netbsd*        | \
47     pentiumpro-*-netbsd*)
48        echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
49        cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
50        path="i586 i386"
51        ;;
52     i[34]86*-*-bsdi4*)
53        echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
54        cat  $srcdir/mpi/i386/syntax.h    >>./mpi/asm-syntax.h
55        path="i386"
56        ;;
57 # Use old assembler syntax for OpenBSD as their assembler is really old.
58     i[34567]86*-*-openbsd*)
59         echo '#define BSD_SYNTAX' >>./mpi/asm-syntax.h
60         echo '#define X86_BROKEN_ALIGN' >>./mpi/asm-syntax.h
61         cat  $srcdir/mpi/i386-openbsd/syntax.h      >>./mpi/asm-syntax.h
62         path="i386-openbsd"
63         ;;
64     i[3467]86*-*-linuxaout*  | \
65     i[3467]86*-*-linuxoldld* | \
66     i[3467]86*-*-*bsd*)
67         echo '#define BSD_SYNTAX' >>./mpi/asm-syntax.h
68         echo '#define X86_BROKEN_ALIGN' >>./mpi/asm-syntax.h
69         cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
70         path="i386"
71         ;;
72     i586*-*-linuxaout*  | \
73     i586*-*-linuxoldld* | \
74     i586*-*-*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="i586 i386"
79         ;;
80     i[3467]86*-msdosdjgpp*)
81         echo '#define BSD_SYNTAX'        >>./mpi/asm-syntax.h
82         cat  $srcdir/mpi/i386/syntax.h   >>./mpi/asm-syntax.h
83         path="i386"
84         ;;
85     i586*-msdosdjgpp*)
86         echo '#define BSD_SYNTAX'        >>./mpi/asm-syntax.h
87         cat  $srcdir/mpi/i386/syntax.h   >>./mpi/asm-syntax.h
88         path="i586 i386"
89         ;;
90     i[3467]86*-*-*)
91         echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
92         cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
93         path="i386"
94         ;;
95     i586*-*-*  | \
96     pentium-*-*   | \
97     pentiumpro-*-*)
98         echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
99         cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
100         path="i586 i386"
101         ;;
102     alpha*-*-*)
103         echo '/* configured for alpha */' >>./mpi/asm-syntax.h
104         path="alpha"
105         mpi_extra_modules="udiv-qrnnd"
106         ;;
107     hppa7000*-*-*)
108         echo '/* configured for HPPA (pa7000) */' >>./mpi/asm-syntax.h
109         path="hppa1.1 hppa"
110         mpi_extra_modules="udiv-qrnnd"
111         ;;
112     hppa1.0*-*-*)
113         echo '/* configured for HPPA 1.0 */' >>./mpi/asm-syntax.h
114         path="hppa"
115         mpi_extra_modules="udiv-qrnnd"
116         ;;
117     hppa*-*-*)  # assume pa7100
118         echo '/* configured for HPPA (pa7100) */' >>./mpi/asm-syntax.h
119         path="pa7100 hppa1.1 hppa"
120         mpi_extra_modules="udiv-qrnnd"
121         ;;
122     sparc64-*-linux-gnu)
123         # An extra rule because we have an report for this one only.
124         # Should be compared against the next GMP version
125         echo '/* configured for sparc64-*-linux-gnu */' >>./mpi/asm-syntax.h
126         path="sparc32v8 sparc32"
127         mpi_extra_modules="udiv"
128         ;;
129     sparc64-sun-solaris2*)
130         # Got a report that udiv is missing, so we try this one
131         echo '/* configured for sparc64-sun-solaris2 */' >>./mpi/asm-syntax.h
132         path="sparc32v8 sparc32"
133         mpi_extra_modules="udiv"
134         ;;
135     sparc9*-*-*     | \
136     sparc64*-*-*    | \
137     ultrasparc*-*-* )
138         echo '/* configured for sparc9 or higher */' >>./mpi/asm-syntax.h
139         path="sparc32v8 sparc32"
140         ;;
141     sparc8*-*-*     | \
142     microsparc*-*-*)
143         echo '/* configured for sparc8 */' >>./mpi/asm-syntax.h
144         path="sparc32v8 sparc32"
145         ;;
146     supersparc*-*-*)
147         echo '/* configured for supersparc */' >>./mpi/asm-syntax.h
148         path="supersparc sparc32v8 sparc32"
149         mpi_extra_modules="udiv"
150         ;;
151     sparc*-*-*)
152         echo '/* configured for sparc */' >>./mpi/asm-syntax.h
153         path="sparc32"
154         mpi_extra_modules="udiv"
155         ;;
156     mips[34]*-*-* | \
157     mips*-*-irix6*)
158        echo '/* configured for MIPS3 */' >>./mpi/asm-syntax.h
159        path="mips3"
160        ;;
161     mips*-*-*)
162        echo '/* configured for MIPS2 */' >>./mpi/asm-syntax.h
163        path="mips2"
164        ;;
165
166     # Motorola 68k configurations.  Let m68k mean 68020-68040.
167     # mc68000 or mc68060 configurations need to be specified explicitly
168     m680[234]0*-*-linuxaout* | \
169     m68k*-*-linuxaout*)
170         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
171         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
172         path="m68k/mc68020 m68k"
173         ;;
174     m68060*-*-linuxaout*)
175         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
176         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
177         path="m68k"
178         ;;
179     m680[234]0*-*-linux* | \
180     m68k*-*-linux*)
181         echo '#define ELF_SYNTAX'           >>./mpi/asm-syntax.h
182         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
183         ;;
184     m68060*-*-linux*)
185         echo '#define ELF_SYNTAX'           >>./mpi/asm-syntax.h
186         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
187         path="m68k"
188         ;;
189     m68k-atari-mint)
190         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
191         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
192         path="m68k/mc68020 m68k"
193         ;;
194     m68000*-*-* | \
195     m68060*-*-*)
196         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
197         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
198         path="m68k/mc68000"
199         ;;
200     m680[234]0*-*-* | \
201     m68k*-*-*)
202         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
203         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
204         path="m68k/mc68020 m68k"
205         ;;
206
207     powerpc*-*-linux*)
208         echo '/* configured for powerpc/ELF */' >>./mpi/asm-syntax.h
209         echo '#define ELF_SYNTAX'               >>./mpi/asm-syntax.h
210         cat   $srcdir/mpi/powerpc32/syntax.h    >>./mpi/asm-syntax.h
211         path="powerpc32"
212         ;;
213
214     powerpc*-*-netbsd* | powerpc*-*-openbsd*)
215        echo '/* configured {Open,Net}BSD on powerpc */' >>./mpi/asm-syntax.h
216        echo '#define ELF_SYNTAX'                 >>./mpi/asm-syntax.h
217        cat   $srcdir/mpi/powerpc32/syntax.h      >>./mpi/asm-syntax.h
218        mpi_sflags="-Wa,-mppc"
219        path="powerpc32"
220        ;;
221
222     rs6000-*-aix[456789]*    | \
223     rs6000-*-aix3.2.[456789])
224         mpi_sflags="-Wa,-mpwr"
225         path="power"
226         mpi_extra_modules="udiv-w-sdiv"
227         ;;
228     rs6000-*-* | \
229     power-*-*  | \
230     power2-*-*)
231         mpi_sflags="-Wa,-mppc"
232         path="power"
233         mpi_extra_modules="udiv-w-sdiv"
234         ;;
235     powerpc-ibm-aix4.2.* )
236         # I am not sure about this one but a machine identified by
237         # powerpc-ibm-aix4.2.1.0 cannot use the powerpc32 code.
238         mpi_sflags="-Wa,-mpwr"
239         path="power"
240         mpi_extra_modules="udiv-w-sdiv"
241         ;;
242     ppc601-*-*)
243         mpi_sflags="-Wa,-mppc"
244         path="power powerpc32"
245         ;;
246     ppc60[234]*-*-* | \
247     powerpc*-*-*)
248         mpi_sflags="-Wa,-mppc"
249         path="powerpc32"
250         ;;
251     ppc620-*-*      | \
252     powerpc64*-*-*)
253         mpi_sflags="-Wa,-mppc"
254         path="powerpc64"
255         ;;
256
257     *)
258         echo '/* No assembler modules configured */' >>./mpi/asm-syntax.h
259         path=""
260         ;;
261 esac
262 else
263     echo '/* Assembler modules disabled on request */' >>./mpi/asm-syntax.h
264     path=""
265 fi
266
267
268 # Make sysdep.h
269 echo '/* created by config.links - do not edit */' >./mpi/sysdep.h
270 if test x$ac_cv_sys_symbol_underscore = xyes; then
271     cat <<EOF >>./mpi/sysdep.h
272 #if __STDC__
273 #define C_SYMBOL_NAME(name) _##name
274 #else
275 #define C_SYMBOL_NAME(name) _/**/name
276 #endif
277 EOF
278 else
279     cat <<EOF >>./mpi/sysdep.h
280 #define C_SYMBOL_NAME(name) name
281 EOF
282 fi
283
284
285 # fixme: grep these modules from Makefile.in
286 mpi_ln_modules="${mpi_extra_modules} mpih-add1 mpih-mul1 mpih-mul2 mpih-mul3 \
287                  mpih-lshift mpih-rshift mpih-sub1"
288
289 mpi_ln_objects=
290 mpi_ln_list=
291
292 # try to get file to link from the assembler subdirectory and
293 # if this fails get it from the generic subdirectory.
294 path="$path generic"
295 for fn in $mpi_ln_modules ; do
296     mpi_ln_objects="$mpi_ln_objects $fn.o"
297     for dir in $path ; do
298         rm -f $srcdir/mpi/$fn.[Sc]
299         if test -f $srcdir/mpi/$dir/$fn.S ; then
300             mpi_ln_list="$mpi_ln_list mpi/$fn.S:mpi/$dir/$fn.S"
301             break;
302         elif test -f $srcdir/mpi/$dir/$fn.c ; then
303             mpi_ln_list="$mpi_ln_list mpi/$fn.c:mpi/$dir/$fn.c"
304             break;
305         fi
306     done
307 done
308
309 # Same thing for the file which defines the limb size
310 path="$path generic"
311 for dir in $path ; do
312     rm -f $srcdir/mpi/mpi-asm-defs.h
313     if test -f $srcdir/mpi/$dir/mpi-asm-defs.h ; then
314         mpi_ln_list="$mpi_ln_list mpi/mpi-asm-defs.h:mpi/$dir/mpi-asm-defs.h"
315         break;
316     fi
317 done