@@ -1022,7 +1022,7 @@ |
| # See the "minimum version" comment for each macro you use to see what | | # See the "minimum version" comment for each macro you use to see what |
---|
| # version you require. | | # version you require. |
---|
| m4_defun([XORG_MACROS_VERSION],[ | | m4_defun([XORG_MACROS_VERSION],[ |
---|
| -m4_define([vers_have], [1.11.0]) | | +m4_define([vers_have], [1.16.2]) |
---|
| m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.]))) | | m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.]))) |
---|
| m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.]))) | | m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.]))) |
---|
| m4_if(m4_cmp(maj_have, maj_needed), 0,, | | m4_if(m4_cmp(maj_have, maj_needed), 0,, |
---|
@@ -1049,7 +1049,7 @@ |
| # which is not the best choice for supporting other OS'es, but covers most | | # which is not the best choice for supporting other OS'es, but covers most |
---|
| # of the ones we need for now. | | # of the ones we need for now. |
---|
| AC_MSG_CHECKING([if $RAWCPP requires -undef]) | | AC_MSG_CHECKING([if $RAWCPP requires -undef]) |
---|
| -AC_LANG_CONFTEST([Does cpp redefine unix ?]) | | +AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp redefine unix ?]])]) |
---|
| if test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then | | if test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then |
---|
| AC_MSG_RESULT([no]) | | AC_MSG_RESULT([no]) |
---|
| else | | else |
---|
@@ -1067,7 +1067,7 @@ |
| rm -f conftest.$ac_ext | | rm -f conftest.$ac_ext |
---|
| | | |
---|
| AC_MSG_CHECKING([if $RAWCPP requires -traditional]) | | AC_MSG_CHECKING([if $RAWCPP requires -traditional]) |
---|
| -AC_LANG_CONFTEST([Does cpp preserve "whitespace"?]) | | +AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp preserve "whitespace"?]])]) |
---|
| if test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then | | if test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then |
---|
| AC_MSG_RESULT([no]) | | AC_MSG_RESULT([no]) |
---|
| else | | else |
---|
@@ -1417,6 +1417,123 @@ |
| AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes]) | | AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes]) |
---|
| ]) # XORG_WITH_XMLTO | | ]) # XORG_WITH_XMLTO |
---|
| | | |
---|
| | | +# XORG_WITH_XSLTPROC([MIN-VERSION], [DEFAULT]) |
---|
| | | +# -------------------------------------------- |
---|
| | | +# Minimum version: 1.12.0 |
---|
| | | +# Minimum version for optional DEFAULT argument: 1.12.0 |
---|
| | | +# |
---|
| | | +# XSLT (Extensible Stylesheet Language Transformations) is a declarative, |
---|
| | | +# XML-based language used for the transformation of XML documents. |
---|
| | | +# The xsltproc command line tool is for applying XSLT stylesheets to XML documents. |
---|
| | | +# It is used under the cover by xmlto to generate html files from DocBook/XML. |
---|
| | | +# The XSLT processor is often used as a standalone tool for transformations. |
---|
| | | +# It should not be assumed that this tool is used only to work with documnetation. |
---|
| | | +# When DEFAULT is not specified, --with-xsltproc assumes 'auto'. |
---|
| | | +# |
---|
| | | +# Interface to module: |
---|
| | | +# HAVE_XSLTPROC: used in makefiles to conditionally generate documentation |
---|
| | | +# XSLTPROC: returns the path of the xsltproc program found |
---|
| | | +# returns the path set by the user in the environment |
---|
| | | +# --with-xsltproc: 'yes' user instructs the module to use xsltproc |
---|
| | | +# 'no' user instructs the module not to use xsltproc |
---|
| | | +# have_xsltproc: returns yes if xsltproc found in PATH or no |
---|
| | | +# |
---|
| | | +# If the user sets the value of XSLTPROC, AC_PATH_PROG skips testing the path. |
---|
| | | +# |
---|
| | | +AC_DEFUN([XORG_WITH_XSLTPROC],[ |
---|
| | | +AC_ARG_VAR([XSLTPROC], [Path to xsltproc command]) |
---|
| | | +# Preserves the interface, should it be implemented later |
---|
| | | +m4_ifval([$1], [m4_warn([syntax], [Checking for xsltproc MIN-VERSION is not implemented])]) |
---|
| | | +m4_define([_defopt], m4_default([$2], [auto])) |
---|
| | | +AC_ARG_WITH(xsltproc, |
---|
| | | + AS_HELP_STRING([--with-xsltproc], |
---|
| | | + [Use xsltproc for the transformation of XML documents (default: ]_defopt[)]), |
---|
| | | + [use_xsltproc=$withval], [use_xsltproc=]_defopt) |
---|
| | | +m4_undefine([_defopt]) |
---|
| | | + |
---|
| | | +if test "x$use_xsltproc" = x"auto"; then |
---|
| | | + AC_PATH_PROG([XSLTPROC], [xsltproc]) |
---|
| | | + if test "x$XSLTPROC" = "x"; then |
---|
| | | + AC_MSG_WARN([xsltproc not found - cannot transform XML documents]) |
---|
| | | + have_xsltproc=no |
---|
| | | + else |
---|
| | | + have_xsltproc=yes |
---|
| | | + fi |
---|
| | | +elif test "x$use_xsltproc" = x"yes" ; then |
---|
| | | + AC_PATH_PROG([XSLTPROC], [xsltproc]) |
---|
| | | + if test "x$XSLTPROC" = "x"; then |
---|
| | | + AC_MSG_ERROR([--with-xsltproc=yes specified but xsltproc not found in PATH]) |
---|
| | | + fi |
---|
| | | + have_xsltproc=yes |
---|
| | | +elif test "x$use_xsltproc" = x"no" ; then |
---|
| | | + if test "x$XSLTPROC" != "x"; then |
---|
| | | + AC_MSG_WARN([ignoring XSLTPROC environment variable since --with-xsltproc=no was specified]) |
---|
| | | + fi |
---|
| | | + have_xsltproc=no |
---|
| | | +else |
---|
| | | + AC_MSG_ERROR([--with-xsltproc expects 'yes' or 'no']) |
---|
| | | +fi |
---|
| | | + |
---|
| | | +AM_CONDITIONAL([HAVE_XSLTPROC], [test "$have_xsltproc" = yes]) |
---|
| | | +]) # XORG_WITH_XSLTPROC |
---|
| | | + |
---|
| | | +# XORG_WITH_PERL([MIN-VERSION], [DEFAULT]) |
---|
| | | +# ---------------------------------------- |
---|
| | | +# Minimum version: 1.15.0 |
---|
| | | +# |
---|
| | | +# PERL (Practical Extraction and Report Language) is a language optimized for |
---|
| | | +# scanning arbitrary text files, extracting information from those text files, |
---|
| | | +# and printing reports based on that information. |
---|
| | | +# |
---|
| | | +# When DEFAULT is not specified, --with-perl assumes 'auto'. |
---|
| | | +# |
---|
| | | +# Interface to module: |
---|
| | | +# HAVE_PERL: used in makefiles to conditionally scan text files |
---|
| | | +# PERL: returns the path of the perl program found |
---|
| | | +# returns the path set by the user in the environment |
---|
| | | +# --with-perl: 'yes' user instructs the module to use perl |
---|
| | | +# 'no' user instructs the module not to use perl |
---|
| | | +# have_perl: returns yes if perl found in PATH or no |
---|
| | | +# |
---|
| | | +# If the user sets the value of PERL, AC_PATH_PROG skips testing the path. |
---|
| | | +# |
---|
| | | +AC_DEFUN([XORG_WITH_PERL],[ |
---|
| | | +AC_ARG_VAR([PERL], [Path to perl command]) |
---|
| | | +# Preserves the interface, should it be implemented later |
---|
| | | +m4_ifval([$1], [m4_warn([syntax], [Checking for perl MIN-VERSION is not implemented])]) |
---|
| | | +m4_define([_defopt], m4_default([$2], [auto])) |
---|
| | | +AC_ARG_WITH(perl, |
---|
| | | + AS_HELP_STRING([--with-perl], |
---|
| | | + [Use perl for extracting information from files (default: ]_defopt[)]), |
---|
| | | + [use_perl=$withval], [use_perl=]_defopt) |
---|
| | | +m4_undefine([_defopt]) |
---|
| | | + |
---|
| | | +if test "x$use_perl" = x"auto"; then |
---|
| | | + AC_PATH_PROG([PERL], [perl]) |
---|
| | | + if test "x$PERL" = "x"; then |
---|
| | | + AC_MSG_WARN([perl not found - cannot extract information and report]) |
---|
| | | + have_perl=no |
---|
| | | + else |
---|
| | | + have_perl=yes |
---|
| | | + fi |
---|
| | | +elif test "x$use_perl" = x"yes" ; then |
---|
| | | + AC_PATH_PROG([PERL], [perl]) |
---|
| | | + if test "x$PERL" = "x"; then |
---|
| | | + AC_MSG_ERROR([--with-perl=yes specified but perl not found in PATH]) |
---|
| | | + fi |
---|
| | | + have_perl=yes |
---|
| | | +elif test "x$use_perl" = x"no" ; then |
---|
| | | + if test "x$PERL" != "x"; then |
---|
| | | + AC_MSG_WARN([ignoring PERL environment variable since --with-perl=no was specified]) |
---|
| | | + fi |
---|
| | | + have_perl=no |
---|
| | | +else |
---|
| | | + AC_MSG_ERROR([--with-perl expects 'yes' or 'no']) |
---|
| | | +fi |
---|
| | | + |
---|
| | | +AM_CONDITIONAL([HAVE_PERL], [test "$have_perl" = yes]) |
---|
| | | +]) # XORG_WITH_PERL |
---|
| | | + |
---|
| # XORG_WITH_ASCIIDOC([MIN-VERSION], [DEFAULT]) | | # XORG_WITH_ASCIIDOC([MIN-VERSION], [DEFAULT]) |
---|
| # ---------------- | | # ---------------- |
---|
| # Minimum version: 1.5.0 | | # Minimum version: 1.5.0 |
---|
@@ -1662,10 +1779,11 @@ |
| AM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes]) | | AM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes]) |
---|
| ]) # XORG_WITH_GROFF | | ]) # XORG_WITH_GROFF |
---|
| | | |
---|
| -# XORG_WITH_FOP([DEFAULT]) | | +# XORG_WITH_FOP([MIN-VERSION], [DEFAULT]) |
---|
| -# ---------------- | | +# --------------------------------------- |
---|
| # Minimum version: 1.6.0 | | # Minimum version: 1.6.0 |
---|
| # Minimum version for optional DEFAULT argument: 1.11.0 | | # Minimum version for optional DEFAULT argument: 1.11.0 |
---|
| | | +# Minimum version for optional MIN-VERSION argument: 1.15.0 |
---|
| # | | # |
---|
| # Documentation tools are not always available on all platforms and sometimes | | # Documentation tools are not always available on all platforms and sometimes |
---|
| # not at the appropriate level. This macro enables a module to test for the | | # not at the appropriate level. This macro enables a module to test for the |
---|
@@ -1685,7 +1803,7 @@ |
| # | | # |
---|
| AC_DEFUN([XORG_WITH_FOP],[ | | AC_DEFUN([XORG_WITH_FOP],[ |
---|
| AC_ARG_VAR([FOP], [Path to fop command]) | | AC_ARG_VAR([FOP], [Path to fop command]) |
---|
| -m4_define([_defopt], m4_default([$1], [auto])) | | +m4_define([_defopt], m4_default([$2], [auto])) |
---|
| AC_ARG_WITH(fop, | | AC_ARG_WITH(fop, |
---|
| AS_HELP_STRING([--with-fop], | | AS_HELP_STRING([--with-fop], |
---|
| [Use fop to regenerate documentation (default: ]_defopt[)]), | | [Use fop to regenerate documentation (default: ]_defopt[)]), |
---|
@@ -1714,6 +1832,22 @@ |
| else | | else |
---|
| AC_MSG_ERROR([--with-fop expects 'yes' or 'no']) | | AC_MSG_ERROR([--with-fop expects 'yes' or 'no']) |
---|
| fi | | fi |
---|
| | | + |
---|
| | | +# Test for a minimum version of fop, if provided. |
---|
| | | +m4_ifval([$1], |
---|
| | | +[if test "$have_fop" = yes; then |
---|
| | | + # scrape the fop version |
---|
| | | + AC_MSG_CHECKING([for fop minimum version]) |
---|
| | | + fop_version=`$FOP -version 2>/dev/null | cut -d' ' -f3` |
---|
| | | + AC_MSG_RESULT([$fop_version]) |
---|
| | | + AS_VERSION_COMPARE([$fop_version], [$1], |
---|
| | | + [if test "x$use_fop" = xauto; then |
---|
| | | + AC_MSG_WARN([fop version $fop_version found, but $1 needed]) |
---|
| | | + have_fop=no |
---|
| | | + else |
---|
| | | + AC_MSG_ERROR([fop version $fop_version found, but $1 needed]) |
---|
| | | + fi]) |
---|
| | | +fi]) |
---|
| AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes]) | | AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes]) |
---|
| ]) # XORG_WITH_FOP | | ]) # XORG_WITH_FOP |
---|
| | | |
---|
@@ -1796,12 +1930,12 @@ |
| # parm1: specify the default value, yes or no. | | # parm1: specify the default value, yes or no. |
---|
| # | | # |
---|
| AC_DEFUN([XORG_ENABLE_DOCS],[ | | AC_DEFUN([XORG_ENABLE_DOCS],[ |
---|
| -m4_define([default], m4_default([$1], [yes])) | | +m4_define([docs_default], m4_default([$1], [yes])) |
---|
| AC_ARG_ENABLE(docs, | | AC_ARG_ENABLE(docs, |
---|
| AS_HELP_STRING([--enable-docs], | | AS_HELP_STRING([--enable-docs], |
---|
| - [Enable building the documentation (default: ]default[)]), | | + [Enable building the documentation (default: ]docs_default[)]), |
---|
| - [build_docs=$enableval], [build_docs=]default) | | + [build_docs=$enableval], [build_docs=]docs_default) |
---|
| -m4_undefine([default]) | | +m4_undefine([docs_default]) |
---|
| AM_CONDITIONAL(ENABLE_DOCS, [test x$build_docs = xyes]) | | AM_CONDITIONAL(ENABLE_DOCS, [test x$build_docs = xyes]) |
---|
| AC_MSG_CHECKING([whether to build documentation]) | | AC_MSG_CHECKING([whether to build documentation]) |
---|
| AC_MSG_RESULT([$build_docs]) | | AC_MSG_RESULT([$build_docs]) |
---|
@@ -1873,6 +2007,288 @@ |
| AC_MSG_RESULT([$build_specs]) | | AC_MSG_RESULT([$build_specs]) |
---|
| ]) # XORG_ENABLE_SPECS | | ]) # XORG_ENABLE_SPECS |
---|
| | | |
---|
| | | +# XORG_ENABLE_UNIT_TESTS (enable_unit_tests=auto) |
---|
| | | +# ---------------------------------------------- |
---|
| | | +# Minimum version: 1.13.0 |
---|
| | | +# |
---|
| | | +# This macro enables a builder to enable/disable unit testing |
---|
| | | +# It makes no assumption about the test cases implementation |
---|
| | | +# Test cases may or may not use Automake "Support for test suites" |
---|
| | | +# They may or may not use the software utility library GLib |
---|
| | | +# |
---|
| | | +# When used in conjunction with XORG_WITH_GLIB, use both AM_CONDITIONAL |
---|
| | | +# ENABLE_UNIT_TESTS and HAVE_GLIB. Not all unit tests may use glib. |
---|
| | | +# The variable enable_unit_tests is used by other macros in this file. |
---|
| | | +# |
---|
| | | +# Interface to module: |
---|
| | | +# ENABLE_UNIT_TESTS: used in makefiles to conditionally build tests |
---|
| | | +# enable_unit_tests: used in configure.ac for additional configuration |
---|
| | | +# --enable-unit-tests: 'yes' user instructs the module to build tests |
---|
| | | +# 'no' user instructs the module not to build tests |
---|
| | | +# parm1: specify the default value, yes or no. |
---|
| | | +# |
---|
| | | +AC_DEFUN([XORG_ENABLE_UNIT_TESTS],[ |
---|
| | | +AC_BEFORE([$0], [XORG_WITH_GLIB]) |
---|
| | | +AC_BEFORE([$0], [XORG_LD_WRAP]) |
---|
| | | +AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) |
---|
| | | +m4_define([_defopt], m4_default([$1], [auto])) |
---|
| | | +AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests], |
---|
| | | + [Enable building unit test cases (default: ]_defopt[)]), |
---|
| | | + [enable_unit_tests=$enableval], [enable_unit_tests=]_defopt) |
---|
| | | +m4_undefine([_defopt]) |
---|
| | | +AM_CONDITIONAL(ENABLE_UNIT_TESTS, [test "x$enable_unit_tests" != xno]) |
---|
| | | +AC_MSG_CHECKING([whether to build unit test cases]) |
---|
| | | +AC_MSG_RESULT([$enable_unit_tests]) |
---|
| | | +]) # XORG_ENABLE_UNIT_TESTS |
---|
| | | + |
---|
| | | +# XORG_ENABLE_INTEGRATION_TESTS (enable_unit_tests=auto) |
---|
| | | +# ------------------------------------------------------ |
---|
| | | +# Minimum version: 1.17.0 |
---|
| | | +# |
---|
| | | +# This macro enables a builder to enable/disable integration testing |
---|
| | | +# It makes no assumption about the test cases' implementation |
---|
| | | +# Test cases may or may not use Automake "Support for test suites" |
---|
| | | +# |
---|
| | | +# Please see XORG_ENABLE_UNIT_TESTS for unit test support. Unit test support |
---|
| | | +# usually requires less dependencies and may be built and run under less |
---|
| | | +# stringent environments than integration tests. |
---|
| | | +# |
---|
| | | +# Interface to module: |
---|
| | | +# ENABLE_INTEGRATION_TESTS: used in makefiles to conditionally build tests |
---|
| | | +# enable_integration_tests: used in configure.ac for additional configuration |
---|
| | | +# --enable-integration-tests: 'yes' user instructs the module to build tests |
---|
| | | +# 'no' user instructs the module not to build tests |
---|
| | | +# parm1: specify the default value, yes or no. |
---|
| | | +# |
---|
| | | +AC_DEFUN([XORG_ENABLE_INTEGRATION_TESTS],[ |
---|
| | | +AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) |
---|
| | | +m4_define([_defopt], m4_default([$1], [auto])) |
---|
| | | +AC_ARG_ENABLE(integration-tests, AS_HELP_STRING([--enable-integration-tests], |
---|
| | | + [Enable building integration test cases (default: ]_defopt[)]), |
---|
| | | + [enable_integration_tests=$enableval], |
---|
| | | + [enable_integration_tests=]_defopt) |
---|
| | | +m4_undefine([_defopt]) |
---|
| | | +AM_CONDITIONAL([ENABLE_INTEGRATION_TESTS], |
---|
| | | + [test "x$enable_integration_tests" != xno]) |
---|
| | | +AC_MSG_CHECKING([whether to build unit test cases]) |
---|
| | | +AC_MSG_RESULT([$enable_integration_tests]) |
---|
| | | +]) # XORG_ENABLE_INTEGRATION_TESTS |
---|
| | | + |
---|
| | | +# XORG_WITH_GLIB([MIN-VERSION], [DEFAULT]) |
---|
| | | +# ---------------------------------------- |
---|
| | | +# Minimum version: 1.13.0 |
---|
| | | +# |
---|
| | | +# GLib is a library which provides advanced data structures and functions. |
---|
| | | +# This macro enables a module to test for the presence of Glib. |
---|
| | | +# |
---|
| | | +# When used with ENABLE_UNIT_TESTS, it is assumed GLib is used for unit testing. |
---|
| | | +# Otherwise the value of $enable_unit_tests is blank. |
---|
| | | +# |
---|
| | | +# Please see XORG_ENABLE_INTEGRATION_TESTS for integration test support. Unit |
---|
| | | +# test support usually requires less dependencies and may be built and run under |
---|
| | | +# less stringent environments than integration tests. |
---|
| | | +# |
---|
| | | +# Interface to module: |
---|
| | | +# HAVE_GLIB: used in makefiles to conditionally build targets |
---|
| | | +# with_glib: used in configure.ac to know if GLib has been found |
---|
| | | +# --with-glib: 'yes' user instructs the module to use glib |
---|
| | | +# 'no' user instructs the module not to use glib |
---|
| | | +# |
---|
| | | +AC_DEFUN([XORG_WITH_GLIB],[ |
---|
| | | +AC_REQUIRE([PKG_PROG_PKG_CONFIG]) |
---|
| | | +m4_define([_defopt], m4_default([$2], [auto])) |
---|
| | | +AC_ARG_WITH(glib, AS_HELP_STRING([--with-glib], |
---|
| | | + [Use GLib library for unit testing (default: ]_defopt[)]), |
---|
| | | + [with_glib=$withval], [with_glib=]_defopt) |
---|
| | | +m4_undefine([_defopt]) |
---|
| | | + |
---|
| | | +have_glib=no |
---|
| | | +# Do not probe GLib if user explicitly disabled unit testing |
---|
| | | +if test "x$enable_unit_tests" != x"no"; then |
---|
| | | + # Do not probe GLib if user explicitly disabled it |
---|
| | | + if test "x$with_glib" != x"no"; then |
---|
| | | + m4_ifval( |
---|
| | | + [$1], |
---|
| | | + [PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $1], [have_glib=yes], [have_glib=no])], |
---|
| | | + [PKG_CHECK_MODULES([GLIB], [glib-2.0], [have_glib=yes], [have_glib=no])] |
---|
| | | + ) |
---|
| | | + fi |
---|
| | | +fi |
---|
| | | + |
---|
| | | +# Not having GLib when unit testing has been explicitly requested is an error |
---|
| | | +if test "x$enable_unit_tests" = x"yes"; then |
---|
| | | + if test "x$have_glib" = x"no"; then |
---|
| | | + AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) |
---|
| | | + fi |
---|
| | | +fi |
---|
| | | + |
---|
| | | +# Having unit testing disabled when GLib has been explicitly requested is an error |
---|
| | | +if test "x$enable_unit_tests" = x"no"; then |
---|
| | | + if test "x$with_glib" = x"yes"; then |
---|
| | | + AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) |
---|
| | | + fi |
---|
| | | +fi |
---|
| | | + |
---|
| | | +# Not having GLib when it has been explicitly requested is an error |
---|
| | | +if test "x$with_glib" = x"yes"; then |
---|
| | | + if test "x$have_glib" = x"no"; then |
---|
| | | + AC_MSG_ERROR([--with-glib=yes specified but glib-2.0 not found]) |
---|
| | | + fi |
---|
| | | +fi |
---|
| | | + |
---|
| | | +AM_CONDITIONAL([HAVE_GLIB], [test "$have_glib" = yes]) |
---|
| | | +]) # XORG_WITH_GLIB |
---|
| | | + |
---|
| | | +# XORG_LD_WRAP([required|optional]) |
---|
| | | +# --------------------------------- |
---|
| | | +# Minimum version: 1.13.0 |
---|
| | | +# |
---|
| | | +# Check if linker supports -wrap, passed via compiler flags |
---|
| | | +# |
---|
| | | +# When used with ENABLE_UNIT_TESTS, it is assumed -wrap is used for unit testing. |
---|
| | | +# Otherwise the value of $enable_unit_tests is blank. |
---|
| | | +# |
---|
| | | +# Argument added in 1.16.0 - default is "required", to match existing behavior |
---|
| | | +# of returning an error if enable_unit_tests is yes, and ld -wrap is not |
---|
| | | +# available, an argument of "optional" allows use when some unit tests require |
---|
| | | +# ld -wrap and others do not. |
---|
| | | +# |
---|
| | | +AC_DEFUN([XORG_LD_WRAP],[ |
---|
| | | +XORG_CHECK_LINKER_FLAGS([-Wl,-wrap,exit],[have_ld_wrap=yes],[have_ld_wrap=no], |
---|
| | | + [AC_LANG_PROGRAM([#include <stdlib.h> |
---|
| | | + void __wrap_exit(int status) { return; }], |
---|
| | | + [exit(0);])]) |
---|
| | | +# Not having ld wrap when unit testing has been explicitly requested is an error |
---|
| | | +if test "x$enable_unit_tests" = x"yes" -a "x$1" != "xoptional"; then |
---|
| | | + if test "x$have_ld_wrap" = x"no"; then |
---|
| | | + AC_MSG_ERROR([--enable-unit-tests=yes specified but ld -wrap support is not available]) |
---|
| | | + fi |
---|
| | | +fi |
---|
| | | +AM_CONDITIONAL([HAVE_LD_WRAP], [test "$have_ld_wrap" = yes]) |
---|
| | | +# |
---|
| | | +]) # XORG_LD_WRAP |
---|
| | | + |
---|
| | | +# XORG_CHECK_LINKER_FLAGS |
---|
| | | +# ----------------------- |
---|
| | | +# SYNOPSIS |
---|
| | | +# |
---|
| | | +# XORG_CHECK_LINKER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE], [PROGRAM-SOURCE]) |
---|
| | | +# |
---|
| | | +# DESCRIPTION |
---|
| | | +# |
---|
| | | +# Check whether the given linker FLAGS work with the current language's |
---|
| | | +# linker, or whether they give an error. |
---|
| | | +# |
---|
| | | +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on |
---|
| | | +# success/failure. |
---|
| | | +# |
---|
| | | +# PROGRAM-SOURCE is the program source to link with, if needed |
---|
| | | +# |
---|
| | | +# NOTE: Based on AX_CHECK_COMPILER_FLAGS. |
---|
| | | +# |
---|
| | | +# LICENSE |
---|
| | | +# |
---|
| | | +# Copyright (c) 2009 Mike Frysinger <vapier@gentoo.org> |
---|
| | | +# Copyright (c) 2009 Steven G. Johnson <stevenj@alum.mit.edu> |
---|
| | | +# Copyright (c) 2009 Matteo Frigo |
---|
| | | +# |
---|
| | | +# This program is free software: you can redistribute it and/or modify it |
---|
| | | +# under the terms of the GNU General Public License as published by the |
---|
| | | +# Free Software Foundation, either version 3 of the License, or (at your |
---|
| | | +# option) any later version. |
---|
| | | +# |
---|
| | | +# This program is distributed in the hope that it will be useful, but |
---|
| | | +# WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
| | | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
---|
| | | +# Public License for more details. |
---|
| | | +# |
---|
| | | +# You should have received a copy of the GNU General Public License along |
---|
| | | +# with this program. If not, see <http://www.gnu.org/licenses/>. |
---|
| | | +# |
---|
| | | +# As a special exception, the respective Autoconf Macro's copyright owner |
---|
| | | +# gives unlimited permission to copy, distribute and modify the configure |
---|
| | | +# scripts that are the output of Autoconf when processing the Macro. You |
---|
| | | +# need not follow the terms of the GNU General Public License when using |
---|
| | | +# or distributing such scripts, even though portions of the text of the |
---|
| | | +# Macro appear in them. The GNU General Public License (GPL) does govern |
---|
| | | +# all other use of the material that constitutes the Autoconf Macro. |
---|
| | | +# |
---|
| | | +# This special exception to the GPL applies to versions of the Autoconf |
---|
| | | +# Macro released by the Autoconf Archive. When you make and distribute a |
---|
| | | +# modified version of the Autoconf Macro, you may extend this special |
---|
| | | +# exception to the GPL to apply to your modified version as well.# |
---|
| | | +AC_DEFUN([XORG_CHECK_LINKER_FLAGS], |
---|
| | | +[AC_MSG_CHECKING([whether the linker accepts $1]) |
---|
| | | +dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname: |
---|
| | | +AS_LITERAL_IF([$1], |
---|
| | | + [AC_CACHE_VAL(AS_TR_SH(xorg_cv_linker_flags_[$1]), [ |
---|
| | | + ax_save_FLAGS=$LDFLAGS |
---|
| | | + LDFLAGS="$1" |
---|
| | | + AC_LINK_IFELSE([m4_default([$4],[AC_LANG_PROGRAM()])], |
---|
| | | + AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, |
---|
| | | + AS_TR_SH(xorg_cv_linker_flags_[$1])=no) |
---|
| | | + LDFLAGS=$ax_save_FLAGS])], |
---|
| | | + [ax_save_FLAGS=$LDFLAGS |
---|
| | | + LDFLAGS="$1" |
---|
| | | + AC_LINK_IFELSE([AC_LANG_PROGRAM()], |
---|
| | | + eval AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, |
---|
| | | + eval AS_TR_SH(xorg_cv_linker_flags_[$1])=no) |
---|
| | | + LDFLAGS=$ax_save_FLAGS]) |
---|
| | | +eval xorg_check_linker_flags=$AS_TR_SH(xorg_cv_linker_flags_[$1]) |
---|
| | | +AC_MSG_RESULT($xorg_check_linker_flags) |
---|
| | | +if test "x$xorg_check_linker_flags" = xyes; then |
---|
| | | + m4_default([$2], :) |
---|
| | | +else |
---|
| | | + m4_default([$3], :) |
---|
| | | +fi |
---|
| | | +]) # XORG_CHECK_LINKER_FLAGS |
---|
| | | + |
---|
| | | +# XORG_MEMORY_CHECK_FLAGS |
---|
| | | +# ----------------------- |
---|
| | | +# Minimum version: 1.16.0 |
---|
| | | +# |
---|
| | | +# This macro attempts to find appropriate memory checking functionality |
---|
| | | +# for various platforms which unit testing code may use to catch various |
---|
| | | +# forms of memory allocation and access errors in testing. |
---|
| | | +# |
---|
| | | +# Interface to module: |
---|
| | | +# XORG_MALLOC_DEBUG_ENV - environment variables to set to enable debugging |
---|
| | | +# Usually added to TESTS_ENVIRONMENT in Makefile.am |
---|
| | | +# |
---|
| | | +# If the user sets the value of XORG_MALLOC_DEBUG_ENV, it is used verbatim. |
---|
| | | +# |
---|
| | | +AC_DEFUN([XORG_MEMORY_CHECK_FLAGS],[ |
---|
| | | + |
---|
| | | +AC_REQUIRE([AC_CANONICAL_HOST]) |
---|
| | | +AC_ARG_VAR([XORG_MALLOC_DEBUG_ENV], |
---|
| | | + [Environment variables to enable memory checking in tests]) |
---|
| | | + |
---|
| | | +# Check for different types of support on different platforms |
---|
| | | +case $host_os in |
---|
| | | + solaris*) |
---|
| | | + AC_CHECK_LIB([umem], [umem_alloc], |
---|
| | | + [malloc_debug_env='LD_PRELOAD=libumem.so UMEM_DEBUG=default']) |
---|
| | | + ;; |
---|
| | | + *-gnu*) # GNU libc - Value is used as a single byte bit pattern, |
---|
| | | + # both directly and inverted, so should not be 0 or 255. |
---|
| | | + malloc_debug_env='MALLOC_PERTURB_=15' |
---|
| | | + ;; |
---|
| | | + darwin*) |
---|
| | | + malloc_debug_env='MallocPreScribble=1 MallocScribble=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib' |
---|
| | | + ;; |
---|
| | | + *bsd*) |
---|
| | | + malloc_debug_env='MallocPreScribble=1 MallocScribble=1' |
---|
| | | + ;; |
---|
| | | +esac |
---|
| | | + |
---|
| | | +# User supplied flags override default flags |
---|
| | | +if test "x$XORG_MALLOC_DEBUG_ENV" != "x"; then |
---|
| | | + malloc_debug_env="$XORG_MALLOC_DEBUG_ENV" |
---|
| | | +fi |
---|
| | | + |
---|
| | | +AC_SUBST([XORG_MALLOC_DEBUG_ENV],[$malloc_debug_env]) |
---|
| | | +]) # XORG_WITH_LINT |
---|
| | | + |
---|
| # XORG_CHECK_MALLOC_ZERO | | # XORG_CHECK_MALLOC_ZERO |
---|
| # ---------------------- | | # ---------------------- |
---|
| # Minimum version: 1.0.0 | | # Minimum version: 1.0.0 |
---|
@@ -1889,18 +2305,16 @@ |
| | | |
---|
| AC_MSG_CHECKING([whether malloc(0) returns NULL]) | | AC_MSG_CHECKING([whether malloc(0) returns NULL]) |
---|
| if test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then | | if test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then |
---|
| - AC_RUN_IFELSE([ | | + AC_RUN_IFELSE([AC_LANG_PROGRAM([ |
---|
| -char *malloc(); | | +#include <stdlib.h> |
---|
| -char *realloc(); | | +],[ |
---|
| -char *calloc(); | | |
---|
| -main() { | | |
---|
| char *m0, *r0, *c0, *p; | | char *m0, *r0, *c0, *p; |
---|
| m0 = malloc(0); | | m0 = malloc(0); |
---|
| p = malloc(10); | | p = malloc(10); |
---|
| r0 = realloc(p,0); | | r0 = realloc(p,0); |
---|
| - c0 = calloc(0); | | + c0 = calloc(0,10); |
---|
| - exit(m0 == 0 || r0 == 0 || c0 == 0 ? 0 : 1); | | + exit((m0 == 0 || r0 == 0 || c0 == 0) ? 0 : 1); |
---|
| -}], | | +])], |
---|
| [MALLOC_ZERO_RETURNS_NULL=yes], | | [MALLOC_ZERO_RETURNS_NULL=yes], |
---|
| [MALLOC_ZERO_RETURNS_NULL=no], | | [MALLOC_ZERO_RETURNS_NULL=no], |
---|
| [MALLOC_ZERO_RETURNS_NULL=yes]) | | [MALLOC_ZERO_RETURNS_NULL=yes]) |
---|
@@ -2026,59 +2440,300 @@ |
| | | |
---|
| ]) # XORG_LINT_LIBRARY | | ]) # XORG_LINT_LIBRARY |
---|
| | | |
---|
| | | +# XORG_COMPILER_BRAND |
---|
| | | +# ------------------- |
---|
| | | +# Minimum version: 1.14.0 |
---|
| | | +# |
---|
| | | +# Checks for various brands of compilers and sets flags as appropriate: |
---|
| | | +# GNU gcc - relies on AC_PROG_CC (via AC_PROG_CC_C99) to set GCC to "yes" |
---|
| | | +# GNU g++ - relies on AC_PROG_CXX to set GXX to "yes" |
---|
| | | +# clang compiler - sets CLANGCC to "yes" |
---|
| | | +# Intel compiler - sets INTELCC to "yes" |
---|
| | | +# Sun/Oracle Solaris Studio cc - sets SUNCC to "yes" |
---|
| | | +# |
---|
| | | +AC_DEFUN([XORG_COMPILER_BRAND], [ |
---|
| | | +AC_LANG_CASE( |
---|
| | | + [C], [ |
---|
| | | + AC_REQUIRE([AC_PROG_CC_C99]) |
---|
| | | + ], |
---|
| | | + [C++], [ |
---|
| | | + AC_REQUIRE([AC_PROG_CXX]) |
---|
| | | + ] |
---|
| | | +) |
---|
| | | +AC_CHECK_DECL([__clang__], [CLANGCC="yes"], [CLANGCC="no"]) |
---|
| | | +AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"]) |
---|
| | | +AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) |
---|
| | | +]) # XORG_COMPILER_BRAND |
---|
| | | + |
---|
| | | +# XORG_TESTSET_CFLAG(<variable>, <flag>, [<alternative flag>, ...]) |
---|
| | | +# --------------- |
---|
| | | +# Minimum version: 1.16.0 |
---|
| | | +# |
---|
| | | +# Test if the compiler works when passed the given flag as a command line argument. |
---|
| | | +# If it succeeds, the flag is appeneded to the given variable. If not, it tries the |
---|
| | | +# next flag in the list until there are no more options. |
---|
| | | +# |
---|
| | | +# Note that this does not guarantee that the compiler supports the flag as some |
---|
| | | +# compilers will simply ignore arguments that they do not understand, but we do |
---|
| | | +# attempt to weed out false positives by using -Werror=unknown-warning-option and |
---|
| | | +# -Werror=unused-command-line-argument |
---|
| | | +# |
---|
| | | +AC_DEFUN([XORG_TESTSET_CFLAG], [ |
---|
| | | +m4_if([$#], 0, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) |
---|
| | | +m4_if([$#], 1, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) |
---|
| | | + |
---|
| | | +AC_LANG_COMPILER_REQUIRE |
---|
| | | + |
---|
| | | +AC_LANG_CASE( |
---|
| | | + [C], [ |
---|
| | | + AC_REQUIRE([AC_PROG_CC_C99]) |
---|
| | | + define([PREFIX], [C]) |
---|
| | | + define([CACHE_PREFIX], [cc]) |
---|
| | | + define([COMPILER], [$CC]) |
---|
| | | + ], |
---|
| | | + [C++], [ |
---|
| | | + define([PREFIX], [CXX]) |
---|
| | | + define([CACHE_PREFIX], [cxx]) |
---|
| | | + define([COMPILER], [$CXX]) |
---|
| | | + ] |
---|
| | | +) |
---|
| | | + |
---|
| | | +[xorg_testset_save_]PREFIX[FLAGS]="$PREFIX[FLAGS]" |
---|
| | | + |
---|
| | | +if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "x" ; then |
---|
| | | + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" |
---|
| | | + AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unknown-warning-option], |
---|
| | | + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option], |
---|
| | | + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], |
---|
| | | + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=yes], |
---|
| | | + [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=no])) |
---|
| | | + [xorg_testset_]CACHE_PREFIX[_unknown_warning_option]=$[xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option] |
---|
| | | + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" |
---|
| | | +fi |
---|
| | | + |
---|
| | | +if test "x$[xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]" = "x" ; then |
---|
| | | + if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "xyes" ; then |
---|
| | | + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" |
---|
| | | + fi |
---|
| | | + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" |
---|
| | | + AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unused-command-line-argument], |
---|
| | | + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument], |
---|
| | | + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], |
---|
| | | + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=yes], |
---|
| | | + [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=no])) |
---|
| | | + [xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]=$[xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument] |
---|
| | | + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" |
---|
| | | +fi |
---|
| | | + |
---|
| | | +found="no" |
---|
| | | +m4_foreach([flag], m4_cdr($@), [ |
---|
| | | + if test $found = "no" ; then |
---|
| | | + if test "x$xorg_testset_unknown_warning_option" = "xyes" ; then |
---|
| | | + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" |
---|
| | | + fi |
---|
| | | + |
---|
| | | + if test "x$xorg_testset_unused_command_line_argument" = "xyes" ; then |
---|
| | | + PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" |
---|
| | | + fi |
---|
| | | + |
---|
| | | + PREFIX[FLAGS]="$PREFIX[FLAGS] ]flag[" |
---|
| | | + |
---|
| | | +dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname |
---|
| | | + AC_MSG_CHECKING([if ]COMPILER[ supports]flag[]) |
---|
| | | + cacheid=AS_TR_SH([xorg_cv_]CACHE_PREFIX[_flag_]flag[]) |
---|
| | | + AC_CACHE_VAL($cacheid, |
---|
| | | + [AC_LINK_IFELSE([AC_LANG_PROGRAM([int i;])], |
---|
| | | + [eval $cacheid=yes], |
---|
| | | + [eval $cacheid=no])]) |
---|
| | | + |
---|
| | | + PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" |
---|
| | | + |
---|
| | | + eval supported=\$$cacheid |
---|
| | | + AC_MSG_RESULT([$supported]) |
---|
| | | + if test "$supported" = "yes" ; then |
---|
| | | + $1="$$1 ]flag[" |
---|
| | | + found="yes" |
---|
| | | + fi |
---|
| | | + fi |
---|
| | | +]) |
---|
| | | +]) # XORG_TESTSET_CFLAG |
---|
| | | + |
---|
| | | +# XORG_COMPILER_FLAGS |
---|
| | | +# --------------- |
---|
| | | +# Minimum version: 1.16.0 |
---|
| | | +# |
---|
| | | +# Defines BASE_CFLAGS or BASE_CXXFLAGS to contain a set of command line |
---|
| | | +# arguments supported by the selected compiler which do NOT alter the generated |
---|
| | | +# code. These arguments will cause the compiler to print various warnings |
---|
| | | +# during compilation AND turn a conservative set of warnings into errors. |
---|
| | | +# |
---|
| | | +# The set of flags supported by BASE_CFLAGS and BASE_CXXFLAGS will grow in |
---|
| | | +# future versions of util-macros as options are added to new compilers. |
---|
| | | +# |
---|
| | | +AC_DEFUN([XORG_COMPILER_FLAGS], [ |
---|
| | | +AC_REQUIRE([XORG_COMPILER_BRAND]) |
---|
| | | + |
---|
| | | +AC_ARG_ENABLE(selective-werror, |
---|
| | | + AS_HELP_STRING([--disable-selective-werror], |
---|
| | | + [Turn off selective compiler errors. (default: enabled)]), |
---|
| | | + [SELECTIVE_WERROR=$enableval], |
---|
| | | + [SELECTIVE_WERROR=yes]) |
---|
| | | + |
---|
| | | +AC_LANG_CASE( |
---|
| | | + [C], [ |
---|
| | | + define([PREFIX], [C]) |
---|
| | | + ], |
---|
| | | + [C++], [ |
---|
| | | + define([PREFIX], [CXX]) |
---|
| | | + ] |
---|
| | | +) |
---|
| | | +# -v is too short to test reliably with XORG_TESTSET_CFLAG |
---|
| | | +if test "x$SUNCC" = "xyes"; then |
---|
| | | + [BASE_]PREFIX[FLAGS]="-v" |
---|
| | | +else |
---|
| | | + [BASE_]PREFIX[FLAGS]="" |
---|
| | | +fi |
---|
| | | + |
---|
| | | +# This chunk of warnings were those that existed in the legacy CWARNFLAGS |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wall]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-arith]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-declarations]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wformat=2], [-Wformat]) |
---|
| | | + |
---|
| | | +AC_LANG_CASE( |
---|
| | | + [C], [ |
---|
| | | + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wstrict-prototypes]) |
---|
| | | + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes]) |
---|
| | | + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs]) |
---|
| | | + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast]) |
---|
| | | + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition]) |
---|
| | | + XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wdeclaration-after-statement]) |
---|
| | | + ] |
---|
| | | +) |
---|
| | | + |
---|
| | | +# This chunk adds additional warnings that could catch undesired effects. |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls]) |
---|
| | | + |
---|
| | | +# These are currently disabled because they are noisy. They will be enabled |
---|
| | | +# in the future once the codebase is sufficiently modernized to silence |
---|
| | | +# them. For now, I don't want them to drown out the other warnings. |
---|
| | | +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op]) |
---|
| | | +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) |
---|
| | | +# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) |
---|
| | | + |
---|
| | | +# Turn some warnings into errors, so we don't accidently get successful builds |
---|
| | | +# when there are problems that should be fixed. |
---|
| | | + |
---|
| | | +if test "x$SELECTIVE_WERROR" = "xyes" ; then |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=nonnull]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=init-self]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=main]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=missing-braces]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=sequence-point]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=trigraphs]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=array-bounds]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=write-strings]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=address]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=pointer-to-int-cast]) # Also -errwarn=E_BAD_PTR_INT_COMBINATION |
---|
| | | +else |
---|
| | | +AC_MSG_WARN([You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wimplicit]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnonnull]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Winit-self]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmain]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-braces]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wsequence-point]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wreturn-type]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wtrigraphs]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Warray-bounds]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wwrite-strings]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Waddress]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wint-to-pointer-cast]) |
---|
| | | +XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-to-int-cast]) |
---|
| | | +fi |
---|
| | | + |
---|
| | | +AC_SUBST([BASE_]PREFIX[FLAGS]) |
---|
| | | +]) # XORG_COMPILER_FLAGS |
---|
| | | + |
---|
| # XORG_CWARNFLAGS | | # XORG_CWARNFLAGS |
---|
| # --------------- | | # --------------- |
---|
| # Minimum version: 1.2.0 | | # Minimum version: 1.2.0 |
---|
| | | +# Deprecated since: 1.16.0 (Use XORG_COMPILER_FLAGS instead) |
---|
| # | | # |
---|
| # Defines CWARNFLAGS to enable C compiler warnings. | | # Defines CWARNFLAGS to enable C compiler warnings. |
---|
| # | | # |
---|
| | | +# This function is deprecated because it defines -fno-strict-aliasing |
---|
| | | +# which alters the code generated by the compiler. If -fno-strict-aliasing |
---|
| | | +# is needed, then it should be added explicitly in the module when |
---|
| | | +# it is updated to use BASE_CFLAGS. |
---|
| | | +# |
---|
| AC_DEFUN([XORG_CWARNFLAGS], [ | | AC_DEFUN([XORG_CWARNFLAGS], [ |
---|
| -AC_REQUIRE([AC_PROG_CC_C99]) | | +AC_REQUIRE([XORG_COMPILER_FLAGS]) |
---|
| -if test "x$GCC" = xyes ; then | | +AC_REQUIRE([XORG_COMPILER_BRAND]) |
---|
| - CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ | | +AC_LANG_CASE( |
---|
| --Wmissing-declarations -Wnested-externs -fno-strict-aliasing \ | | + [C], [ |
---|
| --Wbad-function-cast -Wformat=2" | | + CWARNFLAGS="$BASE_CFLAGS" |
---|
| - case `$CC -dumpversion` in | | + if test "x$GCC" = xyes ; then |
---|
| - 3.4.* | 4.*) | | + CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" |
---|
| - CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement" | | + fi |
---|
| - ;; | | + AC_SUBST(CWARNFLAGS) |
---|
| - esac | | + ] |
---|
| -else | | +) |
---|
| - AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) | | |
---|
| - if test "x$SUNCC" = "xyes"; then | | |
---|
| - CWARNFLAGS="-v" | | |
---|
| - fi | | |
---|
| -fi | | |
---|
| -AC_SUBST(CWARNFLAGS) | | |
---|
| ]) # XORG_CWARNFLAGS | | ]) # XORG_CWARNFLAGS |
---|
| | | |
---|
| # XORG_STRICT_OPTION | | # XORG_STRICT_OPTION |
---|
| # ----------------------- | | # ----------------------- |
---|
| # Minimum version: 1.3.0 | | # Minimum version: 1.3.0 |
---|
| # | | # |
---|
| -# Add configure option to enable strict compilation | | +# Add configure option to enable strict compilation flags, such as treating |
---|
| | | +# warnings as fatal errors. |
---|
| | | +# If --enable-strict-compilation is passed to configure, adds strict flags to |
---|
| | | +# $BASE_CFLAGS or $BASE_CXXFLAGS and the deprecated $CWARNFLAGS. |
---|
| | | +# |
---|
| | | +# Starting in 1.14.0 also exports $STRICT_CFLAGS for use in other tests or |
---|
| | | +# when strict compilation is unconditionally desired. |
---|
| AC_DEFUN([XORG_STRICT_OPTION], [ | | AC_DEFUN([XORG_STRICT_OPTION], [ |
---|
| -# If the module's configure.ac calls AC_PROG_CC later on, CC gets set to C89 | | |
---|
| -AC_REQUIRE([AC_PROG_CC_C99]) | | |
---|
| AC_REQUIRE([XORG_CWARNFLAGS]) | | AC_REQUIRE([XORG_CWARNFLAGS]) |
---|
| | | +AC_REQUIRE([XORG_COMPILER_FLAGS]) |
---|
| | | |
---|
| AC_ARG_ENABLE(strict-compilation, | | AC_ARG_ENABLE(strict-compilation, |
---|
| AS_HELP_STRING([--enable-strict-compilation], | | AS_HELP_STRING([--enable-strict-compilation], |
---|
| [Enable all warnings from compiler and make them errors (default: disabled)]), | | [Enable all warnings from compiler and make them errors (default: disabled)]), |
---|
| [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no]) | | [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no]) |
---|
| | | + |
---|
| | | +AC_LANG_CASE( |
---|
| | | + [C], [ |
---|
| | | + define([PREFIX], [C]) |
---|
| | | + ], |
---|
| | | + [C++], [ |
---|
| | | + define([PREFIX], [CXX]) |
---|
| | | + ] |
---|
| | | +) |
---|
| | | + |
---|
| | | +[STRICT_]PREFIX[FLAGS]="" |
---|
| | | +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-pedantic]) |
---|
| | | +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror], [-errwarn]) |
---|
| | | + |
---|
| | | +# Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not |
---|
| | | +# activate it with -Werror, so we add it here explicitly. |
---|
| | | +XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror=attributes]) |
---|
| | | + |
---|
| if test "x$STRICT_COMPILE" = "xyes"; then | | if test "x$STRICT_COMPILE" = "xyes"; then |
---|
| - AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) | | + [BASE_]PREFIX[FLAGS]="$[BASE_]PREFIX[FLAGS] $[STRICT_]PREFIX[FLAGS]" |
---|
| - AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"]) | | + AC_LANG_CASE([C], [CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"]) |
---|
| - if test "x$GCC" = xyes ; then | | |
---|
| - STRICT_CFLAGS="-pedantic -Werror" | | |
---|
| - elif test "x$SUNCC" = "xyes"; then | | |
---|
| - STRICT_CFLAGS="-errwarn" | | |
---|
| - elif test "x$INTELCC" = "xyes"; then | | |
---|
| - STRICT_CFLAGS="-Werror" | | |
---|
| - fi | | |
---|
| fi | | fi |
---|
| -CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS" | | +AC_SUBST([STRICT_]PREFIX[FLAGS]) |
---|
| -AC_SUBST([CWARNFLAGS]) | | +AC_SUBST([BASE_]PREFIX[FLAGS]) |
---|
| | | +AC_LANG_CASE([C], AC_SUBST([CWARNFLAGS])) |
---|
| ]) # XORG_STRICT_OPTION | | ]) # XORG_STRICT_OPTION |
---|
| | | |
---|
| # XORG_DEFAULT_OPTIONS | | # XORG_DEFAULT_OPTIONS |
---|
@@ -2089,6 +2744,7 @@ |
| # | | # |
---|
| AC_DEFUN([XORG_DEFAULT_OPTIONS], [ | | AC_DEFUN([XORG_DEFAULT_OPTIONS], [ |
---|
| AC_REQUIRE([AC_PROG_INSTALL]) | | AC_REQUIRE([AC_PROG_INSTALL]) |
---|
| | | +XORG_COMPILER_FLAGS |
---|
| XORG_CWARNFLAGS | | XORG_CWARNFLAGS |
---|
| XORG_STRICT_OPTION | | XORG_STRICT_OPTION |
---|
| XORG_RELEASE_VERSION | | XORG_RELEASE_VERSION |
---|