* config.links: Chnage the way the mpi modules are determined.
[libgcrypt.git] / mpi / config.links
1 # config.links - helper for ../configure
2 # Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
3 #
4 # This file is part of Libgcrypt.
5 #
6 # Libgcrypt is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU Lesser General Public License as
8 # published by the Free Software Foundation; either version 2.1 of
9 # the License, or (at your option) any later version.
10 #
11 # Libgcrypt is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU Lesser General Public License for more details.
15 #
16 # You should have received a copy of the GNU Lesser General Public
17 # License along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19 #
20 # sourced by ../configure to get the list of files to link
21 # this should set $mpi_ln_list.
22 # Note: this is called from the above directory.
23
24
25 mpi_sflags=
26 mpi_extra_modules=
27
28 test -d ./mpi || mkdir ./mpi
29
30 # We grep the list of modules from the Makefile so that
31 # we don't need to maintain them here.
32 mpi_standard_modules=`$AWK '/^#BEGIN_ASM_LIST/,/^#END_ASM_LIST/ {
33                  if( $3 != "O" ) print $2 }'  $srcdir/mpi/Makefile.am`
34 mpi_optional_modules=`$AWK '/^#BEGIN_ASM_LIST/,/^#END_ASM_LIST/ {
35                  if( $3 == "O" ) print $2 }' $srcdir/mpi/Makefile.am`
36
37
38 echo '/* created by config.links - do not edit */' >./mpi/asm-syntax.h
39
40 if test "$try_asm_modules" = "yes" ; then
41 case "${target}" in
42     i[3467]86*-*-freebsd*-elf  | \
43     i[3467]86*-*-freebsd[3-9]* | \
44     i[3467]86*-*-freebsdelf*   | \
45     i[3467]86*-*-netbsd* )
46        echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
47        cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
48        path="i386"
49        ;;
50     i586*-*-freebsd*-elf  | \
51     i586*-*-freebsd[3-9]* | \
52     i586*-*-freebsdelf*   | \
53     i586*-*-netbsd*          | \
54     pentium-*-netbsd*        | \
55     pentiumpro-*-netbsd*)
56        echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
57        cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
58        path="i586 i386"
59        ;;
60     i[34]86*-*-bsdi4*)
61        echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
62        cat  $srcdir/mpi/i386/syntax.h    >>./mpi/asm-syntax.h
63        path="i386"
64        ;;
65     i[3467]86*-*-linuxaout*  | \
66     i[3467]86*-*-linuxoldld* | \
67     i[3467]86*-*-*bsd*)
68         echo '#define BSD_SYNTAX' >>./mpi/asm-syntax.h
69         echo '#define X86_BROKEN_ALIGN' >>./mpi/asm-syntax.h
70         cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
71         path="i386"
72         ;;
73     i586*-*-linuxaout*  | \
74     i586*-*-linuxoldld* | \
75     i586*-*-*bsd*)
76         echo '#define BSD_SYNTAX' >>./mpi/asm-syntax.h
77         echo '#define X86_BROKEN_ALIGN' >>./mpi/asm-syntax.h
78         cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
79         path="i586 i386"
80         ;;
81     i[3467]86*-msdosdjgpp*)
82         echo '#define BSD_SYNTAX'        >>./mpi/asm-syntax.h
83         cat  $srcdir/mpi/i386/syntax.h   >>./mpi/asm-syntax.h
84         path="i386"
85         ;;
86     i586*-msdosdjgpp*)
87         echo '#define BSD_SYNTAX'        >>./mpi/asm-syntax.h
88         cat  $srcdir/mpi/i386/syntax.h   >>./mpi/asm-syntax.h
89         path="i586 i386"
90         ;;
91     i[3467]86*-*-*)
92         echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
93         cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
94         path="i386"
95         ;;
96     i586*-*-*  | \
97     pentium-*-*   | \
98     pentiumpro-*-*)
99         echo '#define ELF_SYNTAX' >>./mpi/asm-syntax.h
100         cat  $srcdir/mpi/i386/syntax.h      >>./mpi/asm-syntax.h
101         path="i586 i386"
102         ;;
103     alpha*-*-*)
104         echo '/* configured for alpha */' >>./mpi/asm-syntax.h
105         path="alpha"
106         mpi_extra_modules="udiv-qrnnd"
107         ;;
108     hppa7000*-*-*)
109         echo '/* configured for HPPA (pa7000) */' >>./mpi/asm-syntax.h
110         path="hppa1.1 hppa"
111         mpi_extra_modules="udiv-qrnnd"
112         ;;
113     hppa1.0*-*-*)
114         echo '/* configured for HPPA 1.0 */' >>./mpi/asm-syntax.h
115         path="hppa"
116         mpi_extra_modules="udiv-qrnnd"
117         ;;
118     hppa*-*-*)  # assume pa7100
119         echo '/* configured for HPPA (pa7100) */' >>./mpi/asm-syntax.h
120         path="pa7100 hppa1.1 hppa"
121         mpi_extra_modules="udiv-qrnnd"
122         ;;
123     sparc64-*-linux-gnu)
124         # An extra rule because we have an report for this one only.
125         # Should be compared against the next GMP version
126         echo '/* configured for sparc64-*-linux-gnu */' >>./mpi/asm-syntax.h
127         path="sparc32v8 sparc32"
128         mpi_extra_modules="udiv"
129         ;;
130     sparc9*-*-*     | \
131     sparc64*-*-*    | \
132     ultrasparc*-*-* )
133         echo '/* configured for sparc9 or higher */' >>./mpi/asm-syntax.h
134         path="sparc32v8 sparc32"
135         ;;
136     sparc8*-*-*     | \
137     microsparc*-*-*)
138         echo '/* configured for sparc8 */' >>./mpi/asm-syntax.h
139         path="sparc32v8 sparc32"
140         ;;
141     supersparc*-*-*)
142         echo '/* configured for supersparc */' >>./mpi/asm-syntax.h
143         path="supersparc sparc32v8 sparc32"
144         mpi_extra_modules="udiv"
145         ;;
146     sparc*-*-*)
147         echo '/* configured for sparc */' >>./mpi/asm-syntax.h
148         path="sparc32"
149         mpi_extra_modules="udiv"
150         ;;
151     mips[34]*-*-* | \
152     mips*-*-irix6*)
153        echo '/* configured for MIPS3 */' >>./mpi/asm-syntax.h
154        path="mips3"
155        ;;
156     mips*-*-*)
157        echo '/* configured for MIPS2 */' >>./mpi/asm-syntax.h
158        path="mips2"
159        ;;
160
161     # Motorola 68k configurations.  Let m68k mean 68020-68040.
162     # mc68000 or mc68060 configurations need to be specified explicitly
163     m680[234]0*-*-linuxaout* | \
164     m68k*-*-linuxaout*)
165         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
166         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
167         path="m68k/mc68020 m68k"
168         ;;
169     m68060*-*-linuxaout*)
170         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
171         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
172         path="m68k"
173         ;;
174     m680[234]0*-*-linux* | \
175     m68k*-*-linux*)
176         echo '#define ELF_SYNTAX'           >>./mpi/asm-syntax.h
177         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
178         ;;
179     m68060*-*-linux*)
180         echo '#define ELF_SYNTAX'           >>./mpi/asm-syntax.h
181         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
182         path="m68k"
183         ;;
184     m68k-atari-mint)
185         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
186         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
187         path="m68k/mc68020 m68k"
188         ;;
189     m68000*-*-* | \
190     m68060*-*-*)
191         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
192         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
193         path="m68k/mc68000"
194         ;;
195     m680[234]0*-*-* | \
196     m68k*-*-*)
197         echo '#define MIT_SYNTAX'           >>./mpi/asm-syntax.h
198         cat  $srcdir/mpi/m68k/syntax.h      >>./mpi/asm-syntax.h
199         path="m68k/mc68020 m68k"
200         ;;
201
202     powerpc*-*-linux*)
203         echo '/* configured for powerpc/ELF */' >>./mpi/asm-syntax.h
204         echo '#define ELF_SYNTAX'               >>./mpi/asm-syntax.h
205         cat   $srcdir/mpi/powerpc32/syntax.h    >>./mpi/asm-syntax.h
206         path="powerpc32"
207         ;;
208
209     powerpc*-*-netbsd*)
210        echo '/* configured NetBSD on powerpc */' >>./mpi/asm-syntax.h
211        echo '#define ELF_SYNTAX'                 >>./mpi/asm-syntax.h
212        cat   $srcdir/mpi/powerpc32/syntax.h      >>./mpi/asm-syntax.h
213        mpi_sflags="-Wa,-mppc"
214        path="powerpc32"
215        ;;
216
217     rs6000-*-aix[456789]*    | \
218     rs6000-*-aix3.2.[456789])
219         mpi_sflags="-Wa,-mpwr"
220         path="power"
221         mpi_extra_modules="udiv-w-sdiv"
222         ;;
223     rs6000-*-* | \
224     power-*-*  | \
225     power2-*-*)
226         mpi_sflags="-Wa,-mppc"
227         path="power"
228         mpi_extra_modules="udiv-w-sdiv"
229         ;;
230     powerpc-ibm-aix4.2.* )
231         # I am not sure about this one but a machine identified by
232         # powerpc-ibm-aix4.2.1.0 cannot use the powerpc32 code.
233         mpi_sflags="-Wa,-mpwr"
234         path="power"
235         mpi_extra_modules="udiv-w-sdiv"
236         ;;
237     ppc601-*-*)
238         mpi_sflags="-Wa,-mppc"
239         path="power powerpc32"
240         ;;
241     ppc60[234]*-*-* | \
242     powerpc*-*-*)
243         mpi_sflags="-Wa,-mppc"
244         path="powerpc32"
245         ;;
246     ppc620-*-*      | \
247     powerpc64*-*-*)
248         mpi_sflags="-Wa,-mppc"
249         path="powerpc64"
250         ;;
251
252     *)
253         echo '/* No assembler modules configured */' >>./mpi/asm-syntax.h
254         path=""
255         ;;
256 esac
257 else
258     echo '/* Assembler modules disabled on request */' >>./mpi/asm-syntax.h
259     path=""
260 fi
261
262
263 # Make sysdep.h
264 echo '/* created by config.links - do not edit */' >./mpi/sysdep.h
265 if test x$ac_cv_sys_symbol_underscore = xyes; then
266     cat <<EOF >>./mpi/sysdep.h
267 #if __STDC__
268 #define C_SYMBOL_NAME(name) _##name
269 #else
270 #define C_SYMBOL_NAME(name) _/**/name
271 #endif
272 EOF
273 else
274     cat <<EOF >>./mpi/sysdep.h
275 #define C_SYMBOL_NAME(name) name
276 EOF
277 fi
278
279
280 # Figure the required modules out
281 mpi_required_modules=$mpi_standard_modules
282 if test $mpi_extra_modules != ""; then
283   for fn in $mpi_extra_modules; do
284       for i in $mpi_optional_modules; do 
285           if test "$fn" = "$i" ; then
286              mpi_required_modules="$mpi_required_modules $fn"
287           fi
288       done
289   done
290 fi
291
292 # try to get file to link from the assembler subdirectory and
293 # if this fails get it from the generic subdirectory.
294 mpi_ln_list=
295 mpi_mod_list=
296 path="$path generic"
297 for fn in $mpi_required_modules ; do
298     fnu=`echo $fn | sed 's/-/_/g'`
299     eval mpi_mod_c_${fnu}=no
300     eval mpi_mod_asm_${fnu}=no
301     for dir in $path ; do
302         rm -f $srcdir/mpi/$fn.[Sc]
303         if test -f $srcdir/mpi/$dir/$fn.S ; then
304             mpi_ln_list="$mpi_ln_list mpi/$fn.S:mpi/$dir/$fn.S"
305             eval mpi_mod_asm_${fnu}=yes
306             mpi_mod_list="$mpi_mod_list $fn"
307             break;
308         elif test -f $srcdir/mpi/$dir/$fn.c ; then
309             mpi_ln_list="$mpi_ln_list mpi/$fn.c:mpi/$dir/$fn.c"
310             eval mpi_mod_c_${fnu}=yes
311             mpi_mod_list="$mpi_mod_list $fn"
312             break;
313         fi
314     done
315 done
316
317 # Same thing for the file which defines the limb size
318 path="$path generic"
319 for dir in $path ; do
320     rm -f $srcdir/mpi/mpi-asm-defs.h
321     if test -f $srcdir/mpi/$dir/mpi-asm-defs.h ; then
322         mpi_ln_list="$mpi_ln_list mpi/mpi-asm-defs.h:mpi/$dir/mpi-asm-defs.h"
323         break;
324     fi
325 done
326