gnucash/libgnucash/core-utils/CMakeLists.txt
Geert Janssens 49a936c1fd 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.
2018-01-29 19:46:44 +01:00

209 lines
6.5 KiB
CMake

# CMakeLists.txt for libgnucash/core-utils
ADD_SUBDIRECTORY(test)
# Command to generate the swig-core-utils-guile.c wrapper file
gnc_add_swig_guile_command (swig-core-utils-guile-c
SWIG_CORE_UTILS_GUILE_C swig-core-utils-guile.c
${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i
)
# Command to generate the swig-core-utils-python.c wrapper file
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
gnc-environment.c
gnc-filepath-utils.cpp
gnc-gkeyfile-utils.c
gnc-glib-utils.c
gnc-guile-utils.c
gnc-jalali.c
gnc-locale-utils.c
gnc-path.c
)
# Add dependency on config.h
SET_SOURCE_FILES_PROPERTIES (${core_utils_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
SET(prefix ${CMAKE_INSTALL_PREFIX})
if(ENABLE_BINRELOC)
SET(datadir ${DATADIR})
SET(bindir ${BINDIR})
SET(libdir ${LIBDIR})
SET(sysconfdir ${SYSCONFDIR})
SET(localedir ${LOCALEDIR})
else()
SET(datadir ${CMAKE_INSTALL_FULL_DATADIR})
SET(bindir ${CMAKE_INSTALL_FULL_BINDIR})
SET(libdir ${CMAKE_INSTALL_FULL_LIBDIR})
SET(sysconfdir ${CMAKE_INSTALL_FULL_SYSCONFDIR})
SET(localedir "${CMAKE_INSTALL_FULL_DATAROOTDIR}/locale")
endif()
configure_file(gncla-dir.h.in gncla-dir.h)
### Create gnc-version.h ###
SET (GNC_VERSION_H_IN
"/* Autogenerated. Do not change. */
#ifndef GNC_VERSION_H
#define GNC_VERSION_H
#define GNC_VCS \"git\"
#include \"gnc-vcs-info.h\"
#endif
")
STRING(CONFIGURE ${GNC_VERSION_H_IN} GNC_VERSION_H_CONTENT)
FILE (WRITE ${CMAKE_CURRENT_BINARY_DIR}/gnc-version.h ${GNC_VERSION_H_CONTENT})
### Create gnc-vcs-info.h
# This can only be done when building from a vcs (git/svn/bzr/svk) working directory.
# This file is shipped in the distribution tarball, so no need to generate it in that case anyway.
# The meta-cmake gymnastics here come from https://cmake.org/pipermail/cmake/2010-July/038015.html
IF (BUILDING_FROM_VCS)
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/gnc-vcs-info.h.in
"/* Autogenerated. Do not change. */
#define GNC_VCS_REV \"@GNC_VCS_REV@\"
#define GNC_VCS_REV_DATE \"@GNC_VCS_REV_DATE@\"
#define GNC_VCS_REV_YEAR \"@GNC_VCS_REV_YEAR@\"
#define GNC_VCS_REV_Y_M \"@GNC_VCS_REV_Y_M@\"
")
SET(SCM_REV_COMMAND "${CMAKE_SOURCE_DIR}/util/gnc-vcs-info -r")
SET(SCM_REV_DATE_COMMAND "${CMAKE_SOURCE_DIR}/util/gnc-vcs-info -d")
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.cmake
"EXECUTE_PROCESS(
COMMAND ${SHELL} ${SCM_REV_COMMAND} ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GNC_VCS_REV
OUTPUT_STRIP_TRAILING_WHITESPACE
)
EXECUTE_PROCESS(
COMMAND ${SHELL} ${SCM_REV_DATE_COMMAND} ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GNC_VCS_REV_DATE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
STRING(SUBSTRING \${GNC_VCS_REV_DATE} 0 4 GNC_VCS_REV_YEAR)
STRING(SUBSTRING \${GNC_VCS_REV_DATE} 0 7 GNC_VCS_REV_Y_M)
CONFIGURE_FILE(\${SRC} \${DST} @ONLY)
")
IF (${CMAKE_VERSION} VERSION_GREATER "3.1")
ADD_CUSTOM_TARGET(gnc-vcs-info ALL
BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/gnc-vcs-info.h
COMMAND ${CMAKE_COMMAND} -D SRC=${CMAKE_CURRENT_BINARY_DIR}/gnc-vcs-info.h.in
-D DST=${CMAKE_CURRENT_BINARY_DIR}/gnc-vcs-info.h
-P ${CMAKE_CURRENT_BINARY_DIR}/version.cmake
)
ELSE()
# BYPRODUCTS keyword not supported below 3.2
ADD_CUSTOM_TARGET(gnc-vcs-info ALL
COMMAND ${CMAKE_COMMAND} -D SRC=${CMAKE_CURRENT_BINARY_DIR}/gnc-vcs-info.h.in
-D DST=${CMAKE_CURRENT_BINARY_DIR}/gnc-vcs-info.h
-P ${CMAKE_CURRENT_BINARY_DIR}/version.cmake
)
ENDIF()
ELSE(BUILDING_FROM_VCS)
ADD_CUSTOM_TARGET(gnc-vcs-info DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gnc-vcs-info.h)
ENDIF(BUILDING_FROM_VCS)
dist_add_generated(gnc-vcs-info.h)
### Compile library
SET(core_utils_noinst_HEADERS
binreloc.h
gnc-prefs.h
gnc-prefs-p.h
gnc-environment.h
gnc-filepath-utils.h
gnc-gkeyfile-utils.h
gnc-glib-utils.h
gnc-guile-utils.h
gnc-jalali.h
gnc-locale-utils.h
gnc-path.h
)
SET(core_utils_ALL_SOURCES ${core_utils_SOURCES} ${core_utils_noinst_HEADERS})
SET(core_utils_ALL_LIBRARIES ${Boost_LIBRARIES} ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS} ${GOBJECT_LDFLAGS} ${GTK_MAC_LDFLAGS})
SET(core_utils_ALL_INCLUDES
${CMAKE_SOURCE_DIR}/common
${CMAKE_BINARY_DIR}/common
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${GLIB2_INCLUDE_DIRS}
${GUILE_INCLUDE_DIRS}
${GTK_MAC_INCLUDE_DIRS})
SET_LOCAL_DIST(core_utils_DIST_local ${core_utils_ALL_SOURCES} CMakeLists.txt core-utils.i core-utils.scm gncla-dir.h.in)
SET(core_utils_DIST ${core_utils_DIST_local} ${test_core_utils_DIST} PARENT_SCOPE)
IF (MAC_INTEGRATION)
LIST(APPEND core_utils_ALL_LIBRARIES ${OSX_EXTRA_LIBRARIES})
ENDIF()
ADD_LIBRARY(gnc-core-utils ${core_utils_ALL_SOURCES} ${SWIG_CORE_UTILS_GUILE_C})
add_dependencies(gnc-core-utils gnc-vcs-info swig-runtime-h)
TARGET_LINK_LIBRARIES(gnc-core-utils ${core_utils_ALL_LIBRARIES})
TARGET_COMPILE_DEFINITIONS(gnc-core-utils
PRIVATE -DG_LOG_DOMAIN=\"gnc.core-utils\" ${GTK_MAC_CFLAGS_OTHER})
TARGET_INCLUDE_DIRECTORIES(gnc-core-utils PUBLIC ${core_utils_ALL_INCLUDES})
IF (MAC_INTEGRATION)
TARGET_COMPILE_OPTIONS(gnc-core-utils PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
ENDIF(MAC_INTEGRATION)
INSTALL(TARGETS gnc-core-utils
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
IF (WITH_PYTHON)
ADD_LIBRARY (gnc-core-utils-python ${core_utils_ALL_SOURCES} ${SWIG_CORE_UTILS_PYTHON_C})
ADD_DEPENDENCIES(gnc-core-utils-python gnc-vcs-info)
TARGET_LINK_LIBRARIES(gnc-core-utils-python ${core_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
TARGET_COMPILE_DEFINITIONS(gnc-core-utils-python
PRIVATE -DG_LOG_DOMAIN=\"gnc.core-utils\" ${GTK_MAC_CFLAGS_OTHER}
)
TARGET_INCLUDE_DIRECTORIES(gnc-core-utils-python PUBLIC ${core_utils_ALL_INCLUDES} ${PYTHON_INCLUDE_DIRS})
IF (MAC_INTEGRATION)
TARGET_COMPILE_OPTIONS(gnc-core-utils-python PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
ENDIF(MAC_INTEGRATION)
INSTALL(TARGETS gnc-core-utils-python
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
ENDIF()
# No headers to install
# Scheme
SET (core_utils_SCHEME core-utils.scm)
SET(GUILE_OUTPUT_DIR gnucash)
SET(GUILE_DEPENDS gnc-core-utils)
GNC_ADD_SCHEME_TARGETS(scm-core-utils
"${core_utils_SCHEME}"
${GUILE_OUTPUT_DIR}
"${GUILE_DEPENDS}"
FALSE
)