Bug 792884 - cmake: gschemas.compiled missing

Fix handling of gschemas.compiled. It should only be called
at install time to regenerate gschemas.compiled based on all
available gschema files. In the installation directory that
can be more than just our own.

Note to force the compilation to run after all gschema files
themselves are installed, the gnome and gnome-utils gschemas
have been moved into a higher-level gschemas directory and
the install command is added there.
This commit is contained in:
Geert Janssens 2018-02-10 15:43:40 +01:00
parent 5cf58758a2
commit c7b5061e8f
20 changed files with 65 additions and 69 deletions

View File

@ -27,6 +27,7 @@ ADD_SUBDIRECTORY (import-export)
ADD_SUBDIRECTORY (python)
ADD_SUBDIRECTORY (register)
ADD_SUBDIRECTORY (report)
ADD_SUBDIRECTORY (gschemas)
ADD_DEFINITIONS (-DHAVE_CONFIG_H)
@ -242,24 +243,6 @@ IF (WIN32)
INSTALL(PROGRAMS ${CMD_FILE} DESTINATION ${CMAKE_INSTALL_BINDIR})
ENDIF(WIN32)
# Handle gschemas.compiled
set(CMAKE_COMMAND_TMP "")
if (${CMAKE_VERSION} VERSION_GREATER 3.1)
set(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
endif()
add_custom_command(
OUTPUT ${SCHEMADIR_BUILD}/gschemas.compiled
COMMAND ${CMAKE_COMMAND_TMP} ${GLIB_COMPILE_SCHEMAS} ${SCHEMADIR_BUILD}
DEPENDS ${gschema_depends}
)
add_custom_target(compiled-schemas ALL DEPENDS ${SCHEMADIR_BUILD}/gschemas.compiled)
install(FILES ${SCHEMADIR_BUILD}/gschemas.compiled DESTINATION ${CMAKE_INSTALL_DATADIR}/glib-2.0/schemas)
# The GResource Files are absolute paths but SET_LOCAL_DIST requires
# relative paths.
FOREACH(gres_file ${gresource_files})
@ -272,6 +255,6 @@ SET_LOCAL_DIST(gnucash_DIST_local CMakeLists.txt environment.in generate-gnc-scr
gnucash-bin.c gnucash.rc.in gnucash-valgrind.in gnucash-gresources.xml ${gresource_files}
${gnucash_EXTRA_DIST})
SET(gnucash_DIST ${gnucash_DIST_local} ${gnome_DIST} ${gnome_search_DIST}
SET(gnucash_DIST ${gnucash_DIST_local} ${gschemas_DIST} ${gnome_DIST} ${gnome_search_DIST}
${gnome_utils_DIST} ${html_DIST} ${import_export_DIST} ${python_DIST} ${register_DIST} ${report_DIST}
${overrides_DIST} ${test_bin_DIST} PARENT_SCOPE)

View File

@ -1,6 +1,5 @@
# Note that gnucash/gnome-utils CANNOT depend on gnucash/gnome!
ADD_SUBDIRECTORY(gschemas)
ADD_SUBDIRECTORY(gtkbuilder)
ADD_SUBDIRECTORY(ui)
ADD_SUBDIRECTORY(test)
@ -11,10 +10,7 @@ gnc_add_swig_guile_command (swig-gnome-utils-c
${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i
)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in.in
${CMAKE_CURRENT_BINARY_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in)
SET (WARNINGS_SCHEMA gschemas/org.gnucash.warnings.gschema.xml.in)
SET (WARNINGS_SCHEMA ../gschemas/org.gnucash.warnings.gschema.xml.in)
SET (GNC_WARNINGS_C ${CMAKE_CURRENT_BINARY_DIR}/gnc-warnings.c)
SET (GNC_WARNINGS_H ${CMAKE_CURRENT_BINARY_DIR}/gnc-warnings.h)
@ -274,5 +270,5 @@ ADD_CUSTOM_TARGET(scm-gnome-utils ALL DEPENDS scm-gnome-utils-2 scm-gnome-utils-
SET_LOCAL_DIST(gnome_utils_DIST_local CMakeLists.txt ${gnome_utils_SOURCES} ${gnome_utils_HEADERS}
${gnome_utils_noinst_HEADERS} gnome-utils.scm gnome-utils.i gnc-menu-extensions.scm
make-gnc-warnings-c.xsl make-gnc-warnings-h.xsl)
SET(gnome_utils_DIST ${gnome_utils_DIST_local} ${gnome_utils_gschema_DIST} ${test_gnome_utils_DIST}
SET(gnome_utils_DIST ${gnome_utils_DIST_local} ${test_gnome_utils_DIST}
${gnome_utils_ui_DIST} ${gnome_utils_gtkbuilder_DIST} PARENT_SCOPE)

View File

@ -1,7 +0,0 @@
SET(gnome_utils_GSCHEMA org.gnucash.history.gschema.xml org.gnucash.warnings.gschema.xml)
add_gschema_targets("${gnome_utils_GSCHEMA}")
SET_DIST_LIST(gnome_utils_gschema_DIST CMakeLists.txt org.gnucash.history.gschema.xml.in.in
org.gnucash.warnings.gschema.xml.in.in)

View File

@ -1,5 +1,4 @@
ADD_SUBDIRECTORY(gschemas)
ADD_SUBDIRECTORY(gtkbuilder)
ADD_SUBDIRECTORY(ui)
@ -201,4 +200,4 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/gnucash.desktop DESTINATION ${CMAKE_I
SET_LOCAL_DIST(gnome_DIST_local
CMakeLists.txt gnome.i gnucash.appdata.xml.in gnucash.desktop.in.in
${gnc_gnome_noinst_HEADERS} ${gnc_gnome_SOURCES})
SET(gnome_DIST ${gnome_DIST_local} ${gnome_ui_DIST} ${gnome_gschema_DIST} ${gnome_gtkbuilder_DIST} PARENT_SCOPE)
SET(gnome_DIST ${gnome_DIST_local} ${gnome_ui_DIST} ${gnome_gtkbuilder_DIST} PARENT_SCOPE)

View File

@ -1,22 +0,0 @@
SET(gnome_GSCHEMA
org.gnucash.dialogs.gschema.xml
org.gnucash.dialogs.business.gschema.xml
org.gnucash.dialogs.commodities.gschema.xml
org.gnucash.dialogs.checkprinting.gschema.xml
org.gnucash.dialogs.reconcile.gschema.xml
org.gnucash.dialogs.sxs.gschema.xml
org.gnucash.dialogs.totd.gschema.xml
org.gnucash.gschema.xml
org.gnucash.general.finance-quote.gschema.xml
org.gnucash.window.pages.account.tree.gschema.xml
org.gnucash.window.pages.gschema.xml
)
add_gschema_targets("${gnome_GSCHEMA}")
SET(gnome_gschema_DIST_local "")
FOREACH(file ${gnome_GSCHEMA})
LIST(APPEND gnome_gschema_DIST_local ${file}.in.in)
ENDFOREACH()
SET_DIST_LIST(gnome_gschema_DIST CMakeLists.txt ${gnome_gschema_DIST_local})

View File

@ -0,0 +1,47 @@
SET(gschema_SOURCES
org.gnucash.dialogs.gschema.xml
org.gnucash.dialogs.business.gschema.xml
org.gnucash.dialogs.commodities.gschema.xml
org.gnucash.dialogs.checkprinting.gschema.xml
org.gnucash.dialogs.reconcile.gschema.xml
org.gnucash.dialogs.sxs.gschema.xml
org.gnucash.dialogs.totd.gschema.xml
org.gnucash.gschema.xml
org.gnucash.general.finance-quote.gschema.xml
org.gnucash.history.gschema.xml
org.gnucash.warnings.gschema.xml
org.gnucash.window.pages.account.tree.gschema.xml
org.gnucash.window.pages.gschema.xml
)
add_gschema_targets("${gschema_SOURCES}")
# Handle gschemas.compiled
set(CMAKE_COMMAND_TMP "")
if (${CMAKE_VERSION} VERSION_GREATER 3.1)
set(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
endif()
add_custom_command(
OUTPUT ${SCHEMADIR_BUILD}/gschemas.compiled
COMMAND ${CMAKE_COMMAND_TMP} ${GLIB_COMPILE_SCHEMAS} ${SCHEMADIR_BUILD}
DEPENDS ${gschema_depends}
)
add_custom_target(compiled-schemas ALL DEPENDS ${SCHEMADIR_BUILD}/gschemas.compiled)
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/compile_schemas.sh
"set -e
echo \"Compiling gschema files in $DESTDIR${CMAKE_INSTALL_FULL_DATADIR}/glib-2.0/schemas\"
${GLIB_COMPILE_SCHEMAS} $DESTDIR${CMAKE_INSTALL_FULL_DATADIR}/glib-2.0/schemas")
install(CODE "execute_process(COMMAND ${SHELL} ${CMAKE_CURRENT_BINARY_DIR}/compile_schemas.sh)")
SET(gschemas_DIST_local "")
FOREACH(file ${gschema_SOURCES})
LIST(APPEND gschemas_DIST_local ${file}.in.in)
ENDFOREACH()
SET_DIST_LIST(gschemas_DIST CMakeLists.txt ${gschemas_DIST_local})

View File

@ -84,17 +84,6 @@ gnucash/gnome/gnc-plugin-register2.c
gnucash/gnome/gnc-plugin-register.c
gnucash/gnome/gnc-split-reg2.c
gnucash/gnome/gnc-split-reg.c
[type: gettext/gsettings]gnucash/gnome/gschemas/org.gnucash.dialogs.business.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gnome/gschemas/org.gnucash.dialogs.checkprinting.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gnome/gschemas/org.gnucash.dialogs.commodities.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gnome/gschemas/org.gnucash.dialogs.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gnome/gschemas/org.gnucash.dialogs.reconcile.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gnome/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gnome/gschemas/org.gnucash.dialogs.totd.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gnome/gschemas/org.gnucash.general.finance-quote.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gnome/gschemas/org.gnucash.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gnome/gschemas/org.gnucash.window.pages.account.tree.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gnome/gschemas/org.gnucash.window.pages.gschema.xml.in.in
gnucash/gnome/gtkbuilder/assistant-acct-period.glade
gnucash/gnome/gtkbuilder/assistant-hierarchy.glade
gnucash/gnome/gtkbuilder/assistant-loan.glade
@ -225,8 +214,6 @@ gnucash/gnome-utils/gnc-tree-view-split-reg.c
gnucash/gnome-utils/gnc-tree-view-sx-list.c
gnucash/gnome-utils/gnc-window.c
gnucash/gnome-utils/gnome-utils.scm
[type: gettext/gsettings]gnucash/gnome-utils/gschemas/org.gnucash.history.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gnome-utils/gschemas/org.gnucash.warnings.gschema.xml.in.in
gnucash/gnome-utils/gtkbuilder/assistant-xml-encoding.glade
gnucash/gnome-utils/gtkbuilder/dialog-account.glade
gnucash/gnome-utils/gtkbuilder/dialog-book-close.glade
@ -251,6 +238,19 @@ gnucash/gnome-utils/search-param.c
gnucash/gnome-utils/tree-view-utils.c
gnucash/gnome-utils/window-main-summarybar.c
gnucash/gnucash-bin.c
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.dialogs.business.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.dialogs.checkprinting.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.dialogs.commodities.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.dialogs.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.dialogs.reconcile.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.dialogs.totd.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.general.finance-quote.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.history.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.warnings.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.window.pages.account.tree.gschema.xml.in.in
[type: gettext/gsettings]gnucash/gschemas/org.gnucash.window.pages.gschema.xml.in.in
gnucash/html/gnc-html.c
gnucash/html/gnc-html-factory.c
gnucash/html/gnc-html-history.c