[easytag/wip/core-refactoring: 15/24] Use AX_IS_RELEASE to control compiler warnings



commit 7f2d67b9a02a6c4d5f6cae10b012d9fc86f821a7
Author: David King <amigadave amigadave com>
Date:   Tue Feb 3 23:17:12 2015 +0000

    Use AX_IS_RELEASE to control compiler warnings
    
    Make compiler warnings non-fatal for release builds (those in which a
    git directory is not present).

 configure.ac        |    4 ++-
 m4/ax_is_release.m4 |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+), 1 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 83b4014..50e2a2e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -344,7 +344,9 @@ AC_SEARCH_LIBS([gethostbyname], [nsl socket], [],
      AC_MSG_RESULT([$have_ws2])])
 
 dnl Set warning flags
-AX_COMPILER_FLAGS
+AX_IS_RELEASE([git-directory])
+AX_COMPILER_FLAGS([WARN_CFLAGS], [WARN_LDFLAGS],
+                  [$ax_is_release])
 
 dnl -------------------------------
 dnl Checks for library functions.
diff --git a/m4/ax_is_release.m4 b/m4/ax_is_release.m4
new file mode 100644
index 0000000..c495176
--- /dev/null
+++ b/m4/ax_is_release.m4
@@ -0,0 +1,60 @@
+# ===================================================================
+#   http://www.gnu.org/software/autoconf-archive/ax_is_release.html
+# ===================================================================
+#
+# SYNOPSIS
+#
+#   AX_IS_RELEASE(POLICY)
+#
+# DESCRIPTION
+#
+#   Determine whether the code is being configured as a release, or from git.
+#   Set the ax_is_release variable to 'yes' or 'no'.
+#
+#   If building a release version, it is recommended that the configure script
+#   disable compiler errors and debug features, by conditionalising them on
+#   the ax_is_release variable.  If building from git, these features should
+#   be enabled.
+#
+#   The POLICY parameter specifies how ax_is_release is determined. It can
+#   take the following values:
+#
+#    * git-directory:  ax_is_release will be 'no' if a '.git' directory exists
+#    * minor-version:  ax_is_release will be 'no' if the minor version number
+#                      in $PACKAGE_VERSION is odd; this assumes
+#                      $PACKAGE_VERSION follows the 'major.minor.micro' scheme
+#    * always:         ax_is_release will always be 'yes'
+#    * never:          ax_is_release will always be 'no'
+#
+#   Other policies may be added in future.
+#
+# LICENSE
+#
+#   Copyright (c) 2015 Philip Withnall <philip tecnocode co uk>
+#
+#   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.
+
+#serial 1
+
+AC_DEFUN([AX_IS_RELEASE],[
+    AC_BEFORE([AC_INIT],[$0])
+
+    m4_case([$1],
+      [git-directory],[
+        # $is_release = (.git directory does not exist)
+        AS_IF([test -d .git],[ax_is_release=no],[ax_is_release=yes])
+      ],
+      [minor-version],[
+        # $is_release = ($minor_version is even)
+        minor_version=`echo "$PACKAGE_VERSION" | sed 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`
+        AS_IF([test "$(( $minor_version % 2 ))" -ne 0],
+              [ax_is_release=no],[ax_is_release=yes])
+      ],
+      [always],[ax_is_release=yes],
+      [never],[ax_is_release=no],
+      [
+        AC_MSG_ERROR([Invalid policy. Valid policies: git-directory, minor-version.])
+      ])
+])


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]