configure.ac revision 1.1.1.1.8.1
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