From afcec3eefc01e29cc67063832caa254ca165f917 Mon Sep 17 00:00:00 2001 From: Deamhan Date: Tue, 9 Jul 2019 17:48:59 +0300 Subject: [PATCH 01/11] CMake: wxBUILD_USE_STATIC_RUNTIME is available for GCC now --- build/cmake/init.cmake | 16 +++++++++++----- build/cmake/options.cmake | 5 ++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 1b6604deef..b0f7558ceb 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -36,11 +36,17 @@ if(MSVC) "Flags used by the CXX compiler during ${cfg_upper} builds." FORCE) endif() endforeach() -endif() - -if(wxBUILD_MSVC_MULTIPROC) - wx_string_append(CMAKE_C_FLAGS " /MP") - wx_string_append(CMAKE_CXX_FLAGS " /MP") + + if(wxBUILD_MSVC_MULTIPROC) + wx_string_append(CMAKE_C_FLAGS " /MP") + wx_string_append(CMAKE_CXX_FLAGS " /MP") + endif() +elseif(CMAKE_COMPILER_IS_GNUCC) + if(wxBUILD_USE_STATIC_RUNTIME) + set(STATIC_LINKER_FLAGS " -static-libgcc -static-libstdc++") + wx_string_append(CMAKE_EXE_LINKER_FLAGS "${STATIC_LINKER_FLAGS}") + wx_string_append(CMAKE_SHARED_LINKER_FLAGS "${STATIC_LINKER_FLAGS}") + endif() endif() if(wxBUILD_COMPATIBILITY VERSION_LESS 3.0) diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index b7703811ac..70878a1803 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -26,8 +26,11 @@ mark_as_advanced(wxBUILD_CUSTOM_SETUP_HEADER_PATH) wx_option(wxBUILD_DEBUG_LEVEL "Debug Level" Default STRINGS Default 0 1 2) mark_as_advanced(wxBUILD_DEBUG_LEVEL) -if(MSVC) +if(MSVC OR CMAKE_COMPILER_IS_GNUCC) wx_option(wxBUILD_USE_STATIC_RUNTIME "Link using the static runtime library" OFF) +endif() + +if(MSVC) wx_option(wxBUILD_MSVC_MULTIPROC "Enable multi-processor compilation for MSVC") else() # Other compilers support setting the C++ standard, present it an option to the user From e0ad857a2d972c7b162b7764670300bec77e7056 Mon Sep 17 00:00:00 2001 From: Deamhan Date: Wed, 10 Jul 2019 11:30:31 +0300 Subject: [PATCH 02/11] CMake: MinGW multiple definition issue has been fixed (wxBUILD_USE_STATIC_RUNTIME) --- build/cmake/init.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index b0f7558ceb..b369e06b87 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -43,7 +43,11 @@ if(MSVC) endif() elseif(CMAKE_COMPILER_IS_GNUCC) if(wxBUILD_USE_STATIC_RUNTIME) - set(STATIC_LINKER_FLAGS " -static-libgcc -static-libstdc++") + if(MINGW) + set(STATIC_LINKER_FLAGS " -static -Wl,--allow-multiple-definition") + else() + set(STATIC_LINKER_FLAGS " -static-libgcc -static-libstdc++") + endif() wx_string_append(CMAKE_EXE_LINKER_FLAGS "${STATIC_LINKER_FLAGS}") wx_string_append(CMAKE_SHARED_LINKER_FLAGS "${STATIC_LINKER_FLAGS}") endif() From b93fce30f3f74abd44259cd0dfa8e6190d5df6ce Mon Sep 17 00:00:00 2001 From: pk Date: Thu, 11 Jul 2019 12:01:38 +0300 Subject: [PATCH 03/11] CMake: CMAKE_COMPILER_IS_GNUCC has been replaced --- build/cmake/init.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index b369e06b87..51e47bbdef 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -41,7 +41,7 @@ if(MSVC) wx_string_append(CMAKE_C_FLAGS " /MP") wx_string_append(CMAKE_CXX_FLAGS " /MP") endif() -elseif(CMAKE_COMPILER_IS_GNUCC) +elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") if(wxBUILD_USE_STATIC_RUNTIME) if(MINGW) set(STATIC_LINKER_FLAGS " -static -Wl,--allow-multiple-definition") From 4742c32c754095a63369e6f83f29cbbef576c7d0 Mon Sep 17 00:00:00 2001 From: Deamhan Date: Sat, 13 Jul 2019 00:29:18 +0300 Subject: [PATCH 04/11] CMake: wxBUILD_USE_STATIC_RUNTIME was enabled for clang --- build/cmake/init.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 51e47bbdef..3e6fcd06a3 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -41,7 +41,7 @@ if(MSVC) wx_string_append(CMAKE_C_FLAGS " /MP") wx_string_append(CMAKE_CXX_FLAGS " /MP") endif() -elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") +elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MATCH "*Clang")) if(wxBUILD_USE_STATIC_RUNTIME) if(MINGW) set(STATIC_LINKER_FLAGS " -static -Wl,--allow-multiple-definition") From fbac773fedf6db063946a1a18eb645e86fa1db19 Mon Sep 17 00:00:00 2001 From: Deamhan Date: Sat, 13 Jul 2019 00:40:01 +0300 Subject: [PATCH 05/11] CMake: MATCH -> STREQUAL for clang --- build/cmake/init.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 3e6fcd06a3..5a06922cca 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -41,7 +41,7 @@ if(MSVC) wx_string_append(CMAKE_C_FLAGS " /MP") wx_string_append(CMAKE_CXX_FLAGS " /MP") endif() -elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MATCH "*Clang")) +elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) if(wxBUILD_USE_STATIC_RUNTIME) if(MINGW) set(STATIC_LINKER_FLAGS " -static -Wl,--allow-multiple-definition") From 242ecbb185726e8c5a4ad077b6cb9e3c9afcfc0c Mon Sep 17 00:00:00 2001 From: Deamhan Date: Sat, 13 Jul 2019 18:51:19 +0300 Subject: [PATCH 06/11] Update build/cmake/options.cmake Co-Authored-By: Maarten --- build/cmake/options.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index 70878a1803..35a3858ccc 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -26,7 +26,7 @@ mark_as_advanced(wxBUILD_CUSTOM_SETUP_HEADER_PATH) wx_option(wxBUILD_DEBUG_LEVEL "Debug Level" Default STRINGS Default 0 1 2) mark_as_advanced(wxBUILD_DEBUG_LEVEL) -if(MSVC OR CMAKE_COMPILER_IS_GNUCC) +if(NOT APPLE) wx_option(wxBUILD_USE_STATIC_RUNTIME "Link using the static runtime library" OFF) endif() From 82dfc62a626386278855ce319b2d8693bc0f67b4 Mon Sep 17 00:00:00 2001 From: Deamhan Date: Sun, 14 Jul 2019 23:58:09 +0300 Subject: [PATCH 07/11] CMake: multiple definition issue (MinGW) has been fixed --- build/cmake/init.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 5a06922cca..deb6cbdc06 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -44,7 +44,7 @@ if(MSVC) elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) if(wxBUILD_USE_STATIC_RUNTIME) if(MINGW) - set(STATIC_LINKER_FLAGS " -static -Wl,--allow-multiple-definition") + set(STATIC_LINKER_FLAGS " -static -Wl,--exclude-libs=libgcc_eh.a") else() set(STATIC_LINKER_FLAGS " -static-libgcc -static-libstdc++") endif() From 7be4d12749f2eeddfe3d037779478189f2c7cef9 Mon Sep 17 00:00:00 2001 From: Deamhan Date: Mon, 15 Jul 2019 00:10:45 +0300 Subject: [PATCH 08/11] CMake: pthread symbols has been removed from export (MinGW) --- build/cmake/init.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index deb6cbdc06..96bd16e0cd 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -44,7 +44,7 @@ if(MSVC) elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) if(wxBUILD_USE_STATIC_RUNTIME) if(MINGW) - set(STATIC_LINKER_FLAGS " -static -Wl,--exclude-libs=libgcc_eh.a") + set(STATIC_LINKER_FLAGS " -static -Wl,--exclude-libs=libgcc_eh.a -Wl,--exclude-libs=libpthread.a") else() set(STATIC_LINKER_FLAGS " -static-libgcc -static-libstdc++") endif() From 1d52cf1d2d1180e2ac371b1917b5c70af38a2847 Mon Sep 17 00:00:00 2001 From: pk Date: Mon, 15 Jul 2019 11:05:43 +0300 Subject: [PATCH 09/11] CMake: some cleanup --- build/cmake/init.cmake | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 96bd16e0cd..6bb9ffcaf1 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -36,7 +36,7 @@ if(MSVC) "Flags used by the CXX compiler during ${cfg_upper} builds." FORCE) endif() endforeach() - + if(wxBUILD_MSVC_MULTIPROC) wx_string_append(CMAKE_C_FLAGS " /MP") wx_string_append(CMAKE_CXX_FLAGS " /MP") @@ -44,7 +44,13 @@ if(MSVC) elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) if(wxBUILD_USE_STATIC_RUNTIME) if(MINGW) - set(STATIC_LINKER_FLAGS " -static -Wl,--exclude-libs=libgcc_eh.a -Wl,--exclude-libs=libpthread.a") + set(STATIC_LINKER_FLAGS " -static") + set(EXCLUDED_LIBS gcc_eh + pthread + ) + foreach(lib ${EXCLUDED_LIBS}) + wx_string_append(STATIC_LINKER_FLAGS " -Wl,--exclude-libs=lib${lib}.a") + endforeach() else() set(STATIC_LINKER_FLAGS " -static-libgcc -static-libstdc++") endif() From f4a0ac93e349c1501204691e8318e9f7366fb786 Mon Sep 17 00:00:00 2001 From: Deamhan Date: Mon, 15 Jul 2019 19:13:58 +0300 Subject: [PATCH 10/11] CMake: wxUSE_VISIBILITY is non windows option now & -Wl,--exclude-libs=ALL has been added in MinGW case. --- build/cmake/init.cmake | 8 +------- build/cmake/options.cmake | 4 +++- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 6bb9ffcaf1..ca1c2b17eb 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -44,13 +44,7 @@ if(MSVC) elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) if(wxBUILD_USE_STATIC_RUNTIME) if(MINGW) - set(STATIC_LINKER_FLAGS " -static") - set(EXCLUDED_LIBS gcc_eh - pthread - ) - foreach(lib ${EXCLUDED_LIBS}) - wx_string_append(STATIC_LINKER_FLAGS " -Wl,--exclude-libs=lib${lib}.a") - endforeach() + set(STATIC_LINKER_FLAGS " -static -Wl,--exclude-libs=ALL") else() set(STATIC_LINKER_FLAGS " -static-libgcc -static-libstdc++") endif() diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index 35a3858ccc..452f65ddf6 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -59,7 +59,9 @@ if(NOT WIN32) endif() wx_option(wxUSE_COMPILER_TLS "enable use of compiler TLS support") -wx_option(wxUSE_VISIBILITY "use of ELF symbols visibility") +if(NOT WIN32) + wx_option(wxUSE_VISIBILITY "use of ELF symbols visibility") +endif() wx_option(wxUSE_UNSAFE_WXSTRING_CONV "provide unsafe implicit conversions in wxString to const char* or std::string") wx_option(wxUSE_REPRODUCIBLE_BUILD "enable reproducable build" OFF) From 7c8d5dd36de1c1ab3b3b2cb65ef6cf65f2cbbacb Mon Sep 17 00:00:00 2001 From: Deamhan Date: Tue, 16 Jul 2019 08:24:24 +0300 Subject: [PATCH 11/11] CMake: -Wl,--exclude-libs=ALL has been removed for MinGW --- build/cmake/init.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index ca1c2b17eb..ccc238a674 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -44,7 +44,7 @@ if(MSVC) elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) if(wxBUILD_USE_STATIC_RUNTIME) if(MINGW) - set(STATIC_LINKER_FLAGS " -static -Wl,--exclude-libs=ALL") + set(STATIC_LINKER_FLAGS " -static") else() set(STATIC_LINKER_FLAGS " -static-libgcc -static-libstdc++") endif()