diff --git a/CMakeLists.txt b/CMakeLists.txt index af4b3cef3..fb2c68729 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,10 +25,6 @@ if(POLICY CMP0091) endif() project(FreeRDP LANGUAGES C) -set(CMAKE_C_STANDARD 11) -set(CMAKE_C_STANDARD_REQUIRED ON) -set(CMAKE_C_EXTENSIONS ON) - add_custom_target(fuzzers COMMENT "Build fuzzers") if(NOT DEFINED VENDOR) @@ -60,6 +56,8 @@ endif() # Include our extra modules list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/) +include(ProjectCStandard) + # Check for cmake compatibility (enable/disable features) include(CheckCmakeCompat) diff --git a/client/SDL/CMakeLists.txt b/client/SDL/CMakeLists.txt index fd67ec593..f37ccb7a8 100644 --- a/client/SDL/CMakeLists.txt +++ b/client/SDL/CMakeLists.txt @@ -28,11 +28,8 @@ project(sdl-freerdp LANGUAGES CXX VERSION ${FREERDP_DEFAULT_PROJECT_VERSION}) message("project ${PROJECT_NAME} is using version ${PROJECT_VERSION}") -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS ON) - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/) +include(ProjectCXXStandard) include(CommonConfigOptions) include(ConfigureFreeRDP) diff --git a/client/SDL/SDL2/dialogs/sdl_widget.hpp b/client/SDL/SDL2/dialogs/sdl_widget.hpp index 10c2a6b4a..4d49a91bf 100644 --- a/client/SDL/SDL2/dialogs/sdl_widget.hpp +++ b/client/SDL/SDL2/dialogs/sdl_widget.hpp @@ -81,7 +81,7 @@ class SdlWidget TTF_Font* _font = nullptr; SDL_Texture* _image = nullptr; - SDL_Rect _rect; + SDL_Rect _rect = {}; bool _input = false; bool _wrap = false; size_t _text_width = 0; diff --git a/client/SDL/SDL3/dialogs/sdl_widget.hpp b/client/SDL/SDL3/dialogs/sdl_widget.hpp index bdefc5003..6deff5164 100644 --- a/client/SDL/SDL3/dialogs/sdl_widget.hpp +++ b/client/SDL/SDL3/dialogs/sdl_widget.hpp @@ -79,7 +79,7 @@ class SdlWidget TTF_Font* _font = nullptr; SDL_Texture* _image = nullptr; - SDL_FRect _rect; + SDL_FRect _rect = {}; bool _input = false; bool _wrap = false; size_t _text_width = 0; diff --git a/client/Sample/CMakeLists.txt b/client/Sample/CMakeLists.txt index 4783ca6b9..4eabb029c 100644 --- a/client/Sample/CMakeLists.txt +++ b/client/Sample/CMakeLists.txt @@ -27,11 +27,8 @@ project(sfreerdp LANGUAGES C VERSION ${FREERDP_DEFAULT_PROJECT_VERSION}) message("project ${PROJECT_NAME} is using version ${PROJECT_VERSION}") -set(CMAKE_C_STANDARD 11) -set(CMAKE_C_STANDARD_REQUIRED ON) -set(CMAKE_C_EXTENSIONS ON) - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/) +include(ProjectCStandard) include(CommonConfigOptions) include(ConfigureFreeRDP) diff --git a/client/X11/CMakeLists.txt b/client/X11/CMakeLists.txt index 5fd376599..85ee03868 100644 --- a/client/X11/CMakeLists.txt +++ b/client/X11/CMakeLists.txt @@ -27,11 +27,8 @@ message("project ${PROJECT_NAME} is using version ${PROJECT_VERSION}") set(MODULE_NAME "xfreerdp") -set(CMAKE_C_STANDARD 11) -set(CMAKE_C_STANDARD_REQUIRED ON) -set(CMAKE_C_EXTENSIONS ON) - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/) +include(ProjectCStandard) include(CommonConfigOptions) include(ConfigureFreeRDP) diff --git a/cmake/CommonCompilerFlags.cmake b/cmake/CommonCompilerFlags.cmake index d755cf37b..1031fef4c 100644 --- a/cmake/CommonCompilerFlags.cmake +++ b/cmake/CommonCompilerFlags.cmake @@ -21,6 +21,7 @@ if(ENABLE_WARNING_VERBOSE) -Wno-reserved-identifier -Wno-covered-switch-default -Wno-disabled-macro-expansion + -Wno-used-but-marked-unused ) endif() endif() diff --git a/cmake/ProjectCStandard.cmake b/cmake/ProjectCStandard.cmake new file mode 100644 index 000000000..b91a55ebe --- /dev/null +++ b/cmake/ProjectCStandard.cmake @@ -0,0 +1,3 @@ +set(CMAKE_C_STANDARD 11 CACHE STRING "project default") +set(CMAKE_C_STANDARD_REQUIRED ON CACHE BOOL "project default") +set(CMAKE_C_EXTENSIONS ON CACHE BOOL "project default") diff --git a/cmake/ProjectCXXStandard.cmake b/cmake/ProjectCXXStandard.cmake new file mode 100644 index 000000000..1db12fac5 --- /dev/null +++ b/cmake/ProjectCXXStandard.cmake @@ -0,0 +1,3 @@ +set(CMAKE_CXX_STANDARD 17 CACHE STRING "project default") +set(CMAKE_CXX_STANDARD_REQUIRED ON CACHE BOOL "project default") +set(CMAKE_CXX_EXTENSIONS ON CACHE BOOL "project default") diff --git a/rdtk/CMakeLists.txt b/rdtk/CMakeLists.txt index 803afdb4b..1929e4b79 100644 --- a/rdtk/CMakeLists.txt +++ b/rdtk/CMakeLists.txt @@ -23,13 +23,12 @@ set(RDTK_VERSION "${RDTK_VERSION_MAJOR}.${RDTK_VERSION_MINOR}.${RDTK_VERSION_REV set(RDTK_VERSION_FULL "${RDTK_VERSION}") set(RDTK_API_VERSION "${RDTK_VERSION_MAJOR}") +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/) if(NOT FREERDP_UNIFIED_BUILD) cmake_minimum_required(VERSION 3.13) project(RdTk VERSION ${RDTK_VERSION} LANGUAGES C) - set(CMAKE_C_STANDARD 11) - set(CMAKE_C_STANDARD_REQUIRED ON) - set(CMAKE_C_EXTENSIONS ON) + include(ProjectCStandard) set(WINPR_VERSION_MAJOR 3) option(BUILD_TESTING_INTERNAL "Build library unit tests" ON) @@ -40,7 +39,6 @@ else() endif() # Include our extra modules -set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/) include(CommonConfigOptions) # Include cmake modules diff --git a/server/proxy/modules/bitmap-filter/CMakeLists.txt b/server/proxy/modules/bitmap-filter/CMakeLists.txt index d6c82fec0..1216506eb 100644 --- a/server/proxy/modules/bitmap-filter/CMakeLists.txt +++ b/server/proxy/modules/bitmap-filter/CMakeLists.txt @@ -33,12 +33,10 @@ project(proxy-bitmap-filter-plugin VERSION ${FREERDP_DEFAULT_PROJECT_VERSION} LA message("project ${PROJECT_NAME} is using version ${PROJECT_VERSION}") set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../../cmake/) +include(ProjectCXXStandard) include(CommonConfigOptions) include(CXXCompilerFlags) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - set(SRCS bitmap-filter.cpp) addtargetwithresourcefile(${PROJECT_NAME} FALSE "${PROJECT_VERSION}" SRCS FALSE) diff --git a/server/proxy/modules/demo/CMakeLists.txt b/server/proxy/modules/demo/CMakeLists.txt index 5502afa4f..0f2af41c9 100644 --- a/server/proxy/modules/demo/CMakeLists.txt +++ b/server/proxy/modules/demo/CMakeLists.txt @@ -33,12 +33,10 @@ project(proxy-demo-plugin VERSION ${FREERDP_DEFAULT_PROJECT_VERSION} LANGUAGES C message("project ${PROJECT_NAME} is using version ${PROJECT_VERSION}") set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../../cmake/) +include(ProjectCXXStandard) include(CommonConfigOptions) include(CXXCompilerFlags) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - set(SRCS demo.cpp) addtargetwithresourcefile(${PROJECT_NAME} FALSE "${PROJECT_VERSION}" SRCS FALSE) diff --git a/server/proxy/modules/dyn-channel-dump/CMakeLists.txt b/server/proxy/modules/dyn-channel-dump/CMakeLists.txt index 3eb6f6ed4..d2549e191 100644 --- a/server/proxy/modules/dyn-channel-dump/CMakeLists.txt +++ b/server/proxy/modules/dyn-channel-dump/CMakeLists.txt @@ -34,9 +34,7 @@ message("project ${PROJECT_NAME} is using version ${PROJECT_VERSION}") set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../../cmake/) include(CommonConfigOptions) include(CXXCompilerFlags) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) +include(ProjectCXXStandard) set(SRCS dyn-channel-dump.cpp) addtargetwithresourcefile(${PROJECT_NAME} FALSE "${PROJECT_VERSION}" SRCS FALSE) diff --git a/uwac/CMakeLists.txt b/uwac/CMakeLists.txt index c6693bf88..82d098c0e 100644 --- a/uwac/CMakeLists.txt +++ b/uwac/CMakeLists.txt @@ -23,13 +23,12 @@ set(UWAC_VERSION "${UWAC_VERSION_MAJOR}.${UWAC_VERSION_MINOR}.${UWAC_VERSION_REV set(UWAC_VERSION_FULL "${UWAC_VERSION}") set(UWAC_API_VERSION "${UWAC_VERSION_MAJOR}") +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/) if(NOT FREERDP_UNIFIED_BUILD) cmake_minimum_required(VERSION 3.13) project(uwac VERSION ${UWAC_VERSION} LANGUAGES C) - set(CMAKE_C_STANDARD 11) - set(CMAKE_C_STANDARD_REQUIRED ON) - set(CMAKE_C_EXTENSIONS ON) + include(ProjectCStandard) option(BUILD_TESTING_INTERNAL "Build library unit tests" ON) @@ -40,7 +39,6 @@ option(UWAC_FORCE_STATIC_BUILD "Force UWAC to be build as static library (recomm option(UWAC_HAVE_PIXMAN_REGION "Use PIXMAN or FreeRDP for region calculations" "NOT FREERDP_UNIFIED_BUILD") # Include our extra modules -set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/) include(CommonConfigOptions) include(CheckFunctionExists) diff --git a/winpr/CMakeLists.txt b/winpr/CMakeLists.txt index 08e33e186..dc9384c6a 100644 --- a/winpr/CMakeLists.txt +++ b/winpr/CMakeLists.txt @@ -26,10 +26,7 @@ if(NOT FREERDP_UNIFIED_BUILD) endif() project(WinPR LANGUAGES C) - set(CMAKE_C_STANDARD 11) - set(CMAKE_C_STANDARD_REQUIRED ON) - set(CMAKE_C_EXTENSIONS ON) - + include(ProjectCStandard) include(CommonConfigOptions) include(ConfigOptions) diff --git a/winpr/include/winpr/platform.h b/winpr/include/winpr/platform.h index a88066a17..be331a044 100644 --- a/winpr/include/winpr/platform.h +++ b/winpr/include/winpr/platform.h @@ -593,6 +593,16 @@ WINPR_PRAGMA_DIAG_POP #endif #endif +#if defined(__cplusplus) && (__cplusplus >= 201703L) +#define WINPR_ATTR_UNUSED [[maybe_unused]] /** @since version 3.12.0 */ +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202000L) +#define WINPR_ATTR_UNUSED [[maybe_unused]] /** @since version 3.12.0 */ +#elif defined(__GNUC__) || defined(__clang__) +#define WINPR_ATTR_UNUSED __attribute__((unused)) /** @since version 3.12.0 */ +#else +#define WINPR_ATTR_UNUSED /** @since version 3.12.0 */ +#endif + #define WINPR_UNUSED(x) (void)(x) #endif /* WINPR_PLATFORM_H */