diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2020-08-06 18:00:00 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2020-08-07 08:00:00 +0000 |
commit | 91791489f5fd71a0e3c16d7b3a3570488f9d4969 (patch) | |
tree | d4c0154189e298b1916691571558553ec610771a /configure.ac | |
parent | b8e9a2eeebb88b737a45ce460d1da45d609407b2 (diff) | |
download | pam-91791489f5fd71a0e3c16d7b3a3570488f9d4969.tar.gz pam-91791489f5fd71a0e3c16d7b3a3570488f9d4969.tar.bz2 pam-91791489f5fd71a0e3c16d7b3a3570488f9d4969.zip |
configure.ac: rewrite --disable-pie and -fpie/pie check
* configure.ac: Rewrite -fpie/pie check using AC_LINK_IFELSE to make
the code more readable. Add --enable-pie=check support and make it
the default, terminate if --enable-pie is specified but -fpie/pie
support is not available.
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 62 |
1 files changed, 34 insertions, 28 deletions
diff --git a/configure.ac b/configure.ac index a8e5d9ff..98e52410 100644 --- a/configure.ac +++ b/configure.ac @@ -174,34 +174,40 @@ rm -f conftest*]) AM_CONDITIONAL([HAVE_VERSIONING], [test "$libc_cv_ld_version_script_option" = "yes"]) -dnl -dnl check for -fPIE/-pie support -dnl -dnl icc handles -fpie as -fp without error, so blacklist icc -dnl -AC_ARG_ENABLE(pie,AS_HELP_STRING([--disable-pie], - [disable position-independent executables (PIE)]), - USE_PIE=$enableval, USE_PIE=yes) - -AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl - cat > conftest.c <<EOF -int foo; -main () { return 0;} -EOF - if test "$USE_PIE" = "yes" -a "$CC" != "icc" && - AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie - -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]) - then - libc_cv_fpie=yes - PIE_CFLAGS="-fpie" - PIE_LDFLAGS="-pie" - else - libc_cv_fpie=no - PIE_CFLAGS="" - PIE_LDFLAGS="" - fi - rm -f conftest*]) -AC_SUBST(libc_cv_fpie) +AC_ARG_ENABLE([pie], + [AS_HELP_STRING([--disable-pie], + [disable position-independent executables (PIE)])], + [], [enable_pie=check]) +case "$enable_pie" in + no) ;; + yes|check) + dnl Check for -fpie/-pie support + AC_CACHE_CHECK([for -fpie/-pie support], + [pam_cv_pie], + [saved_CFLAGS="$CFLAGS" + saved_LDFLAGS="$LDFLAGS" + CFLAGS="$CFLAGS -fpie" + LDFLAGS="$LDFLAGS -pie" + AC_LINK_IFELSE([AC_LANG_PROGRAM(,)], + [pam_cv_pie=yes], + [pam_cv_pie=no]) + LDFLAGS="$saved_LDFLAGS" + CFLAGS="$saved_CFLAGS"]) + AS_IF([test "$pam_cv_pie" = yes], + [enable_pie=yes], + [AS_IF([test "$enable_pie" = yes], + [AC_MSG_FAILURE([requested -fpie/-pie support not found])], + [enable_pie=no])]) + ;; + *) AC_MSG_ERROR([bad value $enable_pie for --enable-pie option]) ;; +esac + +AS_IF([test "$enable_pie" = yes], + [PIE_CFLAGS="-fpie" + PIE_LDFLAGS="-pie"], + [PIE_CFLAGS= + PIE_LDFLAGS=]) + AC_SUBST(PIE_CFLAGS) AC_SUBST(PIE_LDFLAGS) |