cmake_minimum_required(VERSION 3.31) project(log-e-sappho C) set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED True) include(CheckSymbolExists) set(INCLUDE_DIR include) set(SRC_DIR src) set(SPHO_HEADER_DIR ${INCLUDE_DIR}/spho) set(SPHO_HEADER ${SPHO_HEADER_DIR}/ctx.h ${SPHO_HEADER_DIR}/data.h ${SPHO_HEADER_DIR}/err.h ${SPHO_HEADER_DIR}/loc.h ${SPHO_HEADER_DIR}/parse.h ${SPHO_HEADER_DIR}/scope.h ${SPHO_HEADER_DIR}/tp.h ${SPHO_HEADER_DIR}/spho.h ) set(SPHO_SRC ${SRC_DIR}/spho/ctx.c ${SRC_DIR}/spho/scope.c ${SRC_DIR}/spho/tp.c ) check_symbol_exists(strlcpy "string.h" HAVE_STRLCPY) add_library(spho STATIC ${SPHO_HEADER} ${SPHO_SRC}) target_include_directories(spho PRIVATE ${INCLUDE_DIR}) target_compile_definitions(spho PRIVATE $<$:SPHO_DEBUG> $<$:SPHO_USE_STRLCPY> ) add_executable(devcheck ${SRC_DIR}/run/devcheck.c) target_link_libraries(devcheck spho) target_include_directories(devcheck PRIVATE ${INCLUDE_DIR}) target_compile_definitions(devcheck PRIVATE $<$:SPHO_DEBUG> ) set(MSPH_SRC ${SRC_DIR}/msph/msph_token.c ${SRC_DIR}/msph/msph.c ) set(MSPH_HEADER ${SRC_DIR}/msph/msph_token.h ) add_executable(msph ${MSPH_HEADER} ${MSPH_SRC}) target_include_directories(msph PRIVATE ${INCLUDE_DIR}) target_link_libraries(devcheck spho)