clap

CLAP Audio Plugin API
Log | Files | Refs | README | LICENSE

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:
MCMakeLists.txt | 46+++++++++++++++++++++++++---------------------
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)