commit 885f32d50143970c86a0302909b15b8fa1db0325
parent f65ab8c0aed7b63b1f478036175c1ea9e73a1def
Author: Alexandre Bique <bique.alexandre@gmail.com>
Date: Tue, 14 Jun 2022 09:22:03 +0200
Check the headers against multiple C++ standards
Diffstat:
1 file changed, 25 insertions(+), 21 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
@@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.17)
enable_testing()
project(CLAP C CXX)
+add_custom_target(clap-tests)
+
# If you use clap as a submodule of your plugin you need some interface projects
# to allow you to link. clap-core gives you the include directory and clap-plugin-core
# gives you the core + plugin-glue.
@@ -11,27 +13,35 @@ target_include_directories(clap-core INTERFACE include)
install(DIRECTORY include DESTINATION "." OPTIONAL EXCLUDE_FROM_ALL)
add_executable(clap-compile-c EXCLUDE_FROM_ALL src/main.c)
-target_link_libraries(clap-compile-c clap-core)
-set_target_properties(clap-compile-c PROPERTIES C_STANDARD 11)
-add_executable(clap-compile-cpp EXCLUDE_FROM_ALL src/main.cc)
-target_link_libraries(clap-compile-cpp clap-core)
-set_target_properties(clap-compile-cpp PROPERTIES CXX_STANDARD 14)
+macro(clap_compile_cpp SUFFIX EXT STDC STDCPP)
+ add_executable(clap-compile-${SUFFIX} EXCLUDE_FROM_ALL src/main.${EXT})
+ target_link_libraries(clap-compile-${SUFFIX} clap-core)
+ set_target_properties(clap-compile-${SUFFIX} PROPERTIES
+ C_STANDARD ${STDC}
+ CXX_STANDARD ${STDCPP})
+ add_test(NAME test-clap-compile-${SUFFIX} COMMAND clap-compile-${SUFFIX})
+ add_dependencies(clap-tests clap-compile-${SUFFIX})
+
+ if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
+ target_compile_options(clap-compile-${SUFFIX} PRIVATE -Wall -Wextra -pedantic)
+ endif()
+
+ if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
+ target_compile_options(clap-compile-${SUFFIX} PRIVATE -Werror=pragma-pack)
+ endif()
+endmacro()
+
+clap_compile_cpp(c11 c 11 11)
+clap_compile_cpp(cpp11 cc 11 11)
+clap_compile_cpp(cpp14 cc 11 14)
+clap_compile_cpp(cpp17 cc 11 17)
+clap_compile_cpp(cpp20 cc 11 20)
add_library(clap-plugin-template MODULE EXCLUDE_FROM_ALL src/plugin-template.c)
target_link_libraries(clap-plugin-template PRIVATE clap-core)
set_target_properties(clap-plugin-template PROPERTIES C_STANDARD 11)
-if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
- target_compile_options(clap-compile-c PRIVATE -Wall -Wextra -pedantic)
- target_compile_options(clap-compile-cpp PRIVATE -Wall -Wextra -pedantic)
-endif()
-
-if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
- target_compile_options(clap-compile-c PRIVATE -Werror=pragma-pack)
- target_compile_options(clap-compile-cpp PRIVATE -Werror=pragma-pack)
-endif()
-
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
target_link_libraries(clap-plugin-template PRIVATE -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/linux-my_plug.version)
target_link_libraries(clap-plugin-template PRIVATE -Wl,-z,defs)
@@ -51,9 +61,3 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set_target_properties(clap-plugin-template PROPERTIES SUFFIX ".clap" PREFIX "")
endif()
-
-add_test(NAME test-clap-compile-c COMMAND clap-compile-c)
-add_test(NAME test-clap-compile-cpp COMMAND clap-compile-cpp)
-
-add_custom_target(clap-tests)
-add_dependencies(clap-tests clap-compile-c clap-compile-cpp)