]>
Commit | Line | Data |
---|---|---|
fa958513 DJ |
1 | dnl Process this file with autoconf to produce a configure script. |
2 | ||
6f461e76 L |
3 | sinclude(../config/enable.m4) |
4 | sinclude(../config/tls.m4) | |
fa958513 DJ |
5 | sinclude(../config/acx.m4) |
6 | sinclude(../config/no-executables.m4) | |
ca24c5ad | 7 | sinclude(../config/lib-ld.m4) |
18c04407 | 8 | sinclude(../config/override.m4) |
3c39bca6 | 9 | sinclude(../config/dfp.m4) |
fa958513 | 10 | |
df58e648 | 11 | AC_PREREQ(2.64) |
fa958513 DJ |
12 | AC_INIT([GNU C Runtime Library], 1.0,,[libgcc]) |
13 | AC_CONFIG_SRCDIR([static-object.mk]) | |
14 | ||
15 | AC_ARG_WITH(target-subdir, | |
16 | [ --with-target-subdir=SUBDIR Configuring in a subdirectory for target]) | |
17 | AC_ARG_WITH(cross-host, | |
18 | [ --with-cross-host=HOST Configuring with a cross compiler]) | |
19 | AC_ARG_WITH(ld, | |
20 | [ --with-ld arrange to use the specified ld (full pathname)]) | |
21 | ||
22 | if test "${srcdir}" = "."; then | |
23 | if test -n "${with_build_subdir}"; then | |
24 | libgcc_topdir="${srcdir}/../.." | |
25 | with_target_subdir= | |
26 | elif test -z "${with_target_subdir}"; then | |
27 | libgcc_topdir="${srcdir}/.." | |
28 | else | |
29 | if test "${with_target_subdir}" != "."; then | |
30 | libgcc_topdir="${srcdir}/${with_multisrctop}../.." | |
31 | else | |
32 | libgcc_topdir="${srcdir}/${with_multisrctop}.." | |
33 | fi | |
34 | fi | |
35 | else | |
36 | libgcc_topdir="${srcdir}/.." | |
37 | fi | |
38 | AC_SUBST(libgcc_topdir) | |
39 | AC_CONFIG_AUX_DIR($libgcc_topdir) | |
40 | ||
41 | AC_ARG_ENABLE(shared, | |
42 | [ --disable-shared don't provide a shared libgcc], | |
43 | [ | |
44 | case $enable_shared in | |
45 | yes | no) ;; | |
46 | *) | |
47 | enable_shared=no | |
48 | IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," | |
49 | for pkg in $enableval; do | |
50 | if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then | |
51 | enable_shared=yes | |
52 | fi | |
53 | done | |
54 | IFS="$ac_save_ifs" | |
55 | ;; | |
56 | esac | |
57 | ], [enable_shared=yes]) | |
58 | AC_SUBST(enable_shared) | |
59 | ||
d6efbf5a DJ |
60 | AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) |
61 | AC_ARG_ENABLE(version-specific-runtime-libs, | |
62 | [ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ], | |
63 | [case "$enableval" in | |
64 | yes) version_specific_libs=yes ;; | |
65 | no) version_specific_libs=no ;; | |
66 | *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; | |
67 | esac], | |
68 | [version_specific_libs=no]) | |
69 | AC_MSG_RESULT($version_specific_libs) | |
70 | ||
fa958513 DJ |
71 | AC_ARG_WITH(slibdir, |
72 | [ --with-slibdir=DIR shared libraries in DIR [LIBDIR]], | |
73 | slibdir="$with_slibdir", | |
d6efbf5a | 74 | if test "${version_specific_libs}" = yes; then |
fa958513 | 75 | slibdir='$(libsubdir)' |
d6efbf5a DJ |
76 | elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then |
77 | slibdir='$(exec_prefix)/$(host_noncanonical)/lib' | |
fa958513 DJ |
78 | else |
79 | slibdir='$(libdir)' | |
80 | fi) | |
81 | AC_SUBST(slibdir) | |
82 | ||
6efbd53f RW |
83 | # Command-line options. |
84 | # Very limited version of AC_MAINTAINER_MODE. | |
85 | AC_ARG_ENABLE([maintainer-mode], | |
86 | [AC_HELP_STRING([--enable-maintainer-mode], | |
87 | [enable make rules and dependencies not useful (and | |
88 | sometimes confusing) to the casual installer])], | |
89 | [case ${enable_maintainer_mode} in | |
90 | yes) MAINT='' ;; | |
91 | no) MAINT='#' ;; | |
92 | *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;; | |
93 | esac | |
94 | maintainer_mode=${enableval}], | |
95 | [MAINT='#']) | |
96 | AC_SUBST([MAINT])dnl | |
97 | ||
fa958513 DJ |
98 | AC_PROG_INSTALL |
99 | ||
100 | AC_PROG_AWK | |
101 | # We need awk; bail out if it's missing. | |
102 | case ${AWK} in | |
103 | "") AC_MSG_ERROR([can't build without awk, bailing out]) ;; | |
104 | esac | |
105 | ||
106 | AC_CANONICAL_HOST | |
107 | ACX_NONCANONICAL_HOST | |
58c741a6 | 108 | ACX_NONCANONICAL_TARGET |
14e8fc8b | 109 | GCC_TOPLEV_SUBDIRS |
fa958513 | 110 | |
58c741a6 DK |
111 | # Calculate toolexeclibdir |
112 | # Also toolexecdir, though it's only used in toolexeclibdir | |
113 | case ${version_specific_libs} in | |
114 | yes) | |
115 | # Need the gcc compiler version to know where to install libraries | |
116 | # and header files if --enable-version-specific-runtime-libs option | |
117 | # is selected. | |
118 | toolexecdir='$(libdir)/gcc/$(target_noncanonical)' | |
119 | toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' | |
120 | ;; | |
121 | no) | |
122 | if test -n "$with_cross_host" && | |
123 | test x"$with_cross_host" != x"no"; then | |
124 | # Install a library built with a cross compiler in tooldir, not libdir. | |
125 | toolexecdir='$(exec_prefix)/$(target_noncanonical)' | |
126 | toolexeclibdir='$(toolexecdir)/lib' | |
127 | else | |
128 | toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' | |
129 | toolexeclibdir='$(libdir)' | |
130 | fi | |
131 | multi_os_directory=`$CC -print-multi-os-directory` | |
132 | case $multi_os_directory in | |
133 | .) ;; # Avoid trailing /. | |
134 | *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; | |
135 | esac | |
136 | ;; | |
137 | esac | |
138 | AC_SUBST(toolexecdir) | |
139 | AC_SUBST(toolexeclibdir) | |
140 | ||
fa958513 DJ |
141 | dnl These must be called before AM_PROG_LIBTOOL, because it may want |
142 | dnl to call AC_CHECK_PROG. | |
143 | AC_CHECK_TOOL(AR, ar) | |
144 | AC_CHECK_TOOL(LIPO, lipo, :) | |
145 | AC_CHECK_TOOL(NM, nm) | |
146 | AC_CHECK_TOOL(RANLIB, ranlib, :) | |
147 | AC_CHECK_TOOL(STRIP, strip, :) | |
148 | AC_PROG_LN_S | |
149 | ||
150 | GCC_NO_EXECUTABLES | |
151 | AC_PROG_CC | |
152 | AC_PROG_CPP_WERROR | |
153 | ||
154 | # Check for decimal float support. | |
155 | AC_CACHE_CHECK([whether decimal floating point is supported], [libgcc_cv_dfp], | |
156 | [AC_COMPILE_IFELSE([_Decimal32 x;], [libgcc_cv_dfp=yes], | |
157 | [libgcc_cv_dfp=no])]) | |
158 | decimal_float=$libgcc_cv_dfp | |
159 | AC_SUBST(decimal_float) | |
160 | ||
3c39bca6 | 161 | GCC_AC_ENABLE_DECIMAL_FLOAT([$host]) |
79b87c74 | 162 | |
8d2a9e0e CF |
163 | # Check for fixed-point support. |
164 | AC_CACHE_CHECK([whether fixed-point is supported], [libgcc_cv_fixed_point], | |
165 | [AC_COMPILE_IFELSE([_Sat _Fract x;], [libgcc_cv_fixed_point=yes], | |
166 | [libgcc_cv_fixed_point=no])]) | |
167 | fixed_point=$libgcc_cv_fixed_point | |
168 | AC_SUBST(fixed_point) | |
ff473280 | 169 | |
ca24c5ad RO |
170 | AC_LIB_PROG_LD_GNU |
171 | ||
ee33b5f0 RO |
172 | AC_MSG_CHECKING([for thread model used by GCC]) |
173 | target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` | |
174 | AC_MSG_RESULT([$target_thread_file]) | |
175 | ||
b6110d6d ILT |
176 | # Check for assembler CFI support. |
177 | AC_CACHE_CHECK([whether assembler supports CFI directives], [libgcc_cv_cfi], | |
6dace308 ILT |
178 | [AC_COMPILE_IFELSE( |
179 | [asm("\n\ | |
180 | .text\n\ | |
181 | .cfi_startproc\n\ | |
182 | .cfi_personality 0, symbol\n\ | |
183 | .cfi_endproc");], | |
184 | [libgcc_cv_cfi=yes], | |
185 | [libgcc_cv_cfi=no])]) | |
b6110d6d | 186 | |
ff473280 L |
187 | # Check 32bit or 64bit for x86. |
188 | case ${host} in | |
189 | i?86*-*-* | x86_64*-*-*) | |
190 | cat > conftest.c <<EOF | |
191 | #ifdef __x86_64__ | |
192 | host_address=64 | |
193 | #else | |
194 | host_address=32 | |
195 | #endif | |
196 | EOF | |
197 | eval `${CC-cc} -E conftest.c | grep host_address=` | |
198 | rm -f conftest.c | |
199 | ;; | |
200 | esac | |
8d2a9e0e | 201 | |
fa958513 DJ |
202 | # Collect host-machine-specific information. |
203 | . ${srcdir}/config.host | |
204 | ||
19523300 RO |
205 | # Check if Solaris/x86 linker supports ZERO terminator unwind entries. |
206 | # This is after config.host so we can augment tmake_file. | |
207 | # Link with -nostartfiles -nodefaultlibs since neither are present while | |
208 | # building libgcc. | |
209 | case ${host} in | |
b595b1a1 | 210 | i?86-*-solaris2*) |
19523300 RO |
211 | cat > conftest.s <<EOF |
212 | .section .eh_frame,"a",@unwind | |
213 | .zero 4 | |
214 | .section .jcr,"aw",@progbits | |
215 | .zero 8 | |
216 | EOF | |
217 | if AC_TRY_COMMAND(${CC-cc} -shared -nostartfiles -nodefaultlibs -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD); then | |
218 | # configure expects config files in libgcc/config, so need a relative | |
219 | # path here. | |
220 | tmake_file="${tmake_file} ../../gcc/config/i386/t-crtstuff" | |
221 | fi | |
222 | ;; | |
223 | esac | |
224 | ||
fa958513 DJ |
225 | # Check for visibility support. This is after config.host so that |
226 | # we can check for asm_hidden_op. | |
227 | AC_CACHE_CHECK([for __attribute__((visibility("hidden")))], | |
228 | libgcc_cv_hidden_visibility_attribute, [ | |
229 | echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c | |
230 | libgcc_cv_hidden_visibility_attribute=no | |
231 | if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then | |
232 | if grep "\\$asm_hidden_op.*foo" conftest.s >/dev/null; then | |
233 | libgcc_cv_hidden_visibility_attribute=yes | |
234 | fi | |
235 | fi | |
236 | rm -f conftest.* | |
237 | ]) | |
238 | ||
239 | if test $libgcc_cv_hidden_visibility_attribute = yes; then | |
240 | vis_hide='-fvisibility=hidden -DHIDE_EXPORTS' | |
241 | else | |
242 | vis_hide= | |
243 | fi | |
244 | AC_SUBST(vis_hide) | |
245 | ||
6f461e76 L |
246 | # See if we have thread-local storage. We can only test assembler |
247 | # sicne link-time and run-time tests require the newly built | |
248 | # gcc, which can't be used to build executable due to that libgcc | |
249 | # is yet to be built here. | |
250 | GCC_CHECK_CC_TLS | |
22867d02 | 251 | set_have_cc_tls= |
b4e9c2c6 | 252 | if test "$enable_tls $gcc_cv_have_cc_tls" = "yes yes"; then |
6f461e76 L |
253 | set_have_cc_tls="-DHAVE_CC_TLS" |
254 | fi | |
255 | AC_SUBST(set_have_cc_tls) | |
256 | ||
368fabd5 JH |
257 | # See if we have emulated thread-local storage. |
258 | GCC_CHECK_EMUTLS | |
259 | set_use_emutls= | |
260 | if test "$enable_tls $gcc_cv_use_emutls" = "yes yes"; then | |
261 | set_use_emutls="-DUSE_EMUTLS" | |
262 | fi | |
263 | AC_SUBST(set_use_emutls) | |
264 | ||
fa958513 DJ |
265 | # Conditionalize the makefile for this target machine. |
266 | tmake_file_= | |
267 | for f in ${tmake_file} | |
268 | do | |
269 | if test -f ${srcdir}/config/$f | |
270 | then | |
271 | tmake_file_="${tmake_file_} \$(srcdir)/config/$f" | |
272 | fi | |
273 | done | |
274 | tmake_file="${tmake_file_}" | |
275 | AC_SUBST(tmake_file) | |
276 | ||
277 | # Substitute configuration variables | |
ca24c5ad | 278 | AC_SUBST(cpu_type) |
fa958513 DJ |
279 | AC_SUBST(extra_parts) |
280 | AC_SUBST(asm_hidden_op) | |
10e48e39 | 281 | AC_CONFIG_LINKS([enable-execute-stack.c:$enable_execute_stack]) |
58cd1d70 | 282 | AC_CONFIG_LINKS([md-unwind-support.h:config/$md_unwind_header]) |
fa958513 DJ |
283 | |
284 | # We need multilib support. | |
285 | AC_CONFIG_FILES([Makefile]) | |
286 | AC_CONFIG_COMMANDS([default], | |
287 | [[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h | |
288 | if test -n "$CONFIG_FILES"; then | |
289 | # FIXME: We shouldn't need to set ac_file | |
290 | ac_file=Makefile | |
291 | . ${libgcc_topdir}/config-ml.in | |
292 | fi]], | |
293 | [[srcdir=${srcdir} | |
294 | host=${host} | |
fa958513 DJ |
295 | with_target_subdir=${with_target_subdir} |
296 | with_multisubdir=${with_multisubdir} | |
297 | ac_configure_args="--enable-multilib ${ac_configure_args}" | |
298 | CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} | |
299 | libgcc_topdir=${libgcc_topdir} | |
300 | CC="${CC}" | |
301 | ]]) | |
302 | AC_OUTPUT |