From 97afdec50d42a5fec3ee8397325346b007bad1fa Mon Sep 17 00:00:00 2001 From: Marco Maggi Date: Thu, 18 Oct 2018 12:54:28 +0200 Subject: [PATCH] added usage of more autoconf macros (from the autoconf marcros archive) --- expat/acinclude.m4 | 3 ++ expat/configure.ac | 14 +++--- expat/conftools/ax-append-compile-flags.m4 | 46 ++++++++++++++++++++ expat/conftools/ax-append-flag.m4 | 50 ++++++++++++++++++++++ expat/conftools/ax-require-defined.m4 | 37 ++++++++++++++++ 5 files changed, 142 insertions(+), 8 deletions(-) create mode 100644 expat/conftools/ax-append-compile-flags.m4 create mode 100644 expat/conftools/ax-append-flag.m4 create mode 100644 expat/conftools/ax-require-defined.m4 diff --git a/expat/acinclude.m4 b/expat/acinclude.m4 index 9dabcb95..ff972000 100644 --- a/expat/acinclude.m4 +++ b/expat/acinclude.m4 @@ -1,7 +1,10 @@ # acinclude.m4 -- # +m4_include(conftools/ax-require-defined.m4) m4_include(conftools/ax-check-compile-flag.m4) +m4_include(conftools/ax-append-flag.m4) +m4_include(conftools/ax-append-compile-flags.m4) dnl m4_include(conftools/ax-gcc-version.m4) ### end of file diff --git a/expat/configure.ac b/expat/configure.ac index fb9973a8..664e167d 100644 --- a/expat/configure.ac +++ b/expat/configure.ac @@ -70,30 +70,28 @@ AC_PROG_CC_C99 AC_PROG_CXX AS_IF([test "$GCC" = yes], - [AS_VAR_APPEND(CFLAGS," -Wall -Wmissing-prototypes -Wstrict-prototypes") + [AX_APPEND_COMPILE_FLAGS([-Wall], [CFLAGS]) dnl Be careful about adding the -fexceptions option; some versions of dnl GCC don't support it and it causes extra warnings that are only dnl distracting; avoid. - AX_CHECK_COMPILE_FLAG([-fexceptions], - [AS_VAR_APPEND(CFLAGS," -fexceptions")], - [AC_MSG_WARN([The GCC compiler does not support -fexceptions.])]) + AX_APPEND_COMPILE_FLAGS([-fexceptions], [CFLAGS]) AS_IF([test "x$CXXFLAGS" = x], - [CXXFLAGS=`echo "$CFLAGS" | sed 's/ -Wmissing-prototypes -Wstrict-prototypes//'`]) + [AS_VAR_COPY(CXXFLAGS, CFLAGS)]) - AS_VAR_APPEND(CFLAGS, " -fno-strict-aliasing") + AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing -Wmissing-prototypes -Wstrict-prototypes], [CFLAGS]) AS_VAR_APPEND(CXXFLAGS, " -fno-strict-aliasing") AS_VAR_APPEND(LDFLAGS, " -fno-strict-aliasing")]) AC_MSG_CHECKING(whether compiler supports visibility) -AS_VAR_SET(OLDCFLAGS,$CFLAGS) +AS_VAR_COPY(OLDCFLAGS,CFLAGS) AS_VAR_APPEND(CFLAGS,[" -fvisibility=hidden -Wall -Werror"]) AC_COMPILE_IFELSE([AC_LANG_SOURCE([[void __attribute__((visibility("default"))) foo(void); void foo(void) {}]])], [AC_MSG_RESULT(yes) AS_VAR_SET(CFLAGS,"$OLDCFLAGS -fvisibility=hidden -DXML_ENABLE_VISIBILITY=1")], [AC_MSG_RESULT(no) - AS_VAR_SET(CFLAGS,"$OLDCFLAGS")]) + AS_VAR_COPY(CFLAGS, OLDCFLAGS)]) dnl Checks for header files. AC_HEADER_STDC diff --git a/expat/conftools/ax-append-compile-flags.m4 b/expat/conftools/ax-append-compile-flags.m4 new file mode 100644 index 00000000..9c856356 --- /dev/null +++ b/expat/conftools/ax-append-compile-flags.m4 @@ -0,0 +1,46 @@ +# ============================================================================ +# https://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html +# ============================================================================ +# +# SYNOPSIS +# +# AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# For every FLAG1, FLAG2 it is checked whether the compiler works with the +# flag. If it does, the flag is added FLAGS-VARIABLE +# +# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. +# CFLAGS) is used. During the check the flag is always added to the +# current language's flags. +# +# If EXTRA-FLAGS is defined, it is added to the current language's default +# flags (e.g. CFLAGS) when the check is done. The check is thus made with +# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to +# force the compiler 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_COMPILE_FLAG. Please keep this macro in sync with +# AX_APPEND_LINK_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_COMPILE_FLAGS], +[AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG]) +AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) +for flag in $1; do + AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3], [$4]) +done +])dnl AX_APPEND_COMPILE_FLAGS diff --git a/expat/conftools/ax-append-flag.m4 b/expat/conftools/ax-append-flag.m4 new file mode 100644 index 00000000..dd6d8b61 --- /dev/null +++ b/expat/conftools/ax-append-flag.m4 @@ -0,0 +1,50 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) +# +# DESCRIPTION +# +# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space +# added in between. +# +# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. +# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains +# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly +# FLAG. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. +# +# 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 8 + +AC_DEFUN([AX_APPEND_FLAG], +[dnl +AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF +AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])]) +AS_VAR_SET_IF(FLAGS,[ + AS_CASE([" AS_VAR_GET(FLAGS) "], + [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])], + [ + AS_VAR_APPEND(FLAGS,[" $1"]) + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) + ], + [ + AS_VAR_SET(FLAGS,[$1]) + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) +AS_VAR_POPDEF([FLAGS])dnl +])dnl AX_APPEND_FLAG diff --git a/expat/conftools/ax-require-defined.m4 b/expat/conftools/ax-require-defined.m4 new file mode 100644 index 00000000..17c3eab7 --- /dev/null +++ b/expat/conftools/ax-require-defined.m4 @@ -0,0 +1,37 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_REQUIRE_DEFINED(MACRO) +# +# DESCRIPTION +# +# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have +# been defined and thus are available for use. This avoids random issues +# where a macro isn't expanded. Instead the configure script emits a +# non-fatal: +# +# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found +# +# It's like AC_REQUIRE except it doesn't expand the required macro. +# +# Here's an example: +# +# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) +# +# LICENSE +# +# Copyright (c) 2014 Mike Frysinger +# +# 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 2 + +AC_DEFUN([AX_REQUIRE_DEFINED], [dnl + m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) +])dnl AX_REQUIRE_DEFINED