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