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