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