|
|
|
|
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})
|
|
|
|
|
|