75 lines
2.3 KiB
Diff
75 lines
2.3 KiB
Diff
From 41c49faa81d4970e903e7d85616774c979e103a5 Mon Sep 17 00:00:00 2001
|
|
From: Jonathan Li <jonathan.li@hotmail.co.uk>
|
|
Date: Sun, 4 Feb 2018 14:04:17 +0000
|
|
Subject: [PATCH] cmake: Improve wxWidgets and SDL linkage check
|
|
|
|
If wxWidgets is linked to SDL, check what version it's actually linked
|
|
against instead of assuming it's linked to SDL1.2 (which isn't true on
|
|
Fedora 27).
|
|
---
|
|
cmake/ApiValidation.cmake | 41 ++++++++++++++++++++++++++-------------
|
|
1 file changed, 28 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/cmake/ApiValidation.cmake b/cmake/ApiValidation.cmake
|
|
index e7a4f99a7..f93bc67fc 100644
|
|
--- cmake/ApiValidation.cmake
|
|
+++ cmake/ApiValidation.cmake
|
|
@@ -1,9 +1,14 @@
|
|
set(wx_sdl_c_code "
|
|
#include <wx/setup.h>
|
|
|
|
-#if (wxUSE_LIBSDL != 0)
|
|
+#if (wxUSE_LIBSDL == 0)
|
|
#error cmake_WX_SDL
|
|
#endif
|
|
+
|
|
+int main()
|
|
+{
|
|
+ return 0;
|
|
+}
|
|
")
|
|
|
|
set(gcc7_mmx_code "
|
|
@@ -83,19 +88,29 @@ function(WX_vs_SDL)
|
|
file(WRITE "${CMAKE_BINARY_DIR}/wx_sdl.c" "${wx_sdl_c_code}")
|
|
enable_language(C)
|
|
|
|
- try_run(
|
|
- run_result_unused
|
|
- compile_result_unused
|
|
- "${CMAKE_BINARY_DIR}"
|
|
- "${CMAKE_BINARY_DIR}/wx_sdl.c"
|
|
- COMPILE_OUTPUT_VARIABLE OUT
|
|
- CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${wxWidgets_INCLUDE_DIRS}"
|
|
- )
|
|
+ try_compile(
|
|
+ wx_linked_to_sdl
|
|
+ "${CMAKE_BINARY_DIR}"
|
|
+ "${CMAKE_BINARY_DIR}/wx_sdl.c"
|
|
+ CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${wxWidgets_INCLUDE_DIRS}"
|
|
+ LINK_LIBRARIES "${wxWidgets_LIBRARIES}"
|
|
+ COPY_FILE "${CMAKE_BINARY_DIR}/wx_sdl"
|
|
+ )
|
|
+
|
|
+ if (NOT wx_linked_to_sdl)
|
|
+ return()
|
|
+ endif()
|
|
+
|
|
+ execute_process(
|
|
+ COMMAND ldd "${CMAKE_BINARY_DIR}/wx_sdl"
|
|
+ COMMAND grep -c SDL2
|
|
+ OUTPUT_VARIABLE sdl2_count
|
|
+ )
|
|
|
|
- if (${OUT} MATCHES "cmake_WX_SDL" AND SDL2_API)
|
|
- message(FATAL_ERROR "WxWidget is linked to SDL (wxUSE_LIBSDL) and it is likely SDL1.2.
|
|
- Unfortunately you try to build PCSX2 with SDL2 support which is not compatible
|
|
- Please use -DSDL2_API=FALSE")
|
|
+ if (SDL2_API AND sdl2_count STREQUAL "0")
|
|
+ message(FATAL_ERROR "wxWidgets is linked to SDL1.2. Please use -DSDL2_API=FALSE.")
|
|
+ elseif (NOT SDL2_API AND NOT sdl2_count STREQUAL "0")
|
|
+ message(FATAL_ERROR "wxWidgets is linked to SDL2. Please use -DSDL2_API=TRUE")
|
|
endif()
|
|
endfunction()
|
|
|