cmake_minimum_required(VERSION 3.10) project(extent-sampling VERSION 0.1.0) find_package(GSL REQUIRED) find_program(SC NAMES sc REQUIRED) find_program(INDENT NAMES indent) # Generate C source files from SC source files, and optionally indent # them. file(GLOB SC_SOURCES "src/*.sc") foreach(sc_source ${SC_SOURCES}) get_filename_component(source_basename ${sc_source} NAME_WE) set(c_file ${source_basename}.c) if(${INDENT} STREQUAL INDENT-NOTFOUND) add_custom_command( OUTPUT ${c_file} COMMAND ${SC} ${sc_source} ${c_file} DEPENDS ${sc_source} src/macros/macros.sc VERBATIM) else() add_custom_command( OUTPUT ${c_file} COMMAND ${SC} ${sc_source} ${c_file} COMMAND ${INDENT} ${c_file} DEPENDS ${sc_source} src/macros/macros.sc VERBATIM) endif() list(APPEND C_SOURCES ${c_file}) endforeach() include_directories("include") include(GNUInstallDirs) add_library(extentsampling SHARED ${C_SOURCES}) 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)