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