From f92fc22fdefbd34e78ce89b96f91c45db3c5c06b Mon Sep 17 00:00:00 2001 From: tsutsumi <> Date: Tue, 16 Sep 2003 13:41:58 +0000 Subject: [PATCH] new --- config/ac_create_prefix_config_h.m4 | 107 ++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 config/ac_create_prefix_config_h.m4 diff --git a/config/ac_create_prefix_config_h.m4 b/config/ac_create_prefix_config_h.m4 new file mode 100644 index 0000000..15604c5 --- /dev/null +++ b/config/ac_create_prefix_config_h.m4 @@ -0,0 +1,107 @@ +dnl @synopsis AC_CREATE_PREFIX_CONFIG_H [(OUTPUT-HEADER [,PREFIX [,ORIG-HEADER]])] +dnl +dnl this is a new variant from ac_prefix_config_ +dnl this one will use a lowercase-prefix if +dnl the config-define was starting with a lowercase-char, e.g. +dnl #define const or #define restrict or #define off_t +dnl (and this one can live in another directory, e.g. testpkg/config.h +dnl therefore I decided to move the output-header to be the first arg) +dnl +dnl takes the usual config.h generated header file; looks for each of +dnl the generated "#define SOMEDEF" lines, and prefixes the defined name +dnl (ie. makes it "#define PREFIX_SOMEDEF". The result is written to +dnl the output config.header file. The PREFIX is converted to uppercase +dnl for the conversions. +dnl +dnl default OUTPUT-HEADER = $PACKAGE-config.h +dnl default PREFIX = $PACKAGE +dnl default ORIG-HEADER, derived from OUTPUT-HEADER +dnl if OUTPUT-HEADER has a "/", use the basename +dnl if OUTPUT-HEADER has a "-", use the section after it. +dnl otherwise, just config.h +dnl +dnl In most cases, the configure.in will contain a line saying +dnl AC_CONFIG_HEADER(config.h) +dnl somewhere *before* AC_OUTPUT and a simple line saying +dnl AC_PREFIX_CONFIG_HEADER +dnl somewhere *after* AC_OUTPUT. +dnl +dnl example: +dnl AC_INIT(config.h.in) # config.h.in as created by "autoheader" +dnl AM_INIT_AUTOMAKE(testpkg, 0.1.1) # "#undef VERSION" and "PACKAGE" +dnl AM_CONFIG_HEADER(config.h) # in config.h.in +dnl AC_MEMORY_H # "#undef NEED_MEMORY_H" +dnl AC_C_CONST_H # "#undef const" +dnl AC_OUTPUT(Makefile) # creates the "config.h" now +dnl AC_CREATE_PREFIX_CONFIG_H # creates "testpkg-config.h" +dnl and the resulting "testpkg-config.h" contains lines like +dnl #ifndef TESTPKG_VERSION +dnl #define TESTPKG_VERSION "0.1.1" +dnl #endif +dnl #ifndef TESTPKG_NEED_MEMORY_H +dnl #define TESTPKG_NEED_MEMORY_H 1 +dnl #endif +dnl #ifndef _testpkg_const +dnl #define _testpkg_const const +dnl #endif +dnl +dnl and this "testpkg-config.h" can be installed along with other +dnl header-files, which is most convenient when creating a shared +dnl library (that has some headers) where some functionality is +dnl dependent on the OS-features detected at compile-time. No +dnl need to invent some "testpkg-confdefs.h.in" manually. :-) +dnl +dnl @version $Id$ +dnl @author Guido Draheim + +AC_DEFUN([AC_CREATE_PREFIX_CONFIG_H], +[changequote({, })dnl +ac_prefix_conf_OUT=`echo ifelse($1, , $PACKAGE-config.h, $1)` +ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e 'y:abcdefghijklmnopqrstuvwxyz./,-:ABCDEFGHIJKLMNOPQRSTUVWXYZ____:'` +ac_prefix_conf_PKG=`echo ifelse($2, , $PACKAGE, $2)` +ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:'` +ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:' -e '/^[0-9]/s/^/_/'` +ac_prefix_conf_INP=`echo ifelse($3, , _, $3)` +if test "$ac_prefix_conf_INP" = "_"; then + case $ac_prefix_conf_OUT in + */*) ac_prefix_conf_INP=`basename $ac_prefix_conf_OUT` + ;; + *-*) ac_prefix_conf_INP=`echo $ac_prefix_conf_OUT | sed -e 's/[a-zA-Z0-9_]*-//'` + ;; + *) ac_prefix_conf_INP=config.h + ;; + esac +fi +changequote([, ])dnl +if test -z "$ac_prefix_conf_PKG" ; then + AC_MSG_ERROR([no prefix for _PREFIX_PKG_CONFIG_H]) +else + AC_MSG_RESULT(creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines) + if test -f $ac_prefix_conf_INP ; then + AS_DIRNAME([/* automatically generated */], $ac_prefix_conf_OUT) +changequote({, })dnl + echo '#ifndef '$ac_prefix_conf_DEF >$ac_prefix_conf_OUT + echo '#define '$ac_prefix_conf_DEF' 1' >>$ac_prefix_conf_OUT + echo ' ' >>$ac_prefix_conf_OUT + echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$ac_prefix_conf_OUT + + echo 's/#undef *\([A-Z_]\)/#undef '$ac_prefix_conf_UPP'_\1/' >conftest.sed + echo 's/#undef *\([a-z]\)/#undef '$ac_prefix_conf_LOW'_\1/' >>conftest.sed + echo 's/#define *\([A-Z_][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_UPP"_\\1 \\" >>conftest.sed + echo '#define '$ac_prefix_conf_UPP"_\\1 \\2 \\" >>conftest.sed + echo '#endif/' >>conftest.sed + echo 's/#define *\([a-z][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_LOW"_\\1 \\" >>conftest.sed + echo '#define '$ac_prefix_conf_LOW"_\\1 \\2 \\" >>conftest.sed + echo '#endif/' >>conftest.sed + sed -f conftest.sed $ac_prefix_conf_INP >>$ac_prefix_conf_OUT + echo ' ' >>$ac_prefix_conf_OUT + echo '/*' $ac_prefix_conf_DEF '*/' >>$ac_prefix_conf_OUT + echo '#endif' >>$ac_prefix_conf_OUT +changequote([, ])dnl + else + AC_MSG_ERROR([input file $ac_prefix_conf_IN does not exist, dnl + skip generating $ac_prefix_conf_OUT]) + fi + rm -f conftest.* +fi]) + -- 2.11.0