1dnl Process this file with autoconf to produce a configure script.
2
3sinclude(../config/enable.m4)
4sinclude(../config/tls.m4)
5sinclude(../config/acx.m4)
6sinclude(../config/no-executables.m4)
7sinclude(../config/lib-ld.m4)
8sinclude(../config/override.m4)
9sinclude(../config/picflag.m4)
10sinclude(../config/dfp.m4)
11sinclude(../config/unwind_ipinfo.m4)
12sinclude(../config/gthr.m4)
13
14AC_PREREQ(2.64)
15AC_INIT([GNU C Runtime Library], 1.0,,[libgcc])
16AC_CONFIG_SRCDIR([static-object.mk])
17
18# The libgcc should not depend on any header files
19AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
20  [m4_divert_text([DEFAULTS],
21    [ac_includes_default='/* none */'])])
22
23AC_ARG_WITH(target-subdir,
24[  --with-target-subdir=SUBDIR      Configuring in a subdirectory for target])
25AC_ARG_WITH(cross-host,
26[  --with-cross-host=HOST           Configuring with a cross compiler])
27AC_ARG_WITH(ld,
28[  --with-ld               arrange to use the specified ld (full pathname)])
29
30if test "${srcdir}" = "."; then
31  if test -n "${with_build_subdir}"; then
32    libgcc_topdir="${srcdir}/../.."
33    with_target_subdir=
34  elif test -z "${with_target_subdir}"; then
35    libgcc_topdir="${srcdir}/.."
36  else
37    if test "${with_target_subdir}" != "."; then
38      libgcc_topdir="${srcdir}/${with_multisrctop}../.."
39    else
40      libgcc_topdir="${srcdir}/${with_multisrctop}.."
41    fi
42  fi
43else
44  libgcc_topdir="${srcdir}/.."
45fi
46AC_SUBST(libgcc_topdir)
47AC_CONFIG_AUX_DIR($libgcc_topdir)
48AC_CONFIG_HEADER(auto-target.h:config.in)
49
50AC_ARG_ENABLE(shared,
51[  --disable-shared        don't provide a shared libgcc],
52[
53  case $enable_shared in
54  yes | no) ;;
55  *)
56    enable_shared=no
57    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
58    for pkg in $enableval; do
59      if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
60	enable_shared=yes
61      fi
62    done
63    IFS="$ac_save_ifs"
64    ;;
65  esac
66], [enable_shared=yes])
67AC_SUBST(enable_shared)
68
69GCC_PICFLAG
70AC_SUBST(PICFLAG)
71
72AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
73AC_ARG_ENABLE(version-specific-runtime-libs,
74[  --enable-version-specific-runtime-libs    Specify that runtime libraries should be installed in a compiler-specific directory ],
75[case "$enableval" in
76 yes) version_specific_libs=yes ;;
77 no)  version_specific_libs=no ;;
78 *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
79 esac],
80[version_specific_libs=no])
81AC_MSG_RESULT($version_specific_libs)
82
83AC_ARG_WITH(slibdir,
84[  --with-slibdir=DIR      shared libraries in DIR [LIBDIR]],
85slibdir="$with_slibdir",
86if test "${version_specific_libs}" = yes; then
87  slibdir='$(libsubdir)'
88elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
89  slibdir='$(exec_prefix)/$(host_noncanonical)/lib'
90else
91  slibdir='$(libdir)'
92fi)
93AC_SUBST(slibdir)
94
95# Command-line options.
96# Very limited version of AC_MAINTAINER_MODE.
97AC_ARG_ENABLE([maintainer-mode],
98  [AC_HELP_STRING([--enable-maintainer-mode],
99                 [enable make rules and dependencies not useful (and
100                  sometimes confusing) to the casual installer])],
101  [case ${enable_maintainer_mode} in
102     yes) MAINT='' ;;
103     no) MAINT='#' ;;
104     *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;;
105   esac
106   maintainer_mode=${enableval}],
107  [MAINT='#'])
108AC_SUBST([MAINT])dnl
109
110AC_PROG_INSTALL
111
112AC_PROG_AWK
113# We need awk; bail out if it's missing.
114case ${AWK} in
115  "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
116esac
117
118AC_CANONICAL_HOST
119ACX_NONCANONICAL_HOST
120ACX_NONCANONICAL_TARGET
121GCC_TOPLEV_SUBDIRS
122
123# Calculate toolexeclibdir
124# Also toolexecdir, though it's only used in toolexeclibdir
125case ${version_specific_libs} in
126  yes)
127    # Need the gcc compiler version to know where to install libraries
128    # and header files if --enable-version-specific-runtime-libs option
129    # is selected.
130    toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
131    toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
132    ;;
133  no)
134    if test -n "$with_cross_host" &&
135       test x"$with_cross_host" != x"no"; then
136      # Install a library built with a cross compiler in tooldir, not libdir.
137      toolexecdir='$(exec_prefix)/$(target_noncanonical)'
138      toolexeclibdir='$(toolexecdir)/lib'
139    else
140      toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
141      toolexeclibdir='$(libdir)'
142    fi
143    multi_os_directory=`$CC -print-multi-os-directory`
144    case $multi_os_directory in
145      .) ;; # Avoid trailing /.
146      *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
147    esac
148    ;;
149esac
150AC_SUBST(toolexecdir)
151AC_SUBST(toolexeclibdir)
152
153dnl These must be called before AM_PROG_LIBTOOL, because it may want
154dnl to call AC_CHECK_PROG.
155AC_CHECK_TOOL(AR, ar)
156AC_CHECK_TOOL(LIPO, lipo, :)
157AC_CHECK_TOOL(NM, nm)
158AC_CHECK_TOOL(RANLIB, ranlib, :)
159AC_CHECK_TOOL(STRIP, strip, :)
160AC_PROG_LN_S
161
162GCC_NO_EXECUTABLES
163AC_PROG_CC
164AC_PROG_CPP_WERROR
165
166AC_CHECK_SIZEOF([double])
167AC_CHECK_SIZEOF([long double])
168AS_VAR_ARITH([double_type_size], [$ac_cv_sizeof_double \* 8])
169AS_VAR_ARITH([long_double_type_size], [$ac_cv_sizeof_long_double \* 8])
170AC_SUBST(double_type_size)
171AC_SUBST(long_double_type_size)
172
173# Check for decimal float support.
174AC_CACHE_CHECK([whether decimal floating point is supported], [libgcc_cv_dfp],
175	       [AC_COMPILE_IFELSE([_Decimal32 x;], [libgcc_cv_dfp=yes],
176				  [libgcc_cv_dfp=no])])
177decimal_float=$libgcc_cv_dfp
178AC_SUBST(decimal_float)
179
180GCC_AC_ENABLE_DECIMAL_FLOAT([$host])
181
182# Check for fixed-point support.
183AC_CACHE_CHECK([whether fixed-point is supported], [libgcc_cv_fixed_point],
184	       [AC_COMPILE_IFELSE([_Sat _Fract x;], [libgcc_cv_fixed_point=yes],
185				  [libgcc_cv_fixed_point=no])])
186fixed_point=$libgcc_cv_fixed_point
187AC_SUBST(fixed_point)
188
189# For platforms with the unwind ABI which includes an unwind library,
190# libunwind, we can choose to use the system libunwind.
191# config.gcc also contains tests of with_system_libunwind.
192GCC_CHECK_UNWIND_GETIPINFO
193
194# The sjlj test is almost duplicated here and in libgo/configure.ac (for C),
195# libstdc++-v3/acinclude.m4 and libjava/configure.ac (for C++), and
196# libobjc/configure.ac (for Objective-C).
197# FIXME: This should be centralized in config/sjlj.m4.
198AC_ARG_ENABLE(sjlj-exceptions,
199  AC_HELP_STRING([--enable-sjlj-exceptions],
200		 [force use of builtin_setjmp for exceptions]),
201  [case "$enableval" in
202   yes|no|auto) ;;
203   *) AC_MSG_ERROR([unknown argument to --enable-sjlj-exceptions]) ;;
204   esac],
205  [enable_sjlj_exceptions=auto])
206
207AC_CACHE_CHECK([whether to use setjmp/longjmp exceptions],
208[libgcc_cv_lib_sjlj_exceptions],
209[AC_LANG_CONFTEST(
210  [AC_LANG_SOURCE([
211void bar ();
212void clean (int *);
213void foo ()
214{
215  int i __attribute__ ((cleanup (clean)));
216  bar();
217}
218])])
219CFLAGS_hold=$CFLAGS
220CFLAGS="--save-temps -fexceptions"
221libgcc_cv_lib_sjlj_exceptions=unknown
222AS_IF([ac_fn_c_try_compile],
223  [if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1; then
224    libgcc_cv_lib_sjlj_exceptions=yes
225  elif grep _Unwind_Resume conftest.s >/dev/null 2>&1; then
226    libgcc_cv_lib_sjlj_exceptions=no
227  fi])
228CFLAGS=$CFLAGS_hold
229rm -f conftest*
230])
231
232if test "$enable_sjlj_exceptions" = "auto"; then
233  enable_sjlj_exceptions=$libgcc_cv_lib_sjlj_exceptions
234fi
235
236case $enable_sjlj_exceptions in
237yes)
238  AC_DEFINE(LIBGCC_SJLJ_EXCEPTIONS, 1,
239	[Define if the C compiler is configured for setjmp/longjmp exceptions.])
240  ;;
241no)
242  ;;
243*)
244  AC_MSG_ERROR([unable to detect exception model])
245  ;;
246esac
247
248AC_LIB_PROG_LD_GNU
249
250AC_MSG_CHECKING([for thread model used by GCC])
251target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
252AC_MSG_RESULT([$target_thread_file])
253
254# Check for assembler CFI support.
255AC_CACHE_CHECK([whether assembler supports CFI directives], [libgcc_cv_cfi],
256	       [AC_COMPILE_IFELSE(
257[asm("\n\
258	.text\n\
259	.cfi_startproc\n\
260	.cfi_personality 0, symbol\n\
261	.cfi_endproc");],
262  [libgcc_cv_cfi=yes],
263  [libgcc_cv_cfi=no])])
264
265# Check 32bit or 64bit
266cat > conftest.c <<EOF
267#if defined(__x86_64__) || (!defined(__i386__) && defined(__LP64__))
268host_address=64
269#else
270host_address=32
271#endif
272EOF
273eval `${CC-cc} -E conftest.c | grep host_address=`
274rm -f conftest.c
275
276# Collect host-machine-specific information.
277. ${srcdir}/config.host
278
279# Check if Solaris/x86 linker supports ZERO terminator unwind entries.
280# This is after config.host so we can augment tmake_file.
281# Link with -nostartfiles -nodefaultlibs since neither are present while
282# building libgcc.
283case ${host} in
284i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
285  cat > conftest.s <<EOF
286	.section	.eh_frame,"a",@unwind
287	.zero	4
288	.section	.jcr,"aw",@progbits
289	.zero	8
290EOF
291  if AC_TRY_COMMAND(${CC-cc} -shared -nostartfiles -nodefaultlibs -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD); then
292      tmake_file="${tmake_file} i386/t-crtstuff"
293  fi
294  ;;
295esac
296
297# Check for visibility support.  This is after config.host so that
298# we can check for asm_hidden_op.
299AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
300    libgcc_cv_hidden_visibility_attribute, [
301	echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
302	libgcc_cv_hidden_visibility_attribute=no
303	if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
304	    if grep "\\$asm_hidden_op.*foo" conftest.s >/dev/null; then
305		libgcc_cv_hidden_visibility_attribute=yes
306	    fi
307	fi
308	rm -f conftest.*
309    ])
310
311if test $libgcc_cv_hidden_visibility_attribute = yes; then
312    vis_hide='-fvisibility=hidden -DHIDE_EXPORTS'
313else
314    vis_hide=
315fi
316AC_SUBST(vis_hide)
317
318# See if we have thread-local storage.  We can only test assembler
319# since link-time and run-time tests require the newly built
320# gcc, which can't be used to build executable due to that libgcc
321# is yet to be built here.
322GCC_CHECK_CC_TLS
323set_have_cc_tls=
324if test "$enable_tls $gcc_cv_have_cc_tls" = "yes yes"; then
325  set_have_cc_tls="-DHAVE_CC_TLS"
326fi
327AC_SUBST(set_have_cc_tls)
328
329# See if we have emulated thread-local storage.
330GCC_CHECK_EMUTLS
331set_use_emutls=
332if test "$enable_tls $gcc_cv_use_emutls" = "yes yes"; then
333  set_use_emutls="-DUSE_EMUTLS"
334fi
335AC_SUBST(set_use_emutls)
336
337AC_CACHE_CHECK(for init priority support, libgcc_cv_init_priority, [
338AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,
339  [[void ip (void) __attribute__ ((constructor (1)));]])],
340  [libgcc_cv_init_priority=yes],[libgcc_cv_init_priority=no])])
341if test $libgcc_cv_init_priority = yes; then
342  AC_DEFINE(HAVE_INIT_PRIORITY, 1,
343  [Define if the compiler supports init priority.])
344fi
345
346# Conditionalize the sfp-machine.h header for this target machine.
347if test -z "${sfp_machine_header}"; then
348	sfp_machine_header=$cpu_type/sfp-machine.h
349	if test -f ${srcdir}/config/${sfp_machine_header}; then
350		:
351	else
352		sfp_machine_header=no-sfp-machine.h
353	fi
354fi
355AC_SUBST(sfp_machine_header)
356
357# Conditionalize the makefile for this target machine.
358tmake_file_=
359for f in ${tmake_file}
360do
361	if test -f ${srcdir}/config/$f
362	then
363		tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
364	fi
365done
366tmake_file="${tmake_file_}"
367AC_SUBST(tmake_file)
368
369# Likewise export definitions for libgcc_tm.h
370tm_file_=
371for f in ${tm_file}
372do
373	tm_file_="${tm_file_} \$(srcdir)/config/$f"
374done
375tm_file="${tm_file_}"
376AC_SUBST(tm_file)
377AC_SUBST(tm_defines)
378
379# Map from thread model to thread header.
380GCC_AC_THREAD_HEADER([$target_thread_file])
381
382# Substitute configuration variables
383AC_SUBST(cpu_type)
384AC_SUBST(extra_parts)
385AC_SUBST(asm_hidden_op)
386AC_CONFIG_LINKS([enable-execute-stack.c:$enable_execute_stack])
387AC_CONFIG_LINKS([unwind.h:$unwind_header])
388AC_CONFIG_LINKS([md-unwind-support.h:config/$md_unwind_header])
389AC_CONFIG_LINKS([sfp-machine.h:config/$sfp_machine_header])
390AC_CONFIG_LINKS([gthr-default.h:$thread_header])
391
392# We need multilib support.
393AC_CONFIG_FILES([Makefile])
394AC_CONFIG_COMMANDS([default],
395  [[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
396if test -n "$CONFIG_FILES"; then
397  # FIXME: We shouldn't need to set ac_file
398  ac_file=Makefile
399  . ${libgcc_topdir}/config-ml.in
400fi]],
401[[srcdir=${srcdir}
402host=${host}
403with_target_subdir=${with_target_subdir}
404with_multisubdir=${with_multisubdir}
405ac_configure_args="--enable-multilib ${ac_configure_args}"
406CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
407libgcc_topdir=${libgcc_topdir}
408CC="${CC}"
409]])
410AC_OUTPUT
411