cmake_minimum_required(VERSION 3.22) project(ftracetool C) set(CMAKE_C_STANDARD 23) set(CMAKE_C_STANDARD_REQUIRED ON) find_package(PkgConfig) pkg_search_module(LIBELF REQUIRED libelf) pkg_search_module(CHIBI_SCHEME REQUIRED chibi-scheme) if(NOT CHIBI_SCHEME_FOUND) message(FATAL_ERROR "chibi-scheme not found!") endif() if(NOT LIBELF_FOUND) message(FATAL_ERROR "libelf not found!") endif() file(GLOB SOURCES "src/*.c") message(STATUS "Libelf include dirs: ${LIBELF_INCLUDE_DIRS}") message(STATUS "Libelf libraries: ${LIBELF_LIBRARIES}") message(STATUS "Chibi-scheme include dirs: ${CHIBI_SCHEME_INCLUDE_DIRS}") message(STATUS "Chibi-scheme libraries: ${CHIBI_SCHEME_LIBRARIES}") add_custom_target(ftracetool_scm.h COMMAND xxd -i < ${CMAKE_SOURCE_DIR}/src/ftracetool.scm > ${CMAKE_CURRENT_BINARY_DIR}/ftracetool_scm.h) add_executable(ftracetool ${SOURCES}) add_dependencies(ftracetool ftracetool_scm.h) target_include_directories(ftracetool PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(ftracetool PRIVATE ${LIBELF_INCLUDE_DIRS} ${CHIBI_SCHEME_INCLUDE_DIRS}) target_link_libraries(ftracetool PRIVATE -L${LIBELF_LIBRARY_DIRS} ${LIBELF_LIBRARIES}) target_link_libraries(ftracetool PRIVATE -L${CHIBI_SCHEME_LIBRARY_DIRS} ${CHIBI_SCHEME_LIBRARIES})