[gedit] Use local, non-recursive friendly gsettings.m4



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]