mpi: add ARMv6 assembly
[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           if test "$gcry_cv_cc_arm_arch_is_v6" = "yes" ; then
142             echo '/* configured for armv6 */' >>./mpi/asm-syntax.h
143             path="armv6"
144             mpi_cpu_arch="armv6"
145           else
146             echo '/* No assembler modules configured */' >>./mpi/asm-syntax.h
147             path=""
148           fi
149         else
150           echo '/* No assembler modules configured */' >>./mpi/asm-syntax.h
151           path=""
152         fi
153         ;;
154     hppa7000*-*-*)
155         echo '/* configured for HPPA (pa7000) */' >>./mpi/asm-syntax.h
156         path="hppa1.1 hppa"
157         mpi_extra_modules="udiv-qrnnd"
158         ;;
159     hppa1.0*-*-*)
160         echo '/* configured for HPPA 1.0 */' >>./mpi/asm-syntax.h
161         path="hppa"
162         mpi_extra_modules="udiv-qrnnd"
163         ;;
164     hppa*-*-*)  # assume pa7100
165         echo '/* configured for HPPA (pa7100) */' >>./mpi/asm-syntax.h
166         path="pa7100 hppa1.1 hppa"
167         mpi_extra_modules="udiv-qrnnd"
168         ;;
169     sparc64-*-linux-gnu)
170         echo '/* No working assembler modules available */' >>./mpi/asm-syntax.h
171         path=""
172         mpi_cpu_arch="sparc"
173         ;;
174     sparc64-sun-solaris2*)
175         echo '/* No working assembler modules available */' >>./mpi/asm-syntax.h
176         path=""
177         mpi_cpu_arch="sparc"
178         ;;
179     sparc64-*-netbsd* | sparc64-*-freebsd* | sparc64-*-openbsd*)
180        # There are no sparc64 assembler modules that work on the
181        # *BSDs, so use the generic C functions.
182        echo '/* No working assembler modules available */' >>./mpi/asm-syntax.h
183        path=""
184        mpi_cpu_arch="sparc"
185        ;;
186     sparc64*-*-*)
187        echo '/* No working assembler modules available */' >>./mpi/asm-syntax.h
188        path=""
189        mpi_cpu_arch="sparc"
190        ;;
191     sparc9*-*-*     | \
192     ultrasparc*-*-* )
193         echo '/* configured for sparc9 or higher */' >>./mpi/asm-syntax.h
194         path="sparc32v8 sparc32"
195         mpi_cpu_arch="sparc"
196         ;;
197     sparc8*-*-*     | \
198     microsparc*-*-*)
199         echo '/* configured for sparc8 */' >>./mpi/asm-syntax.h
200         path="sparc32v8 sparc32"
201         mpi_cpu_arch="sparc"
202         ;;
203     supersparc*-*-*)
204         echo '/* configured for supersparc */' >>./mpi/asm-syntax.h
205         path="supersparc sparc32v8 sparc32"
206         mpi_extra_modules="udiv"
207         mpi_cpu_arch="sparc"
208         ;;
209     sparc*-*-*)
210         echo '/* configured for sparc */' >>./mpi/asm-syntax.h
211         path="sparc32"
212         mpi_extra_modules="udiv"
213         mpi_cpu_arch="sparc"
214         ;;
215     mips[34]*-*-* | \
216     mips*-*-irix6*)
217        echo '/* configured for MIPS3 */' >>./mpi/asm-syntax.h
218        path="mips3"
219        mpi_cpu_arch="mips"
220        ;;
221     mips*-*-*)
222        echo '/* configured for MIPS2 */' >>./mpi/asm-syntax.h
223        path="mips2"
224        mpi_cpu_arch="mips"
225        ;;
226
227     # Motorola 68k configurations.  Let m68k mean 68020-68040.
228     # mc68000 or mc68060 configurations need to be specified explicitly
229     m680[234]0*-*-linuxaout* | \
230     m68k*-*-linuxaout*)
231         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
232         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
233         path="m68k/mc68020 m68k"
234         mpi_cpu_arch="m68k"
235         ;;
236     m68060*-*-linuxaout*)
237         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
238         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
239         path="m68k"
240         mpi_cpu_arch="m68k"
241         ;;
242     m680[234]0*-*-linux* | \
243     m68k*-*-linux*)
244         echo '#define ELF_SYNTAX'           >>./mpi/asm-syntax.h
245         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
246         mpi_cpu_arch="m68k"
247         ;;
248     m68060*-*-linux*)
249         echo '#define ELF_SYNTAX'           >>./mpi/asm-syntax.h
250         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
251         path="m68k"
252         mpi_cpu_arch="m68k"
253         ;;
254     m68k-atari-mint)
255         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
256         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
257         path="m68k/mc68020 m68k"
258         mpi_cpu_arch="m68k"
259         ;;
260     m68000*-*-* | \
261     m68060*-*-*)
262         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
263         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
264         path="m68k/mc68000"
265         mpi_cpu_arch="m68k"
266         ;;
267     m680[234]0*-*-* | \
268     m68k*-*-*)
269         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
270         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
271         path="m68k/mc68020 m68k"
272         mpi_cpu_arch="m68k"
273         ;;
274
275     powerpc*-*-netbsd* | powerpc*-*-openbsd*)
276        echo '/* configured {Open,Net}BSD on powerpc */' >>./mpi/asm-syntax.h
277        echo '#define ELF_SYNTAX'                 >>./mpi/asm-syntax.h
278        cat   $srcdir/mpi/powerpc32/syntax.h      >>./mpi/asm-syntax.h
279        mpi_sflags="-Wa,-mppc"
280        path="powerpc32"
281        mpi_cpu_arch="ppc"
282        ;;
283
284     ppc620-*-*      | \
285     powerpc64*-*-*)
286         mpi_sflags="-Wa,-mppc"
287         path="powerpc64"
288         mpi_cpu_arch="ppc"
289         ;;
290     powerpc*-*-linux*)
291         echo '/* configured for powerpc/ELF */' >>./mpi/asm-syntax.h
292         echo '#define ELF_SYNTAX'               >>./mpi/asm-syntax.h
293         cat   $srcdir/mpi/powerpc32/syntax.h    >>./mpi/asm-syntax.h
294         path="powerpc32"
295        mpi_cpu_arch="ppc"
296         ;;
297
298     rs6000-*-aix[456789]*    | \
299     rs6000-*-aix3.2.[456789])
300         mpi_sflags="-Wa,-mpwr"
301         path="power"
302         mpi_extra_modules="udiv-w-sdiv"
303         ;;
304     rs6000-*-* | \
305     power-*-*  | \
306     power2-*-*)
307         mpi_sflags="-Wa,-mppc"
308         path="power"
309         mpi_extra_modules="udiv-w-sdiv"
310         mpi_cpu_arch="ppc"
311         ;;
312     powerpc-ibm-aix4.2.* )
313         # I am not sure about this one but a machine identified by
314         # powerpc-ibm-aix4.2.1.0 cannot use the powerpc32 code.
315         mpi_sflags="-Wa,-mpwr"
316         path="power"
317         mpi_extra_modules="udiv-w-sdiv"
318         mpi_cpu_arch="ppc"
319         ;;
320     ppc601-*-*)
321         mpi_sflags="-Wa,-mppc"
322         path="power powerpc32"
323         mpi_cpu_arch="ppc"
324         ;;
325     ppc60[234]*-*-*)
326         mpi_sflags="-Wa,-mppc"
327         path="powerpc32"
328         mpi_cpu_arch="ppc"
329         ;;
330     powerpc*-*-*)
331         mpi_sflags="-Wa,-mppc"
332         path="powerpc32"
333         mpi_cpu_arch="ppc"
334         ;;
335     *)
336         echo '/* No assembler modules configured */' >>./mpi/asm-syntax.h
337         path=""
338         ;;
339 esac
340 else
341     echo '/* Assembler modules disabled on request */' >>./mpi/asm-syntax.h
342     path=""
343 fi
344
345
346 # Make sysdep.h
347 echo '/* created by config.links - do not edit */' >./mpi/sysdep.h
348 if test x$ac_cv_sys_symbol_underscore = xyes; then
349     cat <<EOF >>./mpi/sysdep.h
350 #if __STDC__
351 #define C_SYMBOL_NAME(name) _##name
352 #else
353 #define C_SYMBOL_NAME(name) _/**/name
354 #endif
355 EOF
356 else
357     cat <<EOF >>./mpi/sysdep.h
358 #define C_SYMBOL_NAME(name) name
359 EOF
360 fi
361
362
363 # Figure the required modules out
364 mpi_required_modules=$mpi_standard_modules
365 if test "$mpi_extra_modules" != ""; then
366   for fn in $mpi_extra_modules; do
367       for i in $mpi_optional_modules; do
368           if test "$fn" = "$i" ; then
369              mpi_required_modules="$mpi_required_modules $fn"
370           fi
371       done
372   done
373 fi
374
375 # Try to get file to link from the assembler subdirectory and
376 # if this fails get it from the generic subdirectory.
377 mpi_ln_list=
378 mpi_mod_list=
379 path=`echo "$mpi_extra_path $path generic" | tr ':' ' '`
380 echo '/* Created by config.links - do not edit */' >./mpi/mod-source-info.h
381 echo "/* Host: ${host} */" >>./mpi/mod-source-info.h
382 echo "static char mod_source_info[] =" >>./mpi/mod-source-info.h
383 for fn in $mpi_required_modules ; do
384     fnu=`echo $fn | sed 's/-/_/g'`
385     eval mpi_mod_c_${fnu}=no
386     eval mpi_mod_asm_${fnu}=no
387     for dir in $path ; do
388         rm -f $srcdir/mpi/$fn.[Sc]
389         if test -f $srcdir/mpi/$dir/$fn.S ; then
390             echo "  \":$dir/$fn.S\"" >>./mpi/mod-source-info.h
391             mpi_ln_list="$mpi_ln_list mpi/$fn-asm.S:mpi/$dir/$fn.S"
392             eval mpi_mod_asm_${fnu}=yes
393             mpi_mod_list="$mpi_mod_list $fn"
394             break;
395         elif test -f $srcdir/mpi/$dir/$fn.c ; then
396             echo "  \":$dir/$fn.c\"" >>./mpi/mod-source-info.h
397             mpi_ln_list="$mpi_ln_list mpi/$fn.c:mpi/$dir/$fn.c"
398             eval mpi_mod_c_${fnu}=yes
399             mpi_mod_list="$mpi_mod_list $fn"
400             break;
401         fi
402     done
403 done
404 echo "  ;" >>./mpi/mod-source-info.h
405
406 # Same thing for the file which defines the limb size
407 path=`echo "$path generic" | tr ':' ' '`
408 for dir in $path ; do
409     rm -f $srcdir/mpi/mpi-asm-defs.h
410     if test -f $srcdir/mpi/$dir/mpi-asm-defs.h ; then
411         mpi_ln_list="$mpi_ln_list mpi/mpi-asm-defs.h:mpi/$dir/mpi-asm-defs.h"
412         break;
413     fi
414 done