From 67342942d649f680fff9fa075f3daa3647bba0a1 Mon Sep 17 00:00:00 2001 From: Marco Maggi Date: Thu, 18 Oct 2018 13:06:14 +0200 Subject: [PATCH] more autoconf macros for linker flags --- expat/acinclude.m4 | 2 + expat/configure.ac | 2 +- expat/conftools/ax-append-link-flags.m4 | 44 ++++++++++++++++++++ expat/conftools/ax-check-link-flag.m4 | 53 +++++++++++++++++++++++++ 4 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 expat/conftools/ax-append-link-flags.m4 create mode 100644 expat/conftools/ax-check-link-flag.m4 diff --git a/expat/acinclude.m4 b/expat/acinclude.m4 index ff972000..e6b5f63a 100644 --- a/expat/acinclude.m4 +++ b/expat/acinclude.m4 @@ -3,8 +3,10 @@ m4_include(conftools/ax-require-defined.m4) m4_include(conftools/ax-check-compile-flag.m4) +m4_include(conftools/ax-check-link-flag.m4) m4_include(conftools/ax-append-flag.m4) m4_include(conftools/ax-append-compile-flags.m4) +m4_include(conftools/ax-append-link-flags.m4) dnl m4_include(conftools/ax-gcc-version.m4) ### end of file diff --git a/expat/configure.ac b/expat/configure.ac index c72a5fdb..37d9850a 100644 --- a/expat/configure.ac +++ b/expat/configure.ac @@ -88,7 +88,7 @@ AS_IF([test "$GCC" = yes], AC_LANG_POP([C++]) AS_IF([test "$GCC" = yes], - [AS_VAR_APPEND(LDFLAGS, " -fno-strict-aliasing")]) + [AX_APPEND_LINK_FLAGS([-fno-strict-aliasing],[LDFLAGS])]) AC_MSG_CHECKING(whether compiler supports visibility) AS_VAR_COPY(OLDCFLAGS,CFLAGS) diff --git a/expat/conftools/ax-append-link-flags.m4 b/expat/conftools/ax-append-link-flags.m4 new file mode 100644 index 00000000..99b9fa5b --- /dev/null +++ b/expat/conftools/ax-append-link-flags.m4 @@ -0,0 +1,44 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_append_link_flags.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_APPEND_LINK_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# For every FLAG1, FLAG2 it is checked whether the linker works with the +# flag. If it does, the flag is added FLAGS-VARIABLE +# +# If FLAGS-VARIABLE is not specified, the linker's flags (LDFLAGS) is +# used. During the check the flag is always added to the linker's flags. +# +# If EXTRA-FLAGS is defined, it is added to the linker's default flags +# when the check is done. The check is thus made with the flags: "LDFLAGS +# EXTRA-FLAGS FLAG". This can for example be used to force the linker to +# issue an error when a bad flag is given. +# +# INPUT gives an alternative input source to AC_COMPILE_IFELSE. +# +# NOTE: This macro depends on the AX_APPEND_FLAG and AX_CHECK_LINK_FLAG. +# Please keep this macro in sync with AX_APPEND_COMPILE_FLAGS. +# +# LICENSE +# +# Copyright (c) 2011 Maarten Bosmans +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 7 + +AC_DEFUN([AX_APPEND_LINK_FLAGS], +[AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) +AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) +for flag in $1; do + AX_CHECK_LINK_FLAG([$flag], [AX_APPEND_FLAG([$flag], [m4_default([$2], [LDFLAGS])])], [], [$3], [$4]) +done +])dnl AX_APPEND_LINK_FLAGS diff --git a/expat/conftools/ax-check-link-flag.m4 b/expat/conftools/ax-check-link-flag.m4 new file mode 100644 index 00000000..03a30ce4 --- /dev/null +++ b/expat/conftools/ax-check-link-flag.m4 @@ -0,0 +1,53 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the linker or gives an error. +# (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the linker's default flags +# when the check is done. The check is thus made with the flags: "LDFLAGS +# EXTRA-FLAGS FLAG". This can for example be used to force the linker to +# issue an error when a bad flag is given. +# +# INPUT gives an alternative input source to AC_LINK_IFELSE. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 6 + +AC_DEFUN([AX_CHECK_LINK_FLAG], +[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl +AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [ + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS $4 $1" + AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + LDFLAGS=$ax_check_save_flags]) +AS_VAR_IF(CACHEVAR,yes, + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_LINK_FLAGS -- 2.40.0