52 lines
1.9 KiB
CMake
Executable File
52 lines
1.9 KiB
CMake
Executable File
cmake_minimum_required(VERSION 3.12)
|
|
set(PROJECT_NAME libguf)
|
|
project(${PROJECT_NAME})
|
|
|
|
set(SOURCES src/guf_str.c src/guf_dict.c)
|
|
|
|
add_library(${PROJECT_NAME} STATIC ${SOURCES})
|
|
# target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}}/lib/guf)
|
|
# target_include_directories(${PROJECT_NAME} PRIVATE src)
|
|
|
|
add_executable(libguf_test ${SOURCES} src/guf_test.c)
|
|
target_include_directories(libguf_test PRIVATE src)
|
|
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_C_EXTENSIONS OFF)
|
|
set(CMAKE_C_STANDARD 99)
|
|
|
|
if (TARGET libguf_test)
|
|
message("-- Configure libguf_test...")
|
|
|
|
set(CMAKE_DEBUG_POSTFIX _dbg)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
|
|
|
|
if (APPLE OR UNIX OR LINUX)
|
|
set(WARNING_FLAGS_C -Wall -Wextra -Wpedantic -Wvla -Wshadow -Wundef -Wmisleading-indentation -Wnull-dereference -Wswitch-default -Wno-newline-eof -Wno-unused-function -Wno-unused-parameter)
|
|
endif ()
|
|
|
|
set_target_properties(libguf_test PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})
|
|
|
|
if (APPLE OR UNIX OR LINUX)
|
|
set(DBG_FLAGS -fsanitize=undefined,address -g3 -glldb -Og)
|
|
else ()
|
|
set(DBG_FLAGS /fsanitize=address)
|
|
endif()
|
|
|
|
target_compile_options(libguf_test PRIVATE ${WARNING_FLAGS_C} $<$<CONFIG:Debug>: ${DBG_FLAGS}>) # Note: no higher optimisations at all for debugger to work...
|
|
target_link_options(libguf_test PRIVATE ${WARNING_FLAGS_C} $<$<CONFIG:Debug>: ${DBG_FLAGS}> )
|
|
|
|
include(CheckIPOSupported)
|
|
check_ipo_supported(RESULT ipo_available)
|
|
if (ipo_available AND (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
|
|
message(STATUS "LTO enabled")
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
|
|
else()
|
|
message(STATUS "LTO disabled")
|
|
endif()
|
|
|
|
message("-- Configured libguf_test")
|
|
endif()
|
|
|
|
|