[BACK]Return to configure.ac CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / external / gpl3 / binutils.old / dist / gold

Annotation of src/external/gpl3/binutils.old/dist/gold/configure.ac, Revision 1.6

1.1       christos    1: dnl Process this file with autoconf to produce a configure script.
1.3       christos    2: dnl
1.6     ! christos    3: dnl   Copyright (C) 2006-2018 Free Software Foundation, Inc.
1.3       christos    4: dnl
                      5: dnl This file is free software; you can redistribute it and/or modify
                      6: dnl it under the terms of the GNU General Public License as published by
                      7: dnl the Free Software Foundation; either version 3 of the License, or
                      8: dnl (at your option) any later version.
                      9: dnl
                     10: dnl This program is distributed in the hope that it will be useful,
                     11: dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
                     12: dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     13: dnl GNU General Public License for more details.
                     14: dnl
                     15: dnl You should have received a copy of the GNU General Public License
                     16: dnl along with this program; see the file COPYING3.  If not see
                     17: dnl <http://www.gnu.org/licenses/>.
                     18: dnl
1.1       christos   19:
                     20: AC_INIT(gold, 0.1)
                     21: AC_CONFIG_SRCDIR(gold.cc)
                     22:
                     23: AC_CANONICAL_TARGET
                     24:
                     25: AM_INIT_AUTOMAKE([no-dist parallel-tests])
                     26:
                     27: AM_CONFIG_HEADER(config.h:config.in)
                     28:
1.6     ! christos   29: AC_USE_SYSTEM_EXTENSIONS
        !            30:
1.1       christos   31: # PR 14072
                     32: AH_VERBATIM([00_CONFIG_H_CHECK],
                     33: [/* Check that config.h is #included before system headers
                     34:    (this works only for glibc, but that should be enough).  */
                     35: #if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
                     36: #  error config.h must be #included before system headers
                     37: #endif
                     38: #define __CONFIG_H__ 1])
                     39:
                     40: AC_ARG_WITH(sysroot,
                     41: [  --with-sysroot[=DIR]    search for usr/lib et al within DIR],
                     42: [sysroot=$withval], [sysroot=no])
                     43:
                     44: if test "$sysroot" = "yes"; then
                     45:   sysroot='${exec_prefix}/${target_alias}/sys-root'
                     46: elif test "$sysroot" = "no"; then
                     47:   sysroot=
                     48: fi
                     49:
                     50: sysroot_relocatable=0
                     51: if test -n "$sysroot"; then
1.6     ! christos   52:   case "$sysroot" in
1.1       christos   53:     "${prefix}" | "${prefix}/"* | \
                     54:     "${exec_prefix}" | "${exec_prefix}/"* | \
                     55:     '${prefix}' | '${prefix}/'*| \
                     56:     '${exec_prefix}' | '${exec_prefix}/'*)
                     57:       sysroot_relocatable=1
                     58:       ;;
                     59:   esac
                     60: fi
                     61:
                     62: AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT, "$sysroot",
                     63:   [System root for target files])
                     64: AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable,
                     65:   [Whether the system root can be relocated])
                     66:
                     67: dnl "install_as_default" is true if the linker to be installed as the
                     68: dnl default linker, ld.
                     69: dnl "installed_linker" is the installed gold linker name.
                     70:
1.3       christos   71: installed_linker=ld.gold
1.1       christos   72: AC_ARG_ENABLE(gold,
                     73: [[  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]]],
                     74: [case "${enableval}" in
1.3       christos   75:  default)
                     76:    install_as_default=yes
                     77:    ;;
                     78:  yes)
                     79:    if test x${enable_ld} = xno; then
1.1       christos   80:      install_as_default=yes
                     81:    fi
                     82:    ;;
                     83:  esac],
1.3       christos   84: [install_as_default=no])
1.1       christos   85: AC_SUBST(install_as_default)
                     86: AC_SUBST(installed_linker)
                     87:
1.6     ! christos   88: AC_PLUGINS
1.1       christos   89: if test "$plugins" = "yes"; then
                     90:   AC_DEFINE(ENABLE_PLUGINS, 1,
                     91:            [Define to enable linker plugins])
                     92: fi
                     93: AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
                     94:
1.5       christos   95: # Decide if -z relro should be enabled in ELF linker by default.
                     96: ac_default_ld_z_relro=unset
                     97: # Provide a configure time option to override our default.
                     98: AC_ARG_ENABLE(relro,
                     99:              AS_HELP_STRING([--enable-relro],
                    100:              [enable -z relro in ELF linker by default]),
                    101: [case "${enableval}" in
                    102:   yes)  ac_default_ld_z_relro=1 ;;
                    103:   no)  ac_default_ld_z_relro=0 ;;
                    104: esac])dnl
                    105: if test "${ac_default_ld_z_relro}" = unset; then
                    106:   ac_default_ld_z_relro=1
                    107: fi
                    108: AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO,
                    109:   $ac_default_ld_z_relro,
                    110:   [Define to 1 if you want to enable -z relro in ELF linker by default.])
                    111:
1.1       christos  112: AC_ARG_ENABLE([targets],
                    113: [  --enable-targets        alternative target configurations],
                    114: [case "${enableval}" in
                    115:   yes | "")
                    116:     AC_MSG_ERROR([--enable-targets option must specify target names or 'all'])
                    117:     ;;
                    118:   no)
                    119:     enable_targets=
                    120:     ;;
                    121:   *)
                    122:     enable_targets=$enableval
                    123:     ;;
                    124: esac],
                    125: [# For now, enable all targets by default
                    126:  enable_targets=all
                    127: ])
                    128:
                    129: # Canonicalize the enabled targets.
                    130: if test -n "$enable_targets"; then
                    131:   for targ in `echo $enable_targets | sed -e 's/,/ /g'`; do
                    132:     result=`$ac_config_sub $targ 2>/dev/null`
                    133:     if test -n "$result"; then
                    134:       canon_targets="$canon_targets $result"
                    135:     else
                    136:       # Permit unrecognized target names, like "all".
                    137:       canon_targets="$canon_targets $targ"
                    138:     fi
                    139:   done
                    140: fi
                    141:
1.6     ! christos  142: # Decide which "--hash-style" to use by default
        !           143: # Provide a configure time option to override our default.
        !           144: AC_ARG_ENABLE([default-hash-style],
        !           145: AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}],
        !           146:               [use this default hash style]),
        !           147: [case "${enable_default_hash_style}" in
        !           148:   sysv | gnu | both) ;;
        !           149:   *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;;
        !           150: esac],
        !           151: [case "${target}" in
        !           152:   # Enable gnu hash only on GNU targets, but not mips
        !           153:   mips*-*-*) enable_default_hash_style=sysv ;;
        !           154:   *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
        !           155:   *) enable_default_hash_style=sysv ;;
        !           156: esac])
        !           157:
        !           158: AC_DEFINE_UNQUOTED([DEFAULT_HASH_STYLE],
        !           159:   ["${enable_default_hash_style}"],
        !           160:   [Set the default --hash-style value])
        !           161:
1.1       christos  162: # See which specific instantiations we need.
                    163: targetobjs=
                    164: all_targets=
                    165: default_machine=
                    166: default_size=
                    167: default_big_endian=
                    168: default_osabi=ELFOSABI_NONE
                    169: targ_32_little=
                    170: targ_32_big=
                    171: targ_64_little=
                    172: targ_64_big=
                    173: for targ in $target $canon_targets; do
                    174:   if test "$targ" = "all"; then
                    175:     targ_32_little=yes
                    176:     targ_32_big=yes
                    177:     targ_64_little=yes
                    178:     targ_64_big=yes
                    179:     all_targets=yes
                    180:   else
                    181:     . ${srcdir}/configure.tgt
                    182:
                    183:     if test "$targ_obj" = "UNKNOWN"; then
                    184:       AC_MSG_ERROR("unsupported target $targ")
                    185:     else
                    186:       targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)"
                    187:       if test "$targ_extra_obj" != ""; then
                    188:         targetobjs="$targetobjs ${targ_extra_obj}.\$(OBJEXT)"
                    189:       fi
                    190:       if test "$targ_size" = "32" -o "$targ_extra_size" = "32"; then
                    191:          if test "$targ_big_endian" = "true" \
                    192:              -o "$targ_extra_big_endian" = "true"; then
                    193:              targ_32_big=yes
                    194:          fi
                    195:          if test "$targ_big_endian" = "false" \
                    196:              -o "$targ_extra_big_endian" = "false"; then
                    197:              targ_32_little=yes
                    198:          fi
                    199:       fi
                    200:       if test "$targ_size" = "64" -o "$targ_extra_size" = "64"; then
                    201:          if test "$targ_big_endian" = "true" \
                    202:              -o "$targ_extra_big_endian" = "true"; then
                    203:              targ_64_big=yes
                    204:          fi
                    205:          if test "$targ_big_endian" = "false" \
                    206:              -o "$targ_extra_big_endian" = "false"; then
                    207:              targ_64_little=yes
                    208:          fi
                    209:       fi
                    210:
                    211:       if test "$target" = "$targ"; then
                    212:         default_machine=$targ_machine
                    213:        default_size=$targ_size
                    214:        default_big_endian=$targ_big_endian
                    215:        default_osabi=$targ_osabi
                    216:
1.3       christos  217:        AM_CONDITIONAL(DEFAULT_TARGET_AARCH64, test "$targ_obj" = "aarch64")
1.1       christos  218:        AM_CONDITIONAL(DEFAULT_TARGET_ARM, test "$targ_obj" = "arm")
                    219:        AM_CONDITIONAL(DEFAULT_TARGET_I386, test "$targ_obj" = "i386")
                    220:        AM_CONDITIONAL(DEFAULT_TARGET_POWERPC, test "$targ_obj" = "powerpc")
                    221:        AM_CONDITIONAL(DEFAULT_TARGET_SPARC, test "$targ_obj" = "sparc")
1.3       christos  222:        AM_CONDITIONAL(DEFAULT_TARGET_S390, test "$targ_obj" = "s390")
                    223:        target_x86_64=no
                    224:        target_x32=no
                    225:        if test "$targ_obj" = "x86_64"; then
                    226:          case "$target" in
                    227:          x86_64*-linux-gnux32)
                    228:            target_x32=yes
                    229:            default_size=32
                    230:            ;;
                    231:          *)
                    232:            target_x86_64=yes
                    233:            ;;
                    234:          esac
                    235:        fi
                    236:        AM_CONDITIONAL(DEFAULT_TARGET_X86_64, test "$target_x86_64" = "yes")
                    237:        AM_CONDITIONAL(DEFAULT_TARGET_X32, test "$target_x32" = "yes")
1.5       christos  238:        AM_CONDITIONAL(DEFAULT_TARGET_X86_64_OR_X32,
                    239:                       test "$target_x86_64" = "yes" -o "$target_x32" = "yes")
1.3       christos  240:        AM_CONDITIONAL(DEFAULT_TARGET_TILEGX, test "$targ_obj" = "tilegx")
                    241:         AM_CONDITIONAL(DEFAULT_TARGET_MIPS, test "$targ_obj" = "mips")
                    242:        DEFAULT_TARGET=${targ_obj}
                    243:        AC_SUBST(DEFAULT_TARGET)
1.1       christos  244:       fi
                    245:     fi
                    246:   fi
                    247: done
                    248:
                    249: # Remove any duplicates.
                    250: to=""
                    251: for t in $targetobjs; do
                    252:   case " $to " in
                    253:   *" $t "*) ;;
                    254:   *) to="$to $t" ;;
                    255:   esac
                    256: done
                    257: targetobjs=$to
                    258:
                    259: if test -n "$targ_32_little"; then
                    260:   AC_DEFINE(HAVE_TARGET_32_LITTLE, 1,
                    261:              [Define to support 32-bit little-endian targets])
                    262: fi
                    263: if test -n "$targ_32_big"; then
                    264:   AC_DEFINE(HAVE_TARGET_32_BIG, 1,
                    265:              [Define to support 32-bit big-endian targets])
                    266: fi
                    267: if test -n "$targ_64_little"; then
                    268:   AC_DEFINE(HAVE_TARGET_64_LITTLE, 1,
                    269:              [Define to support 64-bit little-endian targets])
                    270: fi
                    271: if test -n "$targ_64_big"; then
                    272:   AC_DEFINE(HAVE_TARGET_64_BIG, 1,
                    273:              [Define to support 64-bit big-endian targets])
                    274: fi
                    275:
                    276: if test -n "$all_targets"; then
                    277:   TARGETOBJS='$(ALL_TARGETOBJS)'
                    278: else
                    279:   TARGETOBJS="$targetobjs"
                    280: fi
                    281: AC_SUBST(TARGETOBJS)
                    282:
                    283: AC_DEFINE_UNQUOTED(GOLD_DEFAULT_MACHINE, $default_machine,
                    284:                   [Default machine code])
                    285: AC_DEFINE_UNQUOTED(GOLD_DEFAULT_SIZE, $default_size,
                    286:                   [Default size (32 or 64)])
                    287: AC_DEFINE_UNQUOTED(GOLD_DEFAULT_BIG_ENDIAN, $default_big_endian,
                    288:                   [Default big endian (true or false)])
                    289: AC_DEFINE_UNQUOTED(GOLD_DEFAULT_OSABI, $default_osabi,
                    290:                   [Default OSABI code])
                    291:
                    292: AC_ARG_WITH(lib-path,
                    293: [  --with-lib-path=dir1:dir2...  set default LIB_PATH],
                    294: [case "$withval" in
                    295:  yes) LIB_PATH='"/lib:/usr/lib"' ;;
                    296:  no) LIB_PATH='""' ;;
                    297:  *) LIB_PATH='"'"$withval"'"' ;;
                    298:  esac],
                    299: [LIB_PATH='"::DEFAULT::"'])
                    300: AC_DEFINE_UNQUOTED(LIB_PATH, $LIB_PATH,
                    301:                   [Default library search path])
                    302: if test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias"; then
                    303:   AC_DEFINE(NATIVE_LINKER, 1, [Whether configured as a native linker])
                    304: fi
                    305:
                    306: AC_CHECK_TOOL(NM, nm)
                    307:
                    308: AC_PROG_CC
                    309: AC_PROG_CXX
                    310: AC_PROG_YACC
                    311: AC_PROG_RANLIB
                    312: AC_PROG_INSTALL
                    313: AC_PROG_LN_S
                    314:
                    315: AC_GNU_SOURCE
                    316:
                    317: ZW_GNU_GETTEXT_SISTER_DIR
                    318: AM_PO_SUBDIRS
                    319:
                    320: AC_C_BIGENDIAN
                    321:
                    322: AC_EXEEXT
                    323:
                    324: AM_CONDITIONAL(NATIVE_LINKER,
                    325:   test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias")
                    326: AM_CONDITIONAL(GCC, test "$GCC" = yes)
                    327:
                    328: AM_CONDITIONAL(NATIVE_OR_CROSS_LINKER,
                    329:   test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias" -o "x$host_alias" = "x$build_alias")
                    330:
                    331: dnl Test for whether static linking is supported.  Some systems do not
                    332: dnl install static libraries.  This only affects the set of tests that
                    333: dnl we run.
                    334: AC_CACHE_CHECK([whether static linking works], [gold_cv_lib_static],
                    335: [LDFLAGS_hold=$LDFLAGS
                    336: LDFLAGS="$LDFLAGS -static"
                    337: AC_LINK_IFELSE([
                    338: AC_LANG_PROGRAM([[void f() { }]])],
                    339: [gold_cv_lib_static=yes], [gold_cv_lib_static=no])
                    340: LDFLAGS=$LDFLAGS_hold])
                    341: AM_CONDITIONAL(HAVE_STATIC, test "$gold_cv_lib_static" = "yes")
                    342:
                    343: dnl Some architectures do not support taking pointers of functions
                    344: dnl defined in shared libraries except in -fPIC mode.  We need to
                    345: dnl tell the unittest framework if we're compiling for one of those
                    346: dnl targets, so it doesn't try to run the tests that do that.
                    347: AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [
                    348:   case $target_cpu in
1.3       christos  349:     powerpc*) false;;
1.1       christos  350:     x86_64) false;;
                    351:     sparc64) false;;
1.3       christos  352:     s390x) false;;
1.1       christos  353:     *) true;;
                    354:   esac])
                    355:
                    356: dnl Test for gcc 4.1 or later.  Full support for -mcmodel=medium is
                    357: dnl only available in gcc 4.1.
                    358: AC_CACHE_CHECK([for gcc >= 4.1], [gold_cv_prog_gcc41],
1.6     ! christos  359: [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1.1       christos  360: #if !defined __GNUC__
                    361: error
                    362: #elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
                    363: error
                    364: #endif
1.6     ! christos  365: ])], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])])
1.1       christos  366:
                    367: save_CFLAGS="$CFLAGS"
                    368: CFLAGS="$CFLAGS -mcmodel=medium"
1.6     ! christos  369: AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_mcmodel_medium=yes], [have_mcmodel_medium=no])
1.1       christos  370: CFLAGS="$save_CFLAGS"
                    371: dnl Whether we can test -mcmodel=medium.
                    372: AM_CONDITIONAL(MCMODEL_MEDIUM,
                    373: [test "$target_cpu" = "x86_64" -a "$have_mcmodel_medium" = "yes" -a "$gold_cv_prog_gcc41" = "yes"])
                    374:
1.3       christos  375: AC_CACHE_CHECK([whether $CC supports -fmerge-constants],
                    376:               [gold_cv_merge_constants], [
                    377: save_CFLAGS="$CFLAGS"
                    378: CFLAGS="$CFLAGS -fmerge-constants"
1.6     ! christos  379: AC_COMPILE_IFELSE([AC_LANG_SOURCE([const char *s = "foo";])],
1.3       christos  380:                  [gold_cv_merge_constants=yes],
                    381:                  [gold_cv_merge_constants=no])
                    382: CFLAGS="$save_CFLAGS"])
                    383: AC_SUBST([MERGE_CONSTANTS_FLAG])
                    384: AS_IF([test "$gold_cv_merge_constants" = yes],
                    385:       [MERGE_CONSTANTS_FLAG=-fmerge-constants],
                    386:       [MERGE_CONSTANTS_FLAG=])
                    387:
1.1       christos  388: dnl Test for __thread support.
                    389: AC_CACHE_CHECK([for thread support], [gold_cv_c_thread],
1.6     ! christos  390: [AC_COMPILE_IFELSE([AC_LANG_SOURCE([__thread int i = 1;])],
1.1       christos  391: [gold_cv_c_thread=yes], [gold_cv_c_thread=no])])
                    392:
                    393: AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes")
                    394:
                    395: dnl On GNU/Linux TLS in static programs only works when using glibc
                    396: dnl 2.4 or later.
                    397: AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24],
1.6     ! christos  398: [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1.1       christos  399: #include <features.h>
                    400: #if !defined __GLIBC__
                    401: error
                    402: #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
                    403: error
                    404: #endif
1.6     ! christos  405: ])], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])])
1.1       christos  406:
                    407: AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes")
                    408:
                    409: dnl Test for #pragma omp threadprivate
                    410: AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate],
                    411: [save_CFLAGS="$CFLAGS"
                    412: CFLAGS="$CFLAGS -fopenmp"
1.6     ! christos  413: AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1.1       christos  414: #include <omp.h>
                    415: int i;
                    416: #pragma omp threadprivate (i)
1.6     ! christos  417: ])], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no])
1.1       christos  418: CFLAGS="$save_CFLAGS"])
                    419: if test "$gold_cv_c_threadprivate" = "yes"; then
                    420:   AC_DEFINE(HAVE_OMP_SUPPORT, 1,
                    421:            [Define if compiler supports #pragma omp threadprivate])
                    422: fi
                    423: AM_CONDITIONAL(OMP_SUPPORT, test "$gold_cv_c_threadprivate" = "yes")
                    424:
                    425: dnl Test for the -ftls-dialect=gnu2 option.
1.3       christos  426: dnl Use -Werror in case of compilers that make unknown -m options warnings.
                    427: dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
                    428: dnl gets set later by default Autoconf magic to include -Werror.  (We are
                    429: dnl assuming here that there is no compiler that groks -mtls-dialect=gnu2
                    430: dnl but does not grok -Werror.)
1.1       christos  431: save_CFLAGS="$CFLAGS"
1.3       christos  432: CFLAGS="$CFLAGS -Werror -fpic -mtls-dialect=gnu2"
1.6     ! christos  433: AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1.1       christos  434: __thread int i;
                    435: void foo (void)
                    436: {
                    437:   i = 10;
                    438: }
1.6     ! christos  439: ])], [have_tls_gnu2=yes], [have_tls_gnu2=no])
1.1       christos  440: CFLAGS="$save_CFLAGS"
                    441: AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes")
                    442:
                    443: dnl On GNU/Linux TLS descriptors are supported by the dynamic loader
                    444: dnl only with glibc 2.9 or later.
                    445: AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29],
1.6     ! christos  446: [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1.1       christos  447: #include <features.h>
                    448: #if !defined __GLIBC__
                    449: error
                    450: #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
                    451: error
                    452: #endif
1.6     ! christos  453: ])], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])])
1.1       christos  454:
                    455: AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes")
                    456:
                    457: dnl Test for the -frandom-seed option.
                    458: AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed],
                    459: [save_CFLAGS="$CFLAGS"
                    460: CFLAGS="$CFLAGS -frandom-seed=foo"
1.6     ! christos  461: AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [gold_cv_c_random_seed=yes],
1.1       christos  462: [gold_cv_c_random_seed=no])
                    463: CFLAGS="$save_CFLAGS"])
                    464: if test "$gold_cv_c_random_seed" = "yes"; then
                    465:   # In Makefile, '$@' will be expanded to be the name of the file
                    466:   # being built, providing a unique seed for each file.
                    467:   RANDOM_SEED_CFLAGS=-frandom-seed=\$@
                    468: fi
                    469: AC_SUBST(RANDOM_SEED_CFLAGS)
                    470:
                    471: dnl On GNU/Linux ifunc is supported by the dynamic linker in glibc
                    472: dnl 2.11 or later, and by binutils 2.20.1 or later.
                    473: AC_CACHE_CHECK([for glibc ifunc support], [gold_cv_lib_glibc_ifunc],
                    474: [save_LDFLAGS="$LDFLAGS"
                    475: LDFLAGS="$LDFLAGS -static"
                    476: AC_LINK_IFELSE([AC_LANG_PROGRAM([[
                    477: #include <features.h>
                    478: #if !defined __GLIBC__
                    479: error
                    480: #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 11)
                    481: error
                    482: #endif
                    483: void func (void) { }
                    484: void invoke (void);
                    485: __asm__(".type invoke, %gnu_indirect_function");
                    486: typedef void (*funcptr) (void);
                    487: funcptr dispatch (void) __asm__ ("invoke");
                    488: funcptr dispatch (void) { return &func; }]],
                    489: [[invoke();]])
                    490: ], [
                    491: if ${NM} conftest$EXEEXT | grep "__rela\?_iplt_start" >/dev/null 2>&1; then
                    492:   gold_cv_lib_glibc_ifunc=both
                    493: else
                    494:   gold_cv_lib_glibc_ifunc=dyn
                    495: fi], [gold_cv_lib_glibc_ifunc=no])
                    496: LDFLAGS="$save_LDFLAGS"])
                    497:
                    498: AM_CONDITIONAL(IFUNC, test "$gold_cv_lib_glibc_ifunc" != "no")
                    499: AM_CONDITIONAL(IFUNC_STATIC, test "$gold_cv_lib_glibc_ifunc" = "both")
                    500:
                    501: AM_BINUTILS_WARNINGS
                    502:
                    503: WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
                    504: AC_SUBST(WARN_CXXFLAGS)
                    505:
                    506: AC_ARG_WITH(gold-ldflags,
                    507: [  --with-gold-ldflags=FLAGS  additional link flags for gold],
                    508: [if test "$withval" = "no" -o "$withval" = "yes"; then
                    509:    GOLD_LDFLAGS=
                    510:  else
                    511:    GOLD_LDFLAGS=$withval
                    512:  fi],
                    513: [GOLD_LDFLAGS=])
                    514: AC_SUBST(GOLD_LDFLAGS)
                    515:
                    516: AC_ARG_WITH(gold-ldadd,
                    517: [  --with-gold-ldadd=LIBS     additional libraries for gold],
                    518: [if test "$withval" = "no" -o "$withval" = "yes"; then
                    519:    GOLD_LDADD=
                    520:  else
                    521:    GOLD_LDADD=$withval
                    522:  fi],
                    523: [GOLD_LDADD=])
                    524: AC_SUBST(GOLD_LDADD)
                    525:
                    526: dnl Force support for large files by default.  This may need to be
                    527: dnl host dependent.  If build == host, we can check getconf LFS_CFLAGS.
                    528: LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
                    529: AC_SUBST(LFS_CFLAGS)
                    530:
                    531: AC_CHECK_HEADERS(sys/mman.h)
                    532: AC_CHECK_FUNCS(chsize mmap)
                    533: AC_REPLACE_FUNCS(pread ftruncate ffsll)
                    534:
                    535: AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove],
                    536: [AC_LINK_IFELSE([
                    537: AC_LANG_PROGRAM([[
                    538: #include <sys/mman.h>
                    539: void f() { mremap (0, 0, 0, MREMAP_MAYMOVE); }
                    540: ]])], [gold_cv_lib_mremap_maymove=yes], [gold_cv_lib_mremap_maymove=no])])
                    541: if test "$gold_cv_lib_mremap_maymove" = "yes"; then
                    542:   AC_DEFINE(HAVE_MREMAP, 1,
                    543:     [Define to 1 if you have the mremap function with MREMAP_MAYMOVE support])
                    544: else
                    545:   AC_LIBOBJ(mremap)
                    546: fi
                    547:
                    548: # Link in zlib if we can.  This allows us to write compressed sections.
                    549: AM_ZLIB
                    550:
1.6     ! christos  551: AC_ARG_ENABLE([threads],
        !           552: [[  --enable-threads[=ARG]  multi-threaded linking [ARG={auto,yes,no}]]],
        !           553: [case "${enableval}" in
        !           554:   yes | "") threads=yes ;;
        !           555:   no) threads=no ;;
        !           556:   auto) threads=auto ;;
        !           557:   *) threads=yes ;;
        !           558:  esac],
        !           559: [threads=auto])
        !           560:
        !           561: if test "$threads" = "yes"; then
        !           562:   AX_PTHREAD([threads=yes], AC_MSG_ERROR([pthread not found]))
        !           563: elif test "$threads" = "auto"; then
        !           564:   AX_PTHREAD([threads=yes], [threads=no])
        !           565: fi
        !           566:
        !           567: if test "$threads" = "yes"; then
        !           568:   AC_DEFINE(ENABLE_THREADS, 1,
        !           569:            [Define to do multi-threaded linking])
        !           570: fi
        !           571: AM_CONDITIONAL(THREADS, test "$threads" = "yes")
        !           572:
1.1       christos  573: dnl We have to check these in C, not C++, because autoconf generates
                    574: dnl tests which have no type information, and current glibc provides
                    575: dnl multiple declarations of functions like basename when compiling
                    576: dnl with C++.
                    577: AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
                    578:
1.3       christos  579: dnl Check if gcc supports the -gpubnames option.
                    580: dnl Use -Werror in case of compilers that make unknown -g options warnings.
                    581: dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
                    582: dnl gets set later by default Autoconf magic to include -Werror.  (We are
                    583: dnl assuming here that there is no compiler that groks -gpubnames
                    584: dnl but does not grok -Werror.)
                    585: save_CFLAGS="$CFLAGS"
                    586: CFLAGS="$CFLAGS -Werror -gpubnames"
1.6     ! christos  587: AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_pubnames=yes], [have_pubnames=no])
1.3       christos  588: CFLAGS="$save_CFLAGS"
                    589: AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
                    590:
                    591: dnl Check if gcc supports the -fno-use-linker-plugin option.
                    592: save_CFLAGS="$CFLAGS"
                    593: CFLAGS="$CFLAGS -Werror -fno-use-linker-plugin"
1.6     ! christos  594: AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_no_use_linker_plugin=yes], [have_no_use_linker_plugin=no])
1.3       christos  595: CFLAGS="$save_CFLAGS"
                    596: AM_CONDITIONAL(HAVE_NO_USE_LINKER_PLUGIN, test "$have_no_use_linker_plugin" = "yes")
                    597:
1.1       christos  598: AC_LANG_PUSH(C++)
                    599:
1.3       christos  600: AC_CHECK_HEADERS(unordered_set unordered_map)
1.1       christos  601: AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map)
                    602: AC_CHECK_HEADERS(ext/hash_map ext/hash_set)
                    603: AC_CHECK_HEADERS(byteswap.h)
1.3       christos  604:
                    605: dnl When plugins enabled dynamic loader interface is required. Check headers
                    606: dnl which may provide this interface. Add the necessary library to link.
                    607: AC_CHECK_HEADERS(windows.h)
                    608: AC_CHECK_HEADERS(dlfcn.h)
                    609: AC_SEARCH_LIBS(dlopen, [dl dld])
                    610: case "$ac_cv_search_dlopen" in
                    611:   no*) DLOPEN_LIBS="";;
                    612:   *)   DLOPEN_LIBS="$ac_cv_search_dlopen";;
                    613: esac
                    614: AC_SUBST(DLOPEN_LIBS)
                    615:
1.1       christos  616: AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times)
                    617: AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem])
                    618:
                    619: # Use of ::std::tr1::unordered_map::rehash causes undefined symbols
                    620: # at link time with some versions of GCC.
                    621: AC_CACHE_CHECK([whether ::std::tr1::unordered_map::rehash is usable.],
                    622: [gold_cv_unordered_map_rehash],
                    623: [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
                    624: #include <tr1/unordered_map>
                    625: void bar() { ::std::tr1::unordered_map<int, int> x; x.rehash(10); }
                    626: ]])], [gold_cv_unordered_map_rehash=yes], [gold_cv_unordered_map_rehash=no])])
                    627: if test "$gold_cv_unordered_map_rehash" = "yes"; then
                    628:   AC_DEFINE(HAVE_TR1_UNORDERED_MAP_REHASH, 1,
                    629:            [Define if ::std::tr1::unordered_map::rehash is usable])
                    630: fi
                    631:
                    632: # Use of tr1/unordered_map with off_t as a key is not supported on GCC
                    633: # 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
                    634: AC_CACHE_CHECK([whether std::tr1::hash<off_t> is defined],
                    635: [gold_cv_hash_off_t],
                    636: [CXXFLAGS_hold=$CXXFLAGS
                    637: CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
1.6     ! christos  638: AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1.1       christos  639: #include <sys/types.h>
                    640: #include <tr1/unordered_map>
                    641: std::tr1::hash<off_t> h;
1.6     ! christos  642: ])],
1.1       christos  643: [gold_cv_hash_off_t=yes],
                    644: [gold_cv_hash_off_t=no])
1.3       christos  645: CXXFLAGS=$CXXFLAGS_hold])
1.1       christos  646: if test "$gold_cv_hash_off_t" = "yes"; then
                    647:    AC_DEFINE(HAVE_TR1_HASH_OFF_T, 1,
                    648:             [Define if std::tr1::hash<off_t> is usable])
                    649: fi
                    650:
                    651: # gcc 4.3.0 doesn't recognize the printf attribute on a template
                    652: # function.  Check for that.  This is gcc bug 35546.  This test can
                    653: # probably be removed after the bug has been fixed for a while.
                    654: AC_CACHE_CHECK([whether we can use attributes with template functions],
                    655: [gold_cv_template_attribute],
1.6     ! christos  656: [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1.1       christos  657: template<typename T> extern void foo(const char*, ...)
                    658:   __attribute__ ((__format__ (__printf__, 1, 2)));
                    659: template<typename T> void foo(const char* format, ...) {}
                    660: void bar() { foo<int>("%s\n", "foo"); }
1.6     ! christos  661: ])], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
1.1       christos  662: if test "$gold_cv_template_attribute" = "yes"; then
                    663:   AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
                    664:            [Define if attributes work on C++ templates])
                    665: fi
                    666:
                    667: dnl Check if the system has struct stat::st_mtim.
                    668: AC_CACHE_CHECK([for struct stat::st_mtim.],
                    669: [gold_cv_stat_st_mtim],
                    670: [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
                    671: #include <sys/stat.h>
                    672: long bar() { struct stat s; return (long)(s.st_mtim.tv_sec + s.st_mtim.tv_sec);}
                    673: ]])], [gold_cv_stat_st_mtim=yes], [gold_cv_stat_st_mtim=no])])
                    674: if test "$gold_cv_stat_st_mtim" = "yes"; then
                    675:   AC_DEFINE(HAVE_STAT_ST_MTIM, 1,
                    676:            [Define if struct stat has a field st_mtim with timespec for mtime])
                    677: fi
                    678:
                    679: AC_LANG_POP(C++)
                    680:
                    681: AC_CHECK_HEADERS(locale.h)
                    682: AC_CHECK_FUNCS(setlocale)
                    683: AM_LC_MESSAGES
                    684:
                    685: AM_MAINTAINER_MODE
                    686:
                    687: AC_OUTPUT(Makefile testsuite/Makefile po/Makefile.in:po/Make-in)

CVSweb <webmaster@jp.NetBSD.org>