Home | History | Annotate | Line # | Download | only in lto-plugin
      1 AC_INIT([LTO plugin for ld], 0.1,,[lto-plugin])
      2 AC_CANONICAL_SYSTEM
      3 GCC_TOPLEV_SUBDIRS
      4 AM_INIT_AUTOMAKE([foreign no-dist])
      5 AM_MAINTAINER_MODE
      6 AC_ARG_WITH(libiberty,
      7   [AS_HELP_STRING([--with-libiberty=PATH],
      8     [specify the directory where to find libiberty [../libiberty]])],
      9   [], with_libiberty=../libiberty)
     10 AC_SUBST(with_libiberty)
     11 AC_USE_SYSTEM_EXTENSIONS
     12 AC_PROG_CC
     13 AC_SYS_LARGEFILE
     14 ACX_PROG_CC_WARNING_OPTS([-Wall], [ac_lto_plugin_warn_cflags])
     15 
     16 # Check whether -static-libgcc is supported.
     17 saved_LDFLAGS="$LDFLAGS"
     18 LDFLAGS="$LDFLAGS -static-libgcc"
     19 AC_MSG_CHECKING([for -static-libgcc])
     20 AC_LINK_IFELSE([AC_LANG_SOURCE([
     21   int main() {}])], [have_static_libgcc=yes], [have_static_libgcc=no])
     22 AC_MSG_RESULT($have_static_libgcc); 
     23 LDFLAGS="$saved_LDFLAGS"
     24 # Need -Wc to get it through libtool.
     25 if test "x$have_static_libgcc" = xyes; then
     26    ac_lto_plugin_ldflags="-Wc,-static-libgcc"
     27 fi
     28 
     29 # Enable --enable-host-bind-now
     30 AC_ARG_ENABLE(host-bind-now,
     31 [AS_HELP_STRING([--enable-host-bind-now],
     32        [link host code as BIND_NOW])])
     33 AC_SUBST(enable_host_bind_now)
     34 
     35 if test x$enable_host_bind_now = xyes; then
     36   ac_lto_plugin_ldflags="$ac_lto_plugin_ldflags -Wl,-z,now"
     37 fi
     38 
     39 AC_SUBST(ac_lto_plugin_ldflags)
     40 
     41 GCC_CET_HOST_FLAGS(CET_HOST_FLAGS)
     42 AC_SUBST(CET_HOST_FLAGS)
     43 
     44 if test x"$host_subdir" = x.; then
     45    gcc_build_dir=../gcc
     46 else
     47    gcc_build_dir=../../$host_subdir/gcc
     48 fi
     49 AC_SUBST(gcc_build_dir)
     50 
     51 # Used for constructing correct paths for offload compilers.
     52 accel_dir_suffix=
     53 real_target_noncanonical=${target_noncanonical}
     54 if test x"$enable_as_accelerator_for" != x; then
     55   accel_dir_suffix=/accel/${target_noncanonical}
     56   real_target_noncanonical=${enable_as_accelerator_for}
     57 fi
     58 AC_SUBST(accel_dir_suffix)
     59 AC_SUBST(real_target_noncanonical)
     60 
     61 # Determine what GCC version number to use in filesystem paths.
     62 GCC_BASE_VER
     63 
     64 AC_MSG_CHECKING([whether symbol versioning is supported])
     65 lto_plugin_use_symver=no
     66 if test x$gcc_no_link = xyes; then
     67   # If we cannot link, we cannot build shared libraries, so do not use
     68   # symbol versioning.
     69   lto_plugin_use_symver=no
     70 else
     71   save_LDFLAGS="$LDFLAGS"
     72   LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
     73   cat > conftest.map <<EOF
     74 {
     75   global: *foo*; bar; local: *;
     76 };
     77 EOF
     78   AC_TRY_LINK([int foo;],[],[lto_plugin_use_symver=gnu],[lto_plugin_use_symver=no])
     79   if test x$lto_plugin_use_symver = xno; then
     80     case "$target_os" in
     81       solaris2*)
     82 	LDFLAGS="$save_LDFLAGS"
     83 	LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
     84 	# Sun ld cannot handle wildcards and treats all entries as undefined.
     85 	cat > conftest.map <<EOF
     86 {
     87   global: foo; local: *;
     88 };
     89 EOF
     90 	AC_TRY_LINK([int foo;],[],[lto_plugin_use_symver=sun],[lto_plugin_use_symver=no])
     91 	  ;;
     92     esac
     93   fi
     94   LDFLAGS="$save_LDFLAGS"
     95 fi
     96 AC_MSG_RESULT($lto_plugin_use_symver)
     97 AM_CONDITIONAL(LTO_PLUGIN_USE_SYMVER, [test "x$lto_plugin_use_symver" != xno])
     98 AM_CONDITIONAL(LTO_PLUGIN_USE_SYMVER_GNU, [test "x$lto_plugin_use_symver" = xgnu])
     99 AM_CONDITIONAL(LTO_PLUGIN_USE_SYMVER_SUN, [test "x$lto_plugin_use_symver" = xsun])
    100 
    101 # Check for thread headers.
    102 use_locking=no
    103 ac_lto_plugin_extra_ldflags=
    104 
    105 case $host in
    106   riscv*)
    107     # do not use locking as pthread depends on libatomic
    108     ;;
    109   *-linux*)
    110     use_locking=yes
    111     ;;
    112 esac
    113 
    114 if test x$use_locking = xyes; then
    115   AC_CHECK_HEADER(pthread.h,
    116     [AC_DEFINE(HAVE_PTHREAD_LOCKING, 1, [Define if the system provides pthread locking mechanism.])])
    117 
    118   ac_lto_plugin_extra_ldflags="-pthread"
    119 fi
    120 
    121 AC_SUBST(ac_lto_plugin_extra_ldflags)
    122 
    123 AM_PROG_LIBTOOL
    124 AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes])
    125 ACX_LT_HOST_FLAGS
    126 AC_SUBST(target_noncanonical)
    127 AC_TYPE_INT64_T
    128 AC_TYPE_UINT64_T
    129 AC_HEADER_SYS_WAIT
    130 AC_CONFIG_FILES(Makefile)
    131 AC_CONFIG_HEADERS(config.h)
    132 AC_OUTPUT
    133