Merge pull request #423 from micove/wxconfig-wx30

Search for wx-config-3.0 and wxrc-3.0.
This commit is contained in:
Gregory Hainaut 2015-01-12 22:52:24 +01:00
commit 079ed2c7a9
2 changed files with 22 additions and 61 deletions

View File

@ -6,14 +6,6 @@ set(wx_sdl_c_code "
#endif
")
set(wx_gtk3_c_code "
#include <wx/setup.h>
#ifdef __WXGTK3__
#error cmake_WX_GTK3
#endif
")
function(WX_vs_SDL)
file(WRITE "${CMAKE_BINARY_DIR}/wx_sdl.c" "${wx_sdl_c_code}")
enable_language(C)
@ -32,41 +24,4 @@ function(WX_vs_SDL)
Unfortunately you try to build PCSX2 with SDL2 support which is not compatible
Please use -DSDL2_API=FALSE")
endif()
endfunction()
function(WX_vs_GTK3)
file(WRITE "${CMAKE_BINARY_DIR}/wx_gtk3.c" "${wx_gtk3_c_code}")
enable_language(C)
try_run(
run_result_unused
compile_result_unused
"${CMAKE_BINARY_DIR}"
"${CMAKE_BINARY_DIR}/wx_gtk3.c"
COMPILE_OUTPUT_VARIABLE OUT
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${wxWidgets_INCLUDE_DIRS}"
)
if (${OUT} MATCHES "cmake_WX_GTK3")
if (NOT GTK3_API)
message(FATAL_ERROR "Your current WxWidget version requires GTK3. Please use -DGTK3_API=TRUE option")
endif()
else()
if (GTK3_API)
message(FATAL_ERROR "Your current WxWidget version doesn't support GTK3. Please use -DGTK3_API=FALSE option")
endif()
endif()
endfunction()
function(WX_version)
EXECUTE_PROCESS(COMMAND ${wxWidgets_CONFIG_EXECUTABLE} --version OUTPUT_VARIABLE version)
STRING(STRIP ${version} version)
if (${version} MATCHES "3.0" AND WX28_API)
message(FATAL_ERROR "Mismatch between wx-config version (${version}) and requested WX API (2.8.x)")
endif()
if (${version} MATCHES "2.8" AND NOT WX28_API)
message(FATAL_ERROR "Mismatch between wx-config version (${version}) and requested WX API (3.0.x)")
endif()
endfunction()

View File

@ -23,28 +23,36 @@ else()
set(wxWidgets_CONFIG_OPTIONS --unicode=yes)
endif()
# Temprorary help for Arch-based distros.
# They have wx2.8, lib32-wx2.8 and wx3.0 but no lib32-wx3.0.
# wx2.8 => /usr/bin/wx-config-2.8, /usr/bin/wxrc-2.8
# lib32-wx2.8 => /usr/bin/wx-config32-2.8, /usr/bin/wxrc32-2.8
# wx3.0 => /usr/bin/wx-config, /usr/bin/wxrc -> /usr/bin/wxrc-3.0
if(WX28_API)
list(APPEND wxWidgets_CONFIG_OPTIONS --version=2.8)
else()
list(APPEND wxWidgets_CONFIG_OPTIONS --version=3.0)
endif()
if(GTK3_API)
list(APPEND wxWidgets_CONFIG_OPTIONS --toolkit=gtk3)
else()
list(APPEND wxWidgets_CONFIG_OPTIONS --toolkit=gtk2)
endif()
# wx2.8 => /usr/bin/wx-config-2.8
# lib32-wx2.8 => /usr/bin/wx-config32-2.8
# wx3.0 => /usr/bin/wx-config-3.0
# I'm going to take a wild guess and predict this:
# lib32-wx3.0 => /usr/bin/wx-config32-3.0, /usr/bin/wxrc32-3.0
# FindwxWidgets only searches for wxrc and wx-config. Therefore only native
# wx3.0 works since everything else has non-standard naming.
# lib32-wx3.0 => /usr/bin/wx-config32-3.0
# FindwxWidgets only searches for wx-config.
if(CMAKE_CROSSCOMPILING)
# May need to fix the filenames for lib32-wx3.0.
if(NOT WX28_API AND ${PCSX2_TARGET_ARCHITECTURES} MATCHES "i386" AND EXISTS "/usr/bin/wx-config32-3.0" AND EXISTS "/usr/bin/wxrc32-3.0")
if(NOT WX28_API AND ${PCSX2_TARGET_ARCHITECTURES} MATCHES "i386" AND EXISTS "/usr/bin/wx-config32-3.0")
set(wxWidgets_CONFIG_EXECUTABLE "/usr/bin/wx-config32-3.0")
set(wxWidgets_wxrc_EXECUTABLE "/usr/bin/wxrc32-3.0")
elseif(WX28_API AND ${PCSX2_TARGET_ARCHITECTURES} MATCHES "i386" AND EXISTS "/usr/bin/wx-config32-2.8" AND EXISTS "/usr/bin/wxrc32-2.8")
elseif(WX28_API AND ${PCSX2_TARGET_ARCHITECTURES} MATCHES "i386" AND EXISTS "/usr/bin/wx-config32-2.8")
set(wxWidgets_CONFIG_EXECUTABLE "/usr/bin/wx-config32-2.8")
set(wxWidgets_wxrc_EXECUTABLE "/usr/bin/wxrc32-2.8")
endif()
else()
if(WX28_API AND EXISTS "/usr/bin/wx-config-2.8" AND EXISTS "/usr/bin/wxrc-2.8")
if(NOT WX28_API AND EXISTS "/usr/bin/wx-config-3.0")
set(wxWidgets_CONFIG_EXECUTABLE "/usr/bin/wx-config-3.0")
elseif(WX28_API AND EXISTS "/usr/bin/wx-config-2.8")
set(wxWidgets_CONFIG_EXECUTABLE "/usr/bin/wx-config-2.8")
set(wxWidgets_wxrc_EXECUTABLE "/usr/bin/wxrc-2.8")
endif()
endif()
@ -157,5 +165,3 @@ include_directories(${CMAKE_SOURCE_DIR}/common/include
#----------------------------------------
include(ApiValidation)
WX_vs_SDL()
WX_vs_GTK3()
WX_version()