diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt index 1625bd1724..8bdde034bc 100644 --- a/bindings/python/CMakeLists.txt +++ b/bindings/python/CMakeLists.txt @@ -3,9 +3,8 @@ ADD_SUBDIRECTORY(tests) SET(PYEXEC_FILES __init__.py function_class.py gnucash_business.py gnucash_core.py) -IF (BUILDING_FROM_VCS) - SET(SWIG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/gnucash_core.i ${CMAKE_CURRENT_SOURCE_DIR}/time64.i) - SET(GNUCASH_CORE_C_INCLUDES +set(SWIG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/gnucash_core.i ${CMAKE_CURRENT_SOURCE_DIR}/time64.i) +set(GNUCASH_CORE_C_INCLUDES ${CONFIG_H} ${CMAKE_SOURCE_DIR}/libgnucash/engine/qofsession.h ${CMAKE_SOURCE_DIR}/libgnucash/engine/qofbook.h @@ -35,22 +34,16 @@ IF (BUILDING_FROM_VCS) ${CMAKE_SOURCE_DIR}/libgnucash/engine/gncIDSearch.h ${CMAKE_SOURCE_DIR}/libgnucash/engine/gnc-pricedb.h ${CMAKE_SOURCE_DIR}/libgnucash/app-utils/gnc-prefs-utils.h - ) - - SET (SWIG_GNUCASH_CORE_C ${CMAKE_CURRENT_BINARY_DIR}/gnucash_core.c) - SET (SWIG_GNUCASH_CORE_PY ${CMAKE_CURRENT_BINARY_DIR}/gnucash_core_c.py) +) - GNC_ADD_SWIG_PYTHON_COMMAND (swig-gnucash-core ${SWIG_GNUCASH_CORE_C} - ${SWIG_GNUCASH_CORE_PY} +gnc_add_swig_python_command (swig-gnucash-core + SWIG_GNUCASH_CORE_C SWIG_GNUCASH_CORE_PY + gnucash_core.c gnucash_core_c.py ${SWIG_FILES} ${CMAKE_SOURCE_DIR}/common/base-typemaps.i ${CMAKE_SOURCE_DIR}/libgnucash/engine/engine-common.i ${GNUCASH_CORE_C_INCLUDES} - ) -ELSE() - SET (SWIG_GNUCASH_CORE_C gnucash_core.c) - SET (SWIG_GNUCASH_CORE_PY ${CMAKE_CURRENT_SOURCE_DIR}/gnucash_core_c.py) -ENDIF() +) IF(WITH_PYTHON) diff --git a/common/cmake_modules/GncAddSwigCommand.cmake b/common/cmake_modules/GncAddSwigCommand.cmake index de32e0f082..44ba69b1f9 100644 --- a/common/cmake_modules/GncAddSwigCommand.cmake +++ b/common/cmake_modules/GncAddSwigCommand.cmake @@ -1,5 +1,5 @@ # Copyright (c) 2010, Christian Stimming - +# Copyright (c) 2018, Geert Janssens # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. @@ -26,41 +26,60 @@ macro (GNC_ADD_SWIG_COMMAND _target _output _input) endmacro (GNC_ADD_SWIG_COMMAND) -macro (GNC_ADD_SWIG_PYTHON_COMMAND _target _output _py_output _input) +# gnc_add_swig_python_command is used to generate python swig wrappers +# it will only really generate the wrappers when building from git +# when building from tarball it will set up everything so the version of the wrapper +# from the tarball will be used instead +# - _target is the name of a global target that will be set for this wrapper file, +# 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 +# however when building from a tarball, it will point to the version from the tarball instead +# - _py_out_var is the same but for the python module that's generated together with the wrapper +# - _output is the name of the wrapper file to generate (or to look up in the tarball) +# - _py_output is the name of the python module associated with this wrapper +# - 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_python_command _target _out_var _py_out_var _output _py_output _input) - set (DEFAULT_SWIG_PYTHON_FLAGS - -python - -Wall -Werror - ${SWIG_ARGS} - ) - set (DEFAULT_SWIG_PYTHON_C_INCLUDES - ${GLIB2_INCLUDE_DIRS} - ${CMAKE_SOURCE_DIR}/common - ${CMAKE_SOURCE_DIR}/libgnucash/engine - ${CMAKE_SOURCE_DIR}/libgnucash/app-utils - ) + if (BUILDING_FROM_VCS) + set(SW_CURR_BUILD_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}) + set(SW_BUILD_SOURCE_DIR ${CMAKE_BINARY_DIR}) + else() + set(SW_CURR_BUILD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + set(SW_BUILD_SOURCE_DIR ${CMAKE_SOURCE_DIR}) + endif() - set (PYTHON_SWIG_FLAGS ${DEFAULT_SWIG_PYTHON_FLAGS}) - foreach (dir ${DEFAULT_SWIG_PYTHON_C_INCLUDES}) - list (APPEND PYTHON_SWIG_FLAGS "-I${dir}") - endforeach (dir) - add_custom_command(OUTPUT ${_output} ${_py_output} - COMMAND ${SWIG_EXECUTABLE} ${PYTHON_SWIG_FLAGS} -o ${_output} ${_input} - DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/common/base-typemaps.i ${ARGN} - ) - add_custom_target(${_target} ALL DEPENDS ${_output} ${_py_output} ${CMAKE_SOURCE_DIR}/common/base-typemaps.i ${_input} ${ARGN}) + set(outfile ${SW_CURR_BUILD_SOURCE_DIR}/${_output}) + set(${_out_var} ${outfile}) # This variable is set for convenience to use in the calling CMakeLists.txt + set(py_outfile ${SW_CURR_BUILD_SOURCE_DIR}/${_py_output}) + set(${_py_out_var} ${py_outfile}) # This variable is set for convenience to use in the calling CMakeLists.txt if (BUILDING_FROM_VCS) - set(BUILD_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}) - else() - set(BUILD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + set (DEFAULT_SWIG_PYTHON_FLAGS + -python + -Wall -Werror + ${SWIG_ARGS} + ) + set (DEFAULT_SWIG_PYTHON_C_INCLUDES + ${GLIB2_INCLUDE_DIRS} + ${CMAKE_SOURCE_DIR}/common + ${CMAKE_SOURCE_DIR}/libgnucash/engine + ${CMAKE_SOURCE_DIR}/libgnucash/app-utils + ) + + set (PYTHON_SWIG_FLAGS ${DEFAULT_SWIG_PYTHON_FLAGS}) + foreach (dir ${DEFAULT_SWIG_PYTHON_C_INCLUDES}) + list (APPEND PYTHON_SWIG_FLAGS "-I${dir}") + endforeach (dir) + add_custom_command(OUTPUT ${outfile} ${py_outfile} + COMMAND ${SWIG_EXECUTABLE} ${PYTHON_SWIG_FLAGS} -o ${outfile} ${_input} + DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/common/base-typemaps.i ${ARGN} + ) + add_custom_target(${_target} ALL DEPENDS ${outfile} ${py_outfile} ${CMAKE_SOURCE_DIR}/common/base-typemaps.i ${_input} ${ARGN}) endif() # Add the output files _output and _py_output to the dist tarball - file(RELATIVE_PATH generated ${BUILD_SOURCE_DIR} ${_output}) - dist_add_generated(${generated}) - - file(RELATIVE_PATH py_generated ${BUILD_SOURCE_DIR} ${_py_output}) - dist_add_generated(${py_generated}) + dist_add_generated(${_output} ${_py_output}) endmacro() diff --git a/common/test-core/CMakeLists.txt b/common/test-core/CMakeLists.txt index e2e4a44d9a..095e152a18 100644 --- a/common/test-core/CMakeLists.txt +++ b/common/test-core/CMakeLists.txt @@ -31,18 +31,15 @@ IF (BUILDING_FROM_VCS) SET (SWIG_UNITTEST_SUPPORT_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-guile.c) GNC_ADD_SWIG_COMMAND (swig-unittest-support-guile-c ${SWIG_UNITTEST_SUPPORT_GUILE_C} ${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i ${test_core_HEADERS}) - SET (SWIG_UNITTEST_SUPPORT_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-python.c) - SET (SWIG_UNITTEST_SUPPORT_PYTHON_PY ${CMAKE_CURRENT_BINARY_DIR}/unittest_support.py) - GNC_ADD_SWIG_PYTHON_COMMAND (swig-unittest-support-python - ${SWIG_UNITTEST_SUPPORT_PYTHON_C} - ${SWIG_UNITTEST_SUPPORT_PYTHON_PY} - ${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i) ELSE() SET (SWIG_UNITTEST_SUPPORT_GUILE_C swig-unittest-support-guile.c) - SET (SWIG_UNITTEST_SUPPORT_PYTHON_C swig-unittest-support-python.c) - FILE(COPY unittest_support.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) ENDIF() +gnc_add_swig_python_command (swig-unittest-support-python + SWIG_UNITTEST_SUPPORT_PYTHON_C SWIG_UNITTEST_SUPPORT_PYTHON_PY + swig-unittest-support-python.c unittest_support.py + ${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i +) ADD_LIBRARY(test-core-guile ${SWIG_UNITTEST_SUPPORT_GUILE_C}) TARGET_LINK_LIBRARIES(test-core-guile test-core ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS}) diff --git a/libgnucash/app-utils/CMakeLists.txt b/libgnucash/app-utils/CMakeLists.txt index a3ab7b1ebd..a52bf45bf5 100644 --- a/libgnucash/app-utils/CMakeLists.txt +++ b/libgnucash/app-utils/CMakeLists.txt @@ -41,17 +41,16 @@ IF (BUILDING_FROM_VCS) # 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) - SET (SWIG_APP_UTILS_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-app-utils-python.c) - SET (SWIG_APP_UTILS_PYTHON_PY ${CMAKE_CURRENT_BINARY_DIR}/sw_app_utils.py) - GNC_ADD_SWIG_PYTHON_COMMAND (swig-app-utils-python - ${SWIG_APP_UTILS_PYTHON_C} - ${SWIG_APP_UTILS_PYTHON_PY} - ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i) ELSE() SET (SWIG_APP_UTILS_GUILE_C swig-app-utils-guile.c) - SET (SWIG_APP_UTILS_PYTHON_C swig-app-utils-python.c) ENDIF() +gnc_add_swig_python_command (swig-app-utils-python + SWIG_APP_UTILS_PYTHON_C SWIG_APP_UTILS_PYTHON_PY + swig-app-utils-python.c sw_app_utils.py + ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i +) + SET (app_utils_SOURCES calculation/expression_parser.c calculation/fin.c diff --git a/libgnucash/core-utils/CMakeLists.txt b/libgnucash/core-utils/CMakeLists.txt index fa2b48f09e..407c1c6989 100644 --- a/libgnucash/core-utils/CMakeLists.txt +++ b/libgnucash/core-utils/CMakeLists.txt @@ -5,17 +5,16 @@ ADD_SUBDIRECTORY(test) IF (BUILDING_FROM_VCS) SET (SWIG_CORE_UTILS_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/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) - SET (SWIG_CORE_UTILS_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils-python.c) - SET (SWIG_CORE_UTILS_PYTHON_PY ${CMAKE_CURRENT_BINARY_DIR}/sw_core_utils.py) - GNC_ADD_SWIG_PYTHON_COMMAND (swig-core-utils-python - ${SWIG_CORE_UTILS_PYTHON_C} - ${SWIG_CORE_UTILS_PYTHON_PY} - ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i) ELSE() SET(SWIG_CORE_UTILS_GUILE_C swig-core-utils-guile.c) - SET(SWIG_CORE_UTILS_PYTHON_C swig-core-utils-python.c) ENDIF() +gnc_add_swig_python_command (swig-core-utils-python + SWIG_CORE_UTILS_PYTHON_C SWIG_CORE_UTILS_PYTHON_PY + swig-core-utils-python.c sw_core_utils.py + ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i +) + SET (core_utils_SOURCES binreloc.c gnc-prefs.c