From 22736724157ab5553008faa7e96690f5c7a48510 Mon Sep 17 00:00:00 2001 From: Chris Thrasher Date: Sat, 3 Feb 2024 18:57:40 -0700 Subject: [PATCH] Remove workarounds for old compilers --- cmake/Config.cmake | 2 -- cmake/Macros.cmake | 11 ++++------- include/SFML/Config.h | 16 ++-------------- 3 files changed, 6 insertions(+), 23 deletions(-) diff --git a/cmake/Config.cmake b/cmake/Config.cmake index c2b7236..4cbcd7c 100644 --- a/cmake/Config.cmake +++ b/cmake/Config.cmake @@ -58,8 +58,6 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") elseif(CMAKE_COMPILER_IS_GNUCXX) set(SFML_COMPILER_GCC 1) - execute_process(COMMAND "${CMAKE_CXX_COMPILER}" "-dumpversion" OUTPUT_VARIABLE GCC_VERSION_OUTPUT) - string(REGEX REPLACE "([0-9]+\\.[0-9]+).*" "\\1" SFML_GCC_VERSION "${GCC_VERSION_OUTPUT}") execute_process(COMMAND "${CMAKE_CXX_COMPILER}" "--version" OUTPUT_VARIABLE GCC_COMPILER_VERSION) string(REGEX MATCHALL ".*(tdm[64]*-[1-9]).*" SFML_COMPILER_GCC_TDM "${GCC_COMPILER_VERSION}") execute_process(COMMAND "${CMAKE_CXX_COMPILER}" "-dumpmachine" OUTPUT_VARIABLE GCC_MACHINE) diff --git a/cmake/Macros.cmake b/cmake/Macros.cmake index 8f3f2fd..a4e5cd2 100644 --- a/cmake/Macros.cmake +++ b/cmake/Macros.cmake @@ -48,8 +48,8 @@ macro(csfml_add_library target) # set the target's folder (for IDEs that support it, e.g. Visual Studio) set_target_properties(${target} PROPERTIES FOLDER "CSFML") - # for gcc >= 4.0 on Windows, apply the SFML_USE_STATIC_STD_LIBS option if it is enabled - if(SFML_OS_WINDOWS AND SFML_COMPILER_GCC AND NOT SFML_GCC_VERSION VERSION_LESS "4") + # apply the SFML_USE_STATIC_STD_LIBS option if it is enabled + if(SFML_OS_WINDOWS AND SFML_COMPILER_GCC) if(SFML_USE_STATIC_STD_LIBS AND NOT SFML_COMPILER_GCC_TDM) set_target_properties(${target} PROPERTIES LINK_FLAGS "-static-libgcc -static-libstdc++") elseif(NOT SFML_USE_STATIC_STD_LIBS AND SFML_COMPILER_GCC_TDM) @@ -57,11 +57,8 @@ macro(csfml_add_library target) endif() endif() - # if using gcc >= 4.0 or clang >= 3.0 on a non-Windows platform, we must hide public symbols by default - # (exported ones are explicitely marked) - if(NOT SFML_OS_WINDOWS AND ((SFML_COMPILER_GCC AND NOT SFML_GCC_VERSION VERSION_LESS "4") OR (SFML_COMPILER_CLANG AND NOT SFML_CLANG_VERSION VERSION_LESS "3"))) - set_target_properties(${target} PROPERTIES COMPILE_FLAGS -fvisibility=hidden) - endif() + # ensure public symbols are hidden by default (exported ones are explicitly marked) + set_target_properties(${target} PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN YES) # link the target to its external dependencies (C++ SFML libraries) target_link_libraries(${target} PRIVATE ${THIS_DEPENDS}) diff --git a/include/SFML/Config.h b/include/SFML/Config.h index 93d90fb..a30b706 100644 --- a/include/SFML/Config.h +++ b/include/SFML/Config.h @@ -93,20 +93,8 @@ #else // Linux, FreeBSD, Mac OS X - #if __GNUC__ >= 4 - - // GCC 4 has special keywords for showing/hidding symbols, - // the same keyword is used for both importing and exporting - #define CSFML_API_EXPORT extern "C" __attribute__ ((__visibility__ ("default"))) - #define CSFML_API_IMPORT CSFML_EXTERN_C __attribute__ ((__visibility__ ("default"))) - - #else - - // GCC < 4 has no mechanism to explicitely hide symbols, everything's exported - #define CSFML_API_EXPORT extern "C" - #define CSFML_API_IMPORT CSFML_EXTERN_C - - #endif + #define CSFML_API_EXPORT extern "C" __attribute__ ((__visibility__ ("default"))) + #define CSFML_API_IMPORT CSFML_EXTERN_C __attribute__ ((__visibility__ ("default"))) #endif