From 5a95893631426c753d192785e96c5d46fc6a967f Mon Sep 17 00:00:00 2001 From: David Leeds Date: Tue, 13 May 2025 15:23:25 -0700 Subject: [PATCH] build: update CMake versions and language standards The `typeof` keyword used by this library only became available in the C23 standard. Previously, it was available as a gnu and clang extension. Also, updated the example to use rand() instead of random(). This is an older function, but is more portable. --- CMakeLists.txt | 11 +++++++---- examples/CMakeLists.txt | 2 -- examples/hashmap_example.c | 6 +++--- tests/CMakeLists.txt | 10 ++++++++-- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a8579a..bbbd03c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,10 @@ -cmake_minimum_required(VERSION 3.5) -project(hashmap VERSION 2.0.0 LANGUAGES C) +cmake_minimum_required(VERSION 3.16) +project(hashmap VERSION 2.1.0 LANGUAGES C) -set(CMAKE_C_STANDARD 11) +if(NOT DEFINED CMAKE_C_STANDARD) + set(CMAKE_C_STANDARD 23) + set(CMAKE_C_EXTENSIONS OFF) +endif() ############################################## # Build options @@ -36,7 +39,7 @@ target_include_directories(hashmap ${CMAKE_CURRENT_SOURCE_DIR}/src ) target_compile_options(hashmap - PRIVATE $<$:-Wall -Werror> + PRIVATE -Wall -Werror ) ############################################## diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 7057006..2554b92 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,5 +1,3 @@ -cmake_minimum_required(VERSION 3.5) - # Hashmap example add_executable(hashmap_example hashmap_example.c) target_compile_options(hashmap_example PRIVATE -Wall -Werror) diff --git a/examples/hashmap_example.c b/examples/hashmap_example.c index a46cf64..f410a10 100644 --- a/examples/hashmap_example.c +++ b/examples/hashmap_example.c @@ -38,9 +38,9 @@ struct blob *blob_load(void) if ((b = malloc(sizeof(*b))) == NULL) { return NULL; } - snprintf(b->key, sizeof(b->key), "%02lx", random() % 100); - b->data_len = random() % 10; - memset(b->data, random(), b->data_len); + snprintf(b->key, sizeof(b->key), "%02x", rand() % 100); + b->data_len = rand() % 10; + memset(b->data, rand(), b->data_len); return b; } diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 55c2b3f..3f6261f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,8 +1,14 @@ cmake_minimum_required(VERSION 3.19) project(hashmap_test) -set(CMAKE_C_STANDARD 11) -set(CMAKE_CXX_STANDARD 20) +if(NOT DEFINED CMAKE_C_STANDARD) + set(CMAKE_C_STANDARD 23) + set(CMAKE_C_EXTENSIONS OFF) +endif() + +if(NOT DEFINED CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 20) +endif() include(FetchContent)