From 310b25ce1f3afbc79f654a791a7862dbf4009a9c Mon Sep 17 00:00:00 2001 From: laentropia Date: Thu, 23 Apr 2026 12:23:52 -0600 Subject: [PATCH] updates to cmake --- CMakeLists.txt | 51 ++++++++++++++++++++++++++------------------- test/CMakeLists.txt | 20 ++++++++++++------ 2 files changed, 44 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9696f83..9c72d54 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,39 +1,48 @@ cmake_minimum_required(VERSION 3.20) -project(calculator VERSION 1.0 LANGUAGES C) +project(arraylist VERSION 1.0 LANGUAGES C) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) -# Export compile_commands.json (para clangd) +# clangd set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -add_compile_options( +# Opciones +option(ARRAYLIST_BUILD_TESTS "Build arraylist tests" OFF) +option(ARRAYLIST_ENABLE_SANITIZERS "Enable sanitizers for tests" ON) + +# ------------------------ +# Library +# ------------------------ +add_library(arraylist + src/arraylist.c +) + +target_include_directories(arraylist + PUBLIC + $ + $ +) + +target_compile_options(arraylist PRIVATE -Wall -Wextra -Wpedantic ) +# ------------------------ +# Example (opcional) +# ------------------------ +add_executable(arraylist_example src/main.c) -include_directories(include) - -add_library(arraylist_lib - src/arraylist.c +target_link_libraries(arraylist_example + arraylist ) -add_executable(arraylist_main src/main.c) - -target_link_libraries(arraylist_main arraylist_lib) - -function(enable_sanitizers target) - target_compile_options(${target} PRIVATE -fsanitize=address -fno-omit-frame-pointer) - target_link_options(${target} PRIVATE -fsanitize=address) -endfunction() - - # ------------------------ # Testing # ------------------------ - -enable_testing() -add_subdirectory(test) - +if(ARRAYLIST_BUILD_TESTS) + enable_testing() + add_subdirectory(test) +endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 965d2ed..4145dc2 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -3,13 +3,21 @@ find_package(cmocka REQUIRED) add_executable(test_arraylist test_arraylist.c) target_link_libraries(test_arraylist - arraylist_lib + arraylist cmocka::cmocka ) -enable_sanitizers(test_arraylist) +# Sanitizers (portables) +if(ARRAYLIST_ENABLE_SANITIZERS) + if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") + target_compile_options(test_arraylist PRIVATE + -fsanitize=address + -fno-omit-frame-pointer + ) + target_link_options(test_arraylist PRIVATE + -fsanitize=address + ) + endif() +endif() -target_compile_options(test_arraylist PRIVATE -fsanitize=address -fno-omit-frame-pointer) -target_link_options(test_arraylist PRIVATE -fsanitize=address) - -add_test(NAME arraylist_tests COMMAND arraylists_arena) +add_test(NAME arraylist_tests COMMAND test_arraylist)