mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Combine the two scheme target generation functions
Add another keyword TEST to set when test targets are to be created
This commit is contained in:
parent
25e08f88a5
commit
ba15cf7f7f
@ -104,9 +104,43 @@ macro(find_guile_dirs)
|
|||||||
"{GNC_HOME}/${GUILE_REL_UNIX_SITECCACHEDIR}")
|
"{GNC_HOME}/${GUILE_REL_UNIX_SITECCACHEDIR}")
|
||||||
endmacro(find_guile_dirs)
|
endmacro(find_guile_dirs)
|
||||||
|
|
||||||
# Internal function called by gnc_add_scheme_targets and gnc_add_schemte_test_targets
|
# gnc_add_scheme_targets (target
|
||||||
function(_make_scheme_targets _TARGET)
|
# SOURCES source1 source2 ...
|
||||||
set(noValues MAKE_LINKS)
|
# OUTPUT_DIR directory
|
||||||
|
# [DEPENDS depedency1 dependency2 ...]
|
||||||
|
# [MAKE_LINKS] [TEST])
|
||||||
|
#
|
||||||
|
#̉ Use this function to add scheme targets, that is *.scm files to
|
||||||
|
# compile into their corresponding *.go files.
|
||||||
|
#
|
||||||
|
# SOURCES is a list of scm source files to compile.
|
||||||
|
#
|
||||||
|
# The resulting *.go binaries will be generated in OUTPUT_DIR directory.
|
||||||
|
# This directory is interpreted as a path relative to the build's guile compiled directory
|
||||||
|
# directory. For example if guile binaries in the build directory are located in
|
||||||
|
# $HOME/gnucash/build/lib/x86_64-linux-gnu/guile/2.0/site-cache and OUTPUT_DIR is "gnucash"
|
||||||
|
# the binary .go files will go into
|
||||||
|
# $HOME/gnucash/build/lib/x86_64-linux-gnu/guile/2.0/site-cache/gnucash
|
||||||
|
#
|
||||||
|
# If cmake targets are provided via the DEPENDS keyword those will be added to
|
||||||
|
# the guile targets as dependencies.
|
||||||
|
#
|
||||||
|
# If MAKE_LINKS is set links (or copies on Windows) will be set up
|
||||||
|
# from the source directory to the build's guile sources directory.
|
||||||
|
# For example if guile source path in the build directory is
|
||||||
|
# $HOME/gnucash/build/share/guile/site/2.0 and OUTPUT_DIR is "gnucash"
|
||||||
|
# the links or copies will go into
|
||||||
|
# $HOME/gnucash/build/share/guile/site/2.0/gnucash
|
||||||
|
#
|
||||||
|
# If keyword TEST is specified this target will be treated as a test target.
|
||||||
|
# That is its compiled files won't be installed and will be added to the set
|
||||||
|
# of tests to run via the "check" target. If TEST is not set the targets are
|
||||||
|
# considerd normal targets and will be added to the list of files to install.
|
||||||
|
# They will be installed in the guile compied directory relative to the prefix
|
||||||
|
# set up for this build, with the OUTPUT_DIR appended to it. For example:
|
||||||
|
# /usr/local/lib/x86_64-linux-gnu/guile/2.0/site-cache/gnucash
|
||||||
|
function(gnc_add_scheme_targets _TARGET)
|
||||||
|
set(noValues MAKE_LINKS TEST)
|
||||||
set(singleValues OUTPUT_DIR)
|
set(singleValues OUTPUT_DIR)
|
||||||
set(multiValues SOURCES DEPENDS)
|
set(multiValues SOURCES DEPENDS)
|
||||||
cmake_parse_arguments(SCHEME_TGT "${noValues}" "${singleValues}" "${multiValues}" ${ARGN})
|
cmake_parse_arguments(SCHEME_TGT "${noValues}" "${singleValues}" "${multiValues}" ${ARGN})
|
||||||
@ -117,6 +151,7 @@ function(_make_scheme_targets _TARGET)
|
|||||||
message(" SOURCE_FILES: ${SCHEME_TGT_SOURCES}")
|
message(" SOURCE_FILES: ${SCHEME_TGT_SOURCES}")
|
||||||
message(" GUILE_DEPENDS: ${SCHEME_TGT_DEPENDS}")
|
message(" GUILE_DEPENDS: ${SCHEME_TGT_DEPENDS}")
|
||||||
message(" MAKE_LINKS: ${SCHEME_TGT_MAKE_LINKS}")
|
message(" MAKE_LINKS: ${SCHEME_TGT_MAKE_LINKS}")
|
||||||
|
message(" TEST: ${SCHEME_TGT_TEST}")
|
||||||
message(" DIRECTORIES: ${BINDIR_BUILD}, ${LIBDIR_BUILD}, ${DATADIR_BUILD}, ${SCHEME_TGT_OUTPUT_DIR}")
|
message(" DIRECTORIES: ${BINDIR_BUILD}, ${LIBDIR_BUILD}, ${DATADIR_BUILD}, ${SCHEME_TGT_OUTPUT_DIR}")
|
||||||
endif()
|
endif()
|
||||||
set(_CMD "create_symlink")
|
set(_CMD "create_symlink")
|
||||||
@ -247,52 +282,26 @@ function(_make_scheme_targets _TARGET)
|
|||||||
add_custom_target(${_TARGET} ALL DEPENDS ${_TARGET_FILES})
|
add_custom_target(${_TARGET} ALL DEPENDS ${_TARGET_FILES})
|
||||||
|
|
||||||
set(_TARGET_FILES "${_TARGET_FILES}" PARENT_SCOPE)
|
set(_TARGET_FILES "${_TARGET_FILES}" PARENT_SCOPE)
|
||||||
set(_SOURCE_FILES "${SCHEME_TGT_SOURCES}" PARENT_SCOPE)
|
|
||||||
set(_OUTPUT_DIR "${SCHEME_TGT_OUTPUT_DIR}" PARENT_SCOPE)
|
if(TEST)
|
||||||
|
add_dependencies(check ${_TARGET})
|
||||||
|
else()
|
||||||
|
install(FILES ${_TARGET_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/${GUILE_REL_SITECCACHEDIR}/${SCHEME_TGT_OUTPUT_DIR})
|
||||||
|
install(FILES ${SCHEME_TGT_SOURCES} DESTINATION ${CMAKE_INSTALL_PREFIX}/${GUILE_REL_SITEDIR}/${SCHEME_TGT_OUTPUT_DIR})
|
||||||
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
# gnc_add_scheme_targets (target
|
|
||||||
# SOURCES source1 source2 ...
|
|
||||||
# OUTPUT_DIR directory
|
|
||||||
# [DEPENDS depedency1 dependency2 ...]
|
|
||||||
# [MAKE_LINKS])
|
|
||||||
#
|
|
||||||
#̉ Use this function to add scheme targets, that is *.scm files to
|
|
||||||
# compile into their corresponding *.go files.
|
|
||||||
# SOURCES is a list of scm source files to compile
|
|
||||||
# The resulting *.go binaries will be installed in OUTPUT_DIR directory.
|
|
||||||
# This directory is interpreted as a path relative to the system's or build's guile compiled directory
|
|
||||||
# directory. For example if guile binaries are installed in
|
|
||||||
# /usr/local/lib/x86_64-linux-gnu/guile/2.0/site-cache and OUTPUT_DIR is "gnucash"
|
|
||||||
# the binary .go files will go into
|
|
||||||
# /usr/local/lib/x86_64-linux-gnu/guile/2.0/site-cache/gnucash
|
|
||||||
# If cmake targets are provided via the DEPENDS keyword those will be added to
|
|
||||||
# the guile targets as dependencies.
|
|
||||||
# Finally if MAKE_LINKS is set links (or copies on Windows) will be set up
|
|
||||||
# from the source directory to the build's guile sources directory.
|
|
||||||
# For example if guile source path in the build directory is
|
|
||||||
# $HOME/gnucash/build/share/guile/site/2.0 and OUTPUT_DIR is "gnucash"
|
|
||||||
# the links or copies will go into
|
|
||||||
# $HOME/gnucash/build/share/guile/site/2.0/gnucash
|
|
||||||
function(gnc_add_scheme_targets)
|
|
||||||
_make_scheme_targets(${ARGN})
|
|
||||||
install(FILES ${_TARGET_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/${GUILE_REL_SITECCACHEDIR}/${_OUTPUT_DIR})
|
|
||||||
install(FILES ${_SOURCE_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/${GUILE_REL_SITEDIR}/${_OUTPUT_DIR})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# gnc_add_scheme_test_targets (target
|
# gnc_add_scheme_test_targets (target
|
||||||
# SOURCES source1 source2 ...
|
# SOURCES source1 source2 ...
|
||||||
# OUTPUT_DIR directory
|
# OUTPUT_DIR directory
|
||||||
# [DEPENDS depedency1 dependency2 ...]
|
# [DEPENDS depedency1 dependency2 ...]
|
||||||
# [MAKE_LINKS])
|
# [MAKE_LINKS])
|
||||||
#
|
#
|
||||||
# Exactly like gnc_add_scheme_targets except
|
# Calls gnc_add_scheme_targets with the TEST keyword set
|
||||||
# - these targets will never be installed
|
# See that function's description for more details.
|
||||||
# - they will be marked to be run as tests
|
|
||||||
function(gnc_add_scheme_test_targets _TARGET)
|
function(gnc_add_scheme_test_targets _TARGET)
|
||||||
_make_scheme_targets(${_TARGET} ${ARGN})
|
gnc_add_scheme_targets(${_TARGET} ${ARGN} TEST)
|
||||||
add_dependencies(check ${_TARGET})
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Function to write boilerplate code for deprecated guile modules
|
# Function to write boilerplate code for deprecated guile modules
|
||||||
|
Loading…
Reference in New Issue
Block a user