mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-08 13:48:02 +02:00
[configure.ac.enable] Further break feature configuration hooks
This commit is contained in:
parent
31b09965b7
commit
c881226afd
1 changed files with 145 additions and 100 deletions
|
|
@ -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 Define cr_feature_tag ala other cr_feature_* macros
|
||||
dnl Expands to CAIRO_HAS_FEATURE_ID
|
||||
dnl
|
||||
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)])
|
||||
|
||||
dnl Allow feature tags in the output
|
||||
m4_pattern_allow(^CAIRO_HAS_)
|
||||
|
||||
|
||||
|
||||
dnl ===========================================================================
|
||||
dnl
|
||||
dnl Hooks
|
||||
dnl
|
||||
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)])
|
||||
|
||||
dnl ===========================================================================
|
||||
dnl
|
||||
dnl Automake conditionals for all features
|
||||
dnl
|
||||
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
|
||||
|
||||
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
|
||||
AC_CONFIG_FILES([src/cairo.pc])
|
||||
|
||||
|
||||
dnl ===========================================================================
|
||||
dnl
|
||||
dnl pkg-config requires, non-pkgconfig cflags and libs, and total cflags and libs
|
||||
dnl
|
||||
|
||||
dnl Accumulators
|
||||
CAIRO_FEATURE_VARS_REGISTER([REQUIRES BASE])
|
||||
CAIRO_FEATURE_VARS_REGISTER([CFLAGS NONPKGCONFIG_CFLAGS])
|
||||
CAIRO_FEATURE_VARS_REGISTER([LIBS NONPKGCONFIG_LIBS], [$LIBS])
|
||||
|
||||
dnl Substitute vars
|
||||
dnl
|
||||
AC_SUBST(CAIRO_REQUIRES)
|
||||
AC_SUBST(CAIRO_BASE)
|
||||
AC_SUBST(CAIRO_CFLAGS)
|
||||
|
|
@ -395,6 +321,21 @@ AC_SUBST(CAIRO_LIBS)
|
|||
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
|
||||
|
|
@ -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 List of enabled, supported but disabled, and all supported features
|
||||
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 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"
|
||||
])
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue