mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
It is split into - /libgnucash (for the non-gui bits) - /gnucash (for the gui) - /common (misc source files used by both) - /bindings (currently only holds python bindings) This is the first step in restructuring the code. It will need much more fine tuning later on.
179 lines
6.5 KiB
CMake
179 lines
6.5 KiB
CMake
ADD_SUBDIRECTORY(overrides)
|
|
ADD_SUBDIRECTORY(test)
|
|
# Some settings are platform dependent. Let's define them per platform.
|
|
IF (WIN32)
|
|
# Windows specific settings go here:
|
|
SET (GNUCASH_RESOURCE_FILE gnucash.rc)
|
|
|
|
ELSE (WIN32)
|
|
# All other platforms use these settings:
|
|
SET (PLATFORM_FILES gnucash-valgrind)
|
|
|
|
ENDIF (WIN32)
|
|
|
|
SET (gnucash_SOURCES
|
|
gnucash-bin.c
|
|
${GNUCASH_RESOURCE_FILE}
|
|
)
|
|
|
|
ADD_EXECUTABLE (gnucash
|
|
${gnucash_SOURCES}
|
|
)
|
|
|
|
TARGET_COMPILE_DEFINITIONS(gnucash PRIVATE -DG_LOG_DOMAIN=\"gnc.bin\")
|
|
|
|
TARGET_LINK_LIBRARIES (gnucash
|
|
gncmod-ledger-core gncmod-report-gnome gnc-gnome gncmod-gnome-utils gncmod-app-utils
|
|
gncmod-engine gnc-module gnc-core-utils gncmod-report-system
|
|
${GUILE_LDFLAGS} ${GLIB2_LDFLAGS} ${GTK3_LDFLAGS} ${GTK_MAC_LDFLAGS}
|
|
)
|
|
|
|
|
|
IF (MAC_INTEGRATION)
|
|
TARGET_COMPILE_OPTIONS(gnucash PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
|
|
TARGET_LINK_LIBRARIES(gnucash ${OSX_EXTRA_LIBRARIES})
|
|
ENDIF(MAC_INTEGRATION)
|
|
|
|
INSTALL(TARGETS gnucash DESTINATION bin)
|
|
# No headers to install.
|
|
|
|
# Generate the gnucash-env script
|
|
SET(SCRIPT_LIST "")
|
|
SET(SCRIPT_OUTPUT_DIR ${BINDIR_BUILD})
|
|
|
|
FOREACH (script gnucash-env gnucash-make-guids)
|
|
SET (GNUCASH_ENV_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${script})
|
|
LIST(APPEND SCRIPT_LIST ${SCRIPT_OUTPUT_DIR}/${script})
|
|
SET (GNC_OVERRIDES_DIR ${CMAKE_INSTALL_PREFIX}/libexec/gnucash/overrides)
|
|
FILE(WRITE ${GNUCASH_ENV_SCRIPT} "#!/bin/sh\n")
|
|
FILE(APPEND ${GNUCASH_ENV_SCRIPT} "PATH=\"${GNC_OVERRIDES_DIR}:\${PATH}\"\n")
|
|
FILE(APPEND ${GNUCASH_ENV_SCRIPT} "export PATH\n")
|
|
FILE(APPEND ${GNUCASH_ENV_SCRIPT} "\nGUILE_WARN_DEPRECATED=\"no\"\n")
|
|
FILE(APPEND ${GNUCASH_ENV_SCRIPT} "export GUILE_WARN_DEPRECATED\n")
|
|
FILE(APPEND ${GNUCASH_ENV_SCRIPT} "\nexec \"${script}\" \"\$@\"\n")
|
|
FILE(COPY ${GNUCASH_ENV_SCRIPT}
|
|
DESTINATION ${SCRIPT_OUTPUT_DIR}
|
|
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
)
|
|
ENDFOREACH(script)
|
|
|
|
SET(TOP_SRC_DIR ${CMAKE_SOURCE_DIR})
|
|
SET(GNUCASH_BIN_INSTALL_NAME "gnucash")
|
|
|
|
SET(VALGRIND_OUTDIR ${BINDIR_BUILD})
|
|
|
|
CONFIGURE_FILE(gnucash.rc.in gnucash.rc @ONLY NEWLINE_STYLE WIN32)
|
|
GNC_CONFIGURE(gnucash-valgrind.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/gnucash-valgrind)
|
|
|
|
FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/gnucash-valgrind
|
|
DESTINATION ${VALGRIND_OUTDIR}
|
|
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
)
|
|
|
|
## Create the environment file
|
|
|
|
FILE(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/environment.in ENV_STRINGS_IN)
|
|
|
|
SET(ENV_STRINGS_LIST "")
|
|
|
|
FOREACH(line ${ENV_STRINGS_IN})
|
|
STRING(REGEX REPLACE "@-|-@" "@" line2 "${line}")
|
|
STRING(REPLACE ";" "\;" line3 "${line2}")
|
|
IF(NOT "${line3}" MATCHES "@NOTE")
|
|
LIST(APPEND ENV_STRINGS_LIST "${line3}\n")
|
|
ENDIF()
|
|
ENDFOREACH()
|
|
|
|
STRING(CONCAT ENV_STRINGS ${ENV_STRINGS_LIST})
|
|
STRING(CONFIGURE "${ENV_STRINGS}" ENV_STRINGS_CONF @ONLY)
|
|
|
|
SET(ENV_FILE_OUT ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/environment)
|
|
SET(BUILD_ENV_FILE_OUT ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/environment.build)
|
|
|
|
FILE(WRITE ${ENV_FILE_OUT} "${ENV_STRINGS_CONF}")
|
|
FILE(WRITE ${BUILD_ENV_FILE_OUT} "${ENV_STRINGS_CONF}")
|
|
|
|
SET(XDG_TEXT "
|
|
# GnuCash was not installed in the default location.
|
|
# XDG_DATA_DIRS will be set so that our documentation
|
|
# and gsettings schema are found.\n"
|
|
)
|
|
|
|
IF (NOT(${GNC_DBD_DIR} STREQUAL "${CMAKE_PREFIX_PATH}/lib/dbd"))
|
|
FILE(APPEND ${ENV_FILE_OUT} "GNC_DBD_DIR=${GNC_DBD_DIR}")
|
|
ENDIF()
|
|
|
|
IF (NOT(${DATADIR} STREQUAL "/usr/share") AND NOT(${DATADIR} STREQUAL "/usr/local/share"))
|
|
FILE(APPEND ${ENV_FILE_OUT} ${XDG_TEXT})
|
|
FILE(APPEND ${ENV_FILE_OUT} "XDG_DATA_DIRS=${DATADIR};{XDG_DATA_DIRS}" "${GNC_SYSTEM_XDG_DATA_DIRS}\n")
|
|
ENDIF()
|
|
|
|
FILE(APPEND ${BUILD_ENV_FILE_OUT} "GNC_DBD_DIR=${LIBDBI_DRIVERS_DIR}/dbd")
|
|
|
|
FILE(APPEND ${BUILD_ENV_FILE_OUT} ${XDG_TEXT})
|
|
FILE(APPEND ${BUILD_ENV_FILE_OUT} "XDG_DATA_DIRS=${DATADIR_BUILD};{XDG_DATA_DIRS};" "${GNC_SYSTEM_XDG_DATA_DIRS}\n")
|
|
|
|
FILE(COPY ${BUILD_ENV_FILE_OUT}
|
|
DESTINATION ${SYSCONFDIR_BUILD}/gnucash
|
|
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
)
|
|
FILE(RENAME
|
|
${SYSCONFDIR_BUILD}/gnucash/environment.build
|
|
${SYSCONFDIR_BUILD}/gnucash/environment
|
|
)
|
|
|
|
SET(ENVIRONMENT_FILE_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
|
FILE(COPY ${ENV_FILE_OUT}
|
|
DESTINATION ${ENVIRONMENT_FILE_DIR}
|
|
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
)
|
|
|
|
INSTALL(FILES ${SCRIPT_LIST} ${VALGRIND_OUTDIR}/gnucash-valgrind DESTINATION bin)
|
|
INSTALL(FILES ${ENVIRONMENT_FILE_DIR}/environment DESTINATION etc/gnucash)
|
|
|
|
SET_LOCAL_DIST(bin_DIST_local CMakeLists.txt environment.in generate-gnc-script gnucash-bin.c gnucash.rc.in gnucash-valgrind.in
|
|
Makefile.am)
|
|
SET(bin_DIST ${bin_DIST_local} ${overrides_DIST} ${test_bin_DIST} PARENT_SCOPE)
|
|
|
|
IF (WIN32)
|
|
# Write out a command script for windows
|
|
SET(lib_directories boost enchant libsoup mysql pgsql libxslt)
|
|
SET(bin_directories mingw gnutls goffice libgsf pcre gnome guile webkit regex aqbanking gwenhywfar libofx opensp
|
|
libdbi sqlite3 mysql pgsql enchant libsoup libxslt)
|
|
|
|
SET(CMD_LINES "")
|
|
SET(BUILD_CMD_LINES "")
|
|
FOREACH(dir bin lib lib/gnucash)
|
|
FILE(TO_NATIVE_PATH ${CMAKE_INSTALL_PREFIX}/${dir} INSTALL_PATH_ITEM)
|
|
FILE(TO_NATIVE_PATH ${CMAKE_BINARY_DIR}/${dir} BUILD_PATH_ITEM)
|
|
LIST(APPEND CMD_LINES "set PATH=${INSTALL_PATH_ITEM}\;%PATH%\n")
|
|
LIST(APPEND BUILD_CMD_LINES "set PATH=${BUILD_PATH_ITEM}\;%PATH%\n")
|
|
ENDFOREACH(dir)
|
|
IF (NOT ${MINGW64})
|
|
FOREACH(dir ${lib_directories})
|
|
FILE(TO_NATIVE_PATH ${CMAKE_PREFIX_PATH}/${dir}/lib PATH_ITEM)
|
|
LIST(APPEND CMD_LINES "set PATH=${PATH_ITEM}\;%PATH%\n")
|
|
ENDFOREACH(dir)
|
|
|
|
FOREACH(dir ${bin_directories})
|
|
FILE(TO_NATIVE_PATH ${CMAKE_PREFIX_PATH}/${dir}/bin PATH_ITEM)
|
|
LIST(APPEND CMD_LINES "set PATH=${PATH_ITEM}\;%PATH%\n")
|
|
ENDFOREACH(dir)
|
|
ENDIF (NOT ${MINGW64})
|
|
SET(CMD_FILE ${CMAKE_CURRENT_BINARY_DIR}/gnucash-launcher.cmd)
|
|
FILE(WRITE ${CMD_FILE} "@echo off\nsetlocal\n\n")
|
|
FOREACH(line ${CMD_LINES})
|
|
FILE(APPEND ${CMD_FILE} "${line}")
|
|
ENDFOREACH(line)
|
|
FILE(APPEND ${CMD_FILE} "\nstart gnucash %*\n")
|
|
|
|
SET(BUILD_CMD_FILE ${CMAKE_BINARY_DIR}/bin/gnucash-launcher.cmd)
|
|
FILE(WRITE ${BUILD_CMD_FILE} "@echo off\nsetlocal\n\n")
|
|
FOREACH(line ${CMD_LINES})
|
|
FILE(APPEND ${BUILD_CMD_FILE} "${line}")
|
|
ENDFOREACH(line)
|
|
FILE(APPEND ${BUILD_CMD_FILE} "\nstart gnucash %*\n")
|
|
|
|
INSTALL(PROGRAMS ${CMD_FILE} DESTINATION bin)
|
|
ENDIF(WIN32)
|