From 6dce42b1718a4947bfeaded77a127e6672c46815 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Wed, 6 Jul 2022 00:07:53 +0200 Subject: FindwxWidgets: Restore win32 find style on MinGW Since commit 6fac8af9ca (FindwxWidgets: set wxWidgets_FIND_STYLE to unix on MINGW, 2022-04-11, v3.24.0-rc1~296^2), we only tried unix find style on MinGW. However, only some MinGW builds have the `wx-config` needed for unix find style. Other builds, including those using the official wxWidgets makefiles, do not provide `wx-config` and need to use win32 find style. To accommodate both use cases, first use win32 find style and if it fails, use unix find style. --- Modules/FindwxWidgets.cmake | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/Modules/FindwxWidgets.cmake b/Modules/FindwxWidgets.cmake index 9e7937e..3b80b2d 100644 --- a/Modules/FindwxWidgets.cmake +++ b/Modules/FindwxWidgets.cmake @@ -53,8 +53,6 @@ the following variables: wxWidgets_USE_UNIVERSAL wxWidgets_USE_STATIC - - There is also a wxWidgets_CONFIG_OPTIONS variable for all other options that need to be passed to the wx-config utility. For example, to use the base toolkit found in the /usr/local path, set the variable @@ -244,7 +242,7 @@ endmacro() #===================================================================== # Determine whether unix or win32 paths should be used #===================================================================== -if(WIN32 AND NOT CYGWIN AND NOT MSYS AND NOT MINGW AND NOT CMAKE_CROSSCOMPILING) +if(WIN32 AND NOT CYGWIN AND NOT MSYS AND NOT CMAKE_CROSSCOMPILING) set(wxWidgets_FIND_STYLE "win32") else() set(wxWidgets_FIND_STYLE "unix") @@ -652,11 +650,17 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32") endif() endif() + if(MINGW AND NOT wxWidgets_FOUND) + # Try unix search mode as well. + set(wxWidgets_FIND_STYLE "unix") + dbg_msg_v("wxWidgets_FIND_STYLE changed to unix") + endif() +endif() + #===================================================================== # UNIX_FIND_STYLE #===================================================================== -else() - if(wxWidgets_FIND_STYLE STREQUAL "unix") +if(wxWidgets_FIND_STYLE STREQUAL "unix") #----------------------------------------------------------------- # UNIX: Helper MACROS #----------------------------------------------------------------- @@ -920,19 +924,6 @@ else() endif() unset(_cygpath_exe CACHE) endif() - -#===================================================================== -# Neither UNIX_FIND_STYLE, nor WIN32_FIND_STYLE -#===================================================================== - else() - if(NOT wxWidgets_FIND_QUIETLY) - message(STATUS - "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): \n" - " Platform unknown/unsupported. It's neither WIN32 nor UNIX " - "find style." - ) - endif() - endif() endif() # Check that all libraries are present, as wx-config does not check it -- cgit v0.12 From 7d6e01801d50d2960de3f5b269bf79951a48c42d Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Wed, 6 Jul 2022 01:09:34 +0200 Subject: FindwxWidgets: Do not reset wxWidgets_LIB_DIR unnecessarily Only reset it when `WX_ROOT_DIR` had a value. This change allows to set both `wxWidgets_LIB_DIR` and `wxWidgets_ROOT_DIR` at the same time when they where previously `-NOTFOUND`. --- Modules/FindwxWidgets.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Modules/FindwxWidgets.cmake b/Modules/FindwxWidgets.cmake index 3b80b2d..19eba95 100644 --- a/Modules/FindwxWidgets.cmake +++ b/Modules/FindwxWidgets.cmake @@ -468,10 +468,12 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32") # If wxWidgets_ROOT_DIR changed, clear lib dir. if(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR) + if(NOT wxWidgets_LIB_DIR OR WX_ROOT_DIR) + set(wxWidgets_LIB_DIR "wxWidgets_LIB_DIR-NOTFOUND" + CACHE PATH "Cleared." FORCE) + endif() set(WX_ROOT_DIR ${wxWidgets_ROOT_DIR} CACHE INTERNAL "wxWidgets_ROOT_DIR") - set(wxWidgets_LIB_DIR "wxWidgets_LIB_DIR-NOTFOUND" - CACHE PATH "Cleared." FORCE) endif() if(WX_ROOT_DIR) -- cgit v0.12