# This file is part of grecs - Gray's Extensible Configuration System -*- autoconf -*- # Copyright (C) 2007, 2009-2011 Sergey Poznyakoff # # Grex is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # Grex is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Grex. If not, see . # _GRECS_MANGLE_OPTION(NAME) # ------------------------- # Convert NAME to a valid m4 identifier, by replacing invalid characters # with underscores, and prepend the _GRECS_OPTION_ suffix to it. AC_DEFUN([_GRECS_MANGLE_OPTION], [[_GRECS_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _GRECS_SET_OPTION(NAME) # ---------------------- # Set option NAME. AC_DEFUN([_GRECS_SET_OPTION], [m4_define(_GRECS_MANGLE_OPTION([$1]), 1)]) # _GRECS_IF_OPTION_SET(NAME,IF-SET,IF-NOT-SET) # ------------------------------------------- # Check if option NAME is set. AC_DEFUN([_GRECS_IF_OPTION_SET], [m4_ifset(_GRECS_MANGLE_OPTION([$1]),[$2],[$3])]) # _GRECS_OPTION_SWITCH(NAME1,IF-SET1,[NAME2,IF-SET2,[...]],[IF-NOT-SET]) # ------------------------------------------------------------------------ # If NAME1 is set, run IF-SET1. Otherwise, if NAME2 is set, run IF-SET2. # Continue the process for all name-if-set pairs within [...]. If none # of the options is set, run IF-NOT-SET. AC_DEFUN([_GRECS_OPTION_SWITCH], [m4_if([$4],,[_GRECS_IF_OPTION_SET($@)],dnl [$3],,[_GRECS_IF_OPTION_SET($@)],dnl [_GRECS_IF_OPTION_SET([$1],[$2],[_GRECS_OPTION_SWITCH(m4_shift(m4_shift($@)))])])]) # _GRECS_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Grecs options. AC_DEFUN([_GRECS_SET_OPTIONS], [m4_foreach_w([_GRECS_Option], [$1], [_GRECS_SET_OPTION(_GRECS_Option)])]) # GRECS_SETUP([OPTIONS],[pp-setup-file]) # # Options are: # no-preproc Disable the use of preprocessor. # std-pp-setup Install standard pp-setup file. # pp-setup-option Add the --with-pp-setup-file option to the # configuration file. The option allows user to # control whether the pp-setup file is installed. # # The pp-setup-file argument supplies the pathname of the preprocessor # setup file in the source tree. It is ignored if std-pp-setup option is # given. # # If neither std-pp-setup option, nor pp-setup-file argument are supplied, # no preprocessor setup file is installed. AC_DEFUN([GRECS_SETUP],[ AC_PROG_YACC AM_PROG_LEX _GRECS_SET_OPTIONS([$1]) # ********************** # Preprocessor # ********************** _GRECS_IF_OPTION_SET([no-preproc], [use_ext_pp=no], [AC_ARG_WITH([preprocessor], AC_HELP_STRING([--without-preprocessor], [do not use external preprocessor]), [case "${withval}" in yes) use_ext_pp=yes ;; no) use_ext_pp=no ;; *) AC_MSG_ERROR(bad value ${withval} for --with-preprocessor) ;; esac],[use_ext_pp=yes])]) if test $use_ext_pp != no; then # Check for default preprocessor AC_ARG_VAR([DEFAULT_PREPROCESSOR], [Set default preprocessor name]) if test -z "$DEFAULT_PREPROCESSOR" ; then DEFAULT_PREPROCESSOR="m4 -s" fi save_PATH=$PATH PREPROC_OPTIONS=`echo $DEFAULT_PREPROCESSOR | sed -n 's/[[^ ]][[^ ]]* //p'` case "$DEFAULT_PREPROCESSOR" in /*) PATH=`expr $DEFAULT_PREPROCESSOR : '\(.*\)/.*'`:$PATH DEFAULT_PREPROCESSOR=`expr $DEFAULT_PREPROCESSOR : '.*/\(.*\)'`;; esac AC_PATH_PROG(PPBIN, $DEFAULT_PREPROCESSOR) DEFAULT_PREPROCESSOR=$PPBIN if test -n "$DEFAULT_PREPROCESSOR"; then DEFAULT_PREPROCESSOR="$DEFAULT_PREPROCESSOR $PREPROC_OPTIONS" _GRECS_IF_OPTION_SET([std-pp-setup], [PP_SETUP_FILE='pp-setup'], [m4_if([$2],,[PP_SETUP_FILE=],[PP_SETUP_FILE='$2'])]) AC_SUBST(PP_SETUP_FILE) if test -n "$PP_SETUP_FILE"; then _GRECS_IF_OPTION_SET([pp-setup-option], [AC_ARG_WITH([pp-setup-file], AC_HELP_STRING([--with-pp-setup-file], [install the default pp-setup file]), [case "${withval}" in yes) ;; no) PP_SETUP_FILE=;; *) AC_MSG_ERROR([bad value ${withval} for --with-pp-setup-file]) ;; esac])], [case $PPBIN in *m4) ;; # Install default pp-setup *) PP_SETUP_FILE=;; # Skip it esac]) fi fi PATH=$save_PATH DEFAULT_PREPROCESSOR="\\\"$DEFAULT_PREPROCESSOR\\\"" else DEFAULT_PREPROCESSOR=NULL fi AC_SUBST([GRECS_INCLUDES]) ])