diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2008-09-06 17:26:51 -0400 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2008-09-06 17:44:19 -0400 |
commit | c881226afd03a95e9b94f497477315d69197c238 (patch) | |
tree | b6fda9ad64353c538c1f684eb6f499ca26faf29a /build/configure.ac.enable | |
parent | 31b09965b7c6210e5602167e260fa21b4c310bd1 (diff) |
[configure.ac.enable] Further break feature configuration hooks
Diffstat (limited to 'build/configure.ac.enable')
-rw-r--r-- | build/configure.ac.enable | 231 |
1 files changed, 138 insertions, 93 deletions
diff --git a/build/configure.ac.enable b/build/configure.ac.enable index 3df45cd55..0bc5e9319 100644 --- a/build/configure.ac.enable +++ b/build/configure.ac.enable @@ -238,6 +238,9 @@ dnl =========================================================================== dnl dnl Cairo-specific configuration facilities dnl +dnl =========================================================================== + + dnl dnl Define macros to enable various features. @@ -273,120 +276,43 @@ AC_DEFUN([CAIRO_ENABLE_FUNCTIONS], [_CAIRO_ENABLE([$1], [$2 functions], functions, [$3],[$4])]) - -dnl =========================================================================== dnl -dnl Hooks +dnl Define cr_feature_tag ala other cr_feature_* macros +dnl Expands to CAIRO_HAS_FEATURE_ID dnl - -m4_pattern_allow(^CAIRO_HAS_) m4_define([_CAIRO_BUILD_FEATURE_TAG_NORMALIZED], [CAIRO_HAS_[$1]m4_bmatch([$1],[$2$],,[$2])]) - m4_define([_CAIRO_BUILD_FEATURE_TAG], [_CAIRO_BUILD_FEATURE_TAG_NORMALIZED(AS_TR_CPP([$1]),AS_TR_CPP(m4_ifval([$2],[ $2])))]) - m4_define([cr_feature_tag], [_CAIRO_BUILD_FEATURE_TAG(cr_feature,cr_feature_what)]) -CAIRO_FEATURE_HOOK_REGISTER(*,*, -[ - - if test "x$use_$1" = xyes; then - - CAIRO_FEATURE_VARS_FOREACH([cr_var], [[test -n "$]cr_feature[_]cr_var[" && CAIRO_]cr_var[="$]cr_feature[_]cr_var[ $CAIRO_]cr_var["] - ]) - CAIRO_FEATURES="cr_feature_tag $CAIRO_FEATURES" - m4_define([cairo_backend_pc], m4_bpatsubst(src/cairo-$1.pc,_,-)) - AC_CONFIG_FILES(cairo_backend_pc():src/cairo-backend.pc.in, - [ - $SED -i -e " - s,@backend_name@,$1,g; - s,@Backend_Name@,cr_feature_name,g; - s,@BACKEND_BASE@,$$1_BASE,g; - s,@BACKEND_REQUIRES@,$$1_REQUIRES,g; - s%@BACKEND_NONPKGCONFIG_LIBS@%$$1_NONPKGCONFIG_LIBS%g; - s,@BACKEND_NONPKGCONFIG_CFLAGS@,$$1_NONPKGCONFIG_CFLAGS,g; - " "]cairo_backend_pc()[" || - AC_MSG_ERROR(failed to update ]cairo_backend_pc()[) - ],[ - SED='$SED' - $1_BASE='$$1_BASE' - $1_REQUIRES='$$1_REQUIRES' - $1_NONPKGCONFIG_LIBS='$$1_NONPKGCONFIG_LIBS' - $1_NONPKGCONFIG_CFLAGS='$$1_NONPKGCONFIG_CFLAGS' - ]) - fi +dnl Allow feature tags in the output +m4_pattern_allow(^CAIRO_HAS_) - AM_CONDITIONAL(cr_feature_tag, test "x$use_$1" = xyes) - - dnl Collect list of all supported but disabled features - AS_IF([test "x$use_$1" != xyes -a "x]cr_feature_default[" != xno], - [ - CAIRO_NO_FEATURES="cr_feature_tag $CAIRO_NO_FEATURES" - ]) - - dnl Collect list of all (un)supported features and cairo headers - AS_IF([test "x]cr_feature_default[" = xno], - [ - CAIRO_CONFIG_AMAKE=$CAIRO_CONFIG_AMAKE' -unsupported_cairo_headers += $(cairo_$1_headers)' - CAIRO_CONFIG_WIN32=$CAIRO_CONFIG_WIN32' -unsupported_cairo_headers += $(cairo_$1_headers)' - ],[ - CAIRO_SUPPORTED_FEATURES="cr_feature_tag $CAIRO_SUPPORTED_FEATURES" - CAIRO_CONFIG_AMAKE=$CAIRO_CONFIG_AMAKE' -supported_cairo_headers += $(cairo_$1_headers)' - CAIRO_CONFIG_WIN32=$CAIRO_CONFIG_WIN32' -supported_cairo_headers += $(cairo_$1_headers)' - ]) - - dnl Collect list of all/enabled cairo source files - CAIRO_CONFIG_AMAKE=$CAIRO_CONFIG_AMAKE' -all_cairo_pkgconf += $(cairo_$1_pkgconf) -all_cairo_headers += $(cairo_$1_headers) -all_cairo_private += $(cairo_$1_private) -all_cairo_sources += $(cairo_$1_sources) -if cr_feature_tag -enabled_cairo_pkgconf += $(cairo_$1_pkgconf) -enabled_cairo_headers += $(cairo_$1_headers) -enabled_cairo_private += $(cairo_$1_private) -enabled_cairo_sources += $(cairo_$1_sources) -endif -' - CAIRO_CONFIG_WIN32=$CAIRO_CONFIG_WIN32' -all_cairo_pkgconf += $(cairo_$1_pkgconf) -all_cairo_headers += $(cairo_$1_headers) -all_cairo_private += $(cairo_$1_private) -all_cairo_sources += $(cairo_$1_sources) -ifeq ($(cr_feature_tag),1) -enabled_cairo_pkgconf += $(cairo_$1_pkgconf) -enabled_cairo_headers += $(cairo_$1_headers) -enabled_cairo_private += $(cairo_$1_private) -enabled_cairo_sources += $(cairo_$1_sources) -endif -' -]) dnl =========================================================================== dnl -dnl All .pc files are generated automatically except for this one +dnl Hooks dnl -AC_CONFIG_FILES([src/cairo.pc]) +dnl =========================================================================== dnl =========================================================================== dnl -dnl pkg-config requires, non-pkgconfig cflags and libs, and total cflags and libs +dnl Automake conditionals for all features dnl +CAIRO_FEATURE_HOOK_REGISTER(*,*, +[ + AM_CONDITIONAL(cr_feature_tag, test "x$use_$1" = xyes) +]) -dnl Accumulators -CAIRO_FEATURE_VARS_REGISTER([REQUIRES BASE]) -CAIRO_FEATURE_VARS_REGISTER([CFLAGS NONPKGCONFIG_CFLAGS]) -CAIRO_FEATURE_VARS_REGISTER([LIBS NONPKGCONFIG_LIBS], [$LIBS]) +dnl =========================================================================== +dnl dnl Substitute vars +dnl AC_SUBST(CAIRO_REQUIRES) AC_SUBST(CAIRO_BASE) AC_SUBST(CAIRO_CFLAGS) @@ -397,6 +323,21 @@ AC_SUBST(CAIRO_NONPKGCONFIG_LIBS) dnl =========================================================================== dnl +dnl Accumulate values for all feature vars +dnl + +CAIRO_FEATURE_HOOK_REGISTER(*,*, +[ + CAIRO_FEATURE_IF_ENABLED($1, + [ + CAIRO_FEATURE_VARS_FOREACH([cr_var], [[test -n "$]cr_feature[_]cr_var[" && CAIRO_]cr_var[="$]cr_feature[_]cr_var[ $CAIRO_]cr_var["] + ]) + ]) +]) + + +dnl =========================================================================== +dnl dnl Generate {src,boilerplate}/Makefile.{am,win32}.config dnl @@ -428,12 +369,117 @@ CAIRO_CONFIG_COMMANDS([$srcdir/src/Makefile.win32.config], [echo "$CAIRO_CONFIG_WIN32"], [CAIRO_CONFIG_WIN32='$CAIRO_CONFIG_WIN32']) +dnl Collect list of all supported cairo headers +CAIRO_FEATURE_HOOK_REGISTER(!no,*, +[ + CAIRO_CONFIG_AMAKE=$CAIRO_CONFIG_AMAKE'm4_newline()supported_cairo_headers += $(cairo_$1_headers)' + CAIRO_CONFIG_WIN32=$CAIRO_CONFIG_WIN32'm4_newline()supported_cairo_headers += $(cairo_$1_headers)' +]) + +dnl Collect list of all unsupported cairo headers +CAIRO_FEATURE_HOOK_REGISTER(no,*, +[ + CAIRO_CONFIG_AMAKE=$CAIRO_CONFIG_AMAKE'm4_newline()unsupported_cairo_headers += $(cairo_$1_headers)' + CAIRO_CONFIG_WIN32=$CAIRO_CONFIG_WIN32'm4_newline()unsupported_cairo_headers += $(cairo_$1_headers)' +]) + +dnl Collect list of all/enabled cairo source files +CAIRO_FEATURE_HOOK_REGISTER(*,*, +[ + CAIRO_CONFIG_AMAKE=$CAIRO_CONFIG_AMAKE' +all_cairo_pkgconf += $(cairo_$1_pkgconf) +all_cairo_headers += $(cairo_$1_headers) +all_cairo_private += $(cairo_$1_private) +all_cairo_sources += $(cairo_$1_sources) +if cr_feature_tag +enabled_cairo_pkgconf += $(cairo_$1_pkgconf) +enabled_cairo_headers += $(cairo_$1_headers) +enabled_cairo_private += $(cairo_$1_private) +enabled_cairo_sources += $(cairo_$1_sources) +endif +' + CAIRO_CONFIG_WIN32=$CAIRO_CONFIG_WIN32' +all_cairo_pkgconf += $(cairo_$1_pkgconf) +all_cairo_headers += $(cairo_$1_headers) +all_cairo_private += $(cairo_$1_private) +all_cairo_sources += $(cairo_$1_sources) +ifeq ($(cr_feature_tag),1) +enabled_cairo_pkgconf += $(cairo_$1_pkgconf) +enabled_cairo_headers += $(cairo_$1_headers) +enabled_cairo_private += $(cairo_$1_private) +enabled_cairo_sources += $(cairo_$1_sources) +endif +' +]) + + +dnl =========================================================================== +dnl +dnl Generate .pc files +dnl + +dnl All .pc files are generated automatically except for this one +AC_CONFIG_FILES([src/cairo.pc]) + +dnl pkg-config requires, non-pkgconfig cflags and libs, and total cflags and libs +CAIRO_FEATURE_VARS_REGISTER([REQUIRES BASE]) +CAIRO_FEATURE_VARS_REGISTER([CFLAGS NONPKGCONFIG_CFLAGS]) +CAIRO_FEATURE_VARS_REGISTER([LIBS NONPKGCONFIG_LIBS], [$LIBS]) + +dnl Generate .pc files for enabled features +CAIRO_FEATURE_HOOK_REGISTER(*,*, +[ + CAIRO_FEATURE_IF_ENABLED($1, + [ + m4_define([cairo_backend_pc], m4_bpatsubst(src/cairo-$1.pc,_,-)) + AC_CONFIG_FILES(cairo_backend_pc():src/cairo-backend.pc.in, + [ + $SED -i -e " + s,@backend_name@,$1,g; + s,@Backend_Name@,cr_feature_name,g; + s,@BACKEND_BASE@,$$1_BASE,g; + s,@BACKEND_REQUIRES@,$$1_REQUIRES,g; + s%@BACKEND_NONPKGCONFIG_LIBS@%$$1_NONPKGCONFIG_LIBS%g; + s,@BACKEND_NONPKGCONFIG_CFLAGS@,$$1_NONPKGCONFIG_CFLAGS,g; + " "]cairo_backend_pc()[" || + AC_MSG_ERROR(failed to update ]cairo_backend_pc()[) + ],[ + SED='$SED' + $1_BASE='$$1_BASE' + $1_REQUIRES='$$1_REQUIRES' + $1_NONPKGCONFIG_LIBS='$$1_NONPKGCONFIG_LIBS' + $1_NONPKGCONFIG_CFLAGS='$$1_NONPKGCONFIG_CFLAGS' + ]) + ]) +]) + dnl =========================================================================== dnl -dnl List of enabled, supported but disabled, and all supported features +dnl Generate src/cairo-features.h src/cairo-supported-features.h dnl +dnl Collect list of enabled features +CAIRO_FEATURE_HOOK_REGISTER(*,*, +[ + CAIRO_FEATURE_IF_ENABLED($1, + [ + CAIRO_FEATURES="cr_feature_tag $CAIRO_FEATURES" + ]) +]) +CAIRO_FEATURE_HOOK_REGISTER(!no,*, +[ + dnl Collect list of all supported features + CAIRO_SUPPORTED_FEATURES="cr_feature_tag $CAIRO_SUPPORTED_FEATURES" + + dnl Collect list of all supported but disabled features + CAIRO_FEATURE_IF_ENABLED($1,[], + [ + CAIRO_NO_FEATURES="cr_feature_tag $CAIRO_NO_FEATURES" + ]) + +]) + dnl Accumulators m4_pattern_allow(^CAIRO_FEATURES$) CAIRO_FEATURES="" @@ -564,4 +610,3 @@ AC_DEFUN([CAIRO_REPORT], echo "$CAIRO_WARNING_MESSAGE" ]) - |