<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.26.0">
</HEAD>
<BODY>
On Mon, 2010-05-17 at 08:07 -0700, Alan Coopersmith wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
Gaetan Nadon wrote:
&gt; Guess the lint program name by platform.
&gt; Use ARG variable for user input values.
&gt; Provide default flags per platform.

So when I want to check with sparse on Solaris, instead of --with-lint=sparse
now I have to do --with-lint LINT=SPARSE ?&nbsp;&nbsp; I guess I can learn to type that.
</PRE>
</BLOCKQUOTE>
Correct, if the sparse executable is uppercase, otherwise it would be LINT=sparse or LINT=/somewhere/sparse if the program is not on the path. If using lint, nothing to type. AC_PATH_PROG will search for lint prog in PATH and set LINT. If you set LINT on the command line as above, then AC_PROG_PATH let it pass through without intervening. <BR>
<BR>
These are free functions we get from autoconf macros with little code to write. The same has been done for all the non-deprecated doc tools. It should be fairly consistent now and it is in line with the semantic of the &quot;with&quot; option:<BR>
<BR>
<BLOCKQUOTE>
<PRE>
Optional Packages:
&nbsp; --with-PACKAGE[=ARG]&nbsp;&nbsp;&nbsp; use PACKAGE [ARG=yes]
&nbsp; --without-PACKAGE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do not use PACKAGE (same as --with-PACKAGE=no)
</PRE>
</BLOCKQUOTE>
There would be nothing wrong in having a --with-sparse option if it is a common scenario.&nbsp; <BR>
<BR>
<BLOCKQUOTE TYPE=CITE>
<PRE>
Reviewed-by: Alan Coopersmith &lt;<A HREF="mailto:alan.coopersmith@oracle.com">alan.coopersmith@oracle.com</A>&gt;

&gt; Signed-off-by: Gaetan Nadon &lt;<A HREF="mailto:memsize@videotron.ca">memsize@videotron.ca</A>&gt;
&gt; ---
&gt;  xorg-macros.m4.in |   77 +++++++++++++++++++++++++++++++++++++----------------
&gt;  1 files changed, 54 insertions(+), 23 deletions(-)
&gt; 
&gt; diff --git a/xorg-macros.m4.in b/xorg-macros.m4.in
&gt; index 0feab01..8b82b29 100644
&gt; --- a/xorg-macros.m4.in
&gt; +++ b/xorg-macros.m4.in
&gt; @@ -855,38 +855,69 @@ AC_SUBST([XTMALLOC_ZERO_CFLAGS])
&gt;  # ----------------
&gt;  # Minimum version: 1.1.0
&gt;  #
&gt; -# Sets up flags for source checkers such as lint and sparse if --with-lint
&gt; -# is specified.   (Use --with-lint=sparse for sparse.)
&gt; -# Sets $LINT to name of source checker passed with --with-lint (default: lint)
&gt; -# Sets $LINT_FLAGS to flags to pass to source checker
&gt; -# Sets LINT automake conditional if enabled (default: disabled)
&gt; +# This macro enables the use of a tool that flags some suspicious and
&gt; +# non-portable constructs (likely to be bugs) in C language source code.
&gt; +# It will attempt to locate the tool and use appropriate options.
&gt; +# There are various lint type tools on different platforms.
&gt; +#
&gt; +# Interface to module:
&gt; +# LINT:                returns the path to the tool found on the platform
&gt; +#                or the value set to LINT on the configure cmd line
&gt; +#                also an Automake conditional
&gt; +# LINT_FLAGS:        an Automake variable with appropriate flags
&gt; +#
&gt; +# --with-lint:        'yes' user instructs the module to use lint
&gt; +#                'no' user instructs the module not to use lint (default)
&gt; +#
&gt; +# If the user sets the value of LINT, AC_PATH_PROG skips testing the path.
&gt; +# If the user sets the value of LINT_FLAGS, they are used verbatim.
&gt;  #
&gt;  AC_DEFUN([XORG_WITH_LINT],[
&gt;  
&gt; -# Allow checking code with lint, sparse, etc.
&gt; +AC_ARG_VAR([LINT], [Path to a lint-style command])
&gt; +AC_ARG_VAR([LINT_FLAGS], [Flags for the lint-style command])
&gt;  AC_ARG_WITH(lint, [AS_HELP_STRING([--with-lint],
&gt;                  [Use a lint-style source code checker (default: disabled)])],
&gt;                  [use_lint=$withval], [use_lint=no])
&gt; -if test &quot;x$use_lint&quot; = &quot;xyes&quot; ; then
&gt; -        LINT=&quot;lint&quot;
&gt; +
&gt; +# Obtain platform specific info like program name and options
&gt; +# The lint program on FreeBSD and NetBSD is different from the one on Solaris
&gt; +case $host_os in
&gt; +  *linux* | *openbsd* | kfreebsd*-gnu | darwin* | cygwin*)
&gt; +        lint_name=splint
&gt; +        lint_options=&quot;-badflag&quot;
&gt; +        ;
&gt; +  *freebsd* | *netbsd*)
&gt; +        lint_name=lint
&gt; +        lint_options=&quot;-u -b&quot;
&gt; +        ;
&gt; +  *solaris*)
&gt; +        lint_name=lint
&gt; +        lint_options=&quot;-u -b -h -erroff=E_INDISTING_FROM_TRUNC2&quot;
&gt; +        ;
&gt; +esac
&gt; +
&gt; +# Test for the presence of the program (either guessed by the code or spelled out by the user)
&gt; +if test &quot;x$use_lint&quot; = x&quot;yes&quot; ; then
&gt; +   AC_PATH_PROG([LINT], [$lint_name])
&gt; +   if test &quot;x$LINT&quot; = &quot;x&quot;; then
&gt; +        AC_MSG_ERROR([--with-lint=yes specified but lint-style tool not found in PATH])
&gt; +   fi
&gt; +elif test &quot;x$use_lint&quot; = x&quot;no&quot; ; then
&gt; +   if test &quot;x$LINT&quot; != &quot;x&quot;; then
&gt; +      AC_MSG_WARN([ignoring LINT environment variable since --with-lint=no was specified])
&gt; +   fi
&gt;  else
&gt; -        LINT=&quot;$use_lint&quot;
&gt; -fi
&gt; -if test &quot;x$LINT_FLAGS&quot; = &quot;x&quot; -a &quot;x$LINT&quot; != &quot;xno&quot; ; then
&gt; -    case $LINT in
&gt; -        lint|*/lint)
&gt; -            case $host_os in
&gt; -                solaris*)
&gt; -                        LINT_FLAGS=&quot;-u -b -h -erroff=E_INDISTING_FROM_TRUNC2&quot;
&gt; -                        ;
&gt; -            esac
&gt; -            ;;
&gt; -    esac
&gt; +   AC_MSG_ERROR([--with-lint expects 'yes' or 'no'. Use LINT variable to specify path.])
&gt; +fi
&gt; +
&gt; +# User supplied flags override default flags
&gt; +if test &quot;x$LINT_FLAGS&quot; != &quot;x&quot;; then
&gt; +   lint_options=$LINT_FLAGS
&gt;  fi
&gt;  
&gt; -AC_SUBST(LINT)
&gt; -AC_SUBST(LINT_FLAGS)
&gt; -AM_CONDITIONAL(LINT, [test x$LINT != xno])
&gt; +AC_SUBST([LINT_FLAGS],[$lint_options])
&gt; +AM_CONDITIONAL(LINT, [test &quot;x$LINT&quot; != x])
&gt;  
&gt;  ]) # XORG_WITH_LINT
&gt;  


-- 
        -Alan Coopersmith-        <A HREF="mailto:alan.coopersmith@oracle.com">alan.coopersmith@oracle.com</A>
         Oracle Solaris Platform Engineering: X Window System

</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>