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