Rewrite gnc_add_swig_guile_command to work in dist tarball as well

When building from git it will add targets to generate the swig files.
When building from tarball it will just point at the generated source
files from the tarball.
This commit is contained in:
Geert Janssens
2018-01-29 18:54:13 +01:00
parent 36cb167b68
commit 49a936c1fd
14 changed files with 98 additions and 101 deletions

View File

@@ -4,26 +4,43 @@
# Redistribution and use is allowed according to the terms of the BSD license. # Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file. # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
macro (GNC_ADD_SWIG_COMMAND _target _output _input) # gnc_add_swig_guile_command is used to generate guile swig wrappers
# it will only really generate the wrappers when building from git
add_custom_command ( # when building from tarball it will set up everything so the version of the wrapper
OUTPUT ${_output} # from the tarball will be used instead
DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/common/base-typemaps.i ${ARGN} # - _target is the name of a global target that will be set for this wrapper file,
COMMAND ${SWIG_EXECUTABLE} -guile ${SWIG_ARGS} -Linkage module -I${CMAKE_SOURCE_DIR}/libgnucash/engine -I${CMAKE_SOURCE_DIR}/common -o ${_output} ${_input} # this can be used elsewhere to create a depencency on this wrapper
) # - _out_var will be set to the full path to the generated wrapper file
# when building from git, it points to the actually generated file
add_custom_target(${_target} DEPENDS ${_output}) # however when building from a tarball, it will point to the version from the tarball instead
# - _output is the name of the wrapper file to generate (or to look up in the tarball)
# - input it the swig interface file (*.i) to generate this wrapper from
# Any additional parameters will be used as dependencies for this wrapper target
macro (gnc_add_swig_guile_command _target _out_var _output _input)
if (BUILDING_FROM_VCS) if (BUILDING_FROM_VCS)
set(BUILD_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}) set(SW_CURR_BUILD_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(SW_BUILD_SOURCE_DIR ${CMAKE_BINARY_DIR})
else() else()
set(BUILD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(SW_CURR_BUILD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(SW_BUILD_SOURCE_DIR ${CMAKE_SOURCE_DIR})
endif() endif()
# Add the output file _output to the dist tarball set(outfile ${SW_CURR_BUILD_SOURCE_DIR}/${_output})
file(RELATIVE_PATH generated ${BUILD_SOURCE_DIR} ${_output}) set(${_out_var} ${outfile}) # This variable is set for convenience to use in the calling CMakeLists.txt
dist_add_generated(${generated})
endmacro (GNC_ADD_SWIG_COMMAND) if (BUILDING_FROM_VCS)
add_custom_command (
OUTPUT ${outfile}
DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/common/base-typemaps.i ${ARGN}
COMMAND ${SWIG_EXECUTABLE} -guile ${SWIG_ARGS} -Linkage module -I${CMAKE_SOURCE_DIR}/libgnucash/engine -I${CMAKE_SOURCE_DIR}/common -o ${outfile} ${_input}
)
add_custom_target(${_target} DEPENDS ${outfile})
endif()
# Add the output file outfile to the dist tarball
dist_add_generated(${_output})
endmacro (gnc_add_swig_guile_command)
# gnc_add_swig_python_command is used to generate python swig wrappers # gnc_add_swig_python_command is used to generate python swig wrappers

View File

@@ -27,14 +27,13 @@ IF (UNIX)
TARGET_COMPILE_OPTIONS(test-core PRIVATE -fPIC) TARGET_COMPILE_OPTIONS(test-core PRIVATE -fPIC)
ENDIF() ENDIF()
IF (BUILDING_FROM_VCS) # Command to generate the swig-unittest-support-guile.c wrapper file
SET (SWIG_UNITTEST_SUPPORT_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-guile.c) gnc_add_swig_guile_command (swig-unittest-support-guile-c
GNC_ADD_SWIG_COMMAND (swig-unittest-support-guile-c ${SWIG_UNITTEST_SUPPORT_GUILE_C} SWIG_UNITTEST_SUPPORT_GUILE_C swig-unittest-support-guile.c
${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i ${test_core_HEADERS}) ${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i ${test_core_HEADERS}
ELSE() )
SET (SWIG_UNITTEST_SUPPORT_GUILE_C swig-unittest-support-guile.c)
ENDIF()
# Command to generate the swig-unittest-support-python.c wrapper file
gnc_add_swig_python_command (swig-unittest-support-python gnc_add_swig_python_command (swig-unittest-support-python
SWIG_UNITTEST_SUPPORT_PYTHON_C SWIG_UNITTEST_SUPPORT_PYTHON_PY SWIG_UNITTEST_SUPPORT_PYTHON_C SWIG_UNITTEST_SUPPORT_PYTHON_PY
swig-unittest-support-python.c unittest_support.py swig-unittest-support-python.c unittest_support.py

View File

@@ -5,12 +5,11 @@ ADD_SUBDIRECTORY(gtkbuilder)
ADD_SUBDIRECTORY(ui) ADD_SUBDIRECTORY(ui)
ADD_SUBDIRECTORY(test) ADD_SUBDIRECTORY(test)
IF (BUILDING_FROM_VCS) # Command to generate the swig-gnome-utils.c wrapper file
SET (SWIG_GNOME_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome-utils.c) gnc_add_swig_guile_command (swig-gnome-utils-c
GNC_ADD_SWIG_COMMAND (swig-gnome-utils-c ${SWIG_GNOME_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i) SWIG_GNOME_UTILS_C swig-gnome-utils.c
ELSE() ${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i
SET (SWIG_GNOME_UTILS_C swig-gnome-utils.c) )
ENDIF()
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in.in 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) ${CMAKE_CURRENT_BINARY_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in)

View File

@@ -59,12 +59,11 @@ SET (gnc_gnome_noinst_HEADERS
window-autoclear.h window-autoclear.h
) )
IF (BUILDING_FROM_VCS) # Command to generate the swig-gnome.c wrapper file
SET (SWIG_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome.c) gnc_add_swig_guile_command (swig-gnome-c
GNC_ADD_SWIG_COMMAND (swig-gnome-c ${SWIG_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome.i ${gnc_gnome_HEADERS}) SWIG_GNOME_C swig-gnome.c
ELSE() ${CMAKE_CURRENT_SOURCE_DIR}/gnome.i ${gnc_gnome_HEADERS}
SET (SWIG_GNOME_C swig-gnome.c) )
ENDIF()
SET (gnc_gnome_SOURCES SET (gnc_gnome_SOURCES

View File

@@ -9,12 +9,11 @@ SET (html_HEADERS
gnc-html-webkit.h gnc-html-webkit.h
) )
IF (BUILDING_FROM_VCS) # Command to generate the swig-gnc-html.c wrapper file
SET (SWIG_GNC_HTML_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-html.c) gnc_add_swig_guile_command (swig-gnc-html-c
GNC_ADD_SWIG_COMMAND (swig-gnc-html-c ${SWIG_GNC_HTML_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-html.i "${gncmod_html_HEADERS}") SWIG_GNC_HTML_C swig-gnc-html.c
ELSE() ${CMAKE_CURRENT_SOURCE_DIR}/gnc-html.i "${gncmod_html_HEADERS}"
SET (SWIG_GNC_HTML_C swig-gnc-html.c) )
ENDIF()
SET (html_SOURCES SET (html_SOURCES
gncmod-html.c gncmod-html.c

View File

@@ -8,12 +8,11 @@ SET (report_gnome_HEADERS
window-report.h window-report.h
) )
IF (BUILDING_FROM_VCS) # Command to generate the swig-report-gnome.c wrapper file
SET (SWIG_REPORT_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-gnome.c) gnc_add_swig_guile_command (swig-report-gnome-c
GNC_ADD_SWIG_COMMAND (swig-report-gnome-c ${SWIG_REPORT_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-gnome.i ${report_gnome_HEADERS}) SWIG_REPORT_GNOME_C swig-report-gnome.c
ELSE() ${CMAKE_CURRENT_SOURCE_DIR}/report-gnome.i ${report_gnome_HEADERS}
SET (SWIG_REPORT_GNOME_C swig-report-gnome.c) )
ENDIF()
SET (report_gnome_SOURCES SET (report_gnome_SOURCES
dialog-report-column-view.c dialog-report-column-view.c

View File

@@ -2,15 +2,13 @@ ADD_SUBDIRECTORY(test)
SET (report_system_HEADERS SET (report_system_HEADERS
gnc-report.h gnc-report.h
) )
IF (BUILDING_FROM_VCS)
SET (SWIG_REPORT_SYSTEM_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-system.c)
GNC_ADD_SWIG_COMMAND (swig-report-system-c ${SWIG_REPORT_SYSTEM_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-system.i ${report_system_HEADERS})
ELSE()
SET (SWIG_REPORT_SYSTEM_C swig-report-system.c)
ENDIF()
# Command to generate the swig-report-system.c wrapper file
gnc_add_swig_guile_command (swig-report-system-c
SWIG_REPORT_SYSTEM_C swig-report-system.c
${CMAKE_CURRENT_SOURCE_DIR}/report-system.i ${report_system_HEADERS}
)
SET (report_system_SOURCES SET (report_system_SOURCES
gncmod-report-system.c gncmod-report-system.c

View File

@@ -33,18 +33,15 @@ SET (app_utils_HEADERS
gnc-ui-balances.h gnc-ui-balances.h
guile-util.h guile-util.h
option-util.h option-util.h
) )
# Command to generate the swig-app-utils-guile.c wrapper file
gnc_add_swig_guile_command (swig-apputils-guile-c
SWIG_APP_UTILS_GUILE_C swig-app-utils-guile.c
${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i
)
IF (BUILDING_FROM_VCS) # Command to generate the swig-app-utils-python.c wrapper file
# Command to generate the swig-app-utils.c wrapper file
SET (SWIG_APP_UTILS_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-app-utils-guile.c)
GNC_ADD_SWIG_COMMAND (swig-apputils-guile-c ${SWIG_APP_UTILS_GUILE_C} ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i)
ELSE()
SET (SWIG_APP_UTILS_GUILE_C swig-app-utils-guile.c)
ENDIF()
gnc_add_swig_python_command (swig-app-utils-python gnc_add_swig_python_command (swig-app-utils-python
SWIG_APP_UTILS_PYTHON_C SWIG_APP_UTILS_PYTHON_PY SWIG_APP_UTILS_PYTHON_C SWIG_APP_UTILS_PYTHON_PY
swig-app-utils-python.c sw_app_utils.py swig-app-utils-python.c sw_app_utils.py

View File

@@ -2,13 +2,13 @@
ADD_SUBDIRECTORY(test) ADD_SUBDIRECTORY(test)
IF (BUILDING_FROM_VCS) # Command to generate the swig-core-utils-guile.c wrapper file
SET (SWIG_CORE_UTILS_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils-guile.c) gnc_add_swig_guile_command (swig-core-utils-guile-c
GNC_ADD_SWIG_COMMAND (swig-core-utils-guile-c ${SWIG_CORE_UTILS_GUILE_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i) SWIG_CORE_UTILS_GUILE_C swig-core-utils-guile.c
ELSE() ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i
SET(SWIG_CORE_UTILS_GUILE_C swig-core-utils-guile.c) )
ENDIF()
# Command to generate the swig-core-utils-python.c wrapper file
gnc_add_swig_python_command (swig-core-utils-python gnc_add_swig_python_command (swig-core-utils-python
SWIG_CORE_UTILS_PYTHON_C SWIG_CORE_UTILS_PYTHON_PY SWIG_CORE_UTILS_PYTHON_C SWIG_CORE_UTILS_PYTHON_PY
swig-core-utils-python.c sw_core_utils.py swig-core-utils-python.c sw_core_utils.py

View File

@@ -117,13 +117,11 @@ SET (engine_HEADERS
qof-string-cache.h qof-string-cache.h
) )
IF (BUILDING_FROM_VCS) # Command to generate the swig-engine.c wrapper file
# Command to generate the swig-engine.c wrapper file gnc_add_swig_guile_command (swig-engine-c
SET (SWIG_ENGINE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-engine.c) SWIG_ENGINE_C swig-engine.c
GNC_ADD_SWIG_COMMAND (swig-engine-c ${SWIG_ENGINE_C} ${CMAKE_CURRENT_SOURCE_DIR}/engine.i ${engine_HEADERS}) ${CMAKE_CURRENT_SOURCE_DIR}/engine.i ${engine_HEADERS}
ELSE() )
SET (SWIG_ENGINE_C swig-engine.c)
ENDIF()
# Command to generate the iso-4217-currencies.c file # Command to generate the iso-4217-currencies.c file
SET (ISO_4217_C ${CMAKE_CURRENT_BINARY_DIR}/iso-4217-currencies.c) SET (ISO_4217_C ${CMAKE_CURRENT_BINARY_DIR}/iso-4217-currencies.c)

View File

@@ -2,13 +2,11 @@
ADD_SUBDIRECTORY(test) ADD_SUBDIRECTORY(test)
ADD_SUBDIRECTORY(example) ADD_SUBDIRECTORY(example)
IF (BUILDING_FROM_VCS) # Command to generate the swig-gnc-module.c wrapper file
# Command to generate the swig-gnc-module.c wrapper file gnc_add_swig_guile_command (swig-gnc-module-c
SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.c) SWIG_GNC_MODULE_C swig-gnc-module.c
GNC_ADD_SWIG_COMMAND (swig-gnc-module-c ${SWIG_GNC_MODULE_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-module.i) ${CMAKE_CURRENT_SOURCE_DIR}/gnc-module.i
ELSE() )
SET (SWIG_GNC_MODULE_C swig-gnc-module.c)
ENDIF()
SET (gnc_module_SOURCES gnc-module.c) SET (gnc_module_SOURCES gnc-module.c)

View File

@@ -1,10 +1,8 @@
IF (BUILDING_FROM_VCS) gnc_add_swig_guile_command (swig-bar-c
SET (SWIG_BAR_C ${CMAKE_CURRENT_BINARY_DIR}/swig-bar.c) SWIG_BAR_C swig-bar.c
GNC_ADD_SWIG_COMMAND (swig-bar-c ${SWIG_BAR_C} ${CMAKE_CURRENT_SOURCE_DIR}/bar.i bar.h) ${CMAKE_CURRENT_SOURCE_DIR}/bar.i bar.h
ELSE() )
SET (SWIG_BAR_C ${CMAKE_CURRENT_SOURCE_DIR}/swig-bar.c)
ENDIF()
ADD_LIBRARY(bar EXCLUDE_FROM_ALL bar.c bar.h) ADD_LIBRARY(bar EXCLUDE_FROM_ALL bar.c bar.h)
ADD_LIBRARY(gncmodbar EXCLUDE_FROM_ALL gnc-mod-bar.c) ADD_LIBRARY(gncmodbar EXCLUDE_FROM_ALL gnc-mod-bar.c)

View File

@@ -1,10 +1,8 @@
IF (BUILDING_FROM_VCS) gnc_add_swig_guile_command (swig-baz-c
SET (SWIG_BAZ_C ${CMAKE_CURRENT_BINARY_DIR}/swig-baz.c) SWIG_BAZ_C swig-baz.c
GNC_ADD_SWIG_COMMAND (swig-baz-c ${SWIG_BAZ_C} ${CMAKE_CURRENT_SOURCE_DIR}/baz.i baz.h) ${CMAKE_CURRENT_SOURCE_DIR}/baz.i baz.h
ELSE() )
SET (SWIG_BAZ_C ${CMAKE_CURRENT_SOURCE_DIR}/swig-baz.c)
ENDIF()
ADD_LIBRARY(baz EXCLUDE_FROM_ALL baz.c baz.h) ADD_LIBRARY(baz EXCLUDE_FROM_ALL baz.c baz.h)
TARGET_INCLUDE_DIRECTORIES(baz PRIVATE TARGET_INCLUDE_DIRECTORIES(baz PRIVATE

View File

@@ -1,10 +1,8 @@
IF (BUILDING_FROM_VCS) gnc_add_swig_guile_command (swig-foo-c
SET (SWIG_FOO_C ${CMAKE_CURRENT_BINARY_DIR}/swig-foo.c) SWIG_FOO_C swig-foo.c
GNC_ADD_SWIG_COMMAND (swig-foo-c ${SWIG_FOO_C} ${CMAKE_CURRENT_SOURCE_DIR}/foo.i foo.h) ${CMAKE_CURRENT_SOURCE_DIR}/foo.i foo.h
ELSE() )
SET (SWIG_FOO_C ${CMAKE_CURRENT_SOURCE_DIR}/swig-foo.c)
ENDIF()
ADD_LIBRARY(foo EXCLUDE_FROM_ALL foo.c foo.h) ADD_LIBRARY(foo EXCLUDE_FROM_ALL foo.c foo.h)
ADD_LIBRARY(gncmodfoo EXCLUDE_FROM_ALL gnc-mod-foo.c) ADD_LIBRARY(gncmodfoo EXCLUDE_FROM_ALL gnc-mod-foo.c)