diff options
author | devzero2000 <devzero2000> | 2011-06-16 13:53:42 +0000 |
---|---|---|
committer | devzero2000 <devzero2000> | 2011-06-16 13:53:42 +0000 |
commit | 900f159e40e6002f9d041a66eacebd717112d082 (patch) | |
tree | e9de34d1b0b82e2e926e5a0724e91e63beb1783a | |
parent | d3c23f2fa5c595db2c64a9f6421800415a6ad3b3 (diff) | |
download | libpopt-900f159e40e6002f9d041a66eacebd717112d082.tar.gz |
redo the autofu vendor-script linker script check for openindiana native
ld, using modern and not deprecated autoconf construct. Even if the check is not perfect
but it is based on a resultant ld warningi, on openindiana the result actually work
with gcc and native ld. This patch also fix the build
on openindiana broken by the precedent patch.
-rw-r--r-- | CHANGES | 5 | ||||
-rw-r--r-- | Makefile.am | 6 | ||||
-rwxr-xr-x | configure.ac | 65 |
3 files changed, 40 insertions, 36 deletions
@@ -1,4 +1,9 @@ 1.17 -> 2.0: + - devzero2000: redo the autofu vendor-script linker script check for openindiana native + ld, using modern and not deprecated autoconf construct. Even if the check is not perfect + but it is based on a resultant ld warningi, on openindiana the result actually work + with gcc and native ld. This patch also fix the build + on openindiana broken by the precedent patch. - devzero2000: add missing README-prereq - devzero2000: try to redo the bootstrap check better - devzero2000: add configmake.h to .gitignore diff --git a/Makefile.am b/Makefile.am index 4e7ea7e..37d19bb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -70,8 +70,8 @@ CLEANFILES = configmake.h configmake.h-t ## end configmake EXTRA_DIST = lookup3.c autogen.sh CHANGES \ - footer_no_timestamp.html libpopt.vers README-prereq\ - $(TESTS) test-poptrc\ + footer_no_timestamp.html libpopt.vers README-prereq \ + $(TESTS) test-poptrc \ popt.xcodeproj/project.pbxproj \ popt.ps Doxyfile test3-data/01.answer \ test3-data/01.input \ @@ -120,7 +120,7 @@ usrlibdir = $(libdir) usrlib_LTLIBRARIES = libpopt.la libpopt_la_SOURCES = popt.c poptparse.c poptconfig.c popthelp.c poptint.c -libpopt_la_LDFLAGS = -no-undefined @LTLIBINTL@ @LTLIBICONV@ $(AM_LDFLAGS) +libpopt_la_LDFLAGS = -no-undefined $(AM_LDFLAGS) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = popt.pc diff --git a/configure.ac b/configure.ac index c643c5c..fcd2831 100755 --- a/configure.ac +++ b/configure.ac @@ -245,6 +245,7 @@ AC_CHECK_FUNCS([getuid geteuid iconv mtrace __secure_getenv setregid stpcpy stre # drop AC_FUNC_MALLOC, REALLOC and STRTOD AC_CHECK_FUNCS([malloc realloc strtod memset nl_langinfo stpcpy strchr strerror strrchr]) +dnl check for version script support in the linker (GNU ld, or Solaris ld style) AC_ARG_ENABLE([ld-version-script], AS_HELP_STRING([--enable-ld-version-script],[enable/disable use of linker version script. (default is system dependent)]), @@ -253,53 +254,51 @@ AC_ARG_ENABLE([ld-version-script], AS_IF([test "x$have_ld_version_script" = xyes], [ - dnl check for version script support in the linker (GNU ld, or Solaris ld style) - AC_CACHE_CHECK([for ld --version-script], [popt_cv_ld_version_script], [dnl - cat > conftest.c <<EOF -void cl_symbol1(void) {} -void cli_symbol2(void) {} -EOF - cat > conftest.map <<EOF + AC_MSG_CHECKING([if ld version-script works - GNU ld, Solaris ld]) + cat > conftest.map <<EOF RELEASE { global: - cl_*; + popt_*; local: *; }; PRIVATE { global: - cli_*; + popti_*; local: *; }; EOF - dnl check for GNU ld style linker version script - if AC_TRY_COMMAND([${CC-cc} $CFLAGS $pic_flag $LDFLAGS -shared - -o conftest.so conftest.c - -Wl,--version-script,conftest.map - 1>&AS_MESSAGE_LOG_FD]); - then - LD_VERSION_SCRIPT_FLAG=--version-script - popt_cv_ld_version_script=yes - else - dnl check for Solaris ld style linker version script - if AC_TRY_COMMAND([${CC-cc} $CFLAGS $pic_flag $LDFLAGS -shared - -o conftest.so conftest.c - -Wl,-M,conftest.map - 1>&AS_MESSAGE_LOG_FD]); - then + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + void popt_symbol1(void) {} + void popti_symbol2(void) {} + ]], [])], + [have_ld_version_script=yes], [have_ld_version_script=no]) + LDFLAGS="$save_LDFLAGS" + if test x$have_ld_version_script != xyes + then + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,-M,conftest.map" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + void popt_symbol1(void) {} + void popti_symbol2(void) {} + ]], [])], + [have_ld_version_script=yes], [have_ld_version_script=no]) + LDFLAGS="$save_LDFLAGS" + if test x$have_ld_version_script = xyes + then LD_VERSION_SCRIPT_FLAG=-M - popt_cv_ld_version_script=yes; - else - popt_cv_ld_version_script=no - fi - fi - have_ld_version_script=$popt_cv_ld_version_script - rm -f conftest*]) - ]) - + fi + else + LD_VERSION_SCRIPT_FLAG=--version-script + fi + AC_MSG_RESULT($have_ld_version_script) + rm -f conftest.map conftest.c +]) AC_SUBST([LD_VERSION_SCRIPT_FLAG]) AM_CONDITIONAL([HAVE_LD_VERSION_SCRIPT],[test "$have_ld_version_script" = "yes"]) |