From a8b05717bfd7d6bbb653f4f50e782bb975d3498b Mon Sep 17 00:00:00 2001 From: akallabeth Date: Wed, 18 Dec 2024 20:40:37 +0100 Subject: [PATCH] [cmake] set SYSTEM for external includes * add winpr_system_includ_directory_add macro for WinPR related external include directories * set target property SYSTEM for SDL related targets --- client/SDL/SDL2/CMakeLists.txt | 10 +++++----- client/SDL/SDL2/dialogs/CMakeLists.txt | 6 ++++-- client/SDL/SDL3/CMakeLists.txt | 7 ++++--- client/SDL/SDL3/dialogs/CMakeLists.txt | 2 ++ winpr/libwinpr/CMakeLists.txt | 25 +++++++++++++++++++++++-- winpr/libwinpr/crt/CMakeLists.txt | 2 +- winpr/libwinpr/crypto/CMakeLists.txt | 4 ++-- winpr/libwinpr/rpc/CMakeLists.txt | 2 +- winpr/libwinpr/sspi/CMakeLists.txt | 8 ++++---- winpr/libwinpr/synch/CMakeLists.txt | 2 +- winpr/libwinpr/timezone/CMakeLists.txt | 2 +- winpr/libwinpr/utils/CMakeLists.txt | 18 +++++++++--------- 12 files changed, 57 insertions(+), 31 deletions(-) diff --git a/client/SDL/SDL2/CMakeLists.txt b/client/SDL/SDL2/CMakeLists.txt index ddf5c491d..b570ef3a1 100644 --- a/client/SDL/SDL2/CMakeLists.txt +++ b/client/SDL/SDL2/CMakeLists.txt @@ -16,9 +16,7 @@ # limitations under the License. set(MODULE_NAME "sdl2-freerdp") -find_package(SDL2 REQUIRED COMPONENTS) -include_directories(SYSTEM ${SDL2_INCLUDE_DIR}) -include_directories(SYSTEM ${SDL2_INCLUDE_DIRS}) +find_package(SDL2 REQUIRED) find_package(Threads REQUIRED) @@ -59,9 +57,11 @@ list( ) if(NOT WITH_SDL_LINK_SHARED) - list(APPEND LIBS ${SDL2_STATIC_LIBRARIES}) + list(APPEND LIBS SDL2::SDL2-static) + set_target_properties(SDL2::SDL2-static PROPERTIES SYSTEM TRUE) else() - list(APPEND LIBS ${SDL2_LIBRARIES}) + list(APPEND LIBS SDL2::SDL2) + set_target_properties(SDL2::SDL2 PROPERTIES SYSTEM TRUE) endif() addtargetwithresourcefile(${MODULE_NAME} TRUE "${PROJECT_VERSION}" SRCS) diff --git a/client/SDL/SDL2/dialogs/CMakeLists.txt b/client/SDL/SDL2/dialogs/CMakeLists.txt index 4539b7a69..2f3c438a5 100644 --- a/client/SDL/SDL2/dialogs/CMakeLists.txt +++ b/client/SDL/SDL2/dialogs/CMakeLists.txt @@ -22,9 +22,9 @@ set(SRCS list(APPEND LIBS sdl2_client_res winpr) if(NOT WITH_SDL_LINK_SHARED) - list(APPEND LIBS ${SDL2_STATIC_LIBRARIES}) + list(APPEND LIBS SDL2::SDL2-static) else() - list(APPEND LIBS ${SDL2_LIBRARIES}) + list(APPEND LIBS SDL2::SDL2) endif() macro(find_sdl_component name) @@ -45,8 +45,10 @@ macro(find_sdl_component name) else() if(WITH_SDL_LINK_SHARED) list(APPEND LIBS ${name}::${name}) + set_target_properties(${name}::${name} PROPERTIES SYSTEM TRUE) else() list(APPEND LIBS ${name}::${name}-static) + set_target_properties(${name}::${name}-static PROPERTIES SYSTEM TRUE) endif() endif() endmacro() diff --git a/client/SDL/SDL3/CMakeLists.txt b/client/SDL/SDL3/CMakeLists.txt index bae32f1df..5eb635d90 100644 --- a/client/SDL/SDL3/CMakeLists.txt +++ b/client/SDL/SDL3/CMakeLists.txt @@ -18,7 +18,7 @@ # limitations under the License. set(MODULE_NAME "sdl3-freerdp") -find_package(SDL3 REQUIRED COMPONENTS) +find_package(SDL3 REQUIRED) find_package(Threads REQUIRED) @@ -61,10 +61,11 @@ list( ) if(NOT WITH_SDL_LINK_SHARED) - list(APPEND LIBS ${SDL3_STATIC_LIBRARIES}) + list(APPEND LIBS SDL3::SDL3-static) else() - list(APPEND LIBS ${SDL3_LIBRARIES}) + list(APPEND LIBS SDL3::SDL3) endif() +set_target_properties(SDL3::Headers PROPERTIES SYSTEM TRUE) addtargetwithresourcefile(${MODULE_NAME} "${WIN32_GUI_FLAG}" "${PROJECT_VERSION}" SRCS) diff --git a/client/SDL/SDL3/dialogs/CMakeLists.txt b/client/SDL/SDL3/dialogs/CMakeLists.txt index fbf013544..ee365b7dc 100644 --- a/client/SDL/SDL3/dialogs/CMakeLists.txt +++ b/client/SDL/SDL3/dialogs/CMakeLists.txt @@ -48,8 +48,10 @@ macro(find_sdl_component name) find_package(${name} REQUIRED) if(WITH_SDL_LINK_SHARED) list(APPEND LIBS ${name}::${name}) + set_target_properties(${name}::${name}-shared PROPERTIES SYSTEM TRUE) else() list(APPEND LIBS ${name}::${name}-static) + set_target_properties(${name}::${name}-static PROPERTIES SYSTEM TRUE) endif() endmacro() diff --git a/winpr/libwinpr/CMakeLists.txt b/winpr/libwinpr/CMakeLists.txt index 9e7c1b5ac..dacb79d24 100644 --- a/winpr/libwinpr/CMakeLists.txt +++ b/winpr/libwinpr/CMakeLists.txt @@ -23,6 +23,7 @@ set(WINPR_SRCS "") set(WINPR_LIBS_PRIVATE "") set(WINPR_LIBS_PUBLIC "") set(WINPR_INCLUDES "") +set(WINPR_SYSTEM_INCLUDES "") set(WINPR_DEFINITIONS "") set(WINPR_COMPILE_OPTIONS "") set(WINPR_LINK_OPTIONS "") @@ -60,6 +61,24 @@ macro(winpr_include_directory_add) endif() endmacro() +macro(winpr_system_include_directory_add) + file(RELATIVE_PATH _relPath "${WINPR_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") + foreach(_inc ${ARGN}) + if(IS_ABSOLUTE ${_inc}) + list(APPEND WINPR_SYSTEM_INCLUDES "${_inc}") + else() + if(_relPath) + list(APPEND WINPR_SYSTEM_INCLUDES "${_relPath}/${_inc}") + else() + list(APPEND WINPR_SYSTEM_INCLUDES "${_inc}") + endif() + endif() + endforeach() + if(_relPath) + set(WINPR_SYSTEM_INCLUDES ${WINPR_SYSTEM_INCLUDES} PARENT_SCOPE) + endif() +endmacro() + macro(winpr_library_add_private) foreach(_lib ${ARGN}) list(APPEND WINPR_LIBS_PRIVATE "${_lib}") @@ -113,8 +132,8 @@ if(WITH_URIPARSER) else() find_package(PkgConfig REQUIRED) pkg_check_modules(uriparser REQUIRED liburiparser) - winpr_include_directory_add(${uriparser_INCLUDEDIR}) - winpr_include_directory_add(${uriparser_INCLUDE_DIRS}) + winpr_system_include_directory_add(${uriparser_INCLUDEDIR}) + winpr_system_include_directory_add(${uriparser_INCLUDE_DIRS}) winpr_library_add_private(${uriparser_LIBRARIES}) endif() add_compile_definitions("WITH_URIPARSER") @@ -197,6 +216,7 @@ list(REMOVE_DUPLICATES WINPR_COMPILE_OPTIONS) list(REMOVE_DUPLICATES WINPR_LINK_OPTIONS) list(REMOVE_DUPLICATES WINPR_LINK_DIRS) list(REMOVE_DUPLICATES WINPR_INCLUDES) +list(REMOVE_DUPLICATES WINPR_SYSTEM_INCLUDES) addtargetwithresourcefile(${MODULE_NAME} FALSE "${WINPR_VERSION}" WINPR_SRCS) @@ -218,6 +238,7 @@ else() endif() target_link_options(${MODULE_NAME} ${LINK_OPTS_MODE} ${WINPR_LINK_OPTIONS}) target_include_directories(${MODULE_NAME} PRIVATE ${WINPR_INCLUDES}) +target_include_directories(${MODULE_NAME} SYSTEM PRIVATE ${WINPR_SYSTEM_INCLUDES}) target_include_directories(${MODULE_NAME} INTERFACE $) target_link_directories(${MODULE_NAME} PRIVATE ${WINPR_LINK_DIRS}) target_compile_options(${MODULE_NAME} PRIVATE ${WINPR_COMPILE_OPTIONS}) diff --git a/winpr/libwinpr/crt/CMakeLists.txt b/winpr/libwinpr/crt/CMakeLists.txt index 684ed1a91..6318d529f 100644 --- a/winpr/libwinpr/crt/CMakeLists.txt +++ b/winpr/libwinpr/crt/CMakeLists.txt @@ -33,7 +33,7 @@ else() elseif(NOT APPLE AND NOT WIN32) find_package(ICU REQUIRED i18n uc io data) list(APPEND CRT_FILES unicode_icu.c) - winpr_include_directory_add(${ICU_INCLUDE_DIRS}) + winpr_system_include_directory_add(${ICU_INCLUDE_DIRS}) winpr_library_add_private(${ICU_LIBRARIES}) elseif(APPLE) list(APPEND CRT_FILES unicode_apple.m) diff --git a/winpr/libwinpr/crypto/CMakeLists.txt b/winpr/libwinpr/crypto/CMakeLists.txt index 63d50f495..229d3ecd2 100644 --- a/winpr/libwinpr/crypto/CMakeLists.txt +++ b/winpr/libwinpr/crypto/CMakeLists.txt @@ -32,12 +32,12 @@ endif() winpr_module_add(${SRCS}) if(OPENSSL_FOUND) - winpr_include_directory_add(${OPENSSL_INCLUDE_DIR}) + winpr_system_include_directory_add(${OPENSSL_INCLUDE_DIR}) winpr_library_add_private(${OPENSSL_LIBRARIES}) endif() if(MBEDTLS_FOUND) - winpr_include_directory_add(${MBEDTLS_INCLUDE_DIR}) + winpr_system_include_directory_add(${MBEDTLS_INCLUDE_DIR}) winpr_library_add_private(${MBEDTLS_LIBRARIES}) endif() diff --git a/winpr/libwinpr/rpc/CMakeLists.txt b/winpr/libwinpr/rpc/CMakeLists.txt index 14166a61d..05238297b 100644 --- a/winpr/libwinpr/rpc/CMakeLists.txt +++ b/winpr/libwinpr/rpc/CMakeLists.txt @@ -17,7 +17,7 @@ winpr_module_add(rpc.c) -winpr_include_directory_add(${OPENSSL_INCLUDE_DIR}) +winpr_system_include_directory_add(${OPENSSL_INCLUDE_DIR}) winpr_library_add_private(${OPENSSL_LIBRARIES}) diff --git a/winpr/libwinpr/sspi/CMakeLists.txt b/winpr/libwinpr/sspi/CMakeLists.txt index 64c4e465d..421af05ce 100644 --- a/winpr/libwinpr/sspi/CMakeLists.txt +++ b/winpr/libwinpr/sspi/CMakeLists.txt @@ -65,8 +65,8 @@ if(WITH_KRB5) list(APPEND ${MODULE_PREFIX}_KERBEROS_SRCS Kerberos/krb5glue.h) - winpr_include_directory_add(${KRB5_INCLUDEDIR}) - winpr_include_directory_add(${KRB5_INCLUDE_DIRS}) + winpr_system_include_directory_add(${KRB5_INCLUDEDIR}) + winpr_system_include_directory_add(${KRB5_INCLUDE_DIRS}) winpr_library_add_private(${KRB5_LIBRARIES}) winpr_library_add_private(${KRB5_LIBRARY}) winpr_library_add_compile_options(${KRB5_CFLAGS}) @@ -100,12 +100,12 @@ winpr_module_add( ) if(OPENSSL_FOUND) - winpr_include_directory_add(${OPENSSL_INCLUDE_DIR}) + winpr_system_include_directory_add(${OPENSSL_INCLUDE_DIR}) winpr_library_add_private(${OPENSSL_LIBRARIES}) endif() if(MBEDTLS_FOUND) - winpr_include_directory_add(${MBEDTLS_INCLUDE_DIR}) + winpr_system_include_directory_add(${MBEDTLS_INCLUDE_DIR}) winpr_library_add_private(${MBEDTLS_LIBRARIES}) endif() diff --git a/winpr/libwinpr/synch/CMakeLists.txt b/winpr/libwinpr/synch/CMakeLists.txt index 9c1609fc3..50de638eb 100644 --- a/winpr/libwinpr/synch/CMakeLists.txt +++ b/winpr/libwinpr/synch/CMakeLists.txt @@ -32,7 +32,7 @@ winpr_module_add( ) if(FREEBSD) - winpr_include_directory_add(${EPOLLSHIM_INCLUDE_DIR}) + winpr_system_include_directory_add(${EPOLLSHIM_INCLUDE_DIR}) winpr_library_add_private(${EPOLLSHIM_LIBS}) endif() diff --git a/winpr/libwinpr/timezone/CMakeLists.txt b/winpr/libwinpr/timezone/CMakeLists.txt index 16fef5214..cb38a8a6a 100644 --- a/winpr/libwinpr/timezone/CMakeLists.txt +++ b/winpr/libwinpr/timezone/CMakeLists.txt @@ -42,7 +42,7 @@ endif() option(WITH_TIMEZONE_ICU "Use ICU for improved timezone mapping" OFF) if(WITH_TIMEZONE_ICU) find_package(ICU COMPONENTS i18n uc REQUIRED) - winpr_include_directory_add(${ICU_INCLUDE_DIRS}) + winpr_system_include_directory_add(${ICU_INCLUDE_DIRS}) winpr_library_add_private(${ICU_LIBRARIES}) winpr_definition_add(WITH_TIMEZONE_ICU) else() diff --git a/winpr/libwinpr/utils/CMakeLists.txt b/winpr/libwinpr/utils/CMakeLists.txt index 5fb4358c3..7e3d1b83f 100644 --- a/winpr/libwinpr/utils/CMakeLists.txt +++ b/winpr/libwinpr/utils/CMakeLists.txt @@ -32,7 +32,7 @@ if(WITH_LODEPNG) winpr_definition_add(WITH_LODEPNG) set(WINPR_WITH_PNG ON CACHE BOOL "build cache") - winpr_include_directory_add(${lodepng_INCLUDE_DIRS}) + winpr_system_include_directory_add(${lodepng_INCLUDE_DIRS}) winpr_library_add_private(${lodepng_LIBRARIES}) endif() @@ -41,7 +41,7 @@ if(WINPR_UTILS_IMAGE_PNG) find_package(PNG REQUIRED) set(WINPR_WITH_PNG ON CACHE BOOL "build cache") - winpr_include_directory_add(${PNG_INCLUDE_DIRS}) + winpr_system_include_directory_add(${PNG_INCLUDE_DIRS}) winpr_library_add_private(${PNG_LIBRARIES}) endif() @@ -50,7 +50,7 @@ if(WINPR_UTILS_IMAGE_WEBP) find_package(PkgConfig REQUIRED) pkg_check_modules(WEBP libwebp REQUIRED) - winpr_include_directory_add(${WEBP_INCLUDE_DIRS}) + winpr_system_include_directory_add(${WEBP_INCLUDE_DIRS}) winpr_library_add_private(${WEBP_LIBRARIES}) endif() @@ -59,7 +59,7 @@ if(WINPR_UTILS_IMAGE_JPEG) find_package(PkgConfig REQUIRED) pkg_check_modules(JPEG libjpeg REQUIRED) - winpr_include_directory_add(${JPEG_INCLUDE_DIRS}) + winpr_system_include_directory_add(${JPEG_INCLUDE_DIRS}) winpr_library_add_private(${JPEG_LIBRARIES}) endif() @@ -91,7 +91,7 @@ if(WITH_LIBSYSTEMD) find_package(libsystemd REQUIRED) set(WINPR_HAVE_JOURNALD_H TRUE) set(JOURNALD_SRCS wlog/JournaldAppender.c wlog/JournaldAppender.h) - winpr_include_directory_add(${LIBSYSTEMD_INCLUDE_DIR}) + winpr_system_include_directory_add(${LIBSYSTEMD_INCLUDE_DIR}) winpr_library_add_private(${LIBSYSTEMD_LIBRARY}) else() unset(WINPR_HAVE_JOURNALD_H) @@ -180,12 +180,12 @@ include(JsonDetect) if(NOT WITH_JSON_DISABLED) if(JSONC_FOUND AND NOT WITH_CJSON_REQUIRED) winpr_library_add_private(${JSONC_LIBRARIES}) - winpr_include_directory_add(${JSONC_INCLUDE_DIRS}) + winpr_system_include_directory_add(${JSONC_INCLUDE_DIRS}) winpr_definition_add(WITH_JSONC) set(WITH_WINPR_JSON ON CACHE INTERNAL "internal") elseif(CJSON_FOUND) winpr_library_add_private(${CJSON_LIBRARIES}) - winpr_include_directory_add(${CJSON_INCLUDE_DIRS}) + winpr_system_include_directory_add(${CJSON_INCLUDE_DIRS}) winpr_definition_add(WITH_CJSON) set(WITH_WINPR_JSON ON CACHE INTERNAL "internal") endif() @@ -198,12 +198,12 @@ winpr_module_add(${SRCS} ${COLLECTIONS_SRCS} ${WLOG_SRCS} ${ASN1_SRCS}) winpr_include_directory_add(".") if(OPENSSL_FOUND) - winpr_include_directory_add(${OPENSSL_INCLUDE_DIR}) + winpr_system_include_directory_add(${OPENSSL_INCLUDE_DIR}) winpr_library_add_private(${OPENSSL_LIBRARIES}) endif() if(MBEDTLS_FOUND) - winpr_include_directory_add(${MBEDTLS_INCLUDE_DIR}) + winpr_system_include_directory_add(${MBEDTLS_INCLUDE_DIR}) winpr_library_add_private(${MBEDTLS_LIBRARIES}) endif()