diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 935c3b3..beae2ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,15 @@ project(extent-sampling VERSION 0.1.0) find_package(GSL REQUIRED) find_program(SC NAMES sc REQUIRED) find_program(INDENT NAMES indent) +# TODO: Maybe, support other versions of guile such as 2.2. +pkg_check_modules(GUILE guile-3.0) +pkg_get_variable(GUILD guile-3.0 guild) + +function(change_extension var filename extension) + get_filename_component(basename ${filename} NAME_WE) + get_filename_component(dirname ${filename} DIRECTORY) + set(${var} ${dirname}/${basename}.${extension} PARENT_SCOPE) +endfunction() # Generate C source files from SC source files, and optionally indent # them. @@ -37,3 +46,26 @@ set_target_properties(extentsampling PROPERTIES PUBLIC_HEADER "include/extent-sampling.h;include/gaussian-nd-random.h;include/nd-random.h;include/oracles.h") install(TARGETS extentsampling LIBRARY PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/extent-sampling) + +# Build and install scheme wrapper. +if(${GUILE_FOUND}) + configure_file(scm/extent-sampling/load-libs.scm.in scm/extent-sampling/load-libs.scm) + set(SCM_WRAPPER_PATH scm/extent-sampling/wrap.scm) + change_extension(SCM_WRAPPER_GO_PATH ${SCM_WRAPPER_PATH} go) + add_custom_command( + OUTPUT ${SCM_WRAPPER_GO_PATH} + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${SCM_WRAPPER_PATH} ${CMAKE_BINARY_DIR}/${SCM_WRAPPER_PATH} + COMMAND ${GUILD} compile ${CMAKE_BINARY_DIR}/${SCM_WRAPPER_PATH} -o ${CMAKE_BINARY_DIR}/${SCM_WRAPPER_GO_PATH} + DEPENDS ${SCM_WRAPPER_PATH} + VERBATIM) + add_custom_target(scheme ALL DEPENDS ${SCM_WRAPPER_GO_PATH}) + string(REPLACE "." ";" GUILE_VERSION_LIST ${GUILE_VERSION}) + list(GET GUILE_VERSION_LIST 0 GUILE_MAJOR_VERSION) + list(GET GUILE_VERSION_LIST 1 GUILE_MINOR_VERSION) + install(FILES ${CMAKE_BINARY_DIR}/scm/extent-sampling/load-libs.scm + DESTINATION ${CMAKE_INSTALL_DATADIR}/guile/site/${GUILE_MAJOR_VERSION}.${GUILE_MINOR_VERSION}/extent-sampling) + install(FILES ${CMAKE_BINARY_DIR}/${SCM_WRAPPER_PATH} + DESTINATION ${CMAKE_INSTALL_DATADIR}/guile/site/${GUILE_MAJOR_VERSION}.${GUILE_MINOR_VERSION}/extent-sampling) + install(FILES ${CMAKE_BINARY_DIR}/${SCM_WRAPPER_GO_PATH} + DESTINATION ${CMAKE_INSTALL_LIBDIR}/guile/site/${GUILE_MAJOR_VERSION}.${GUILE_MINOR_VERSION}/site-ccache/extent-sampling) +endif() |