xorg-macros.m4.in revision c1197e68
1ffab5952Smrgdnl @configure_input@ 2ffab5952Smrgdnl 3ffab5952Smrgdnl Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. 443c16309Smrgdnl 5ffab5952Smrgdnl Permission is hereby granted, free of charge, to any person obtaining a 6ffab5952Smrgdnl copy of this software and associated documentation files (the "Software"), 7ffab5952Smrgdnl to deal in the Software without restriction, including without limitation 8ffab5952Smrgdnl the rights to use, copy, modify, merge, publish, distribute, sublicense, 9ffab5952Smrgdnl and/or sell copies of the Software, and to permit persons to whom the 10ffab5952Smrgdnl Software is furnished to do so, subject to the following conditions: 11ffab5952Smrgdnl 12ffab5952Smrgdnl The above copyright notice and this permission notice (including the next 13ffab5952Smrgdnl paragraph) shall be included in all copies or substantial portions of the 14ffab5952Smrgdnl Software. 15ffab5952Smrgdnl 16ffab5952Smrgdnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17ffab5952Smrgdnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18ffab5952Smrgdnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19ffab5952Smrgdnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20ffab5952Smrgdnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21ffab5952Smrgdnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22ffab5952Smrgdnl DEALINGS IN THE SOFTWARE. 23ffab5952Smrg 24ffab5952Smrg# XORG_MACROS_VERSION(required-version) 25ffab5952Smrg# ------------------------------------- 26ffab5952Smrg# Minimum version: 1.1.0 27ffab5952Smrg# 28ffab5952Smrg# If you're using a macro added in Version 1.1 or newer, include this in 29ffab5952Smrg# your configure.ac with the minimum required version, such as: 30ffab5952Smrg# XORG_MACROS_VERSION(1.1) 31ffab5952Smrg# 32ffab5952Smrg# To ensure that this macro is defined, also add: 33ffab5952Smrg# m4_ifndef([XORG_MACROS_VERSION], 34ffab5952Smrg# [m4_fatal([must install xorg-macros 1.1 or later before running autoconf/autogen])]) 35ffab5952Smrg# 36ffab5952Smrg# 3743c16309Smrg# See the "minimum version" comment for each macro you use to see what 38ffab5952Smrg# version you require. 39ffab5952Smrgm4_defun([XORG_MACROS_VERSION],[ 40ffab5952Smrgm4_define([vers_have], [@VERSION@]) 41ffab5952Smrgm4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.]))) 42ffab5952Smrgm4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.]))) 43ffab5952Smrgm4_if(m4_cmp(maj_have, maj_needed), 0,, 44ffab5952Smrg [m4_fatal([xorg-macros major version ]maj_needed[ is required but ]vers_have[ found])]) 45ffab5952Smrgm4_if(m4_version_compare(vers_have, [$1]), -1, 46ffab5952Smrg [m4_fatal([xorg-macros version $1 or higher is required but ]vers_have[ found])]) 47ffab5952Smrgm4_undefine([vers_have]) 48ffab5952Smrgm4_undefine([maj_have]) 49ffab5952Smrgm4_undefine([maj_needed]) 50ffab5952Smrg]) # XORG_MACROS_VERSION 51ffab5952Smrg 52ffab5952Smrg# XORG_PROG_RAWCPP() 53ffab5952Smrg# ------------------ 54ffab5952Smrg# Minimum version: 1.0.0 55ffab5952Smrg# 56ffab5952Smrg# Find cpp program and necessary flags for use in pre-processing text files 57ffab5952Smrg# such as man pages and config files 58ffab5952SmrgAC_DEFUN([XORG_PROG_RAWCPP],[ 59ffab5952SmrgAC_REQUIRE([AC_PROG_CPP]) 6043c16309SmrgAC_PATH_PROGS(RAWCPP, [cpp], [${CPP}], 61ffab5952Smrg [$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/ccs/lib:/usr/ccs/lbin:/lib]) 62ffab5952Smrg 63ffab5952Smrg# Check for flag to avoid builtin definitions - assumes unix is predefined, 64ffab5952Smrg# which is not the best choice for supporting other OS'es, but covers most 65ffab5952Smrg# of the ones we need for now. 66ffab5952SmrgAC_MSG_CHECKING([if $RAWCPP requires -undef]) 6762044635SmrgAC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp redefine unix ?]])]) 68ffab5952Smrgif test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then 69ffab5952Smrg AC_MSG_RESULT([no]) 70ffab5952Smrgelse 71ffab5952Smrg if test `${RAWCPP} -undef < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then 72ffab5952Smrg RAWCPPFLAGS=-undef 73ffab5952Smrg AC_MSG_RESULT([yes]) 74ffab5952Smrg # under Cygwin unix is still defined even with -undef 75ffab5952Smrg elif test `${RAWCPP} -undef -ansi < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then 76ffab5952Smrg RAWCPPFLAGS="-undef -ansi" 77ffab5952Smrg AC_MSG_RESULT([yes, with -ansi]) 78ffab5952Smrg else 79ffab5952Smrg AC_MSG_ERROR([${RAWCPP} defines unix with or without -undef. I don't know what to do.]) 80ffab5952Smrg fi 81ffab5952Smrgfi 82ffab5952Smrgrm -f conftest.$ac_ext 83ffab5952Smrg 84ffab5952SmrgAC_MSG_CHECKING([if $RAWCPP requires -traditional]) 8562044635SmrgAC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp preserve "whitespace"?]])]) 86ffab5952Smrgif test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then 87ffab5952Smrg AC_MSG_RESULT([no]) 88ffab5952Smrgelse 89ffab5952Smrg if test `${RAWCPP} -traditional < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then 90c1197e68Smrg TRADITIONALCPPFLAGS="-traditional" 91ffab5952Smrg RAWCPPFLAGS="${RAWCPPFLAGS} -traditional" 92ffab5952Smrg AC_MSG_RESULT([yes]) 93ffab5952Smrg else 94ffab5952Smrg AC_MSG_ERROR([${RAWCPP} does not preserve whitespace with or without -traditional. I don't know what to do.]) 95ffab5952Smrg fi 96ffab5952Smrgfi 97ffab5952Smrgrm -f conftest.$ac_ext 98ffab5952SmrgAC_SUBST(RAWCPPFLAGS) 99c1197e68SmrgAC_SUBST(TRADITIONALCPPFLAGS) 100ffab5952Smrg]) # XORG_PROG_RAWCPP 101ffab5952Smrg 102ffab5952Smrg# XORG_MANPAGE_SECTIONS() 103ffab5952Smrg# ----------------------- 104ffab5952Smrg# Minimum version: 1.0.0 105ffab5952Smrg# 106ffab5952Smrg# Determine which sections man pages go in for the different man page types 107ffab5952Smrg# on this OS - replaces *ManSuffix settings in old Imake *.cf per-os files. 108ffab5952Smrg# Not sure if there's any better way than just hardcoding by OS name. 109ffab5952Smrg# Override default settings by setting environment variables 110ffab5952Smrg# Added MAN_SUBSTS in version 1.8 111ffab5952Smrg# Added AC_PROG_SED in version 1.8 112ffab5952Smrg 113ffab5952SmrgAC_DEFUN([XORG_MANPAGE_SECTIONS],[ 114ffab5952SmrgAC_REQUIRE([AC_CANONICAL_HOST]) 115ffab5952SmrgAC_REQUIRE([AC_PROG_SED]) 116ffab5952Smrg 117ffab5952Smrgif test x$APP_MAN_SUFFIX = x ; then 118ffab5952Smrg APP_MAN_SUFFIX=1 119ffab5952Smrgfi 120ffab5952Smrgif test x$APP_MAN_DIR = x ; then 121ffab5952Smrg APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)' 122ffab5952Smrgfi 123ffab5952Smrg 124ffab5952Smrgif test x$LIB_MAN_SUFFIX = x ; then 125ffab5952Smrg LIB_MAN_SUFFIX=3 126ffab5952Smrgfi 127ffab5952Smrgif test x$LIB_MAN_DIR = x ; then 128ffab5952Smrg LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)' 129ffab5952Smrgfi 130ffab5952Smrg 131ffab5952Smrgif test x$FILE_MAN_SUFFIX = x ; then 132ffab5952Smrg case $host_os in 133ffab5952Smrg solaris*) FILE_MAN_SUFFIX=4 ;; 134ffab5952Smrg *) FILE_MAN_SUFFIX=5 ;; 135ffab5952Smrg esac 136ffab5952Smrgfi 137ffab5952Smrgif test x$FILE_MAN_DIR = x ; then 138ffab5952Smrg FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)' 139ffab5952Smrgfi 140ffab5952Smrg 141ffab5952Smrgif test x$MISC_MAN_SUFFIX = x ; then 142ffab5952Smrg case $host_os in 143ffab5952Smrg solaris*) MISC_MAN_SUFFIX=5 ;; 144ffab5952Smrg *) MISC_MAN_SUFFIX=7 ;; 145ffab5952Smrg esac 146ffab5952Smrgfi 147ffab5952Smrgif test x$MISC_MAN_DIR = x ; then 148ffab5952Smrg MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)' 149ffab5952Smrgfi 150ffab5952Smrg 151ffab5952Smrgif test x$DRIVER_MAN_SUFFIX = x ; then 152ffab5952Smrg case $host_os in 153ffab5952Smrg solaris*) DRIVER_MAN_SUFFIX=7 ;; 154ffab5952Smrg *) DRIVER_MAN_SUFFIX=4 ;; 155ffab5952Smrg esac 156ffab5952Smrgfi 157ffab5952Smrgif test x$DRIVER_MAN_DIR = x ; then 158ffab5952Smrg DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)' 159ffab5952Smrgfi 160ffab5952Smrg 161ffab5952Smrgif test x$ADMIN_MAN_SUFFIX = x ; then 162ffab5952Smrg case $host_os in 163ffab5952Smrg solaris*) ADMIN_MAN_SUFFIX=1m ;; 164ffab5952Smrg *) ADMIN_MAN_SUFFIX=8 ;; 165ffab5952Smrg esac 166ffab5952Smrgfi 167ffab5952Smrgif test x$ADMIN_MAN_DIR = x ; then 168ffab5952Smrg ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)' 169ffab5952Smrgfi 170ffab5952Smrg 171ffab5952Smrg 172ffab5952SmrgAC_SUBST([APP_MAN_SUFFIX]) 173ffab5952SmrgAC_SUBST([LIB_MAN_SUFFIX]) 174ffab5952SmrgAC_SUBST([FILE_MAN_SUFFIX]) 175ffab5952SmrgAC_SUBST([MISC_MAN_SUFFIX]) 176ffab5952SmrgAC_SUBST([DRIVER_MAN_SUFFIX]) 177ffab5952SmrgAC_SUBST([ADMIN_MAN_SUFFIX]) 178ffab5952SmrgAC_SUBST([APP_MAN_DIR]) 179ffab5952SmrgAC_SUBST([LIB_MAN_DIR]) 180ffab5952SmrgAC_SUBST([FILE_MAN_DIR]) 181ffab5952SmrgAC_SUBST([MISC_MAN_DIR]) 182ffab5952SmrgAC_SUBST([DRIVER_MAN_DIR]) 183ffab5952SmrgAC_SUBST([ADMIN_MAN_DIR]) 184ffab5952Smrg 185ffab5952SmrgXORG_MAN_PAGE="X Version 11" 186ffab5952SmrgAC_SUBST([XORG_MAN_PAGE]) 187ffab5952SmrgMAN_SUBSTS="\ 188ffab5952Smrg -e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ 189ffab5952Smrg -e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ 190ffab5952Smrg -e 's|__xservername__|Xorg|g' \ 191ffab5952Smrg -e 's|__xconfigfile__|xorg.conf|g' \ 192ffab5952Smrg -e 's|__projectroot__|\$(prefix)|g' \ 193ffab5952Smrg -e 's|__apploaddir__|\$(appdefaultdir)|g' \ 194ffab5952Smrg -e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \ 195ffab5952Smrg -e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \ 196ffab5952Smrg -e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \ 197ffab5952Smrg -e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \ 198ffab5952Smrg -e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \ 199ffab5952Smrg -e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'" 200ffab5952SmrgAC_SUBST([MAN_SUBSTS]) 201ffab5952Smrg 202ffab5952Smrg]) # XORG_MANPAGE_SECTIONS 203ffab5952Smrg 204ffab5952Smrg# XORG_CHECK_SGML_DOCTOOLS([MIN-VERSION]) 205ffab5952Smrg# ------------------------ 206ffab5952Smrg# Minimum version: 1.7.0 207ffab5952Smrg# 208ffab5952Smrg# Defines the variable XORG_SGML_PATH containing the location of X11/defs.ent 209ffab5952Smrg# provided by xorg-sgml-doctools, if installed. 210ffab5952SmrgAC_DEFUN([XORG_CHECK_SGML_DOCTOOLS],[ 211ffab5952SmrgAC_MSG_CHECKING([for X.Org SGML entities m4_ifval([$1],[>= $1])]) 212ffab5952SmrgXORG_SGML_PATH= 213ffab5952SmrgPKG_CHECK_EXISTS([xorg-sgml-doctools m4_ifval([$1],[>= $1])], 214ffab5952Smrg [XORG_SGML_PATH=`$PKG_CONFIG --variable=sgmlrootdir xorg-sgml-doctools`], 215ffab5952Smrg [m4_ifval([$1],[:], 216ffab5952Smrg [if test x"$cross_compiling" != x"yes" ; then 217ffab5952Smrg AC_CHECK_FILE([$prefix/share/sgml/X11/defs.ent], 218ffab5952Smrg [XORG_SGML_PATH=$prefix/share/sgml]) 219ffab5952Smrg fi]) 220ffab5952Smrg ]) 221ffab5952Smrg 222ffab5952Smrg# Define variables STYLESHEET_SRCDIR and XSL_STYLESHEET containing 223ffab5952Smrg# the path and the name of the doc stylesheet 224ffab5952Smrgif test "x$XORG_SGML_PATH" != "x" ; then 225ffab5952Smrg AC_MSG_RESULT([$XORG_SGML_PATH]) 226ffab5952Smrg STYLESHEET_SRCDIR=$XORG_SGML_PATH/X11 227ffab5952Smrg XSL_STYLESHEET=$STYLESHEET_SRCDIR/xorg.xsl 228ffab5952Smrgelse 229ffab5952Smrg AC_MSG_RESULT([no]) 230ffab5952Smrgfi 231ffab5952Smrg 232ffab5952SmrgAC_SUBST(XORG_SGML_PATH) 233ffab5952SmrgAC_SUBST(STYLESHEET_SRCDIR) 234ffab5952SmrgAC_SUBST(XSL_STYLESHEET) 235ffab5952SmrgAM_CONDITIONAL([HAVE_STYLESHEETS], [test "x$XSL_STYLESHEET" != "x"]) 236ffab5952Smrg]) # XORG_CHECK_SGML_DOCTOOLS 237ffab5952Smrg 238ffab5952Smrg# XORG_CHECK_LINUXDOC 239ffab5952Smrg# ------------------- 240ffab5952Smrg# Minimum version: 1.0.0 241ffab5952Smrg# 242ffab5952Smrg# Defines the variable MAKE_TEXT if the necessary tools and 243ffab5952Smrg# files are found. $(MAKE_TEXT) blah.sgml will then produce blah.txt. 244ffab5952Smrg# Whether or not the necessary tools and files are found can be checked 245ffab5952Smrg# with the AM_CONDITIONAL "BUILD_LINUXDOC" 246ffab5952SmrgAC_DEFUN([XORG_CHECK_LINUXDOC],[ 247ffab5952SmrgAC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS]) 248ffab5952SmrgAC_REQUIRE([XORG_WITH_PS2PDF]) 249ffab5952Smrg 250ffab5952SmrgAC_PATH_PROG(LINUXDOC, linuxdoc) 251ffab5952Smrg 252ffab5952SmrgAC_MSG_CHECKING([whether to build documentation]) 253ffab5952Smrg 254ffab5952Smrgif test x$XORG_SGML_PATH != x && test x$LINUXDOC != x ; then 255ffab5952Smrg BUILDDOC=yes 256ffab5952Smrgelse 257ffab5952Smrg BUILDDOC=no 258ffab5952Smrgfi 259ffab5952Smrg 260ffab5952SmrgAM_CONDITIONAL(BUILD_LINUXDOC, [test x$BUILDDOC = xyes]) 261ffab5952Smrg 262ffab5952SmrgAC_MSG_RESULT([$BUILDDOC]) 263ffab5952Smrg 264ffab5952SmrgAC_MSG_CHECKING([whether to build pdf documentation]) 265ffab5952Smrg 266ffab5952Smrgif test x$have_ps2pdf != xno && test x$BUILD_PDFDOC != xno; then 267ffab5952Smrg BUILDPDFDOC=yes 268ffab5952Smrgelse 269ffab5952Smrg BUILDPDFDOC=no 270ffab5952Smrgfi 271ffab5952Smrg 272ffab5952SmrgAM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes]) 273ffab5952Smrg 274ffab5952SmrgAC_MSG_RESULT([$BUILDPDFDOC]) 275ffab5952Smrg 276ffab5952SmrgMAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH GROFF_NO_SGR=y $LINUXDOC -B txt -f" 277ffab5952SmrgMAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B latex --papersize=letter --output=ps" 278ffab5952SmrgMAKE_PDF="$PS2PDF" 279ffab5952SmrgMAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B html --split=0" 280ffab5952Smrg 281ffab5952SmrgAC_SUBST(MAKE_TEXT) 282ffab5952SmrgAC_SUBST(MAKE_PS) 283ffab5952SmrgAC_SUBST(MAKE_PDF) 284ffab5952SmrgAC_SUBST(MAKE_HTML) 285ffab5952Smrg]) # XORG_CHECK_LINUXDOC 286ffab5952Smrg 287ffab5952Smrg# XORG_CHECK_DOCBOOK 288ffab5952Smrg# ------------------- 289ffab5952Smrg# Minimum version: 1.0.0 290ffab5952Smrg# 291ffab5952Smrg# Checks for the ability to build output formats from SGML DocBook source. 292ffab5952Smrg# For XXX in {TXT, PDF, PS, HTML}, the AM_CONDITIONAL "BUILD_XXXDOC" 293ffab5952Smrg# indicates whether the necessary tools and files are found and, if set, 294ffab5952Smrg# $(MAKE_XXX) blah.sgml will produce blah.xxx. 295ffab5952SmrgAC_DEFUN([XORG_CHECK_DOCBOOK],[ 296ffab5952SmrgAC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS]) 297ffab5952Smrg 298ffab5952SmrgBUILDTXTDOC=no 299ffab5952SmrgBUILDPDFDOC=no 300ffab5952SmrgBUILDPSDOC=no 301ffab5952SmrgBUILDHTMLDOC=no 302ffab5952Smrg 303ffab5952SmrgAC_PATH_PROG(DOCBOOKPS, docbook2ps) 304ffab5952SmrgAC_PATH_PROG(DOCBOOKPDF, docbook2pdf) 305ffab5952SmrgAC_PATH_PROG(DOCBOOKHTML, docbook2html) 306ffab5952SmrgAC_PATH_PROG(DOCBOOKTXT, docbook2txt) 307ffab5952Smrg 308ffab5952SmrgAC_MSG_CHECKING([whether to build text documentation]) 309ffab5952Smrgif test x$XORG_SGML_PATH != x && test x$DOCBOOKTXT != x && 310ffab5952Smrg test x$BUILD_TXTDOC != xno; then 311ffab5952Smrg BUILDTXTDOC=yes 312ffab5952Smrgfi 313ffab5952SmrgAM_CONDITIONAL(BUILD_TXTDOC, [test x$BUILDTXTDOC = xyes]) 314ffab5952SmrgAC_MSG_RESULT([$BUILDTXTDOC]) 315ffab5952Smrg 316ffab5952SmrgAC_MSG_CHECKING([whether to build PDF documentation]) 317ffab5952Smrgif test x$XORG_SGML_PATH != x && test x$DOCBOOKPDF != x && 318ffab5952Smrg test x$BUILD_PDFDOC != xno; then 319ffab5952Smrg BUILDPDFDOC=yes 320ffab5952Smrgfi 321ffab5952SmrgAM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes]) 322ffab5952SmrgAC_MSG_RESULT([$BUILDPDFDOC]) 323ffab5952Smrg 324ffab5952SmrgAC_MSG_CHECKING([whether to build PostScript documentation]) 325ffab5952Smrgif test x$XORG_SGML_PATH != x && test x$DOCBOOKPS != x && 326ffab5952Smrg test x$BUILD_PSDOC != xno; then 327ffab5952Smrg BUILDPSDOC=yes 328ffab5952Smrgfi 329ffab5952SmrgAM_CONDITIONAL(BUILD_PSDOC, [test x$BUILDPSDOC = xyes]) 330ffab5952SmrgAC_MSG_RESULT([$BUILDPSDOC]) 331ffab5952Smrg 332ffab5952SmrgAC_MSG_CHECKING([whether to build HTML documentation]) 333ffab5952Smrgif test x$XORG_SGML_PATH != x && test x$DOCBOOKHTML != x && 334ffab5952Smrg test x$BUILD_HTMLDOC != xno; then 335ffab5952Smrg BUILDHTMLDOC=yes 336ffab5952Smrgfi 337ffab5952SmrgAM_CONDITIONAL(BUILD_HTMLDOC, [test x$BUILDHTMLDOC = xyes]) 338ffab5952SmrgAC_MSG_RESULT([$BUILDHTMLDOC]) 339ffab5952Smrg 340ffab5952SmrgMAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKTXT" 341ffab5952SmrgMAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPS" 342ffab5952SmrgMAKE_PDF="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPDF" 343ffab5952SmrgMAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKHTML" 344ffab5952Smrg 345ffab5952SmrgAC_SUBST(MAKE_TEXT) 346ffab5952SmrgAC_SUBST(MAKE_PS) 347ffab5952SmrgAC_SUBST(MAKE_PDF) 348ffab5952SmrgAC_SUBST(MAKE_HTML) 349ffab5952Smrg]) # XORG_CHECK_DOCBOOK 350ffab5952Smrg 351ffab5952Smrg# XORG_WITH_XMLTO([MIN-VERSION], [DEFAULT]) 352ffab5952Smrg# ---------------- 353ffab5952Smrg# Minimum version: 1.5.0 354ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0 355ffab5952Smrg# 356ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes 357ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the 358ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with 359ffab5952Smrg# the --with-xmlto option, it allows maximum flexibilty in making decisions 360ffab5952Smrg# as whether or not to use the xmlto package. When DEFAULT is not specified, 361ffab5952Smrg# --with-xmlto assumes 'auto'. 362ffab5952Smrg# 363ffab5952Smrg# Interface to module: 364ffab5952Smrg# HAVE_XMLTO: used in makefiles to conditionally generate documentation 365ffab5952Smrg# XMLTO: returns the path of the xmlto program found 366ffab5952Smrg# returns the path set by the user in the environment 367ffab5952Smrg# --with-xmlto: 'yes' user instructs the module to use xmlto 368ffab5952Smrg# 'no' user instructs the module not to use xmlto 369ffab5952Smrg# 370ffab5952Smrg# Added in version 1.10.0 371ffab5952Smrg# HAVE_XMLTO_TEXT: used in makefiles to conditionally generate text documentation 372ffab5952Smrg# xmlto for text output requires either lynx, links, or w3m browsers 373ffab5952Smrg# 374ffab5952Smrg# If the user sets the value of XMLTO, AC_PATH_PROG skips testing the path. 375ffab5952Smrg# 376ffab5952SmrgAC_DEFUN([XORG_WITH_XMLTO],[ 377ffab5952SmrgAC_ARG_VAR([XMLTO], [Path to xmlto command]) 378ffab5952Smrgm4_define([_defopt], m4_default([$2], [auto])) 379ffab5952SmrgAC_ARG_WITH(xmlto, 380ffab5952Smrg AS_HELP_STRING([--with-xmlto], 381ffab5952Smrg [Use xmlto to regenerate documentation (default: ]_defopt[)]), 382ffab5952Smrg [use_xmlto=$withval], [use_xmlto=]_defopt) 383ffab5952Smrgm4_undefine([_defopt]) 384ffab5952Smrg 385ffab5952Smrgif test "x$use_xmlto" = x"auto"; then 386ffab5952Smrg AC_PATH_PROG([XMLTO], [xmlto]) 387ffab5952Smrg if test "x$XMLTO" = "x"; then 388ffab5952Smrg AC_MSG_WARN([xmlto not found - documentation targets will be skipped]) 389ffab5952Smrg have_xmlto=no 390ffab5952Smrg else 391ffab5952Smrg have_xmlto=yes 392ffab5952Smrg fi 393ffab5952Smrgelif test "x$use_xmlto" = x"yes" ; then 394ffab5952Smrg AC_PATH_PROG([XMLTO], [xmlto]) 395ffab5952Smrg if test "x$XMLTO" = "x"; then 396ffab5952Smrg AC_MSG_ERROR([--with-xmlto=yes specified but xmlto not found in PATH]) 397ffab5952Smrg fi 398ffab5952Smrg have_xmlto=yes 399ffab5952Smrgelif test "x$use_xmlto" = x"no" ; then 400ffab5952Smrg if test "x$XMLTO" != "x"; then 401ffab5952Smrg AC_MSG_WARN([ignoring XMLTO environment variable since --with-xmlto=no was specified]) 402ffab5952Smrg fi 403ffab5952Smrg have_xmlto=no 404ffab5952Smrgelse 405ffab5952Smrg AC_MSG_ERROR([--with-xmlto expects 'yes' or 'no']) 406ffab5952Smrgfi 407ffab5952Smrg 408ffab5952Smrg# Test for a minimum version of xmlto, if provided. 409ffab5952Smrgm4_ifval([$1], 410ffab5952Smrg[if test "$have_xmlto" = yes; then 411ffab5952Smrg # scrape the xmlto version 412ffab5952Smrg AC_MSG_CHECKING([the xmlto version]) 413ffab5952Smrg xmlto_version=`$XMLTO --version 2>/dev/null | cut -d' ' -f3` 414ffab5952Smrg AC_MSG_RESULT([$xmlto_version]) 415ffab5952Smrg AS_VERSION_COMPARE([$xmlto_version], [$1], 416ffab5952Smrg [if test "x$use_xmlto" = xauto; then 417ffab5952Smrg AC_MSG_WARN([xmlto version $xmlto_version found, but $1 needed]) 418ffab5952Smrg have_xmlto=no 419ffab5952Smrg else 420ffab5952Smrg AC_MSG_ERROR([xmlto version $xmlto_version found, but $1 needed]) 421ffab5952Smrg fi]) 422ffab5952Smrgfi]) 423ffab5952Smrg 424ffab5952Smrg# Test for the ability of xmlto to generate a text target 425ffab5952Smrghave_xmlto_text=no 426ffab5952Smrgcat > conftest.xml << "EOF" 427ffab5952SmrgEOF 428ffab5952SmrgAS_IF([test "$have_xmlto" = yes], 429ffab5952Smrg [AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1], 430ffab5952Smrg [have_xmlto_text=yes], 431ffab5952Smrg [AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])]) 432ffab5952Smrgrm -f conftest.xml 433ffab5952SmrgAM_CONDITIONAL([HAVE_XMLTO_TEXT], [test $have_xmlto_text = yes]) 434ffab5952SmrgAM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes]) 435ffab5952Smrg]) # XORG_WITH_XMLTO 436ffab5952Smrg 43762044635Smrg# XORG_WITH_XSLTPROC([MIN-VERSION], [DEFAULT]) 43862044635Smrg# -------------------------------------------- 43962044635Smrg# Minimum version: 1.12.0 44062044635Smrg# Minimum version for optional DEFAULT argument: 1.12.0 44162044635Smrg# 44262044635Smrg# XSLT (Extensible Stylesheet Language Transformations) is a declarative, 44362044635Smrg# XML-based language used for the transformation of XML documents. 44462044635Smrg# The xsltproc command line tool is for applying XSLT stylesheets to XML documents. 44562044635Smrg# It is used under the cover by xmlto to generate html files from DocBook/XML. 44662044635Smrg# The XSLT processor is often used as a standalone tool for transformations. 44762044635Smrg# It should not be assumed that this tool is used only to work with documnetation. 44862044635Smrg# When DEFAULT is not specified, --with-xsltproc assumes 'auto'. 44962044635Smrg# 45062044635Smrg# Interface to module: 45162044635Smrg# HAVE_XSLTPROC: used in makefiles to conditionally generate documentation 45262044635Smrg# XSLTPROC: returns the path of the xsltproc program found 45362044635Smrg# returns the path set by the user in the environment 45462044635Smrg# --with-xsltproc: 'yes' user instructs the module to use xsltproc 45562044635Smrg# 'no' user instructs the module not to use xsltproc 45662044635Smrg# have_xsltproc: returns yes if xsltproc found in PATH or no 45762044635Smrg# 45862044635Smrg# If the user sets the value of XSLTPROC, AC_PATH_PROG skips testing the path. 45962044635Smrg# 46062044635SmrgAC_DEFUN([XORG_WITH_XSLTPROC],[ 46162044635SmrgAC_ARG_VAR([XSLTPROC], [Path to xsltproc command]) 46262044635Smrg# Preserves the interface, should it be implemented later 46362044635Smrgm4_ifval([$1], [m4_warn([syntax], [Checking for xsltproc MIN-VERSION is not implemented])]) 46462044635Smrgm4_define([_defopt], m4_default([$2], [auto])) 46562044635SmrgAC_ARG_WITH(xsltproc, 46662044635Smrg AS_HELP_STRING([--with-xsltproc], 46762044635Smrg [Use xsltproc for the transformation of XML documents (default: ]_defopt[)]), 46862044635Smrg [use_xsltproc=$withval], [use_xsltproc=]_defopt) 46962044635Smrgm4_undefine([_defopt]) 47062044635Smrg 47162044635Smrgif test "x$use_xsltproc" = x"auto"; then 47262044635Smrg AC_PATH_PROG([XSLTPROC], [xsltproc]) 47362044635Smrg if test "x$XSLTPROC" = "x"; then 47462044635Smrg AC_MSG_WARN([xsltproc not found - cannot transform XML documents]) 47562044635Smrg have_xsltproc=no 47662044635Smrg else 47762044635Smrg have_xsltproc=yes 47862044635Smrg fi 47962044635Smrgelif test "x$use_xsltproc" = x"yes" ; then 48062044635Smrg AC_PATH_PROG([XSLTPROC], [xsltproc]) 48162044635Smrg if test "x$XSLTPROC" = "x"; then 48262044635Smrg AC_MSG_ERROR([--with-xsltproc=yes specified but xsltproc not found in PATH]) 48362044635Smrg fi 48462044635Smrg have_xsltproc=yes 48562044635Smrgelif test "x$use_xsltproc" = x"no" ; then 48662044635Smrg if test "x$XSLTPROC" != "x"; then 48762044635Smrg AC_MSG_WARN([ignoring XSLTPROC environment variable since --with-xsltproc=no was specified]) 48862044635Smrg fi 48962044635Smrg have_xsltproc=no 49062044635Smrgelse 49162044635Smrg AC_MSG_ERROR([--with-xsltproc expects 'yes' or 'no']) 49262044635Smrgfi 49362044635Smrg 49462044635SmrgAM_CONDITIONAL([HAVE_XSLTPROC], [test "$have_xsltproc" = yes]) 49562044635Smrg]) # XORG_WITH_XSLTPROC 49662044635Smrg 49762044635Smrg# XORG_WITH_PERL([MIN-VERSION], [DEFAULT]) 49862044635Smrg# ---------------------------------------- 49962044635Smrg# Minimum version: 1.15.0 50062044635Smrg# 50162044635Smrg# PERL (Practical Extraction and Report Language) is a language optimized for 50262044635Smrg# scanning arbitrary text files, extracting information from those text files, 50362044635Smrg# and printing reports based on that information. 50462044635Smrg# 50562044635Smrg# When DEFAULT is not specified, --with-perl assumes 'auto'. 50662044635Smrg# 50762044635Smrg# Interface to module: 50862044635Smrg# HAVE_PERL: used in makefiles to conditionally scan text files 50962044635Smrg# PERL: returns the path of the perl program found 51062044635Smrg# returns the path set by the user in the environment 51162044635Smrg# --with-perl: 'yes' user instructs the module to use perl 51262044635Smrg# 'no' user instructs the module not to use perl 51362044635Smrg# have_perl: returns yes if perl found in PATH or no 51462044635Smrg# 51562044635Smrg# If the user sets the value of PERL, AC_PATH_PROG skips testing the path. 51662044635Smrg# 51762044635SmrgAC_DEFUN([XORG_WITH_PERL],[ 51862044635SmrgAC_ARG_VAR([PERL], [Path to perl command]) 51962044635Smrg# Preserves the interface, should it be implemented later 52062044635Smrgm4_ifval([$1], [m4_warn([syntax], [Checking for perl MIN-VERSION is not implemented])]) 52162044635Smrgm4_define([_defopt], m4_default([$2], [auto])) 52262044635SmrgAC_ARG_WITH(perl, 52362044635Smrg AS_HELP_STRING([--with-perl], 52462044635Smrg [Use perl for extracting information from files (default: ]_defopt[)]), 52562044635Smrg [use_perl=$withval], [use_perl=]_defopt) 52662044635Smrgm4_undefine([_defopt]) 52762044635Smrg 52862044635Smrgif test "x$use_perl" = x"auto"; then 52962044635Smrg AC_PATH_PROG([PERL], [perl]) 53062044635Smrg if test "x$PERL" = "x"; then 53162044635Smrg AC_MSG_WARN([perl not found - cannot extract information and report]) 53262044635Smrg have_perl=no 53362044635Smrg else 53462044635Smrg have_perl=yes 53562044635Smrg fi 53662044635Smrgelif test "x$use_perl" = x"yes" ; then 53762044635Smrg AC_PATH_PROG([PERL], [perl]) 53862044635Smrg if test "x$PERL" = "x"; then 53962044635Smrg AC_MSG_ERROR([--with-perl=yes specified but perl not found in PATH]) 54062044635Smrg fi 54162044635Smrg have_perl=yes 54262044635Smrgelif test "x$use_perl" = x"no" ; then 54362044635Smrg if test "x$PERL" != "x"; then 54462044635Smrg AC_MSG_WARN([ignoring PERL environment variable since --with-perl=no was specified]) 54562044635Smrg fi 54662044635Smrg have_perl=no 54762044635Smrgelse 54862044635Smrg AC_MSG_ERROR([--with-perl expects 'yes' or 'no']) 54962044635Smrgfi 55062044635Smrg 55162044635SmrgAM_CONDITIONAL([HAVE_PERL], [test "$have_perl" = yes]) 55262044635Smrg]) # XORG_WITH_PERL 55362044635Smrg 554ffab5952Smrg# XORG_WITH_ASCIIDOC([MIN-VERSION], [DEFAULT]) 555ffab5952Smrg# ---------------- 556ffab5952Smrg# Minimum version: 1.5.0 557ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0 558ffab5952Smrg# 559ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes 560ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the 561ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with 562ffab5952Smrg# the --with-asciidoc option, it allows maximum flexibilty in making decisions 563ffab5952Smrg# as whether or not to use the asciidoc package. When DEFAULT is not specified, 564ffab5952Smrg# --with-asciidoc assumes 'auto'. 565ffab5952Smrg# 566ffab5952Smrg# Interface to module: 567ffab5952Smrg# HAVE_ASCIIDOC: used in makefiles to conditionally generate documentation 568ffab5952Smrg# ASCIIDOC: returns the path of the asciidoc program found 569ffab5952Smrg# returns the path set by the user in the environment 570ffab5952Smrg# --with-asciidoc: 'yes' user instructs the module to use asciidoc 571ffab5952Smrg# 'no' user instructs the module not to use asciidoc 572ffab5952Smrg# 573ffab5952Smrg# If the user sets the value of ASCIIDOC, AC_PATH_PROG skips testing the path. 574ffab5952Smrg# 575ffab5952SmrgAC_DEFUN([XORG_WITH_ASCIIDOC],[ 576ffab5952SmrgAC_ARG_VAR([ASCIIDOC], [Path to asciidoc command]) 577ffab5952Smrgm4_define([_defopt], m4_default([$2], [auto])) 578ffab5952SmrgAC_ARG_WITH(asciidoc, 579ffab5952Smrg AS_HELP_STRING([--with-asciidoc], 580ffab5952Smrg [Use asciidoc to regenerate documentation (default: ]_defopt[)]), 581ffab5952Smrg [use_asciidoc=$withval], [use_asciidoc=]_defopt) 582ffab5952Smrgm4_undefine([_defopt]) 583ffab5952Smrg 584ffab5952Smrgif test "x$use_asciidoc" = x"auto"; then 585ffab5952Smrg AC_PATH_PROG([ASCIIDOC], [asciidoc]) 586ffab5952Smrg if test "x$ASCIIDOC" = "x"; then 587ffab5952Smrg AC_MSG_WARN([asciidoc not found - documentation targets will be skipped]) 588ffab5952Smrg have_asciidoc=no 589ffab5952Smrg else 590ffab5952Smrg have_asciidoc=yes 591ffab5952Smrg fi 592ffab5952Smrgelif test "x$use_asciidoc" = x"yes" ; then 593ffab5952Smrg AC_PATH_PROG([ASCIIDOC], [asciidoc]) 594ffab5952Smrg if test "x$ASCIIDOC" = "x"; then 595ffab5952Smrg AC_MSG_ERROR([--with-asciidoc=yes specified but asciidoc not found in PATH]) 596ffab5952Smrg fi 597ffab5952Smrg have_asciidoc=yes 598ffab5952Smrgelif test "x$use_asciidoc" = x"no" ; then 599ffab5952Smrg if test "x$ASCIIDOC" != "x"; then 600ffab5952Smrg AC_MSG_WARN([ignoring ASCIIDOC environment variable since --with-asciidoc=no was specified]) 601ffab5952Smrg fi 602ffab5952Smrg have_asciidoc=no 603ffab5952Smrgelse 604ffab5952Smrg AC_MSG_ERROR([--with-asciidoc expects 'yes' or 'no']) 605ffab5952Smrgfi 606ffab5952Smrgm4_ifval([$1], 607ffab5952Smrg[if test "$have_asciidoc" = yes; then 608ffab5952Smrg # scrape the asciidoc version 609ffab5952Smrg AC_MSG_CHECKING([the asciidoc version]) 610ffab5952Smrg asciidoc_version=`$ASCIIDOC --version 2>/dev/null | cut -d' ' -f2` 611ffab5952Smrg AC_MSG_RESULT([$asciidoc_version]) 612ffab5952Smrg AS_VERSION_COMPARE([$asciidoc_version], [$1], 613ffab5952Smrg [if test "x$use_asciidoc" = xauto; then 614ffab5952Smrg AC_MSG_WARN([asciidoc version $asciidoc_version found, but $1 needed]) 615ffab5952Smrg have_asciidoc=no 616ffab5952Smrg else 617ffab5952Smrg AC_MSG_ERROR([asciidoc version $asciidoc_version found, but $1 needed]) 618ffab5952Smrg fi]) 619ffab5952Smrgfi]) 620ffab5952SmrgAM_CONDITIONAL([HAVE_ASCIIDOC], [test "$have_asciidoc" = yes]) 621ffab5952Smrg]) # XORG_WITH_ASCIIDOC 622ffab5952Smrg 623ffab5952Smrg# XORG_WITH_DOXYGEN([MIN-VERSION], [DEFAULT]) 62443c16309Smrg# ------------------------------------------- 625ffab5952Smrg# Minimum version: 1.5.0 626ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0 62743c16309Smrg# Minimum version for optional DOT checking: 1.18.0 628ffab5952Smrg# 629ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes 630ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the 631ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with 632ffab5952Smrg# the --with-doxygen option, it allows maximum flexibilty in making decisions 633ffab5952Smrg# as whether or not to use the doxygen package. When DEFAULT is not specified, 634ffab5952Smrg# --with-doxygen assumes 'auto'. 635ffab5952Smrg# 636ffab5952Smrg# Interface to module: 637ffab5952Smrg# HAVE_DOXYGEN: used in makefiles to conditionally generate documentation 638ffab5952Smrg# DOXYGEN: returns the path of the doxygen program found 639ffab5952Smrg# returns the path set by the user in the environment 640ffab5952Smrg# --with-doxygen: 'yes' user instructs the module to use doxygen 641ffab5952Smrg# 'no' user instructs the module not to use doxygen 642ffab5952Smrg# 643ffab5952Smrg# If the user sets the value of DOXYGEN, AC_PATH_PROG skips testing the path. 644ffab5952Smrg# 645ffab5952SmrgAC_DEFUN([XORG_WITH_DOXYGEN],[ 646ffab5952SmrgAC_ARG_VAR([DOXYGEN], [Path to doxygen command]) 64743c16309SmrgAC_ARG_VAR([DOT], [Path to the dot graphics utility]) 648ffab5952Smrgm4_define([_defopt], m4_default([$2], [auto])) 649ffab5952SmrgAC_ARG_WITH(doxygen, 650ffab5952Smrg AS_HELP_STRING([--with-doxygen], 651ffab5952Smrg [Use doxygen to regenerate documentation (default: ]_defopt[)]), 652ffab5952Smrg [use_doxygen=$withval], [use_doxygen=]_defopt) 653ffab5952Smrgm4_undefine([_defopt]) 654ffab5952Smrg 655ffab5952Smrgif test "x$use_doxygen" = x"auto"; then 656ffab5952Smrg AC_PATH_PROG([DOXYGEN], [doxygen]) 657ffab5952Smrg if test "x$DOXYGEN" = "x"; then 658ffab5952Smrg AC_MSG_WARN([doxygen not found - documentation targets will be skipped]) 659ffab5952Smrg have_doxygen=no 660ffab5952Smrg else 661ffab5952Smrg have_doxygen=yes 662ffab5952Smrg fi 663ffab5952Smrgelif test "x$use_doxygen" = x"yes" ; then 664ffab5952Smrg AC_PATH_PROG([DOXYGEN], [doxygen]) 665ffab5952Smrg if test "x$DOXYGEN" = "x"; then 666ffab5952Smrg AC_MSG_ERROR([--with-doxygen=yes specified but doxygen not found in PATH]) 667ffab5952Smrg fi 668ffab5952Smrg have_doxygen=yes 669ffab5952Smrgelif test "x$use_doxygen" = x"no" ; then 670ffab5952Smrg if test "x$DOXYGEN" != "x"; then 671ffab5952Smrg AC_MSG_WARN([ignoring DOXYGEN environment variable since --with-doxygen=no was specified]) 672ffab5952Smrg fi 673ffab5952Smrg have_doxygen=no 674ffab5952Smrgelse 675ffab5952Smrg AC_MSG_ERROR([--with-doxygen expects 'yes' or 'no']) 676ffab5952Smrgfi 677ffab5952Smrgm4_ifval([$1], 678ffab5952Smrg[if test "$have_doxygen" = yes; then 679ffab5952Smrg # scrape the doxygen version 680ffab5952Smrg AC_MSG_CHECKING([the doxygen version]) 681ffab5952Smrg doxygen_version=`$DOXYGEN --version 2>/dev/null` 682ffab5952Smrg AC_MSG_RESULT([$doxygen_version]) 683ffab5952Smrg AS_VERSION_COMPARE([$doxygen_version], [$1], 684ffab5952Smrg [if test "x$use_doxygen" = xauto; then 685ffab5952Smrg AC_MSG_WARN([doxygen version $doxygen_version found, but $1 needed]) 686ffab5952Smrg have_doxygen=no 687ffab5952Smrg else 688ffab5952Smrg AC_MSG_ERROR([doxygen version $doxygen_version found, but $1 needed]) 689ffab5952Smrg fi]) 690ffab5952Smrgfi]) 69143c16309Smrg 69243c16309Smrgdnl Check for DOT if we have doxygen. The caller decides if it is mandatory 69343c16309Smrgdnl HAVE_DOT is a variable that can be used in your doxygen.in config file: 69443c16309Smrgdnl HAVE_DOT = @HAVE_DOT@ 69543c16309SmrgHAVE_DOT=no 69643c16309Smrgif test "x$have_doxygen" = "xyes"; then 69743c16309Smrg AC_PATH_PROG([DOT], [dot]) 69843c16309Smrg if test "x$DOT" != "x"; then 69943c16309Smrg HAVE_DOT=yes 70043c16309Smrg fi 70143c16309Smrgfi 70243c16309Smrg 70343c16309SmrgAC_SUBST([HAVE_DOT]) 70443c16309SmrgAM_CONDITIONAL([HAVE_DOT], [test "$HAVE_DOT" = "yes"]) 705ffab5952SmrgAM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes]) 706ffab5952Smrg]) # XORG_WITH_DOXYGEN 707ffab5952Smrg 708ffab5952Smrg# XORG_WITH_GROFF([DEFAULT]) 709ffab5952Smrg# ---------------- 710ffab5952Smrg# Minimum version: 1.6.0 711ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0 712ffab5952Smrg# 713ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes 714ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the 715ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with 716ffab5952Smrg# the --with-groff option, it allows maximum flexibilty in making decisions 717ffab5952Smrg# as whether or not to use the groff package. When DEFAULT is not specified, 718ffab5952Smrg# --with-groff assumes 'auto'. 719ffab5952Smrg# 720ffab5952Smrg# Interface to module: 721ffab5952Smrg# HAVE_GROFF: used in makefiles to conditionally generate documentation 722ffab5952Smrg# HAVE_GROFF_MM: the memorandum macros (-mm) package 723ffab5952Smrg# HAVE_GROFF_MS: the -ms macros package 724ffab5952Smrg# GROFF: returns the path of the groff program found 725ffab5952Smrg# returns the path set by the user in the environment 726ffab5952Smrg# --with-groff: 'yes' user instructs the module to use groff 727ffab5952Smrg# 'no' user instructs the module not to use groff 728ffab5952Smrg# 729ffab5952Smrg# Added in version 1.9.0: 730ffab5952Smrg# HAVE_GROFF_HTML: groff has dependencies to output HTML format: 731ffab5952Smrg# pnmcut pnmcrop pnmtopng pnmtops from the netpbm package. 732ffab5952Smrg# psselect from the psutils package. 733ffab5952Smrg# the ghostcript package. Refer to the grohtml man pages 734ffab5952Smrg# 735ffab5952Smrg# If the user sets the value of GROFF, AC_PATH_PROG skips testing the path. 736ffab5952Smrg# 737ffab5952Smrg# OS and distros often splits groff in a basic and full package, the former 738ffab5952Smrg# having the groff program and the later having devices, fonts and macros 739ffab5952Smrg# Checking for the groff executable is not enough. 740ffab5952Smrg# 741ffab5952Smrg# If macros are missing, we cannot assume that groff is useless, so we don't 742ffab5952Smrg# unset HAVE_GROFF or GROFF env variables. 743ffab5952Smrg# HAVE_GROFF_?? can never be true while HAVE_GROFF is false. 744ffab5952Smrg# 745ffab5952SmrgAC_DEFUN([XORG_WITH_GROFF],[ 746ffab5952SmrgAC_ARG_VAR([GROFF], [Path to groff command]) 747ffab5952Smrgm4_define([_defopt], m4_default([$1], [auto])) 748ffab5952SmrgAC_ARG_WITH(groff, 749ffab5952Smrg AS_HELP_STRING([--with-groff], 750ffab5952Smrg [Use groff to regenerate documentation (default: ]_defopt[)]), 751ffab5952Smrg [use_groff=$withval], [use_groff=]_defopt) 752ffab5952Smrgm4_undefine([_defopt]) 753ffab5952Smrg 754ffab5952Smrgif test "x$use_groff" = x"auto"; then 755ffab5952Smrg AC_PATH_PROG([GROFF], [groff]) 756ffab5952Smrg if test "x$GROFF" = "x"; then 757ffab5952Smrg AC_MSG_WARN([groff not found - documentation targets will be skipped]) 758ffab5952Smrg have_groff=no 759ffab5952Smrg else 760ffab5952Smrg have_groff=yes 761ffab5952Smrg fi 762ffab5952Smrgelif test "x$use_groff" = x"yes" ; then 763ffab5952Smrg AC_PATH_PROG([GROFF], [groff]) 764ffab5952Smrg if test "x$GROFF" = "x"; then 765ffab5952Smrg AC_MSG_ERROR([--with-groff=yes specified but groff not found in PATH]) 766ffab5952Smrg fi 767ffab5952Smrg have_groff=yes 768ffab5952Smrgelif test "x$use_groff" = x"no" ; then 769ffab5952Smrg if test "x$GROFF" != "x"; then 770ffab5952Smrg AC_MSG_WARN([ignoring GROFF environment variable since --with-groff=no was specified]) 771ffab5952Smrg fi 772ffab5952Smrg have_groff=no 773ffab5952Smrgelse 774ffab5952Smrg AC_MSG_ERROR([--with-groff expects 'yes' or 'no']) 775ffab5952Smrgfi 776ffab5952Smrg 777ffab5952Smrg# We have groff, test for the presence of the macro packages 778ffab5952Smrgif test "x$have_groff" = x"yes"; then 779ffab5952Smrg AC_MSG_CHECKING([for ${GROFF} -ms macros]) 780ffab5952Smrg if ${GROFF} -ms -I. /dev/null >/dev/null 2>&1 ; then 781ffab5952Smrg groff_ms_works=yes 782ffab5952Smrg else 783ffab5952Smrg groff_ms_works=no 784ffab5952Smrg fi 785ffab5952Smrg AC_MSG_RESULT([$groff_ms_works]) 786ffab5952Smrg AC_MSG_CHECKING([for ${GROFF} -mm macros]) 787ffab5952Smrg if ${GROFF} -mm -I. /dev/null >/dev/null 2>&1 ; then 788ffab5952Smrg groff_mm_works=yes 789ffab5952Smrg else 790ffab5952Smrg groff_mm_works=no 791ffab5952Smrg fi 792ffab5952Smrg AC_MSG_RESULT([$groff_mm_works]) 793ffab5952Smrgfi 794ffab5952Smrg 795ffab5952Smrg# We have groff, test for HTML dependencies, one command per package 796ffab5952Smrgif test "x$have_groff" = x"yes"; then 797ffab5952Smrg AC_PATH_PROGS(GS_PATH, [gs gswin32c]) 798ffab5952Smrg AC_PATH_PROG(PNMTOPNG_PATH, [pnmtopng]) 799ffab5952Smrg AC_PATH_PROG(PSSELECT_PATH, [psselect]) 800ffab5952Smrg if test "x$GS_PATH" != "x" -a "x$PNMTOPNG_PATH" != "x" -a "x$PSSELECT_PATH" != "x"; then 801ffab5952Smrg have_groff_html=yes 802ffab5952Smrg else 803ffab5952Smrg have_groff_html=no 804ffab5952Smrg AC_MSG_WARN([grohtml dependencies not found - HTML Documentation skipped. Refer to grohtml man pages]) 805ffab5952Smrg fi 806ffab5952Smrgfi 807ffab5952Smrg 808ffab5952Smrg# Set Automake conditionals for Makefiles 809ffab5952SmrgAM_CONDITIONAL([HAVE_GROFF], [test "$have_groff" = yes]) 810ffab5952SmrgAM_CONDITIONAL([HAVE_GROFF_MS], [test "$groff_ms_works" = yes]) 811ffab5952SmrgAM_CONDITIONAL([HAVE_GROFF_MM], [test "$groff_mm_works" = yes]) 812ffab5952SmrgAM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes]) 813ffab5952Smrg]) # XORG_WITH_GROFF 814ffab5952Smrg 81562044635Smrg# XORG_WITH_FOP([MIN-VERSION], [DEFAULT]) 81662044635Smrg# --------------------------------------- 817ffab5952Smrg# Minimum version: 1.6.0 818ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0 81962044635Smrg# Minimum version for optional MIN-VERSION argument: 1.15.0 820ffab5952Smrg# 821ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes 822ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the 823ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with 824ffab5952Smrg# the --with-fop option, it allows maximum flexibilty in making decisions 825ffab5952Smrg# as whether or not to use the fop package. When DEFAULT is not specified, 826ffab5952Smrg# --with-fop assumes 'auto'. 827ffab5952Smrg# 828ffab5952Smrg# Interface to module: 829ffab5952Smrg# HAVE_FOP: used in makefiles to conditionally generate documentation 830ffab5952Smrg# FOP: returns the path of the fop program found 831ffab5952Smrg# returns the path set by the user in the environment 832ffab5952Smrg# --with-fop: 'yes' user instructs the module to use fop 833ffab5952Smrg# 'no' user instructs the module not to use fop 834ffab5952Smrg# 835ffab5952Smrg# If the user sets the value of FOP, AC_PATH_PROG skips testing the path. 836ffab5952Smrg# 837ffab5952SmrgAC_DEFUN([XORG_WITH_FOP],[ 838ffab5952SmrgAC_ARG_VAR([FOP], [Path to fop command]) 83962044635Smrgm4_define([_defopt], m4_default([$2], [auto])) 840ffab5952SmrgAC_ARG_WITH(fop, 841ffab5952Smrg AS_HELP_STRING([--with-fop], 842ffab5952Smrg [Use fop to regenerate documentation (default: ]_defopt[)]), 843ffab5952Smrg [use_fop=$withval], [use_fop=]_defopt) 844ffab5952Smrgm4_undefine([_defopt]) 845ffab5952Smrg 846ffab5952Smrgif test "x$use_fop" = x"auto"; then 847ffab5952Smrg AC_PATH_PROG([FOP], [fop]) 848ffab5952Smrg if test "x$FOP" = "x"; then 849ffab5952Smrg AC_MSG_WARN([fop not found - documentation targets will be skipped]) 850ffab5952Smrg have_fop=no 851ffab5952Smrg else 852ffab5952Smrg have_fop=yes 853ffab5952Smrg fi 854ffab5952Smrgelif test "x$use_fop" = x"yes" ; then 855ffab5952Smrg AC_PATH_PROG([FOP], [fop]) 856ffab5952Smrg if test "x$FOP" = "x"; then 857ffab5952Smrg AC_MSG_ERROR([--with-fop=yes specified but fop not found in PATH]) 858ffab5952Smrg fi 859ffab5952Smrg have_fop=yes 860ffab5952Smrgelif test "x$use_fop" = x"no" ; then 861ffab5952Smrg if test "x$FOP" != "x"; then 862ffab5952Smrg AC_MSG_WARN([ignoring FOP environment variable since --with-fop=no was specified]) 863ffab5952Smrg fi 864ffab5952Smrg have_fop=no 865ffab5952Smrgelse 866ffab5952Smrg AC_MSG_ERROR([--with-fop expects 'yes' or 'no']) 867ffab5952Smrgfi 86862044635Smrg 86962044635Smrg# Test for a minimum version of fop, if provided. 87062044635Smrgm4_ifval([$1], 87162044635Smrg[if test "$have_fop" = yes; then 87262044635Smrg # scrape the fop version 87362044635Smrg AC_MSG_CHECKING([for fop minimum version]) 87462044635Smrg fop_version=`$FOP -version 2>/dev/null | cut -d' ' -f3` 87562044635Smrg AC_MSG_RESULT([$fop_version]) 87662044635Smrg AS_VERSION_COMPARE([$fop_version], [$1], 87762044635Smrg [if test "x$use_fop" = xauto; then 87862044635Smrg AC_MSG_WARN([fop version $fop_version found, but $1 needed]) 87962044635Smrg have_fop=no 88062044635Smrg else 88162044635Smrg AC_MSG_ERROR([fop version $fop_version found, but $1 needed]) 88262044635Smrg fi]) 88362044635Smrgfi]) 884ffab5952SmrgAM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes]) 885ffab5952Smrg]) # XORG_WITH_FOP 886ffab5952Smrg 887c1197e68Smrg# XORG_WITH_M4([MIN-VERSION]) 888c1197e68Smrg# --------------------------- 889c1197e68Smrg# Minimum version: 1.19.0 890c1197e68Smrg# 891c1197e68Smrg# This macro attempts to locate an m4 macro processor which supports 892c1197e68Smrg# -I option and is only useful for modules relying on M4 in order to 893c1197e68Smrg# expand macros in source code files. 894c1197e68Smrg# 895c1197e68Smrg# Interface to module: 896c1197e68Smrg# M4: returns the path of the m4 program found 897c1197e68Smrg# returns the path set by the user in the environment 898c1197e68Smrg# 899c1197e68SmrgAC_DEFUN([XORG_WITH_M4], [ 900c1197e68SmrgAC_CACHE_CHECK([for m4 that supports -I option], [ac_cv_path_M4], 901c1197e68Smrg [AC_PATH_PROGS_FEATURE_CHECK([M4], [m4 gm4], 902c1197e68Smrg [[$ac_path_M4 -I. /dev/null > /dev/null 2>&1 && \ 903c1197e68Smrg ac_cv_path_M4=$ac_path_M4 ac_path_M4_found=:]], 904c1197e68Smrg [AC_MSG_ERROR([could not find m4 that supports -I option])], 905c1197e68Smrg [$PATH:/usr/gnu/bin])]) 906c1197e68Smrg 907c1197e68SmrgAC_SUBST([M4], [$ac_cv_path_M4]) 908c1197e68Smrg]) # XORG_WITH_M4 909c1197e68Smrg 910ffab5952Smrg# XORG_WITH_PS2PDF([DEFAULT]) 911ffab5952Smrg# ---------------- 912ffab5952Smrg# Minimum version: 1.6.0 913ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0 914ffab5952Smrg# 915ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes 916ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the 917ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with 918ffab5952Smrg# the --with-ps2pdf option, it allows maximum flexibilty in making decisions 919ffab5952Smrg# as whether or not to use the ps2pdf package. When DEFAULT is not specified, 920ffab5952Smrg# --with-ps2pdf assumes 'auto'. 921ffab5952Smrg# 922ffab5952Smrg# Interface to module: 923ffab5952Smrg# HAVE_PS2PDF: used in makefiles to conditionally generate documentation 924ffab5952Smrg# PS2PDF: returns the path of the ps2pdf program found 925ffab5952Smrg# returns the path set by the user in the environment 926ffab5952Smrg# --with-ps2pdf: 'yes' user instructs the module to use ps2pdf 927ffab5952Smrg# 'no' user instructs the module not to use ps2pdf 928ffab5952Smrg# 929ffab5952Smrg# If the user sets the value of PS2PDF, AC_PATH_PROG skips testing the path. 930ffab5952Smrg# 931ffab5952SmrgAC_DEFUN([XORG_WITH_PS2PDF],[ 932ffab5952SmrgAC_ARG_VAR([PS2PDF], [Path to ps2pdf command]) 933ffab5952Smrgm4_define([_defopt], m4_default([$1], [auto])) 934ffab5952SmrgAC_ARG_WITH(ps2pdf, 935ffab5952Smrg AS_HELP_STRING([--with-ps2pdf], 936ffab5952Smrg [Use ps2pdf to regenerate documentation (default: ]_defopt[)]), 937ffab5952Smrg [use_ps2pdf=$withval], [use_ps2pdf=]_defopt) 938ffab5952Smrgm4_undefine([_defopt]) 939ffab5952Smrg 940ffab5952Smrgif test "x$use_ps2pdf" = x"auto"; then 941ffab5952Smrg AC_PATH_PROG([PS2PDF], [ps2pdf]) 942ffab5952Smrg if test "x$PS2PDF" = "x"; then 943ffab5952Smrg AC_MSG_WARN([ps2pdf not found - documentation targets will be skipped]) 944ffab5952Smrg have_ps2pdf=no 945ffab5952Smrg else 946ffab5952Smrg have_ps2pdf=yes 947ffab5952Smrg fi 948ffab5952Smrgelif test "x$use_ps2pdf" = x"yes" ; then 949ffab5952Smrg AC_PATH_PROG([PS2PDF], [ps2pdf]) 950ffab5952Smrg if test "x$PS2PDF" = "x"; then 951ffab5952Smrg AC_MSG_ERROR([--with-ps2pdf=yes specified but ps2pdf not found in PATH]) 952ffab5952Smrg fi 953ffab5952Smrg have_ps2pdf=yes 954ffab5952Smrgelif test "x$use_ps2pdf" = x"no" ; then 955ffab5952Smrg if test "x$PS2PDF" != "x"; then 956ffab5952Smrg AC_MSG_WARN([ignoring PS2PDF environment variable since --with-ps2pdf=no was specified]) 957ffab5952Smrg fi 958ffab5952Smrg have_ps2pdf=no 959ffab5952Smrgelse 960ffab5952Smrg AC_MSG_ERROR([--with-ps2pdf expects 'yes' or 'no']) 961ffab5952Smrgfi 962ffab5952SmrgAM_CONDITIONAL([HAVE_PS2PDF], [test "$have_ps2pdf" = yes]) 963ffab5952Smrg]) # XORG_WITH_PS2PDF 964ffab5952Smrg 965ffab5952Smrg# XORG_ENABLE_DOCS (enable_docs=yes) 966ffab5952Smrg# ---------------- 967ffab5952Smrg# Minimum version: 1.6.0 968ffab5952Smrg# 969ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes 970ffab5952Smrg# not at the appropriate level. This macro enables a builder to skip all 971ffab5952Smrg# documentation targets except traditional man pages. 972ffab5952Smrg# Combined with the specific tool checking macros XORG_WITH_*, it provides 973ffab5952Smrg# maximum flexibilty in controlling documentation building. 974ffab5952Smrg# Refer to: 975ffab5952Smrg# XORG_WITH_XMLTO --with-xmlto 976ffab5952Smrg# XORG_WITH_ASCIIDOC --with-asciidoc 977ffab5952Smrg# XORG_WITH_DOXYGEN --with-doxygen 978ffab5952Smrg# XORG_WITH_FOP --with-fop 979ffab5952Smrg# XORG_WITH_GROFF --with-groff 980ffab5952Smrg# XORG_WITH_PS2PDF --with-ps2pdf 981ffab5952Smrg# 982ffab5952Smrg# Interface to module: 983ffab5952Smrg# ENABLE_DOCS: used in makefiles to conditionally generate documentation 984ffab5952Smrg# --enable-docs: 'yes' user instructs the module to generate docs 985ffab5952Smrg# 'no' user instructs the module not to generate docs 986ffab5952Smrg# parm1: specify the default value, yes or no. 987ffab5952Smrg# 988ffab5952SmrgAC_DEFUN([XORG_ENABLE_DOCS],[ 98962044635Smrgm4_define([docs_default], m4_default([$1], [yes])) 990ffab5952SmrgAC_ARG_ENABLE(docs, 991ffab5952Smrg AS_HELP_STRING([--enable-docs], 99262044635Smrg [Enable building the documentation (default: ]docs_default[)]), 99362044635Smrg [build_docs=$enableval], [build_docs=]docs_default) 99462044635Smrgm4_undefine([docs_default]) 995ffab5952SmrgAM_CONDITIONAL(ENABLE_DOCS, [test x$build_docs = xyes]) 996ffab5952SmrgAC_MSG_CHECKING([whether to build documentation]) 997ffab5952SmrgAC_MSG_RESULT([$build_docs]) 998ffab5952Smrg]) # XORG_ENABLE_DOCS 999ffab5952Smrg 1000ffab5952Smrg# XORG_ENABLE_DEVEL_DOCS (enable_devel_docs=yes) 1001ffab5952Smrg# ---------------- 1002ffab5952Smrg# Minimum version: 1.6.0 1003ffab5952Smrg# 1004ffab5952Smrg# This macro enables a builder to skip all developer documentation. 1005ffab5952Smrg# Combined with the specific tool checking macros XORG_WITH_*, it provides 1006ffab5952Smrg# maximum flexibilty in controlling documentation building. 1007ffab5952Smrg# Refer to: 1008ffab5952Smrg# XORG_WITH_XMLTO --with-xmlto 1009ffab5952Smrg# XORG_WITH_ASCIIDOC --with-asciidoc 1010ffab5952Smrg# XORG_WITH_DOXYGEN --with-doxygen 1011ffab5952Smrg# XORG_WITH_FOP --with-fop 1012ffab5952Smrg# XORG_WITH_GROFF --with-groff 1013ffab5952Smrg# XORG_WITH_PS2PDF --with-ps2pdf 1014ffab5952Smrg# 1015ffab5952Smrg# Interface to module: 1016ffab5952Smrg# ENABLE_DEVEL_DOCS: used in makefiles to conditionally generate developer docs 1017ffab5952Smrg# --enable-devel-docs: 'yes' user instructs the module to generate developer docs 1018ffab5952Smrg# 'no' user instructs the module not to generate developer docs 1019ffab5952Smrg# parm1: specify the default value, yes or no. 1020ffab5952Smrg# 1021ffab5952SmrgAC_DEFUN([XORG_ENABLE_DEVEL_DOCS],[ 1022ffab5952Smrgm4_define([devel_default], m4_default([$1], [yes])) 1023ffab5952SmrgAC_ARG_ENABLE(devel-docs, 1024ffab5952Smrg AS_HELP_STRING([--enable-devel-docs], 1025ffab5952Smrg [Enable building the developer documentation (default: ]devel_default[)]), 1026ffab5952Smrg [build_devel_docs=$enableval], [build_devel_docs=]devel_default) 1027ffab5952Smrgm4_undefine([devel_default]) 1028ffab5952SmrgAM_CONDITIONAL(ENABLE_DEVEL_DOCS, [test x$build_devel_docs = xyes]) 1029ffab5952SmrgAC_MSG_CHECKING([whether to build developer documentation]) 1030ffab5952SmrgAC_MSG_RESULT([$build_devel_docs]) 1031ffab5952Smrg]) # XORG_ENABLE_DEVEL_DOCS 1032ffab5952Smrg 1033ffab5952Smrg# XORG_ENABLE_SPECS (enable_specs=yes) 1034ffab5952Smrg# ---------------- 1035ffab5952Smrg# Minimum version: 1.6.0 1036ffab5952Smrg# 1037ffab5952Smrg# This macro enables a builder to skip all functional specification targets. 1038ffab5952Smrg# Combined with the specific tool checking macros XORG_WITH_*, it provides 1039ffab5952Smrg# maximum flexibilty in controlling documentation building. 1040ffab5952Smrg# Refer to: 1041ffab5952Smrg# XORG_WITH_XMLTO --with-xmlto 1042ffab5952Smrg# XORG_WITH_ASCIIDOC --with-asciidoc 1043ffab5952Smrg# XORG_WITH_DOXYGEN --with-doxygen 1044ffab5952Smrg# XORG_WITH_FOP --with-fop 1045ffab5952Smrg# XORG_WITH_GROFF --with-groff 1046ffab5952Smrg# XORG_WITH_PS2PDF --with-ps2pdf 1047ffab5952Smrg# 1048ffab5952Smrg# Interface to module: 1049ffab5952Smrg# ENABLE_SPECS: used in makefiles to conditionally generate specs 1050ffab5952Smrg# --enable-specs: 'yes' user instructs the module to generate specs 1051ffab5952Smrg# 'no' user instructs the module not to generate specs 1052ffab5952Smrg# parm1: specify the default value, yes or no. 1053ffab5952Smrg# 1054ffab5952SmrgAC_DEFUN([XORG_ENABLE_SPECS],[ 1055ffab5952Smrgm4_define([spec_default], m4_default([$1], [yes])) 1056ffab5952SmrgAC_ARG_ENABLE(specs, 1057ffab5952Smrg AS_HELP_STRING([--enable-specs], 1058ffab5952Smrg [Enable building the specs (default: ]spec_default[)]), 1059ffab5952Smrg [build_specs=$enableval], [build_specs=]spec_default) 1060ffab5952Smrgm4_undefine([spec_default]) 1061ffab5952SmrgAM_CONDITIONAL(ENABLE_SPECS, [test x$build_specs = xyes]) 1062ffab5952SmrgAC_MSG_CHECKING([whether to build functional specifications]) 1063ffab5952SmrgAC_MSG_RESULT([$build_specs]) 1064ffab5952Smrg]) # XORG_ENABLE_SPECS 1065ffab5952Smrg 106662044635Smrg# XORG_ENABLE_UNIT_TESTS (enable_unit_tests=auto) 106762044635Smrg# ---------------------------------------------- 106862044635Smrg# Minimum version: 1.13.0 106962044635Smrg# 107062044635Smrg# This macro enables a builder to enable/disable unit testing 107162044635Smrg# It makes no assumption about the test cases implementation 107262044635Smrg# Test cases may or may not use Automake "Support for test suites" 107362044635Smrg# They may or may not use the software utility library GLib 107462044635Smrg# 107562044635Smrg# When used in conjunction with XORG_WITH_GLIB, use both AM_CONDITIONAL 107662044635Smrg# ENABLE_UNIT_TESTS and HAVE_GLIB. Not all unit tests may use glib. 107762044635Smrg# The variable enable_unit_tests is used by other macros in this file. 107862044635Smrg# 107962044635Smrg# Interface to module: 108062044635Smrg# ENABLE_UNIT_TESTS: used in makefiles to conditionally build tests 108162044635Smrg# enable_unit_tests: used in configure.ac for additional configuration 108262044635Smrg# --enable-unit-tests: 'yes' user instructs the module to build tests 108362044635Smrg# 'no' user instructs the module not to build tests 108462044635Smrg# parm1: specify the default value, yes or no. 108562044635Smrg# 108662044635SmrgAC_DEFUN([XORG_ENABLE_UNIT_TESTS],[ 108762044635SmrgAC_BEFORE([$0], [XORG_WITH_GLIB]) 108862044635SmrgAC_BEFORE([$0], [XORG_LD_WRAP]) 10893ae17ff1SmrgAC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) 109062044635Smrgm4_define([_defopt], m4_default([$1], [auto])) 109162044635SmrgAC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests], 109262044635Smrg [Enable building unit test cases (default: ]_defopt[)]), 109362044635Smrg [enable_unit_tests=$enableval], [enable_unit_tests=]_defopt) 109462044635Smrgm4_undefine([_defopt]) 109562044635SmrgAM_CONDITIONAL(ENABLE_UNIT_TESTS, [test "x$enable_unit_tests" != xno]) 109662044635SmrgAC_MSG_CHECKING([whether to build unit test cases]) 109762044635SmrgAC_MSG_RESULT([$enable_unit_tests]) 109862044635Smrg]) # XORG_ENABLE_UNIT_TESTS 109962044635Smrg 11003ae17ff1Smrg# XORG_ENABLE_INTEGRATION_TESTS (enable_unit_tests=auto) 11013ae17ff1Smrg# ------------------------------------------------------ 11023ae17ff1Smrg# Minimum version: 1.17.0 11033ae17ff1Smrg# 11043ae17ff1Smrg# This macro enables a builder to enable/disable integration testing 11053ae17ff1Smrg# It makes no assumption about the test cases' implementation 11063ae17ff1Smrg# Test cases may or may not use Automake "Support for test suites" 11073ae17ff1Smrg# 11083ae17ff1Smrg# Please see XORG_ENABLE_UNIT_TESTS for unit test support. Unit test support 11093ae17ff1Smrg# usually requires less dependencies and may be built and run under less 11103ae17ff1Smrg# stringent environments than integration tests. 11113ae17ff1Smrg# 11123ae17ff1Smrg# Interface to module: 11133ae17ff1Smrg# ENABLE_INTEGRATION_TESTS: used in makefiles to conditionally build tests 11143ae17ff1Smrg# enable_integration_tests: used in configure.ac for additional configuration 11153ae17ff1Smrg# --enable-integration-tests: 'yes' user instructs the module to build tests 11163ae17ff1Smrg# 'no' user instructs the module not to build tests 11173ae17ff1Smrg# parm1: specify the default value, yes or no. 11183ae17ff1Smrg# 11193ae17ff1SmrgAC_DEFUN([XORG_ENABLE_INTEGRATION_TESTS],[ 11203ae17ff1SmrgAC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) 11213ae17ff1Smrgm4_define([_defopt], m4_default([$1], [auto])) 11223ae17ff1SmrgAC_ARG_ENABLE(integration-tests, AS_HELP_STRING([--enable-integration-tests], 11233ae17ff1Smrg [Enable building integration test cases (default: ]_defopt[)]), 11243ae17ff1Smrg [enable_integration_tests=$enableval], 11253ae17ff1Smrg [enable_integration_tests=]_defopt) 11263ae17ff1Smrgm4_undefine([_defopt]) 11273ae17ff1SmrgAM_CONDITIONAL([ENABLE_INTEGRATION_TESTS], 11283ae17ff1Smrg [test "x$enable_integration_tests" != xno]) 11293ae17ff1SmrgAC_MSG_CHECKING([whether to build unit test cases]) 11303ae17ff1SmrgAC_MSG_RESULT([$enable_integration_tests]) 11313ae17ff1Smrg]) # XORG_ENABLE_INTEGRATION_TESTS 11323ae17ff1Smrg 113362044635Smrg# XORG_WITH_GLIB([MIN-VERSION], [DEFAULT]) 113462044635Smrg# ---------------------------------------- 113562044635Smrg# Minimum version: 1.13.0 113662044635Smrg# 113762044635Smrg# GLib is a library which provides advanced data structures and functions. 113862044635Smrg# This macro enables a module to test for the presence of Glib. 113962044635Smrg# 114062044635Smrg# When used with ENABLE_UNIT_TESTS, it is assumed GLib is used for unit testing. 114162044635Smrg# Otherwise the value of $enable_unit_tests is blank. 114262044635Smrg# 11433ae17ff1Smrg# Please see XORG_ENABLE_INTEGRATION_TESTS for integration test support. Unit 11443ae17ff1Smrg# test support usually requires less dependencies and may be built and run under 11453ae17ff1Smrg# less stringent environments than integration tests. 11463ae17ff1Smrg# 114762044635Smrg# Interface to module: 114862044635Smrg# HAVE_GLIB: used in makefiles to conditionally build targets 114962044635Smrg# with_glib: used in configure.ac to know if GLib has been found 115062044635Smrg# --with-glib: 'yes' user instructs the module to use glib 115162044635Smrg# 'no' user instructs the module not to use glib 115262044635Smrg# 115362044635SmrgAC_DEFUN([XORG_WITH_GLIB],[ 115462044635SmrgAC_REQUIRE([PKG_PROG_PKG_CONFIG]) 115562044635Smrgm4_define([_defopt], m4_default([$2], [auto])) 115662044635SmrgAC_ARG_WITH(glib, AS_HELP_STRING([--with-glib], 115762044635Smrg [Use GLib library for unit testing (default: ]_defopt[)]), 115862044635Smrg [with_glib=$withval], [with_glib=]_defopt) 115962044635Smrgm4_undefine([_defopt]) 116062044635Smrg 116162044635Smrghave_glib=no 116262044635Smrg# Do not probe GLib if user explicitly disabled unit testing 116362044635Smrgif test "x$enable_unit_tests" != x"no"; then 116462044635Smrg # Do not probe GLib if user explicitly disabled it 116562044635Smrg if test "x$with_glib" != x"no"; then 116662044635Smrg m4_ifval( 116762044635Smrg [$1], 116862044635Smrg [PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $1], [have_glib=yes], [have_glib=no])], 116962044635Smrg [PKG_CHECK_MODULES([GLIB], [glib-2.0], [have_glib=yes], [have_glib=no])] 117062044635Smrg ) 117162044635Smrg fi 117262044635Smrgfi 117362044635Smrg 117462044635Smrg# Not having GLib when unit testing has been explicitly requested is an error 117562044635Smrgif test "x$enable_unit_tests" = x"yes"; then 117662044635Smrg if test "x$have_glib" = x"no"; then 117762044635Smrg AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) 117862044635Smrg fi 117962044635Smrgfi 118062044635Smrg 118162044635Smrg# Having unit testing disabled when GLib has been explicitly requested is an error 118262044635Smrgif test "x$enable_unit_tests" = x"no"; then 118362044635Smrg if test "x$with_glib" = x"yes"; then 118462044635Smrg AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) 118562044635Smrg fi 118662044635Smrgfi 118762044635Smrg 118862044635Smrg# Not having GLib when it has been explicitly requested is an error 118962044635Smrgif test "x$with_glib" = x"yes"; then 119062044635Smrg if test "x$have_glib" = x"no"; then 119162044635Smrg AC_MSG_ERROR([--with-glib=yes specified but glib-2.0 not found]) 119262044635Smrg fi 119362044635Smrgfi 119462044635Smrg 119562044635SmrgAM_CONDITIONAL([HAVE_GLIB], [test "$have_glib" = yes]) 119662044635Smrg]) # XORG_WITH_GLIB 119762044635Smrg 11983ae17ff1Smrg# XORG_LD_WRAP([required|optional]) 11993ae17ff1Smrg# --------------------------------- 120062044635Smrg# Minimum version: 1.13.0 120162044635Smrg# 120262044635Smrg# Check if linker supports -wrap, passed via compiler flags 120362044635Smrg# 120462044635Smrg# When used with ENABLE_UNIT_TESTS, it is assumed -wrap is used for unit testing. 120562044635Smrg# Otherwise the value of $enable_unit_tests is blank. 120662044635Smrg# 12073ae17ff1Smrg# Argument added in 1.16.0 - default is "required", to match existing behavior 12083ae17ff1Smrg# of returning an error if enable_unit_tests is yes, and ld -wrap is not 12093ae17ff1Smrg# available, an argument of "optional" allows use when some unit tests require 12103ae17ff1Smrg# ld -wrap and others do not. 12113ae17ff1Smrg# 121262044635SmrgAC_DEFUN([XORG_LD_WRAP],[ 12133ae17ff1SmrgXORG_CHECK_LINKER_FLAGS([-Wl,-wrap,exit],[have_ld_wrap=yes],[have_ld_wrap=no], 12143ae17ff1Smrg [AC_LANG_PROGRAM([#include <stdlib.h> 12153ae17ff1Smrg void __wrap_exit(int status) { return; }], 12163ae17ff1Smrg [exit(0);])]) 121762044635Smrg# Not having ld wrap when unit testing has been explicitly requested is an error 12183ae17ff1Smrgif test "x$enable_unit_tests" = x"yes" -a "x$1" != "xoptional"; then 121962044635Smrg if test "x$have_ld_wrap" = x"no"; then 122062044635Smrg AC_MSG_ERROR([--enable-unit-tests=yes specified but ld -wrap support is not available]) 122162044635Smrg fi 122262044635Smrgfi 122362044635SmrgAM_CONDITIONAL([HAVE_LD_WRAP], [test "$have_ld_wrap" = yes]) 122462044635Smrg# 122562044635Smrg]) # XORG_LD_WRAP 122662044635Smrg 122762044635Smrg# XORG_CHECK_LINKER_FLAGS 122862044635Smrg# ----------------------- 122962044635Smrg# SYNOPSIS 123062044635Smrg# 12313ae17ff1Smrg# XORG_CHECK_LINKER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE], [PROGRAM-SOURCE]) 123262044635Smrg# 123362044635Smrg# DESCRIPTION 123462044635Smrg# 123562044635Smrg# Check whether the given linker FLAGS work with the current language's 123662044635Smrg# linker, or whether they give an error. 123762044635Smrg# 123862044635Smrg# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on 123962044635Smrg# success/failure. 124062044635Smrg# 12413ae17ff1Smrg# PROGRAM-SOURCE is the program source to link with, if needed 12423ae17ff1Smrg# 124362044635Smrg# NOTE: Based on AX_CHECK_COMPILER_FLAGS. 124462044635Smrg# 124562044635Smrg# LICENSE 124662044635Smrg# 124762044635Smrg# Copyright (c) 2009 Mike Frysinger <vapier@gentoo.org> 124862044635Smrg# Copyright (c) 2009 Steven G. Johnson <stevenj@alum.mit.edu> 124962044635Smrg# Copyright (c) 2009 Matteo Frigo 125062044635Smrg# 125162044635Smrg# This program is free software: you can redistribute it and/or modify it 125262044635Smrg# under the terms of the GNU General Public License as published by the 125362044635Smrg# Free Software Foundation, either version 3 of the License, or (at your 125462044635Smrg# option) any later version. 125562044635Smrg# 125662044635Smrg# This program is distributed in the hope that it will be useful, but 125762044635Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 125862044635Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 125962044635Smrg# Public License for more details. 126062044635Smrg# 126162044635Smrg# You should have received a copy of the GNU General Public License along 126262044635Smrg# with this program. If not, see <http://www.gnu.org/licenses/>. 126362044635Smrg# 126462044635Smrg# As a special exception, the respective Autoconf Macro's copyright owner 126562044635Smrg# gives unlimited permission to copy, distribute and modify the configure 126662044635Smrg# scripts that are the output of Autoconf when processing the Macro. You 126762044635Smrg# need not follow the terms of the GNU General Public License when using 126862044635Smrg# or distributing such scripts, even though portions of the text of the 126962044635Smrg# Macro appear in them. The GNU General Public License (GPL) does govern 127062044635Smrg# all other use of the material that constitutes the Autoconf Macro. 127162044635Smrg# 127262044635Smrg# This special exception to the GPL applies to versions of the Autoconf 127362044635Smrg# Macro released by the Autoconf Archive. When you make and distribute a 127462044635Smrg# modified version of the Autoconf Macro, you may extend this special 127562044635Smrg# exception to the GPL to apply to your modified version as well.# 127662044635SmrgAC_DEFUN([XORG_CHECK_LINKER_FLAGS], 127762044635Smrg[AC_MSG_CHECKING([whether the linker accepts $1]) 127862044635Smrgdnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname: 127962044635SmrgAS_LITERAL_IF([$1], 128062044635Smrg [AC_CACHE_VAL(AS_TR_SH(xorg_cv_linker_flags_[$1]), [ 128162044635Smrg ax_save_FLAGS=$LDFLAGS 128262044635Smrg LDFLAGS="$1" 12833ae17ff1Smrg AC_LINK_IFELSE([m4_default([$4],[AC_LANG_PROGRAM()])], 128462044635Smrg AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, 128562044635Smrg AS_TR_SH(xorg_cv_linker_flags_[$1])=no) 128662044635Smrg LDFLAGS=$ax_save_FLAGS])], 128762044635Smrg [ax_save_FLAGS=$LDFLAGS 128862044635Smrg LDFLAGS="$1" 128962044635Smrg AC_LINK_IFELSE([AC_LANG_PROGRAM()], 129062044635Smrg eval AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, 129162044635Smrg eval AS_TR_SH(xorg_cv_linker_flags_[$1])=no) 129262044635Smrg LDFLAGS=$ax_save_FLAGS]) 129362044635Smrgeval xorg_check_linker_flags=$AS_TR_SH(xorg_cv_linker_flags_[$1]) 129462044635SmrgAC_MSG_RESULT($xorg_check_linker_flags) 129562044635Smrgif test "x$xorg_check_linker_flags" = xyes; then 129662044635Smrg m4_default([$2], :) 129762044635Smrgelse 129862044635Smrg m4_default([$3], :) 129962044635Smrgfi 130062044635Smrg]) # XORG_CHECK_LINKER_FLAGS 130162044635Smrg 13023ae17ff1Smrg# XORG_MEMORY_CHECK_FLAGS 13033ae17ff1Smrg# ----------------------- 13043ae17ff1Smrg# Minimum version: 1.16.0 13053ae17ff1Smrg# 13063ae17ff1Smrg# This macro attempts to find appropriate memory checking functionality 13073ae17ff1Smrg# for various platforms which unit testing code may use to catch various 13083ae17ff1Smrg# forms of memory allocation and access errors in testing. 13093ae17ff1Smrg# 13103ae17ff1Smrg# Interface to module: 13113ae17ff1Smrg# XORG_MALLOC_DEBUG_ENV - environment variables to set to enable debugging 13123ae17ff1Smrg# Usually added to TESTS_ENVIRONMENT in Makefile.am 13133ae17ff1Smrg# 13143ae17ff1Smrg# If the user sets the value of XORG_MALLOC_DEBUG_ENV, it is used verbatim. 13153ae17ff1Smrg# 13163ae17ff1SmrgAC_DEFUN([XORG_MEMORY_CHECK_FLAGS],[ 13173ae17ff1Smrg 13183ae17ff1SmrgAC_REQUIRE([AC_CANONICAL_HOST]) 13193ae17ff1SmrgAC_ARG_VAR([XORG_MALLOC_DEBUG_ENV], 13203ae17ff1Smrg [Environment variables to enable memory checking in tests]) 13213ae17ff1Smrg 13223ae17ff1Smrg# Check for different types of support on different platforms 13233ae17ff1Smrgcase $host_os in 13243ae17ff1Smrg solaris*) 13253ae17ff1Smrg AC_CHECK_LIB([umem], [umem_alloc], 13263ae17ff1Smrg [malloc_debug_env='LD_PRELOAD=libumem.so UMEM_DEBUG=default']) 13273ae17ff1Smrg ;; 13283ae17ff1Smrg *-gnu*) # GNU libc - Value is used as a single byte bit pattern, 13293ae17ff1Smrg # both directly and inverted, so should not be 0 or 255. 13303ae17ff1Smrg malloc_debug_env='MALLOC_PERTURB_=15' 13313ae17ff1Smrg ;; 13323ae17ff1Smrg darwin*) 13333ae17ff1Smrg malloc_debug_env='MallocPreScribble=1 MallocScribble=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib' 13343ae17ff1Smrg ;; 13353ae17ff1Smrg *bsd*) 13363ae17ff1Smrg malloc_debug_env='MallocPreScribble=1 MallocScribble=1' 13373ae17ff1Smrg ;; 13383ae17ff1Smrgesac 13393ae17ff1Smrg 13403ae17ff1Smrg# User supplied flags override default flags 13413ae17ff1Smrgif test "x$XORG_MALLOC_DEBUG_ENV" != "x"; then 13423ae17ff1Smrg malloc_debug_env="$XORG_MALLOC_DEBUG_ENV" 13433ae17ff1Smrgfi 13443ae17ff1Smrg 13453ae17ff1SmrgAC_SUBST([XORG_MALLOC_DEBUG_ENV],[$malloc_debug_env]) 13463ae17ff1Smrg]) # XORG_WITH_LINT 13473ae17ff1Smrg 1348ffab5952Smrg# XORG_CHECK_MALLOC_ZERO 1349ffab5952Smrg# ---------------------- 1350ffab5952Smrg# Minimum version: 1.0.0 1351ffab5952Smrg# 1352ffab5952Smrg# Defines {MALLOC,XMALLOC,XTMALLOC}_ZERO_CFLAGS appropriately if 1353ffab5952Smrg# malloc(0) returns NULL. Packages should add one of these cflags to 1354ffab5952Smrg# their AM_CFLAGS (or other appropriate *_CFLAGS) to use them. 1355ffab5952SmrgAC_DEFUN([XORG_CHECK_MALLOC_ZERO],[ 1356ffab5952SmrgAC_ARG_ENABLE(malloc0returnsnull, 1357ffab5952Smrg AS_HELP_STRING([--enable-malloc0returnsnull], 1358ffab5952Smrg [malloc(0) returns NULL (default: auto)]), 1359ffab5952Smrg [MALLOC_ZERO_RETURNS_NULL=$enableval], 1360ffab5952Smrg [MALLOC_ZERO_RETURNS_NULL=auto]) 1361ffab5952Smrg 1362ffab5952SmrgAC_MSG_CHECKING([whether malloc(0) returns NULL]) 1363ffab5952Smrgif test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then 136443c16309SmrgAC_CACHE_VAL([xorg_cv_malloc0_returns_null], 136543c16309Smrg [AC_RUN_IFELSE([AC_LANG_PROGRAM([ 136662044635Smrg#include <stdlib.h> 136762044635Smrg],[ 1368ffab5952Smrg char *m0, *r0, *c0, *p; 1369ffab5952Smrg m0 = malloc(0); 1370ffab5952Smrg p = malloc(10); 1371ffab5952Smrg r0 = realloc(p,0); 137262044635Smrg c0 = calloc(0,10); 137362044635Smrg exit((m0 == 0 || r0 == 0 || c0 == 0) ? 0 : 1); 137462044635Smrg])], 137543c16309Smrg [xorg_cv_malloc0_returns_null=yes], 137643c16309Smrg [xorg_cv_malloc0_returns_null=no])]) 137743c16309SmrgMALLOC_ZERO_RETURNS_NULL=$xorg_cv_malloc0_returns_null 1378ffab5952Smrgfi 1379ffab5952SmrgAC_MSG_RESULT([$MALLOC_ZERO_RETURNS_NULL]) 1380ffab5952Smrg 1381ffab5952Smrgif test "x$MALLOC_ZERO_RETURNS_NULL" = xyes; then 1382ffab5952Smrg MALLOC_ZERO_CFLAGS="-DMALLOC_0_RETURNS_NULL" 1383ffab5952Smrg XMALLOC_ZERO_CFLAGS=$MALLOC_ZERO_CFLAGS 1384ffab5952Smrg XTMALLOC_ZERO_CFLAGS="$MALLOC_ZERO_CFLAGS -DXTMALLOC_BC" 1385ffab5952Smrgelse 1386ffab5952Smrg MALLOC_ZERO_CFLAGS="" 1387ffab5952Smrg XMALLOC_ZERO_CFLAGS="" 1388ffab5952Smrg XTMALLOC_ZERO_CFLAGS="" 1389ffab5952Smrgfi 1390ffab5952Smrg 1391ffab5952SmrgAC_SUBST([MALLOC_ZERO_CFLAGS]) 1392ffab5952SmrgAC_SUBST([XMALLOC_ZERO_CFLAGS]) 1393ffab5952SmrgAC_SUBST([XTMALLOC_ZERO_CFLAGS]) 1394ffab5952Smrg]) # XORG_CHECK_MALLOC_ZERO 1395ffab5952Smrg 1396ffab5952Smrg# XORG_WITH_LINT() 1397ffab5952Smrg# ---------------- 1398ffab5952Smrg# Minimum version: 1.1.0 1399ffab5952Smrg# 1400ffab5952Smrg# This macro enables the use of a tool that flags some suspicious and 1401ffab5952Smrg# non-portable constructs (likely to be bugs) in C language source code. 1402ffab5952Smrg# It will attempt to locate the tool and use appropriate options. 1403ffab5952Smrg# There are various lint type tools on different platforms. 1404ffab5952Smrg# 1405ffab5952Smrg# Interface to module: 1406ffab5952Smrg# LINT: returns the path to the tool found on the platform 1407ffab5952Smrg# or the value set to LINT on the configure cmd line 1408ffab5952Smrg# also an Automake conditional 1409ffab5952Smrg# LINT_FLAGS: an Automake variable with appropriate flags 1410ffab5952Smrg# 1411ffab5952Smrg# --with-lint: 'yes' user instructs the module to use lint 1412ffab5952Smrg# 'no' user instructs the module not to use lint (default) 1413ffab5952Smrg# 1414ffab5952Smrg# If the user sets the value of LINT, AC_PATH_PROG skips testing the path. 1415ffab5952Smrg# If the user sets the value of LINT_FLAGS, they are used verbatim. 1416ffab5952Smrg# 1417ffab5952SmrgAC_DEFUN([XORG_WITH_LINT],[ 1418ffab5952Smrg 1419ffab5952SmrgAC_ARG_VAR([LINT], [Path to a lint-style command]) 1420ffab5952SmrgAC_ARG_VAR([LINT_FLAGS], [Flags for the lint-style command]) 1421ffab5952SmrgAC_ARG_WITH(lint, [AS_HELP_STRING([--with-lint], 1422ffab5952Smrg [Use a lint-style source code checker (default: disabled)])], 1423ffab5952Smrg [use_lint=$withval], [use_lint=no]) 1424ffab5952Smrg 1425ffab5952Smrg# Obtain platform specific info like program name and options 1426ffab5952Smrg# The lint program on FreeBSD and NetBSD is different from the one on Solaris 1427ffab5952Smrgcase $host_os in 1428ffab5952Smrg *linux* | *openbsd* | kfreebsd*-gnu | darwin* | cygwin*) 1429ffab5952Smrg lint_name=splint 1430ffab5952Smrg lint_options="-badflag" 1431ffab5952Smrg ;; 1432ffab5952Smrg *freebsd* | *netbsd*) 1433ffab5952Smrg lint_name=lint 1434ffab5952Smrg lint_options="-u -b" 1435ffab5952Smrg ;; 1436ffab5952Smrg *solaris*) 1437ffab5952Smrg lint_name=lint 1438ffab5952Smrg lint_options="-u -b -h -erroff=E_INDISTING_FROM_TRUNC2" 1439ffab5952Smrg ;; 1440ffab5952Smrgesac 1441ffab5952Smrg 1442ffab5952Smrg# Test for the presence of the program (either guessed by the code or spelled out by the user) 1443ffab5952Smrgif test "x$use_lint" = x"yes" ; then 1444ffab5952Smrg AC_PATH_PROG([LINT], [$lint_name]) 1445ffab5952Smrg if test "x$LINT" = "x"; then 1446ffab5952Smrg AC_MSG_ERROR([--with-lint=yes specified but lint-style tool not found in PATH]) 1447ffab5952Smrg fi 1448ffab5952Smrgelif test "x$use_lint" = x"no" ; then 1449ffab5952Smrg if test "x$LINT" != "x"; then 1450ffab5952Smrg AC_MSG_WARN([ignoring LINT environment variable since --with-lint=no was specified]) 1451ffab5952Smrg fi 1452ffab5952Smrgelse 1453ffab5952Smrg AC_MSG_ERROR([--with-lint expects 'yes' or 'no'. Use LINT variable to specify path.]) 1454ffab5952Smrgfi 1455ffab5952Smrg 1456ffab5952Smrg# User supplied flags override default flags 1457ffab5952Smrgif test "x$LINT_FLAGS" != "x"; then 1458ffab5952Smrg lint_options=$LINT_FLAGS 1459ffab5952Smrgfi 1460ffab5952Smrg 1461ffab5952SmrgAC_SUBST([LINT_FLAGS],[$lint_options]) 1462ffab5952SmrgAM_CONDITIONAL(LINT, [test "x$LINT" != x]) 1463ffab5952Smrg 1464ffab5952Smrg]) # XORG_WITH_LINT 1465ffab5952Smrg 1466ffab5952Smrg# XORG_LINT_LIBRARY(LIBNAME) 1467ffab5952Smrg# -------------------------- 1468ffab5952Smrg# Minimum version: 1.1.0 1469ffab5952Smrg# 1470ffab5952Smrg# Sets up flags for building lint libraries for checking programs that call 1471ffab5952Smrg# functions in the library. 1472ffab5952Smrg# 1473ffab5952Smrg# Interface to module: 1474ffab5952Smrg# LINTLIB - Automake variable with the name of lint library file to make 1475ffab5952Smrg# MAKE_LINT_LIB - Automake conditional 1476ffab5952Smrg# 1477ffab5952Smrg# --enable-lint-library: - 'yes' user instructs the module to created a lint library 1478ffab5952Smrg# - 'no' user instructs the module not to create a lint library (default) 1479ffab5952Smrg 1480ffab5952SmrgAC_DEFUN([XORG_LINT_LIBRARY],[ 1481ffab5952SmrgAC_REQUIRE([XORG_WITH_LINT]) 1482ffab5952SmrgAC_ARG_ENABLE(lint-library, [AS_HELP_STRING([--enable-lint-library], 1483ffab5952Smrg [Create lint library (default: disabled)])], 1484ffab5952Smrg [make_lint_lib=$enableval], [make_lint_lib=no]) 1485ffab5952Smrg 1486ffab5952Smrgif test "x$make_lint_lib" = x"yes" ; then 1487ffab5952Smrg LINTLIB=llib-l$1.ln 1488ffab5952Smrg if test "x$LINT" = "x"; then 1489ffab5952Smrg AC_MSG_ERROR([Cannot make lint library without --with-lint]) 1490ffab5952Smrg fi 1491ffab5952Smrgelif test "x$make_lint_lib" != x"no" ; then 1492ffab5952Smrg AC_MSG_ERROR([--enable-lint-library expects 'yes' or 'no'.]) 1493ffab5952Smrgfi 1494ffab5952Smrg 1495ffab5952SmrgAC_SUBST(LINTLIB) 1496ffab5952SmrgAM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno]) 1497ffab5952Smrg 1498ffab5952Smrg]) # XORG_LINT_LIBRARY 1499ffab5952Smrg 150062044635Smrg# XORG_COMPILER_BRAND 150162044635Smrg# ------------------- 150262044635Smrg# Minimum version: 1.14.0 150362044635Smrg# 150462044635Smrg# Checks for various brands of compilers and sets flags as appropriate: 150562044635Smrg# GNU gcc - relies on AC_PROG_CC (via AC_PROG_CC_C99) to set GCC to "yes" 15063ae17ff1Smrg# GNU g++ - relies on AC_PROG_CXX to set GXX to "yes" 150762044635Smrg# clang compiler - sets CLANGCC to "yes" 150862044635Smrg# Intel compiler - sets INTELCC to "yes" 150962044635Smrg# Sun/Oracle Solaris Studio cc - sets SUNCC to "yes" 151062044635Smrg# 151162044635SmrgAC_DEFUN([XORG_COMPILER_BRAND], [ 15123ae17ff1SmrgAC_LANG_CASE( 15133ae17ff1Smrg [C], [ 15143ae17ff1Smrg AC_REQUIRE([AC_PROG_CC_C99]) 15153ae17ff1Smrg ], 15163ae17ff1Smrg [C++], [ 15173ae17ff1Smrg AC_REQUIRE([AC_PROG_CXX]) 15183ae17ff1Smrg ] 15193ae17ff1Smrg) 152062044635SmrgAC_CHECK_DECL([__clang__], [CLANGCC="yes"], [CLANGCC="no"]) 152162044635SmrgAC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"]) 152262044635SmrgAC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) 152362044635Smrg]) # XORG_COMPILER_BRAND 152462044635Smrg 15253ae17ff1Smrg# XORG_TESTSET_CFLAG(<variable>, <flag>, [<alternative flag>, ...]) 15263ae17ff1Smrg# --------------- 15273ae17ff1Smrg# Minimum version: 1.16.0 15283ae17ff1Smrg# 15293ae17ff1Smrg# Test if the compiler works when passed the given flag as a command line argument. 15303ae17ff1Smrg# If it succeeds, the flag is appeneded to the given variable. If not, it tries the 15313ae17ff1Smrg# next flag in the list until there are no more options. 15323ae17ff1Smrg# 15333ae17ff1Smrg# Note that this does not guarantee that the compiler supports the flag as some 15343ae17ff1Smrg# compilers will simply ignore arguments that they do not understand, but we do 15353ae17ff1Smrg# attempt to weed out false positives by using -Werror=unknown-warning-option and 15363ae17ff1Smrg# -Werror=unused-command-line-argument 15373ae17ff1Smrg# 15383ae17ff1SmrgAC_DEFUN([XORG_TESTSET_CFLAG], [ 15393ae17ff1Smrgm4_if([$#], 0, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) 15403ae17ff1Smrgm4_if([$#], 1, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) 15413ae17ff1Smrg 15423ae17ff1SmrgAC_LANG_COMPILER_REQUIRE 15433ae17ff1Smrg 15443ae17ff1SmrgAC_LANG_CASE( 15453ae17ff1Smrg [C], [ 15463ae17ff1Smrg AC_REQUIRE([AC_PROG_CC_C99]) 15473ae17ff1Smrg define([PREFIX], [C]) 15483ae17ff1Smrg define([CACHE_PREFIX], [cc]) 15493ae17ff1Smrg define([COMPILER], [$CC]) 15503ae17ff1Smrg ], 15513ae17ff1Smrg [C++], [ 15523ae17ff1Smrg define([PREFIX], [CXX]) 15533ae17ff1Smrg define([CACHE_PREFIX], [cxx]) 15543ae17ff1Smrg define([COMPILER], [$CXX]) 15553ae17ff1Smrg ] 15563ae17ff1Smrg) 15573ae17ff1Smrg 15583ae17ff1Smrg[xorg_testset_save_]PREFIX[FLAGS]="$PREFIX[FLAGS]" 15593ae17ff1Smrg 15603ae17ff1Smrgif test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "x" ; then 15613ae17ff1Smrg PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" 15623ae17ff1Smrg AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unknown-warning-option], 15633ae17ff1Smrg [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option], 15643ae17ff1Smrg AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], 15653ae17ff1Smrg [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=yes], 15663ae17ff1Smrg [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=no])) 15673ae17ff1Smrg [xorg_testset_]CACHE_PREFIX[_unknown_warning_option]=$[xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option] 15683ae17ff1Smrg PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" 15693ae17ff1Smrgfi 15703ae17ff1Smrg 15713ae17ff1Smrgif test "x$[xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]" = "x" ; then 15723ae17ff1Smrg if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "xyes" ; then 15733ae17ff1Smrg PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" 15743ae17ff1Smrg fi 15753ae17ff1Smrg PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" 15763ae17ff1Smrg AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unused-command-line-argument], 15773ae17ff1Smrg [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument], 15783ae17ff1Smrg AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], 15793ae17ff1Smrg [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=yes], 15803ae17ff1Smrg [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=no])) 15813ae17ff1Smrg [xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]=$[xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument] 15823ae17ff1Smrg PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" 15833ae17ff1Smrgfi 15843ae17ff1Smrg 15853ae17ff1Smrgfound="no" 15863ae17ff1Smrgm4_foreach([flag], m4_cdr($@), [ 15873ae17ff1Smrg if test $found = "no" ; then 158843c16309Smrg if test "x$xorg_testset_]CACHE_PREFIX[_unknown_warning_option" = "xyes" ; then 15893ae17ff1Smrg PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" 15903ae17ff1Smrg fi 15913ae17ff1Smrg 159243c16309Smrg if test "x$xorg_testset_]CACHE_PREFIX[_unused_command_line_argument" = "xyes" ; then 15933ae17ff1Smrg PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" 15943ae17ff1Smrg fi 15953ae17ff1Smrg 15963ae17ff1Smrg PREFIX[FLAGS]="$PREFIX[FLAGS] ]flag[" 15973ae17ff1Smrg 15983ae17ff1Smrgdnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname 159943c16309Smrg AC_MSG_CHECKING([if ]COMPILER[ supports ]flag[]) 16003ae17ff1Smrg cacheid=AS_TR_SH([xorg_cv_]CACHE_PREFIX[_flag_]flag[]) 16013ae17ff1Smrg AC_CACHE_VAL($cacheid, 16023ae17ff1Smrg [AC_LINK_IFELSE([AC_LANG_PROGRAM([int i;])], 16033ae17ff1Smrg [eval $cacheid=yes], 16043ae17ff1Smrg [eval $cacheid=no])]) 16053ae17ff1Smrg 16063ae17ff1Smrg PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" 16073ae17ff1Smrg 16083ae17ff1Smrg eval supported=\$$cacheid 16093ae17ff1Smrg AC_MSG_RESULT([$supported]) 16103ae17ff1Smrg if test "$supported" = "yes" ; then 16113ae17ff1Smrg $1="$$1 ]flag[" 16123ae17ff1Smrg found="yes" 16133ae17ff1Smrg fi 16143ae17ff1Smrg fi 16153ae17ff1Smrg]) 16163ae17ff1Smrg]) # XORG_TESTSET_CFLAG 16173ae17ff1Smrg 16183ae17ff1Smrg# XORG_COMPILER_FLAGS 16193ae17ff1Smrg# --------------- 16203ae17ff1Smrg# Minimum version: 1.16.0 16213ae17ff1Smrg# 16223ae17ff1Smrg# Defines BASE_CFLAGS or BASE_CXXFLAGS to contain a set of command line 16233ae17ff1Smrg# arguments supported by the selected compiler which do NOT alter the generated 16243ae17ff1Smrg# code. These arguments will cause the compiler to print various warnings 16253ae17ff1Smrg# during compilation AND turn a conservative set of warnings into errors. 16263ae17ff1Smrg# 16273ae17ff1Smrg# The set of flags supported by BASE_CFLAGS and BASE_CXXFLAGS will grow in 16283ae17ff1Smrg# future versions of util-macros as options are added to new compilers. 16293ae17ff1Smrg# 16303ae17ff1SmrgAC_DEFUN([XORG_COMPILER_FLAGS], [ 16313ae17ff1SmrgAC_REQUIRE([XORG_COMPILER_BRAND]) 16323ae17ff1Smrg 16333ae17ff1SmrgAC_ARG_ENABLE(selective-werror, 16343ae17ff1Smrg AS_HELP_STRING([--disable-selective-werror], 16353ae17ff1Smrg [Turn off selective compiler errors. (default: enabled)]), 16363ae17ff1Smrg [SELECTIVE_WERROR=$enableval], 16373ae17ff1Smrg [SELECTIVE_WERROR=yes]) 16383ae17ff1Smrg 16393ae17ff1SmrgAC_LANG_CASE( 16403ae17ff1Smrg [C], [ 16413ae17ff1Smrg define([PREFIX], [C]) 16423ae17ff1Smrg ], 16433ae17ff1Smrg [C++], [ 16443ae17ff1Smrg define([PREFIX], [CXX]) 16453ae17ff1Smrg ] 16463ae17ff1Smrg) 16473ae17ff1Smrg# -v is too short to test reliably with XORG_TESTSET_CFLAG 16483ae17ff1Smrgif test "x$SUNCC" = "xyes"; then 16493ae17ff1Smrg [BASE_]PREFIX[FLAGS]="-v" 16503ae17ff1Smrgelse 16513ae17ff1Smrg [BASE_]PREFIX[FLAGS]="" 16523ae17ff1Smrgfi 16533ae17ff1Smrg 16543ae17ff1Smrg# This chunk of warnings were those that existed in the legacy CWARNFLAGS 16553ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wall]) 16563ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-arith]) 16573ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-declarations]) 16583ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wformat=2], [-Wformat]) 16593ae17ff1Smrg 16603ae17ff1SmrgAC_LANG_CASE( 16613ae17ff1Smrg [C], [ 16623ae17ff1Smrg XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wstrict-prototypes]) 16633ae17ff1Smrg XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes]) 16643ae17ff1Smrg XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs]) 16653ae17ff1Smrg XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast]) 166643c16309Smrg XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition], [-fd]) 16673ae17ff1Smrg XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wdeclaration-after-statement]) 16683ae17ff1Smrg ] 16693ae17ff1Smrg) 16703ae17ff1Smrg 16713ae17ff1Smrg# This chunk adds additional warnings that could catch undesired effects. 16723ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused]) 16733ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized]) 16743ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow]) 16753ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn]) 16763ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute]) 16773ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls]) 1678c1197e68SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op]) 16793ae17ff1Smrg 16803ae17ff1Smrg# These are currently disabled because they are noisy. They will be enabled 16813ae17ff1Smrg# in the future once the codebase is sufficiently modernized to silence 16823ae17ff1Smrg# them. For now, I don't want them to drown out the other warnings. 16833ae17ff1Smrg# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) 16843ae17ff1Smrg# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) 168543c16309Smrg# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual]) 16863ae17ff1Smrg 16873ae17ff1Smrg# Turn some warnings into errors, so we don't accidently get successful builds 16883ae17ff1Smrg# when there are problems that should be fixed. 16893ae17ff1Smrg 16903ae17ff1Smrgif test "x$SELECTIVE_WERROR" = "xyes" ; then 16913ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED]) 16923ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=nonnull]) 16933ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=init-self]) 16943ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=main]) 16953ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=missing-braces]) 16963ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=sequence-point]) 16973ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT]) 16983ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=trigraphs]) 16993ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=array-bounds]) 17003ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=write-strings]) 17013ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=address]) 17023ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION]) 17033ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=pointer-to-int-cast]) # Also -errwarn=E_BAD_PTR_INT_COMBINATION 17043ae17ff1Smrgelse 17053ae17ff1SmrgAC_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]) 17063ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wimplicit]) 17073ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnonnull]) 17083ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Winit-self]) 17093ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmain]) 17103ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-braces]) 17113ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wsequence-point]) 17123ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wreturn-type]) 17133ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wtrigraphs]) 17143ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Warray-bounds]) 17153ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wwrite-strings]) 17163ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Waddress]) 17173ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wint-to-pointer-cast]) 17183ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-to-int-cast]) 17193ae17ff1Smrgfi 17203ae17ff1Smrg 17213ae17ff1SmrgAC_SUBST([BASE_]PREFIX[FLAGS]) 17223ae17ff1Smrg]) # XORG_COMPILER_FLAGS 17233ae17ff1Smrg 1724ffab5952Smrg# XORG_CWARNFLAGS 1725ffab5952Smrg# --------------- 1726ffab5952Smrg# Minimum version: 1.2.0 17273ae17ff1Smrg# Deprecated since: 1.16.0 (Use XORG_COMPILER_FLAGS instead) 1728ffab5952Smrg# 1729ffab5952Smrg# Defines CWARNFLAGS to enable C compiler warnings. 1730ffab5952Smrg# 17313ae17ff1Smrg# This function is deprecated because it defines -fno-strict-aliasing 17323ae17ff1Smrg# which alters the code generated by the compiler. If -fno-strict-aliasing 17333ae17ff1Smrg# is needed, then it should be added explicitly in the module when 17343ae17ff1Smrg# it is updated to use BASE_CFLAGS. 17353ae17ff1Smrg# 1736ffab5952SmrgAC_DEFUN([XORG_CWARNFLAGS], [ 17373ae17ff1SmrgAC_REQUIRE([XORG_COMPILER_FLAGS]) 173862044635SmrgAC_REQUIRE([XORG_COMPILER_BRAND]) 17393ae17ff1SmrgAC_LANG_CASE( 17403ae17ff1Smrg [C], [ 17413ae17ff1Smrg CWARNFLAGS="$BASE_CFLAGS" 17423ae17ff1Smrg if test "x$GCC" = xyes ; then 17433ae17ff1Smrg CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" 17443ae17ff1Smrg fi 17453ae17ff1Smrg AC_SUBST(CWARNFLAGS) 17463ae17ff1Smrg ] 17473ae17ff1Smrg) 1748ffab5952Smrg]) # XORG_CWARNFLAGS 1749ffab5952Smrg 1750ffab5952Smrg# XORG_STRICT_OPTION 1751ffab5952Smrg# ----------------------- 1752ffab5952Smrg# Minimum version: 1.3.0 1753ffab5952Smrg# 175462044635Smrg# Add configure option to enable strict compilation flags, such as treating 175562044635Smrg# warnings as fatal errors. 175662044635Smrg# If --enable-strict-compilation is passed to configure, adds strict flags to 17573ae17ff1Smrg# $BASE_CFLAGS or $BASE_CXXFLAGS and the deprecated $CWARNFLAGS. 175862044635Smrg# 175962044635Smrg# Starting in 1.14.0 also exports $STRICT_CFLAGS for use in other tests or 176062044635Smrg# when strict compilation is unconditionally desired. 1761ffab5952SmrgAC_DEFUN([XORG_STRICT_OPTION], [ 1762ffab5952SmrgAC_REQUIRE([XORG_CWARNFLAGS]) 17633ae17ff1SmrgAC_REQUIRE([XORG_COMPILER_FLAGS]) 1764ffab5952Smrg 1765ffab5952SmrgAC_ARG_ENABLE(strict-compilation, 1766ffab5952Smrg AS_HELP_STRING([--enable-strict-compilation], 1767ffab5952Smrg [Enable all warnings from compiler and make them errors (default: disabled)]), 1768ffab5952Smrg [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no]) 17693ae17ff1Smrg 17703ae17ff1SmrgAC_LANG_CASE( 17713ae17ff1Smrg [C], [ 17723ae17ff1Smrg define([PREFIX], [C]) 17733ae17ff1Smrg ], 17743ae17ff1Smrg [C++], [ 17753ae17ff1Smrg define([PREFIX], [CXX]) 17763ae17ff1Smrg ] 17773ae17ff1Smrg) 17783ae17ff1Smrg 17793ae17ff1Smrg[STRICT_]PREFIX[FLAGS]="" 17803ae17ff1SmrgXORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-pedantic]) 17813ae17ff1SmrgXORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror], [-errwarn]) 17823ae17ff1Smrg 17833ae17ff1Smrg# Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not 17843ae17ff1Smrg# activate it with -Werror, so we add it here explicitly. 17853ae17ff1SmrgXORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror=attributes]) 17863ae17ff1Smrg 1787ffab5952Smrgif test "x$STRICT_COMPILE" = "xyes"; then 17883ae17ff1Smrg [BASE_]PREFIX[FLAGS]="$[BASE_]PREFIX[FLAGS] $[STRICT_]PREFIX[FLAGS]" 17893ae17ff1Smrg AC_LANG_CASE([C], [CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"]) 1790ffab5952Smrgfi 17913ae17ff1SmrgAC_SUBST([STRICT_]PREFIX[FLAGS]) 17923ae17ff1SmrgAC_SUBST([BASE_]PREFIX[FLAGS]) 17933ae17ff1SmrgAC_LANG_CASE([C], AC_SUBST([CWARNFLAGS])) 1794ffab5952Smrg]) # XORG_STRICT_OPTION 1795ffab5952Smrg 1796ffab5952Smrg# XORG_DEFAULT_OPTIONS 1797ffab5952Smrg# -------------------- 1798ffab5952Smrg# Minimum version: 1.3.0 1799ffab5952Smrg# 1800ffab5952Smrg# Defines default options for X.Org modules. 1801ffab5952Smrg# 1802ffab5952SmrgAC_DEFUN([XORG_DEFAULT_OPTIONS], [ 1803ffab5952SmrgAC_REQUIRE([AC_PROG_INSTALL]) 18043ae17ff1SmrgXORG_COMPILER_FLAGS 1805ffab5952SmrgXORG_CWARNFLAGS 1806ffab5952SmrgXORG_STRICT_OPTION 1807ffab5952SmrgXORG_RELEASE_VERSION 1808ffab5952SmrgXORG_CHANGELOG 1809ffab5952SmrgXORG_INSTALL 1810ffab5952SmrgXORG_MANPAGE_SECTIONS 1811ffab5952Smrgm4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], 1812ffab5952Smrg [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])]) 1813ffab5952Smrg]) # XORG_DEFAULT_OPTIONS 1814ffab5952Smrg 1815ffab5952Smrg# XORG_INSTALL() 1816ffab5952Smrg# ---------------- 1817ffab5952Smrg# Minimum version: 1.4.0 1818ffab5952Smrg# 1819ffab5952Smrg# Defines the variable INSTALL_CMD as the command to copy 1820ffab5952Smrg# INSTALL from $prefix/share/util-macros. 1821ffab5952Smrg# 1822ffab5952SmrgAC_DEFUN([XORG_INSTALL], [ 1823ffab5952SmrgAC_REQUIRE([PKG_PROG_PKG_CONFIG]) 1824ffab5952Smrgmacros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros` 1825ffab5952SmrgINSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \ 1826ffab5952Smrgmv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \ 1827ffab5952Smrg|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \ 1828ffab5952Smrgecho 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)" 1829ffab5952SmrgAC_SUBST([INSTALL_CMD]) 1830ffab5952Smrg]) # XORG_INSTALL 1831