mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
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.
209 lines
6.5 KiB
CMake
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
|
|
)
|
|
|