diff options
author | Ian Lance Taylor <iant@golang.org> | 2020-05-15 10:50:57 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2020-05-15 15:33:20 -0700 |
commit | e478cacb62f116d2c8efdabc4b51e6d2d7041aae (patch) | |
tree | 842f0f76d7668a745c1842e07f39b3cd56356a37 /libgo | |
parent | 29f0e90d9904d8e0965443d4da4c95ddde5edb1e (diff) | |
download | gcc-e478cacb62f116d2c8efdabc4b51e6d2d7041aae.zip gcc-e478cacb62f116d2c8efdabc4b51e6d2d7041aae.tar.gz gcc-e478cacb62f116d2c8efdabc4b51e6d2d7041aae.tar.bz2 |
libgo: only build syscall test with -static if it works
Test whether -static works, and use it if possible.
This time for sure.
For PR go/95061
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/234024
Diffstat (limited to 'libgo')
-rw-r--r-- | libgo/Makefile.am | 4 | ||||
-rw-r--r-- | libgo/Makefile.in | 4 | ||||
-rwxr-xr-x | libgo/configure | 48 | ||||
-rw-r--r-- | libgo/configure.ac | 11 |
4 files changed, 61 insertions, 6 deletions
diff --git a/libgo/Makefile.am b/libgo/Makefile.am index 0bbe54c..5b18072 100644 --- a/libgo/Makefile.am +++ b/libgo/Makefile.am @@ -967,8 +967,8 @@ endif # Also use -fno-inline to get better results from the memory profiler. runtime_pprof_check_GOCFLAGS = -static-libgo -fno-inline -if LIBGO_IS_LINUX -# Use -static for the syscall tests, because otherwise when +if HAVE_STATIC_LINK +# Use -static for the syscall tests if possible, because otherwise when # running as root the re-execs ignore LD_LIBRARY_PATH. syscall_check_GOCFLAGS = -static endif diff --git a/libgo/Makefile.in b/libgo/Makefile.in index 982253d..b2712eb 100644 --- a/libgo/Makefile.in +++ b/libgo/Makefile.in @@ -1105,9 +1105,9 @@ runtime_internal_sys_lo_check_GOCFLAGS = -fgo-compiling-runtime # Also use -fno-inline to get better results from the memory profiler. runtime_pprof_check_GOCFLAGS = -static-libgo -fno-inline -# Use -static for the syscall tests, because otherwise when +# Use -static for the syscall tests if possible, because otherwise when # running as root the re-execs ignore LD_LIBRARY_PATH. -@LIBGO_IS_LINUX_TRUE@syscall_check_GOCFLAGS = -static +@HAVE_STATIC_LINK_TRUE@syscall_check_GOCFLAGS = -static extra_go_files_runtime_internal_sys = version.go extra_go_files_internal_cpu = cpugen.go extra_go_files_golang_org_x_sys_cpu = gcpugen.go diff --git a/libgo/configure b/libgo/configure index 2f78739..2a9c7e6 100755 --- a/libgo/configure +++ b/libgo/configure @@ -633,6 +633,8 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS +HAVE_STATIC_LINK_FALSE +HAVE_STATIC_LINK_TRUE HAVE_STAT_TIMESPEC_FALSE HAVE_STAT_TIMESPEC_TRUE STRUCT_EPOLL_EVENT_FD_OFFSET @@ -11490,7 +11492,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11493 "configure" +#line 11495 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11596,7 +11598,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11599 "configure" +#line 11601 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -15788,6 +15790,44 @@ $as_echo "#define HAVE_AS_X86_AES 1" >>confdefs.h fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -static is supported" >&5 +$as_echo_n "checking whether -static is supported... " >&6; } +if ${libgo_cv_ld_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + LDFLAGS_hold=$LDFLAGS +LDFLAGS="$LDFLAGS -static" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + libgo_cv_ld_static=yes +else + libgo_cv_ld_static=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LDFLAGS=$LDFLAGS_hold +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgo_cv_ld_static" >&5 +$as_echo "$libgo_cv_ld_static" >&6; } + if test "$libgo_cv_ld_static" = yes; then + HAVE_STATIC_LINK_TRUE= + HAVE_STATIC_LINK_FALSE='#' +else + HAVE_STATIC_LINK_TRUE='#' + HAVE_STATIC_LINK_FALSE= +fi + + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -16108,6 +16148,10 @@ if test -z "${HAVE_STAT_TIMESPEC_TRUE}" && test -z "${HAVE_STAT_TIMESPEC_FALSE}" as_fn_error $? "conditional \"HAVE_STAT_TIMESPEC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_STATIC_LINK_TRUE}" && test -z "${HAVE_STATIC_LINK_FALSE}"; then + as_fn_error $? "conditional \"HAVE_STATIC_LINK\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 diff --git a/libgo/configure.ac b/libgo/configure.ac index f800d44..235d867 100644 --- a/libgo/configure.ac +++ b/libgo/configure.ac @@ -881,6 +881,17 @@ if test "x$libgo_cv_as_x86_aes" = xyes; then [Define if your assembler supports AES instructions.]) fi +dnl Test whether the linker supports the -static option. +AC_CACHE_CHECK([whether -static is supported], +[libgo_cv_ld_static], +[LDFLAGS_hold=$LDFLAGS +LDFLAGS="$LDFLAGS -static" +AC_LINK_IFELSE([AC_LANG_PROGRAM(,)], +[libgo_cv_ld_static=yes], +[libgo_cv_ld_static=no]) +LDFLAGS=$LDFLAGS_hold]) +AM_CONDITIONAL(HAVE_STATIC_LINK, test "$libgo_cv_ld_static" = yes) + AC_CACHE_SAVE if test ${multilib} = yes; then |