[gedit] Use local, non-recursive friendly gsettings.m4
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit] Use local, non-recursive friendly gsettings.m4
- Date: Mon, 13 Jan 2014 11:27:17 +0000 (UTC)
commit 8bb78a28167c39e3a10a74b66b05b6179fdf59ad
Author: Jesse van den Kieboom <jessevdk gmail com>
Date: Mon Jan 13 12:24:27 2014 +0100
Use local, non-recursive friendly gsettings.m4
This is a temporary workaround for distributed gsettings.m4 not
having nice non-recursive support for generating enum files. These,
or compatible changes, should land in glib at some point in the future.
At that time, we can remove our locally provided gsettings.m4
Makefile.am | 10 +----
data/Makefile.am | 6 +--
m4/gsettings.m4 | 99 +++++++++++++++++++++++++++++++++++++++
plugins/filebrowser/Makefile.am | 1 -
plugins/time/Makefile.am | 1 -
5 files changed, 102 insertions(+), 15 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 2e60a10..3665f2e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -81,8 +81,6 @@ GRESDEPS = $(srcdir)/$1 $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencie
GRESGEN = $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target="$@" --sourcedir="$(dir $<)" --generate-source "$<"
-GSETTINGS_ENUMS_GEN = $(AM_V_GEN) $(GLIB_MKENUMS) --comments "<!-- @comment@ -->" --fhead "<schemalist>"
--vhead " <@type@ id='$(subst .enums.xml,,$(notdir $@)) EnumName@'>" --vprod " <value nick='@valuenick@'
value='@valuenum@'/>" --vtail " </@type@>" --ftail "</schemalist>" $^ > $@
-
noinst_LTLIBRARIES =
noinst_PROGRAMS =
bin_PROGRAMS =
@@ -94,8 +92,6 @@ TESTS =
BUILT_SOURCES =
CLEANFILES =
- GSETTINGS_RULES@
-
include data/Makefile.am
include pixmaps/Makefile.am
include win32/Makefile.am
@@ -104,12 +100,8 @@ include tests/Makefile.am
include plugins/Makefile.am
include gedit/Makefile.am
-override gsettings__enum_file = $(gsettings_ENUMS)
-install-gsettings-schemas: $(gsettings_ENUMS)
-
-BUILT_SOURCES += $(gsettings_ENUMS)
+ GSETTINGS_RULES@
-EXTRA_DIST += $(gsettings_SCHEMAS:.gschema.xml=.gschema.xml.in)
CLEANFILES += $(gsettings_SCHEMAS) $(BUILT_SOURCES)
DISTCLEANFILES += $(gsettings_SCHEMAS) $(BUILT_SOURCES)
MAINTAINERCLEANFILES += $(gsettings_SCHEMAS:.xml=.valid)
diff --git a/data/Makefile.am b/data/Makefile.am
index 04dd66b..3297e29 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -21,12 +21,9 @@ data_pkgconfig_DATA = data/gedit.pc
data_bugreportdir = $(libexecdir)/gedit
dist_data_bugreport_SCRIPTS = data/gedit-bugreport.sh
+gsettings_SCHEMAS += data/org.gnome.gedit.gschema.xml
gsettings_ENUMS += data/org.gnome.gedit.enums.xml
-
data/org.gnome.gedit.enums.xml: $(top_srcdir)/gedit/*.h
- $(GSETTINGS_ENUMS_GEN)
-
-gsettings_SCHEMAS += data/org.gnome.gedit.gschema.xml
if OS_OSX
dist_gsettingsschema_DATA += data/gedit-osx.gschema.override
@@ -46,6 +43,7 @@ EXTRA_DIST += \
$(data_desktop_in_files) \
$(data_appdata_in_files) \
$(data_service_in_files) \
+ data/org.gnome.gedit.gschema.xml.in \
data/gedit.pc.in
CLEANFILES += \
diff --git a/m4/gsettings.m4 b/m4/gsettings.m4
new file mode 100644
index 0000000..8147486
--- /dev/null
+++ b/m4/gsettings.m4
@@ -0,0 +1,99 @@
+dnl GLIB_GSETTINGS
+dnl Defines GSETTINGS_SCHEMAS_INSTALL which controls whether
+dnl the schema should be compiled
+dnl
+
+AC_DEFUN([GLIB_GSETTINGS],
+[
+ m4_pattern_allow([AM_V_GEN])
+ AC_ARG_ENABLE(schemas-compile,
+ AS_HELP_STRING([--disable-schemas-compile],
+ [Disable regeneration of gschemas.compiled on install]),
+ [case ${enableval} in
+ yes) GSETTINGS_DISABLE_SCHEMAS_COMPILE="" ;;
+ no) GSETTINGS_DISABLE_SCHEMAS_COMPILE="1" ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-schemas-compile]) ;;
+ esac])
+ AC_SUBST([GSETTINGS_DISABLE_SCHEMAS_COMPILE])
+ PKG_PROG_PKG_CONFIG([0.16])
+ AC_SUBST(gsettingsschemadir, [${datadir}/glib-2.0/schemas])
+ if test x$cross_compiling != xyes; then
+ GLIB_COMPILE_SCHEMAS=`$PKG_CONFIG --variable glib_compile_schemas gio-2.0`
+ else
+ AC_PATH_PROG(GLIB_COMPILE_SCHEMAS, glib-compile-schemas)
+ fi
+ AC_SUBST(GLIB_COMPILE_SCHEMAS)
+ if test "x$GLIB_COMPILE_SCHEMAS" = "x"; then
+ ifelse([$2],,[AC_MSG_ERROR([glib-compile-schemas not found.])],[$2])
+ else
+ ifelse([$1],,[:],[$1])
+ fi
+
+ GSETTINGS_RULES='
+.PHONY : uninstall-gsettings-schemas install-gsettings-schemas clean-gsettings-schemas
+
+mostlyclean-am: clean-gsettings-schemas
+
+gsettings__enum_file = $(addsuffix .enums.xml,$(gsettings_ENUM_NAMESPACE))
+
+%.gschema.valid: %.gschema.xml $(gsettings__enum_file)
+ $(AM_V_GEN) $(GLIB_COMPILE_SCHEMAS) --strict --dry-run $(addprefix --schema-file=,$(filter-out
$<,$^)) --schema-file=$< && mkdir -p [$](@D) && touch [$]@
+
+ifdef gsettings_ENUMS
+$(patsubst %.enums.xml,%.gschema.valid,$(gsettings_ENUMS)): %.gschema.valid: %.enums.xml
+endif
+
+all-am: $(gsettings_SCHEMAS:.xml=.valid)
+uninstall-am: uninstall-gsettings-schemas
+install-data-am: install-gsettings-schemas
+
+.SECONDARY: $(gsettings_SCHEMAS)
+
+install-gsettings-schemas: $(gsettings_SCHEMAS) $(gsettings__enum_file) $(gsettings_ENUMS)
+ @$(NORMAL_INSTALL)
+ if test -n "$^"; then \
+ test -z "$(gsettingsschemadir)" || $(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)"; \
+ $(INSTALL_DATA) $^ "$(DESTDIR)$(gsettingsschemadir)"; \
+ test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS)
$(gsettingsschemadir); \
+ fi
+
+uninstall-gsettings-schemas:
+ @$(NORMAL_UNINSTALL)
+ @list='\''$(gsettings_SCHEMAS) $(gsettings__enum_file) $(gsettings_ENUMS)'\''; test -n
"$(gsettingsschemadir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e '\''s|^.*/||'\''`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '\''$(DESTDIR)$(gsettingsschemadir)'\'' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(gsettingsschemadir)" && rm -f $$files
+ test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS)
$(gsettingsschemadir)
+
+clean-gsettings-schemas:
+ rm -f $(gsettings_SCHEMAS:.xml=.valid) $(gsettings__enum_file) $(gsettings_ENUMS)
+
+ifdef gsettings_ENUM_NAMESPACE
+$(gsettings__enum_file): $(gsettings_ENUM_FILES)
+ $(AM_V_GEN) glib-mkenums --comments '\''<!-- @comment@ -->'\'' --fhead "<schemalist>" --vhead "
<@type@ id='\''$(gsettings_ENUM_NAMESPACE) EnumName@'\''>" --vprod " <value nick='\''@valuenick@'\''
value='\''@valuenum@'\''/>" --vtail " </@type@>" --ftail "</schemalist>" [$]^ > [$] tmp && mv [$] tmp [$]@
+endif
+
+ifdef gsettings_ENUMS
+$(gsettings_ENUMS):
+ $(AM_V_GEN) glib-mkenums --comments '\''<!-- @comment@ -->'\'' --fhead "<schemalist>" --vhead "
<@type@ id='\''$(patsubst %.enums.xml,%,$(notdir $[ ])) EnumName@'\''>" --vprod " <value
nick='\''@valuenick@'\'' value='\''@valuenum@'\''/>" --vtail " </@type@>" --ftail "</schemalist>" [$]^ > [$]
tmp && mv [$] tmp [$]@
+
+ifdef BUILT_SOURCES
+BUILT_SOURCES += $(gsettings_ENUMS)
+else
+BUILT_SOURCES = $(gsettings_ENUMS)
+endif
+endif
+
+'
+ _GSETTINGS_SUBST(GSETTINGS_RULES)
+])
+
+dnl _GSETTINGS_SUBST(VARIABLE)
+dnl Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
+AC_DEFUN([_GSETTINGS_SUBST],
+[
+AC_SUBST([$1])
+m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
+]
+)
diff --git a/plugins/filebrowser/Makefile.am b/plugins/filebrowser/Makefile.am
index 0b2c270..2471a9b 100644
--- a/plugins/filebrowser/Makefile.am
+++ b/plugins/filebrowser/Makefile.am
@@ -103,7 +103,6 @@ plugin_gsettings_SCHEMAS += plugins/filebrowser/org.gnome.gedit.plugins.filebrow
gsettings_ENUMS += plugins/filebrowser/org.gnome.gedit.plugins.filebrowser.enums.xml
plugins/filebrowser/org.gnome.gedit.plugins.filebrowser.enums.xml:
$(plugins_filebrowser_libfilebrowser_la_NOINST_H_FILES)
- $(GSETTINGS_ENUMS_GEN)
plugins-filebrowser-update-messages:
$(top_srcdir)/tools/generate-message.py --output-directory $(builddir)/plugins/filebrowser/messages/
--gpl --program gedit $(srcdir)/plugins/filebrowser/messages.xml
diff --git a/plugins/time/Makefile.am b/plugins/time/Makefile.am
index 87e7cf4..d4c6619 100644
--- a/plugins/time/Makefile.am
+++ b/plugins/time/Makefile.am
@@ -25,6 +25,5 @@ plugin_gsettings_SCHEMAS += plugins/time/org.gnome.gedit.plugins.time.gschema.xm
gsettings_ENUMS += plugins/time/org.gnome.gedit.plugins.time.enums.xml
plugins/time/org.gnome.gedit.plugins.time.enums.xml: plugins/time/gedit-time-plugin.c
- $(GSETTINGS_ENUMS_GEN)
plugin_in_files += plugins/time/time.plugin.desktop.in
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]