pcsx2: build with SDL2, add patch to fix SDL version detection for wxWidgets

This commit is contained in:
Helmut Pozimski 2018-09-03 22:32:50 +02:00
parent 54e554ea4d
commit df1a4d6207
2 changed files with 78 additions and 3 deletions

View File

@ -0,0 +1,74 @@
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()

View File

@ -5,12 +5,13 @@ nopie=yes
pkgname=pcsx2
version=1.4.0
revision=5
revision=6
build_style=cmake
configure_args="-DGLSL_API=1 -DSDL2_API=0 -DPACKAGE_MODE=1 -DREBUILD_SHADER=1 -DXDG_STD=1
-DPLUGIN_DIR=/usr/lib32/pcsx2 -DGAMEINDEX_DIR=/usr/share/pcsx2 -DDISABLE_ADVANCE_SIMD=1"
-DPLUGIN_DIR=/usr/lib32/pcsx2 -DGAMEINDEX_DIR=/usr/share/pcsx2 -DDISABLE_ADVANCE_SIMD=1
-DSDL2_API=TRUE"
hostmakedepends="pkg-config sparsehash perl"
makedepends="alsa-lib-devel SDL-devel glu-devel glew-devel libaio-devel
makedepends="alsa-lib-devel SDL2-devel glu-devel glew-devel libaio-devel
libcanberra-devel libjpeg-turbo-devel wxWidgets-devel portaudio-devel soundtouch-devel"
depends="desktop-file-utils"
short_desc="A Sony PlayStation 2 emulator"