build: Enable subdir-objects

Newer versions of Automake warn about forward compatibility when the
build uses sources in sub-directories without the subdir-objects option.

Both GTK+ and GDK have an almost-but-not-quite non-recursive Automake
layout, with sources in sub-directories contributing to the build of a
top-level object.

In theory, just adding subdir-objects to AM_INIT_AUTOMAKE would be
enough, but the test suite references sources in a different top-level
in order to build tests that verify the implementation of private data
structures. This is not really allowed when using subdir-objects and out
of srcdir builds. In order to fix this case, we require some ad hoc
rules to create symbolic links in the appropriate build directory.
This commit is contained in:
Emmanuele Bassi 2016-10-19 15:21:03 +01:00
parent 24cb9d4ba6
commit 59af3a0c15
2 changed files with 35 additions and 19 deletions

View File

@ -82,7 +82,7 @@ AC_SUBST(INTROSPECTION_REQUIRED_VERSION)
# Save this value here, since automake will set cflags later
cflags_set=${CFLAGS+set}
AM_INIT_AUTOMAKE([1.11 -Wall no-define -Wno-portability tar-ustar no-dist-gzip dist-xz])
AM_INIT_AUTOMAKE([1.14 subdir-objects -Wall no-define -Wno-portability tar-ustar no-dist-gzip dist-xz])
AM_MAINTAINER_MODE([enable])
# Support silent build rules. Disable

View File

@ -24,6 +24,9 @@ LDADD = \
$(top_builddir)/gdk/libgdk-4.la \
$(GTK_DEP_LIBS)
CLEANFILES =
BUILT_SOURCES =
noinst_PROGRAMS = $(TEST_PROGS)
TESTS_ENVIRONMENT = \
@ -114,19 +117,26 @@ rbtree_CFLAGS = -DGTK_COMPILATION -UG_ENABLE_DEBUG
rbtree_LDADD = $(GTK_DEP_LIBS)
rbtree_SOURCES = \
rbtree.c \
$(top_srcdir)/gtk/gtkrbtree.h \
$(top_srcdir)/gtk/gtkrbtree.c \
gtkrbtree.c \
$(NULL)
gtkrbtree.c: $(top_srcdir)/gtk/gtkrbtree.c
$(AM_V_GEN) $(LN_S) $^ $@
CLEANFILES += gtkrbtree.c
bitmask_CFLAGS = -DGTK_COMPILATION -UG_ENABLE_DEBUG
bitmask_LDADD = $(GTK_DEP_LIBS)
bitmask_SOURCES = \
bitmask.c \
$(top_srcdir)/gtk/gtkbitmaskprivate.h \
$(top_srcdir)/gtk/gtkallocatedbitmaskprivate.h \
$(top_srcdir)/gtk/gtkallocatedbitmask.c \
bitmask_SOURCES = \
bitmask.c \
gtkallocatedbitmask.c \
$(NULL)
gtkallocatedbitmask.c: $(top_srcdir)/gtk/gtkallocatedbitmask.c
$(AM_V_GEN) $(LN_S) $^ $@
CLEANFILES += gtkallocatedbitmask.c
keyhash_CFLAGS = \
-DGTK_COMPILATION \
-DGTK_LIBDIR=\"$(libdir)\" \
@ -135,16 +145,23 @@ keyhash_CFLAGS = \
-DGTK_SYSCONFDIR=\"$(sysconfdir)\" \
$(NULL)
keyhash_SOURCES = \
keyhash.c \
$(top_srcdir)/gtk/gtkkeyhash.c \
$(top_srcdir)/gtk/gtkkeyhash.h \
$(top_builddir)/gtk/gtkresources.c \
$(top_builddir)/gtk/gtkresources.h \
$(top_srcdir)/gtk/gtkprivate.c \
$(top_srcdir)/gtk/gtkprivate.h \
keyhash_SOURCES = \
keyhash.c \
gtkkeyhash.c \
gtkresources.c \
gtkprivate.c \
$(NULL)
gtkkeyhash.c: $(top_srcdir)/gtk/gtkkeyhash.c
$(AM_V_GEN) $(LN_S) $^ $@
gtkresources.c: $(top_builddir)/gtk/gtkresources.c
$(AM_V_GEN) $(LN_S) $^ $@
gtkprivate.c: $(top_srcdir)/gtk/gtkprivate.c
$(AM_V_GEN) $(LN_S) $^ $@
CLEANFILES += gtkkeyhash.c gtkresources.c gtkprivate.c
test_icontheme = \
icons/index.theme \
@ -253,9 +270,8 @@ GTK_GSETTINGS_SCHEMAS = \
$(top_srcdir)/gtk/org.gtk.Settings.FileChooser.gschema.xml \
$(NULL)
BUILT_SOURCES = gschemas.compiled
CLEANFILES = gschemas.compiled
BUILT_SOURCES += gschemas.compiled
CLEANFILES += gschemas.compiled
gschemas.compiled: $(GTK_GSETTINGS_SCHEMAS)
$(AM_V_GEN) $(GLIB_COMPILE_SCHEMAS) \