diff options
-rwxr-xr-x | autogen.sh | 6 | ||||
-rw-r--r-- | boilerplate/Makefile.am | 87 | ||||
-rw-r--r-- | boilerplate/Makefile.sources | 56 | ||||
-rw-r--r-- | build/aclocal.enable.m4 | 29 | ||||
-rw-r--r-- | build/aclocal.makefile.m4 | 143 | ||||
-rw-r--r-- | build/configure.ac.features (renamed from build/configure.ac.enable) | 181 | ||||
-rw-r--r-- | configure.ac | 2 |
7 files changed, 308 insertions, 196 deletions
@@ -169,9 +169,9 @@ do_cmd $ACLOCAL $ACLOCAL_FLAGS do_cmd $AUTOHEADER -# create dummy src/Makefile.am.config and ChangeLog to make automake happy -rm -f src/Makefile.am.config -touch src/Makefile.am.config +# create dummy */Makefile.am.config and ChangeLog to make automake happy +> boilerplate/Makefile.am.config +> src/Makefile.am.config touch ChangeLog # We don't call gtkdocize right now. When we do, we should then modify diff --git a/boilerplate/Makefile.am b/boilerplate/Makefile.am index a24a6d08..5a5168c5 100644 --- a/boilerplate/Makefile.am +++ b/boilerplate/Makefile.am @@ -1,35 +1,31 @@ +# Note: All source files are listed in Makefile.sources. + include $(top_srcdir)/build/Makefile.am.common +include $(srcdir)/Makefile.am.config + +AM_CPPFLAGS = \ + -I$(srcdir) \ + -I$(top_builddir)/src \ + -I$(top_srcdir)/src \ + $(CAIRO_CFLAGS) \ + $(NULL) EXTRA_DIST += Makefile.win32 EXTRA_LTLIBRARIES += libcairoboilerplate.la -libcairoboilerplate_la_SOURCES = \ - cairo-boilerplate.c \ - cairo-boilerplate.h \ - cairo-boilerplate-getopt.c \ - cairo-boilerplate-getopt.h \ - cairo-boilerplate-scaled-font.h \ - cairo-boilerplate-system.c \ - cairo-boilerplate-system.h \ +libcairoboilerplate_la_SOURCES = \ + $(enabled_cairo_boilerplate_headers) \ + $(enabled_cairo_boilerplate_private) \ + $(enabled_cairo_boilerplate_sources) \ $(NULL) -libcairoboilerplate_la_LIBADD = $(top_builddir)/src/libcairo.la $(CAIRO_LDADD) +libcairoboilerplate_la_LIBADD = $(top_builddir)/src/libcairo.la if CAIRO_HAS_BEOS_SURFACE -#libcairoboilerplate_la_SOURCES += cairo-boilerplate-beos.cpp -libcairoboilerplate_la_SOURCES += cairo-boilerplate-beos-private.h # BeOS system headers trigger this warning -libcairoboilerplate_la_CXXFLAGS = -Wno-multichar +AM_CPPFLAGS += -Wno-multichar endif -if CAIRO_HAS_DIRECTFB_SURFACE -libcairoboilerplate_la_SOURCES += cairo-boilerplate-directfb.c -libcairoboilerplate_la_SOURCES += cairo-boilerplate-directfb-private.h -endif - -if CAIRO_HAS_GLITZ_SURFACE -libcairoboilerplate_la_SOURCES += cairo-boilerplate-glitz.c -libcairoboilerplate_la_SOURCES += cairo-boilerplate-glitz-private.h if CAIRO_CAN_TEST_GLITZ_AGL_SURFACE libcairoboilerplate_la_LIBADD += $(GLITZ_AGL_LIBS) endif @@ -42,65 +38,16 @@ endif if CAIRO_CAN_TEST_GLITZ_WGL_SURFACE libcairoboilerplate_la_LIBADD += $(GLITZ_WGL_LIBS) endif -endif - -if CAIRO_HAS_PDF_SURFACE -libcairoboilerplate_la_SOURCES += cairo-boilerplate-pdf.c -libcairoboilerplate_la_SOURCES += cairo-boilerplate-pdf.h -libcairoboilerplate_la_SOURCES += cairo-boilerplate-pdf-private.h -endif - -if CAIRO_HAS_PS_SURFACE -libcairoboilerplate_la_SOURCES += cairo-boilerplate-ps.c -libcairoboilerplate_la_SOURCES += cairo-boilerplate-ps.h -libcairoboilerplate_la_SOURCES += cairo-boilerplate-ps-private.h -endif - -if CAIRO_HAS_QUARTZ_SURFACE -libcairoboilerplate_la_SOURCES += cairo-boilerplate-quartz.c -libcairoboilerplate_la_SOURCES += cairo-boilerplate-quartz-private.h -endif - -if CAIRO_HAS_SVG_SURFACE -libcairoboilerplate_la_SOURCES += cairo-boilerplate-svg.c -libcairoboilerplate_la_SOURCES += cairo-boilerplate-svg.h -libcairoboilerplate_la_SOURCES += cairo-boilerplate-svg-private.h -endif - -if CAIRO_HAS_TEST_SURFACES -libcairoboilerplate_la_SOURCES += cairo-boilerplate-test-surfaces.c -libcairoboilerplate_la_SOURCES += cairo-boilerplate-test-surfaces-private.h -endif if CAIRO_HAS_WIN32_SURFACE -libcairoboilerplate_la_SOURCES += cairo-boilerplate-win32.c -libcairoboilerplate_la_SOURCES += cairo-boilerplate-win32-printing.c -libcairoboilerplate_la_SOURCES += cairo-boilerplate-win32-private.h libcairoboilerplate_la_LIBADD += -lwinspool endif -if CAIRO_HAS_XCB_SURFACE -libcairoboilerplate_la_SOURCES += cairo-boilerplate-xcb.c -libcairoboilerplate_la_SOURCES += cairo-boilerplate-xcb-private.h -endif - -if CAIRO_HAS_XLIB_SURFACE -libcairoboilerplate_la_SOURCES += cairo-boilerplate-xlib.c -libcairoboilerplate_la_SOURCES += cairo-boilerplate-xlib.h -libcairoboilerplate_la_SOURCES += cairo-boilerplate-xlib-private.h -endif - -AM_CPPFLAGS = \ - -I$(srcdir) \ - -I$(top_builddir)/src \ - -I$(top_srcdir)/src \ - $(CAIRO_CFLAGS) - test: check if CROSS_COMPILING else -TESTS += check-link +TESTS += check-link$(EXEEXT) endif check_PROGRAMS += check-link diff --git a/boilerplate/Makefile.sources b/boilerplate/Makefile.sources new file mode 100644 index 00000000..eaf90404 --- /dev/null +++ b/boilerplate/Makefile.sources @@ -0,0 +1,56 @@ +# Makefile.sources +# +# This file is pretty similar to $(top_srcdir)/src/Makefile.sources, +# but for boilerplate. Unlike that file, there are no special headers. +# + +cairo_boilerplate_headers = \ + cairo-boilerplate-getopt.h \ + cairo-boilerplate-scaled-font.h \ + cairo-boilerplate-system.h \ + cairo-boilerplate.h \ + $(NULL) +cairo_boilerplate_sources = \ + cairo-boilerplate-getopt.c \ + cairo-boilerplate-system.c \ + cairo-boilerplate.c \ + $(NULL) + +# automake is stupid enough to always use c++ linker if we enable the +# following lines, even if beos surface is not enabled. Disable it for now. +cairo_boilerplate_beos_private = cairo-boilerplate-beos-private.h +#libcairoboilerplate_la_SOURCES += cairo-boilerplate-beos.cpp + +cairo_boilerplate_directfb_private = cairo-boilerplate-directfb-private.h +cairo_boilerplate_directfb_sources = cairo-boilerplate-directfb.c + +cairo_boilerplate_glitz_private = cairo-boilerplate-glitz-private.h +cairo_boilerplate_glitz_sources = cairo-boilerplate-glitz.c + +cairo_boilerplate_pdf_headers = cairo-boilerplate-pdf.h +cairo_boilerplate_pdf_private = cairo-boilerplate-pdf-private.h +cairo_boilerplate_pdf_sources = cairo-boilerplate-pdf.c + +cairo_boilerplate_ps_headers = cairo-boilerplate-ps.h +cairo_boilerplate_ps_private = cairo-boilerplate-ps-private.h +cairo_boilerplate_ps_sources = cairo-boilerplate-ps.c + +cairo_boilerplate_quartz_private = cairo-boilerplate-quartz-private.h +cairo_boilerplate_quartz_sources = cairo-boilerplate-quartz.c + +cairo_boilerplate_svg_headers = cairo-boilerplate-svg.h +cairo_boilerplate_svg_private = cairo-boilerplate-svg-private.h +cairo_boilerplate_svg_sources = cairo-boilerplate-svg.c + +cairo_boilerplate_test_surfaces_private = cairo-boilerplate-test-surfaces-private.h +cairo_boilerplate_test_surfaces_sources = cairo-boilerplate-test-surfaces.c + +cairo_boilerplate_win32_private = cairo-boilerplate-win32-private.h +cairo_boilerplate_win32_sources = cairo-boilerplate-win32.c cairo-boilerplate-win32-printing.c + +cairo_boilerplate_xcb_private = cairo-boilerplate-xcb-private.h +cairo_boilerplate_xcb_sources = cairo-boilerplate-xcb.c + +cairo_boilerplate_xlib_headers = cairo-boilerplate-xlib.h +cairo_boilerplate_xlib_private = cairo-boilerplate-xlib-private.h +cairo_boilerplate_xlib_sources = cairo-boilerplate-xlib.c diff --git a/build/aclocal.enable.m4 b/build/aclocal.enable.m4 index 31432a4e..f7a660fa 100644 --- a/build/aclocal.enable.m4 +++ b/build/aclocal.enable.m4 @@ -222,8 +222,8 @@ m4_define([_CAIRO_ACCUMULATORS_REGISTER], m4_foreach_w([cr_var], [$1], [m4_pattern_allow([CAIRO_]cr_var)])dnl ])dnl -m4_define([_CAIRO_SH_ESCAPE],['m4_bpatsubst([$1],['],[\'])'])dnl -m4_define([_CAIRO_SH_ESCAPE_UNQUOTED],["m4_bpatsubst([$1],["],[\"])"])dnl +m4_define([_CAIRO_SH_ESCAPE],['m4_bpatsubst([$1],['],[\\'])'])dnl +m4_define([_CAIRO_SH_ESCAPE_UNQUOTED],["m4_bpatsubst([$1],["],[\\"])"])dnl dnl dnl CAIRO_ACCUMULATORS_REGISTER(VARS, SEPARATOR=[], INITIAL-VALUE=[]) @@ -246,12 +246,12 @@ dnl so it can reference other shell variables for example. dnl AC_DEFUN([CAIRO_ACCUMULATORS_REGISTER_UNQUOTED], [dnl - _CAIRO_ACCUMULATORS_REGISTER([$1],[$2],_CAIRO_SH_ESCAPE_UNQUOTED[$3])dnl + _CAIRO_ACCUMULATORS_REGISTER([$1],[$2],_CAIRO_SH_ESCAPE_UNQUOTED([$3]))dnl ])dnl m4_define([_CAIRO_ACCUMULATOR_CHECK], [dnl - m4_ifdef([cr_acc_$1_sep],,[m4_fatal([Accumulator ]$1[ not defined.])])dnl + m4_ifdef([cr_acc_$1_sep],,[m4_fatal([Accumulator `]$1[' not defined.])])dnl ])dnl m4_define([_CAIRO_ACCUMULATE], @@ -309,6 +309,26 @@ AC_DEFUN([CAIRO_ACCUMULATE_UNQUOTED_BEFORE], ])dnl dnl +dnl CAIRO_ACCUMULATE_UNQUOTED_UNCHECKED(VAR, VALUE) +dnl +dnl Like CAIRO_ACCUMULATE_UNQUOTED but VALUE is not tested for emptiness. +dnl +AC_DEFUN([CAIRO_ACCUMULATE_UNQUOTED_UNCHECKED], +[dnl + _CAIRO_ACCUMULATE([$1], [$2], [CAIRO_$1="${CAIRO_$1}]m4_do([cr_acc_$1_sep])["]_CAIRO_SH_ESCAPE_UNQUOTED([$2]))dnl +])dnl + +dnl +dnl CAIRO_ACCUMULATE_UNQUOTED_UNCHECKED_BEFORE(VAR, VALUE) +dnl +dnl Like CAIRO_ACCUMULATE_UNQUOTED_BEFORE but VALUE is not tested for emptiness. +dnl +AC_DEFUN([CAIRO_ACCUMULATE_UNQUOTED_BEFORE], +[dnl + _CAIRO_ACCUMULATE([$1], [$2], [CAIRO_$1=]_CAIRO_SH_ESCAPE_UNQUOTED([$2])["]m4_do([cr_acc_$1_sep])[${CAIRO_$1}"])dnl +])dnl + +dnl dnl CAIRO_ACCUMULATORS_FOREACH(VAR, COMMANDS) dnl dnl Run COMMANDS for each registered accumulator. @@ -439,4 +459,3 @@ AC_DEFUN([CAIRO_FEATURE_HOOK_REGISTER], ], m4_newline)dnl ])dnl - diff --git a/build/aclocal.makefile.m4 b/build/aclocal.makefile.m4 new file mode 100644 index 00000000..e7a19c11 --- /dev/null +++ b/build/aclocal.makefile.m4 @@ -0,0 +1,143 @@ +dnl +dnl These are the facilities for generating Makefile.am.config and +dnl Makefile.win32.config files. +dnl + +dnl =========================================================================== + +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])])dnl +m4_define([_CAIRO_BUILD_FEATURE_TAG], + [_CAIRO_BUILD_FEATURE_TAG_NORMALIZED(AS_TR_CPP([$1]),AS_TR_CPP(m4_ifval([$2],[ $2])))])dnl +m4_define([cr_feature_tag], + [_CAIRO_BUILD_FEATURE_TAG(cr_feature,cr_feature_what)])dnl + + +dnl =========================================================================== +dnl +dnl CAIRO_INIT_MAKEFILES() +dnl +dnl Sets up automake conditionals for all features +dnl +AC_DEFUN([CAIRO_INIT_MAKEFILES], +[dnl + dnl Allow feature tags in the output + m4_pattern_allow(^CAIRO_HAS_)dnl + + dnl Automake conditionals for all features + CAIRO_FEATURE_HOOK_REGISTER(*,*,*, + [dnl + AM_CONDITIONAL(cr_feature_tag, test "x$use_$1" = xyes)dnl + ])dnl +])dnl + +dnl =========================================================================== + +m4_define([_CAIRO_MAKEFILES])dnl + +dnl +dnl CAIRO_CONFIG_MAKEFILE(TAG, DIR) +dnl +dnl Create DIR/Makefile.*.config files +dnl TAG is a TAG used by other CAIRO_MAKEFILE_* macros to append to these +dnl Makefile's. +dnl +AC_DEFUN([CAIRO_CONFIG_MAKEFILE], +[dnl + m4_append_uniq([_CAIRO_MAKEFILES], [$1], [ ],, + [m4_fatal([Makefile `$1' already registered])])dnl + + dnl Remember directory for this makefile tag + m4_define([cr_make_$1_dir],[$2])dnl + + dnl Accumulators + CAIRO_ACCUMULATORS_REGISTER(MAKEFILE_$1_AMAKE, m4_newline, [# Generated by configure. Do not edit.]m4_newline[include $(top_srcdir)/$2/Makefile.sources]m4_newline)dnl + CAIRO_ACCUMULATORS_REGISTER_UNQUOTED(MAKEFILE_$1_WIN32, m4_newline, [$CAIRO_MAKEFILE_$1_AMAKE])dnl + + dnl Generate + CAIRO_CONFIG_COMMANDS([$srcdir/$2/Makefile.am.config], + [echo "$CAIRO_MAKEFILE_$1_AMAKE"], + [CAIRO_MAKEFILE_$1_AMAKE='$CAIRO_MAKEFILE_$1_AMAKE'])dnl + CAIRO_CONFIG_COMMANDS([$srcdir/$2/Makefile.win32.config], + [echo "$CAIRO_MAKEFILE_$1_WIN32"], + [CAIRO_MAKEFILE_$1_WIN32='$CAIRO_MAKEFILE_$1_WIN32'])dnl +])dnl + +m4_define([_CAIRO_MAKEFILE_CHECK], +[dnl + m4_ifdef([cr_make_$1_dir],,[m4_fatal([Makefile `]$1[' not defined.])])dnl +])dnl + +m4_pattern_allow([cr_make_tmp]) + +dnl +dnl CAIRO_MAKEFILE_ACCUMULATE(TAG, CONTENT) +dnl +dnl Accumulates CONTENT to Makefile's for TAG. If TAG is *, +dnl CONTENT is added to all Makefile's. +dnl +AC_DEFUN([CAIRO_MAKEFILE_ACCUMULATE], +[dnl + m4_if([$1],[*],,[_CAIRO_MAKEFILE_CHECK([$1])])dnl + m4_foreach_w([cr_makefile], m4_if([$1],[*],_CAIRO_MAKEFILES,[$1]), + [dnl + m4_pushdef([cr_make_acc_contents],[$2])dnl + cr_make_tmp=_CAIRO_SH_ESCAPE(cr_make_acc_contents(cr_makefile)) + m4_popdef([cr_make_acc_contents])dnl + CAIRO_ACCUMULATE_UNQUOTED_UNCHECKED([MAKEFILE_]cr_makefile[_AMAKE], [$cr_make_tmp])dnl + CAIRO_ACCUMULATE_UNQUOTED_UNCHECKED([MAKEFILE_]cr_makefile[_WIN32], [$cr_make_tmp])dnl + ])dnl +])dnl + +m4_define([_CAIRO_MAKEFILE_ACCUMULATE_FEATURE], +[dnl + m4_case([$2], + [*],, + [yes], [CAIRO_ACCUMULATE([$1], [$3])], + [no], [CAIRO_ACCUMULATE([$1], [$3]m4_newline[$4])], + [m4_fatal([Invalid ENABLED value `]$2['])])dnl + CAIRO_ACCUMULATE_UNQUOTED_UNCHECKED([$1], [$6])dnl + m4_case([$2], + [*],, + [yes], [CAIRO_ACCUMULATE([$1], [$5])], + [no], [CAIRO_ACCUMULATE([$1], [$5])], + [m4_fatal([Invalid ENABLED value `]$2['])])dnl +])dnl + +dnl +dnl CAIRO_MAKEFILE_ACCUMULATE_FEATURE(TAG, ENABLED, DEFAULT, WHAT, CONTENT) +dnl +dnl Accumulates CONTENT to Makefile's for TAG for each feature matching +dnl ENABLED, DEFAULT, and WHAT. Those parameters are similar to those +dnl passed to CAIRO_FEATURE_HOOK_REGISTER. +dnl If TAG is *, CONTENT is added to all Makefile's. +dnl +AC_DEFUN([CAIRO_MAKEFILE_ACCUMULATE_FEATURE], +[dnl + m4_if([$1],[*],,[_CAIRO_MAKEFILE_CHECK([$1])])dnl + m4_pushdef([cr_make_acc_contents],[$5])dnl + CAIRO_FEATURE_HOOK_REGISTER(*,[$3],[$4], + [dnl + m4_foreach_w([cr_makefile], m4_if([$1],[*],_CAIRO_MAKEFILES,[$1]), + [dnl + m4_pushdef([cr_make_acc_contents],[$5])dnl + cr_make_tmp=_CAIRO_SH_ESCAPE(]]cr_make_acc_contents([[[[]]]]cr_makefile(),[$][1],[$][2],[$][3],[$][4])[[) + _CAIRO_MAKEFILE_ACCUMULATE_FEATURE( + [MAKEFILE_]cr_makefile[_AMAKE], + [$2], + [if ]cr_feature_tag, [else], [endif], + [$cr_make_tmp])dnl + _CAIRO_MAKEFILE_ACCUMULATE_FEATURE( + [MAKEFILE_]cr_makefile[_WIN32], + [$2], + [ifeq ($(]cr_feature_tag[),1)], [else], [endif], + [$cr_make_tmp])dnl + ])dnl + ])dnl + m4_popdef([cr_make_acc_contents])dnl +])dnl + diff --git a/build/configure.ac.enable b/build/configure.ac.features index 1e757fb6..bb143cc7 100644 --- a/build/configure.ac.enable +++ b/build/configure.ac.features @@ -34,21 +34,6 @@ AC_DEFUN([CAIRO_ENABLE_FUNCTIONS], 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])])dnl -m4_define([_CAIRO_BUILD_FEATURE_TAG], - [_CAIRO_BUILD_FEATURE_TAG_NORMALIZED(AS_TR_CPP([$1]),AS_TR_CPP(m4_ifval([$2],[ $2])))])dnl -m4_define([cr_feature_tag], - [_CAIRO_BUILD_FEATURE_TAG(cr_feature,cr_feature_what)])dnl - -dnl Allow feature tags in the output -m4_pattern_allow(^CAIRO_HAS_)dnl - - -dnl dnl Define cr_feature_pc and friends ala other cr_feature_* macros dnl m4_define([cr_pc_modname], @@ -68,107 +53,74 @@ dnl =========================================================================== dnl =========================================================================== dnl -dnl Automake conditionals for all features -dnl -CAIRO_FEATURE_HOOK_REGISTER(*,*,*, -[dnl - AM_CONDITIONAL(cr_feature_tag, test "x$use_$1" = xyes)dnl -])dnl - - -dnl =========================================================================== -dnl dnl Generate {src,boilerplate}/Makefile.{am,win32}.config dnl -dnl Accumulators -dnl CAIRO_ACCUMULATE(FEATURES, cr_feature_tag) -CAIRO_ACCUMULATORS_REGISTER(CONFIG_AMAKE,m4_newline,[# Generated by configure. Do not edit. -include $(top_srcdir)/src/Makefile.sources - -all_cairo_files = $(all_cairo_headers) $(all_cairo_private) $(all_cairo_sources) -enabled_cairo_files = $(enabled_cairo_headers) $(enabled_cairo_private) $(enabled_cairo_sources) - -all_cairo_headers = $(cairo_headers) -all_cairo_private = $(cairo_private) -all_cairo_sources = $(cairo_sources) -enabled_cairo_headers = $(cairo_headers) -enabled_cairo_private = $(cairo_private) -enabled_cairo_sources = $(cairo_sources) - -supported_cairo_headers = $(cairo_headers) -unsupported_cairo_headers = -])dnl - -CAIRO_ACCUMULATORS_REGISTER_UNQUOTED(CONFIG_WIN32,m4_newline,[$CAIRO_CONFIG_AMAKE])dnl - -dnl Generate -CAIRO_CONFIG_COMMANDS([$srcdir/src/Makefile.am.config], - [echo "$CAIRO_CONFIG_AMAKE"], - [CAIRO_CONFIG_AMAKE='$CAIRO_CONFIG_AMAKE'])dnl -CAIRO_CONFIG_COMMANDS([$srcdir/src/Makefile.win32.config], - [echo "$CAIRO_CONFIG_WIN32"], - [CAIRO_CONFIG_WIN32='$CAIRO_CONFIG_WIN32'])dnl - -dnl Collect list of all supported public cairo headers -CAIRO_FEATURE_HOOK_REGISTER(*,!no,!, +CAIRO_INIT_MAKEFILES() +CAIRO_CONFIG_MAKEFILE([cairo], [src])dnl +CAIRO_CONFIG_MAKEFILE([cairo_boilerplate], [boilerplate])dnl + + +dnl Collect list of all supported public headers +CAIRO_MAKEFILE_ACCUMULATE(*, +[supported_$1_headers = $($1_headers)]dnl +)dnl +CAIRO_MAKEFILE_ACCUMULATE_FEATURE(*,*,!no,!, +[supported_$1_headers += $($1_$2_headers)]dnl +)dnl + +dnl Collect list of all unsupported public headers +CAIRO_MAKEFILE_ACCUMULATE(*, +[unsupported_$1_headers =]dnl +)dnl +CAIRO_MAKEFILE_ACCUMULATE_FEATURE(*,*,no,!, +[unsupported_$1_headers += $($1_$2_headers)]dnl +)dnl + +dnl Collect list of source files for all public features +CAIRO_MAKEFILE_ACCUMULATE(*, [dnl - CAIRO_ACCUMULATE(CONFIG_AMAKE, [supported_cairo_headers += $(cairo_$1_headers)])dnl - CAIRO_ACCUMULATE(CONFIG_WIN32, [supported_cairo_headers += $(cairo_$1_headers)])dnl +all_$1_files = $(all_$1_headers) $(all_$1_private) $(all_$1_sources) +all_$1_headers = $($1_headers) +all_$1_private = $($1_private) +all_$1_sources = $($1_sources) ])dnl - -dnl Collect list of all unsupported public cairo headers -CAIRO_FEATURE_HOOK_REGISTER(*,no,!, +CAIRO_MAKEFILE_ACCUMULATE_FEATURE(*,*,*,!, [dnl - CAIRO_ACCUMULATE(CONFIG_AMAKE, [unsupported_cairo_headers += $(cairo_$1_headers)])dnl - CAIRO_ACCUMULATE(CONFIG_WIN32, [unsupported_cairo_headers += $(cairo_$1_headers)])dnl +all_$1_headers += $($1_$2_headers) +all_$1_private += $($1_$2_private) +all_$1_sources += $($1_$2_sources) ])dnl -dnl Collect list of source files for all/enabled public features -CAIRO_FEATURE_HOOK_REGISTER(*,*,!, +dnl Collect list of source files for enabled public features +CAIRO_MAKEFILE_ACCUMULATE(*, [dnl - CAIRO_ACCUMULATE(CONFIG_AMAKE, [dnl -all_cairo_headers += $(cairo_$1_headers) -all_cairo_private += $(cairo_$1_private) -all_cairo_sources += $(cairo_$1_sources) -if cr_feature_tag -enabled_cairo_headers += $(cairo_$1_headers) -enabled_cairo_private += $(cairo_$1_private) -enabled_cairo_sources += $(cairo_$1_sources) -endif -])dnl - CAIRO_ACCUMULATE(CONFIG_WIN32, [dnl -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_headers += $(cairo_$1_headers) -enabled_cairo_private += $(cairo_$1_private) -enabled_cairo_sources += $(cairo_$1_sources) -endif +enabled_$1_files = $(enabled_$1_headers) $(enabled_$1_private) $(enabled_$1_sources) +enabled_$1_headers = $($1_headers) +enabled_$1_private = $($1_private) +enabled_$1_sources = $($1_sources) ])dnl +CAIRO_MAKEFILE_ACCUMULATE_FEATURE(*,yes,*,!, +[dnl +enabled_$1_headers += $($1_$2_headers) +enabled_$1_private += $($1_$2_private) +enabled_$1_sources += $($1_$2_sources) ])dnl -dnl Collect list of source files for all/enabled private features -CAIRO_FEATURE_HOOK_REGISTER(*,*,, +dnl No public headers for private features + +dnl Collect list of source files for all private features +CAIRO_MAKEFILE_ACCUMULATE_FEATURE(*,*,*,, [dnl - dnl No public headers for private features - CAIRO_ACCUMULATE(CONFIG_AMAKE, [dnl -all_cairo_private += $(cairo_$1_private) $(cairo_$1_headers) -all_cairo_sources += $(cairo_$1_sources) -if cr_feature_tag -enabled_cairo_private += $(cairo_$1_private) $(cairo_$1_headers) -enabled_cairo_sources += $(cairo_$1_sources) -endif -])dnl - CAIRO_ACCUMULATE(CONFIG_WIN32, [dnl -all_cairo_private += $(cairo_$1_private) $(cairo_$1_headers) -all_cairo_sources += $(cairo_$1_sources) -ifeq ($(cr_feature_tag),1) -enabled_cairo_private += $(cairo_$1_private) $(cairo_$1_headers) -enabled_cairo_sources += $(cairo_$1_sources) -endif +all_$1_private += $($1_$2_private) $($1_$2_headers) +all_$1_sources += $($1_$2_sources) ])dnl + +dnl Collect list of source files for enabled private features +CAIRO_MAKEFILE_ACCUMULATE_FEATURE(*,yes,*,, +[dnl +enabled_$1_private += $($1_$2_private) $($1_$2_headers) +enabled_$1_sources += $($1_$2_sources) ])dnl @@ -245,22 +197,17 @@ CAIRO_FEATURE_HOOK_REGISTER(yes,!always,!, ])dnl -dnl Collect list of .pc files for all/enabled non-builtin public features - -CAIRO_ACCUMULATE(CONFIG_AMAKE, [dnl -all_cairo_pkgconf = cairo.pc -enabled_cairo_pkgconf = cairo.pc -])dnl +dnl Collect list of .pc files for all non-builtin public features +CAIRO_MAKEFILE_ACCUMULATE(cairo, +[all_$1_pkgconf = cairo.pc])dnl +CAIRO_MAKEFILE_ACCUMULATE_FEATURE(cairo,*,*,!, +[all_$1_pkgconf += cr_feature_pc])dnl -CAIRO_FEATURE_HOOK_REGISTER(*,!always,!, -[dnl - CAIRO_ACCUMULATE(CONFIG_AMAKE, [dnl -all_cairo_pkgconf += cr_feature_pc -if cr_feature_tag -enabled_cairo_pkgconf += cr_feature_pc -endif -])dnl -])dnl +dnl Collect list of .pc files for enabled non-builtin public features +CAIRO_MAKEFILE_ACCUMULATE(cairo, +[enabled_$1_pkgconf = cairo.pc])dnl +CAIRO_MAKEFILE_ACCUMULATE_FEATURE(cairo,yes,*,!, +[enabled_$1_pkgconf += cr_feature_pc])dnl dnl =========================================================================== diff --git a/configure.ac b/configure.ac index c48a5dfd..2ffb7b01 100644 --- a/configure.ac +++ b/configure.ac @@ -19,7 +19,7 @@ dnl m4_include(build/configure.ac.version) dnl macros setting up various version declares m4_include(build/configure.ac.tools) dnl checks for tools we use m4_include(build/configure.ac.system) dnl checks for system functions, headers, libs -m4_include(build/configure.ac.enable) dnl macros for backend/feature enablement +m4_include(build/configure.ac.features) dnl macros for backend/feature handling m4_include(build/configure.ac.warnings) dnl checks for compiler warning m4_include(build/configure.ac.analysis) dnl checks for analysis tools (lcov, etc) AC_CACHE_SAVE |