mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Rework SchemeTargets module to use keyword parameters
This commit is contained in:
parent
ba7362d895
commit
91ecdcb5dd
@ -104,14 +104,19 @@ macro(find_guile_dirs)
|
||||
"{GNC_HOME}/${GUILE_REL_UNIX_SITECCACHEDIR}")
|
||||
endmacro(find_guile_dirs)
|
||||
|
||||
function(make_scheme_targets _TARGET _SOURCE_FILES _OUTPUT_DIR _GUILE_DEPENDS
|
||||
MAKE_LINKS)
|
||||
function(make_scheme_targets _TARGET)
|
||||
set(noValues MAKE_LINKS)
|
||||
set(singleValues OUTPUT_DIR)
|
||||
set(multiValues SOURCES DEPENDS)
|
||||
cmake_parse_arguments(SCHEME_TGT "${noValues}" "${singleValues}" "${multiValues}" ${ARGN})
|
||||
|
||||
set(__DEBUG FALSE)
|
||||
if (__DEBUG)
|
||||
message("Parameters to COMPILE_SCHEME for target ${_TARGET}")
|
||||
message(" SOURCE_FILES: ${_SOURCE_FILES}")
|
||||
message(" GUILE_DEPENDS: ${_GUILE_DEPENDS}")
|
||||
message(" DIRECTORIES: ${BINDIR_BUILD}, ${LIBDIR_BUILD}, ${DATADIR_BUILD}")
|
||||
message(" SOURCE_FILES: ${SCHEME_TGT_SOURCES}")
|
||||
message(" GUILE_DEPENDS: ${SCHEME_TGT_DEPENDS}")
|
||||
message(" MAKE_LINKS: ${SCHEME_TGT_MAKE_LINKS}")
|
||||
message(" DIRECTORIES: ${BINDIR_BUILD}, ${LIBDIR_BUILD}, ${DATADIR_BUILD}, ${SCHEME_TGT_OUTPUT_DIR}")
|
||||
endif()
|
||||
set(_CMD "create_symlink")
|
||||
if(WIN32)
|
||||
@ -133,11 +138,11 @@ function(make_scheme_targets _TARGET _SOURCE_FILES _OUTPUT_DIR _GUILE_DEPENDS
|
||||
endif()
|
||||
|
||||
# If links are requested, we simply link (or copy, for Windows) each source file to the dest directory
|
||||
if(MAKE_LINKS)
|
||||
set(_LINK_DIR ${CMAKE_BINARY_DIR}/${GUILE_REL_UNIX_SITEDIR}/${_OUTPUT_DIR})
|
||||
if(SCHEME_TGT_MAKE_LINKS)
|
||||
set(_LINK_DIR ${CMAKE_BINARY_DIR}/${GUILE_REL_UNIX_SITEDIR}/${SCHEME_TGT_OUTPUT_DIR})
|
||||
file(MAKE_DIRECTORY ${_LINK_DIR})
|
||||
set(_SCHEME_LINKS "")
|
||||
foreach(scheme_file ${_SOURCE_FILES})
|
||||
foreach(scheme_file ${SCHEME_TGT_SOURCES})
|
||||
set(_SOURCE_FILE ${current_srcdir}/${scheme_file})
|
||||
if(IS_ABSOLUTE ${scheme_file})
|
||||
set(_SOURCE_FILE ${scheme_file})
|
||||
@ -172,14 +177,14 @@ function(make_scheme_targets _TARGET _SOURCE_FILES _OUTPUT_DIR _GUILE_DEPENDS
|
||||
|
||||
set(_TARGET_FILES "")
|
||||
|
||||
foreach(source_file ${_SOURCE_FILES})
|
||||
set(guile_depends ${_GUILE_DEPENDS})
|
||||
foreach(source_file ${SCHEME_TGT_SOURCES})
|
||||
set(guile_depends ${SCHEME_TGT_DEPENDS})
|
||||
get_filename_component(basename ${source_file} NAME_WE)
|
||||
|
||||
set(output_file ${basename}.go)
|
||||
set(_TMP_OUTPUT_DIR ${_OUTPUT_DIR})
|
||||
set(_TMP_OUTPUT_DIR ${SCHEME_TGT_OUTPUT_DIR})
|
||||
if (_TMP_OUTPUT_DIR)
|
||||
set(output_file ${_OUTPUT_DIR}/${basename}.go)
|
||||
set(output_file ${SCHEME_TGT_OUTPUT_DIR}/${basename}.go)
|
||||
endif()
|
||||
set(output_file ${_GUILE_CACHE_DIR}/${output_file})
|
||||
list(APPEND _TARGET_FILES ${output_file})
|
||||
@ -244,16 +249,36 @@ endfunction()
|
||||
|
||||
function(gnc_add_scheme_targets _TARGET _SOURCE_FILES _OUTPUT_DIR _GUILE_DEPENDS
|
||||
MAKE_LINKS)
|
||||
make_scheme_targets("${_TARGET}" "${_SOURCE_FILES}" "${_OUTPUT_DIR}"
|
||||
"${_GUILE_DEPENDS}" "${MAKE_LINKS}")
|
||||
if(MAKE_LINKS)
|
||||
make_scheme_targets("${_TARGET}"
|
||||
SOURCES "${_SOURCE_FILES}"
|
||||
OUTPUT_DIR "${_OUTPUT_DIR}"
|
||||
DEPENDS "${_GUILE_DEPENDS}"
|
||||
MAKE_LINKS)
|
||||
else()
|
||||
make_scheme_targets("${_TARGET}"
|
||||
SOURCES "${_SOURCE_FILES}"
|
||||
OUTPUT_DIR "${_OUTPUT_DIR}"
|
||||
DEPENDS "${_GUILE_DEPENDS}")
|
||||
endif()
|
||||
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()
|
||||
|
||||
function(gnc_add_scheme_test_targets _TARGET _SOURCE_FILES _OUTPUT_DIR _GUILE_DEPENDS
|
||||
MAKE_LINKS)
|
||||
make_scheme_targets("${_TARGET}" "${_SOURCE_FILES}" "${_OUTPUT_DIR}"
|
||||
"${_GUILE_DEPENDS}" "${MAKE_LINKS}")
|
||||
if(MAKE_LINKS)
|
||||
make_scheme_targets("${_TARGET}"
|
||||
SOURCES "${_SOURCE_FILES}"
|
||||
OUTPUT_DIR "${_OUTPUT_DIR}"
|
||||
DEPENDS "${_GUILE_DEPENDS}"
|
||||
MAKE_LINKS)
|
||||
else()
|
||||
make_scheme_targets("${_TARGET}"
|
||||
SOURCES "${_SOURCE_FILES}"
|
||||
OUTPUT_DIR "${_OUTPUT_DIR}"
|
||||
DEPENDS "${_GUILE_DEPENDS}")
|
||||
endif()
|
||||
add_dependencies(check ${_TARGET})
|
||||
endfunction()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user