build: Update SDL2 to 2.0.20

This commit is contained in:
Matt Borgerson 2022-04-23 14:19:36 -07:00 committed by mborgerson
parent 6f507c80af
commit aa93995ca3
10 changed files with 53 additions and 278 deletions

View File

@ -1,84 +0,0 @@
--- SDL2-2.0.12/sdl2-config.cmake.in.orig 2020-04-11 15:56:36.797056300 +0300
+++ SDL2-2.0.12/sdl2-config.cmake.in 2020-04-11 16:21:11.621006100 +0300
@@ -1,12 +1,14 @@
# sdl2 cmake project-config input for ./configure scripts
-set(prefix "@prefix@")
-set(exec_prefix "@exec_prefix@")
-set(libdir "@libdir@")
-set(SDL2_PREFIX "@prefix@")
-set(SDL2_EXEC_PREFIX "@prefix@")
-set(SDL2_LIBDIR "@libdir@")
-set(SDL2_INCLUDE_DIRS "@includedir@/SDL2")
+get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
+
+set(prefix "${PACKAGE_PREFIX_DIR}")
+set(exec_prefix "${PACKAGE_PREFIX_DIR}")
+set(libdir "${prefix}/lib")
+set(SDL2_PREFIX "${PACKAGE_PREFIX_DIR}")
+set(SDL2_EXEC_PREFIX "${PACKAGE_PREFIX_DIR}")
+set(SDL2_LIBDIR "${prefix}/lib")
+set(SDL2_INCLUDE_DIRS "${prefix}/include/SDL2")
set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} @SDL_RLD_FLAGS@ @SDL_LIBS@")
string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)
@@ -20,20 +22,20 @@
add_library(SDL2::SDL2 SHARED IMPORTED)
set_target_properties(SDL2::SDL2 PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "@includedir@/SDL2"
+ INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
- IMPORTED_LOCATION "@libdir@/libSDL2.so"
+ IMPORTED_LOCATION "${SDL2_LIBDIR}/libSDL2.dll.a"
INTERFACE_LINK_LIBRARIES "${SDL2_EXTRA_LINK_FLAGS}")
add_library(SDL2::SDL2-static STATIC IMPORTED)
set_target_properties(SDL2::SDL2-static PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "@includedir@/SDL2"
+ INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
- IMPORTED_LOCATION "@libdir@/libSDL2.a"
+ IMPORTED_LOCATION "${SDL2_LIBDIR}/libSDL2.a"
INTERFACE_LINK_LIBRARIES "${SDL2_EXTRA_LINK_FLAGS_STATIC}")
add_library(SDL2::SDL2main STATIC IMPORTED)
set_target_properties(SDL2::SDL2main PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
- IMPORTED_LOCATION "@libdir@/libSDL2main.a")
+ IMPORTED_LOCATION "${SDL2_LIBDIR}/libSDL2main.a")
endif()
--- SDL2-2.0.12/CMakeLists.txt.orig 2020-04-11 16:44:16.343880000 +0300
+++ SDL2-2.0.12/CMakeLists.txt 2020-04-11 16:48:12.677114500 +0300
@@ -1916,7 +1916,7 @@
set(EXTRA_CFLAGS ${_EXTRA_CFLAGS})
# Compat helpers for the configuration files
-if(NOT WINDOWS OR CYGWIN)
+if(NOT MSVC OR CYGWIN)
# TODO: we need a Windows script, too
execute_process(COMMAND sh ${SDL2_SOURCE_DIR}/build-scripts/updaterev.sh)
@@ -2134,7 +2134,7 @@
RUNTIME DESTINATION bin)
##### Export files #####
-if (WINDOWS)
+if (MSVC)
set(PKG_PREFIX "cmake")
else ()
set(PKG_PREFIX "lib${LIB_SUFFIX}/cmake/SDL2")
@@ -2175,11 +2175,11 @@
set(SOPOSTFIX "")
endif()
-if(NOT (WINDOWS OR CYGWIN))
+if(NOT (MSVC OR CYGWIN))
if(SDL_SHARED)
set(SOEXT ${CMAKE_SHARED_LIBRARY_SUFFIX}) # ".so", ".dylib", etc.
get_target_property(SONAME SDL2 OUTPUT_NAME)
- if(NOT ANDROID)
+ if(NOT ANDROID AND NOT MINGW)
install(CODE "
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
\"lib${SONAME}${SOPOSTFIX}${SOEXT}\" \"libSDL2${SOPOSTFIX}${SOEXT}\"

View File

@ -1,40 +0,0 @@
--- SDL2-2.0.12/CMakeLists.txt.orig 2020-04-11 16:44:16.343880000 +0300
+++ SDL2-2.0.12/CMakeLists.txt 2020-04-11 16:48:12.677114500 +0300
@@ -1916,12 +1916,12 @@
set(EXTRA_CFLAGS ${_EXTRA_CFLAGS})
# Compat helpers for the configuration files
-if(NOT CMAKE_HOST_WIN32)
+if(NOT MSVC OR CYGWIN)
# TODO: we need a Windows script, too
execute_process(COMMAND sh ${SDL2_SOURCE_DIR}/build-scripts/updaterev.sh
WORKING_DIRECTORY ${SDL2_BINARY_DIR})
endif()
-if(NOT WINDOWS OR CYGWIN)
+if(NOT MSVC)
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}")
set(libdir "\${exec_prefix}/lib${LIB_SUFFIX}")
@@ -2134,7 +2134,7 @@
RUNTIME DESTINATION bin)
##### Export files #####
-if (WINDOWS)
+if (MSVC)
set(PKG_PREFIX "cmake")
else ()
set(PKG_PREFIX "lib${LIB_SUFFIX}/cmake/SDL2")
@@ -2175,11 +2175,11 @@
set(SOPOSTFIX "")
endif()
-if(NOT (WINDOWS OR CYGWIN))
+if(NOT (MSVC OR CYGWIN))
if(SDL_SHARED)
set(SOEXT ${CMAKE_SHARED_LIBRARY_SUFFIX}) # ".so", ".dylib", etc.
get_target_property(SONAME SDL2 OUTPUT_NAME)
- if(NOT ANDROID)
+ if(NOT ANDROID AND NOT MINGW)
install(CODE "
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
\"lib${SONAME}${SOPOSTFIX}${SOEXT}\" \"libSDL2${SOPOSTFIX}${SOEXT}\"

View File

@ -1,35 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7dfd3538..2ac95eff 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -233,9 +233,17 @@ endif()
# Those are used for pkg-config and friends, so that the SDL2.pc, sdl2-config,
# etc. are created correctly.
-set(SDL_LIBS "-lSDL2")
+set(SDL_LIBS "")
set(SDL_CFLAGS "")
+if(MINGW OR CYGWIN)
+ list(APPEND SDL_LIBS "-mwindows")
+endif()
+list(APPEND SDL_LIBS "-lSDL2")
+if(MINGW OR CYGWIN)
+ list(APPEND SDL_LIBS "-lSDL2main" "-lmingw32")
+endif()
+
# When building shared lib for Windows with MinGW,
# avoid the DLL having a "lib" prefix
if(WINDOWS)
@@ -1505,10 +1513,9 @@ elseif(WINDOWS)
file(GLOB VERSION_SOURCES ${SDL2_SOURCE_DIR}/src/main/windows/*.rc)
file(GLOB SDLMAIN_SOURCES ${SDL2_SOURCE_DIR}/src/main/windows/*.c)
if(MINGW OR CYGWIN)
- list(APPEND EXTRA_LIBS mingw32)
+ list(APPEND EXTRA_LIBS SDL2main mingw32)
list(APPEND EXTRA_LDFLAGS "-mwindows")
set(SDL_CFLAGS "${SDL_CFLAGS} -Dmain=SDL_main")
- list(APPEND SDL_LIBS "-lmingw32" "-lSDL2main" "-mwindows")
endif()
elseif(APPLE)

View File

@ -1,11 +0,0 @@
--- SDL2-2.0.12/CMakeLists.txt.orig 2020-04-13 09:22:12.737714600 +0300
+++ SDL2-2.0.12/CMakeLists.txt 2020-04-13 09:22:17.728045700 +0300
@@ -2099,7 +2099,7 @@
if(SDL_STATIC)
set (BUILD_SHARED_LIBS FALSE)
add_library(SDL2-static STATIC ${SOURCE_FILES})
- if (NOT SDL_SHARED OR NOT WIN32)
+ if (NOT SDL_SHARED OR NOT MSVC)
set_target_properties(SDL2-static PROPERTIES OUTPUT_NAME "SDL2")
# Note: Apparently, OUTPUT_NAME must really be unique; even when
# CMAKE_IMPORT_LIBRARY_SUFFIX or the like are given. Otherwise

View File

@ -1,62 +0,0 @@
# Based on SDL hg changeset fc03d19926ed, tweaked to apply here
# HG changeset patch
# User James Le Cuirot <chewi@gentoo.org>
# Date 1586694276 -3600
# Node ID fc03d19926ed02c5e96033a22e0a1956cb7d2968
# Parent 89a457159af48f83585adab9ab9ea1d21be9505c
build: Don't duplicate Libs in Libs.private in pkg-config file
pkg-config already prepends Libs to Libs.private when you specify
--static so there's no need to duplicate them. Most other projects
don't do this.
diff -r 89a457159af4 -r fc03d19926ed CMakeLists.txt
--- a/CMakeLists.txt Sat Apr 11 23:38:34 2020 +0100
+++ b/CMakeLists.txt Sun Apr 12 13:24:36 2020 +0100
@@ -1962,7 +1962,7 @@
# Clean up the different lists
listtostr(EXTRA_LIBS _EXTRA_LIBS "-l")
- set(SDL_STATIC_LIBS ${SDL_LIBS} ${EXTRA_LDFLAGS} ${_EXTRA_LIBS})
+ set(SDL_STATIC_LIBS ${EXTRA_LDFLAGS} ${_EXTRA_LIBS})
list(REMOVE_DUPLICATES SDL_STATIC_LIBS)
listtostr(SDL_STATIC_LIBS _SDL_STATIC_LIBS)
set(SDL_STATIC_LIBS ${_SDL_STATIC_LIBS})
diff -r 89a457159af4 -r fc03d19926ed configure
--- a/configure Sat Apr 11 23:38:34 2020 +0100
+++ b/configure Sun Apr 12 13:24:36 2020 +0100
@@ -25717,7 +25717,7 @@
SDL_RLD_FLAGS=""
fi
-SDL_STATIC_LIBS="$SDL_LIBS $EXTRA_LDFLAGS"
+SDL_STATIC_LIBS="$EXTRA_LDFLAGS"
diff -r 89a457159af4 -r fc03d19926ed configure.ac
--- a/configure.ac Sat Apr 11 23:38:34 2020 +0100
+++ b/configure.ac Sun Apr 12 13:24:36 2020 +0100
@@ -4271,7 +4271,7 @@
SDL_RLD_FLAGS=""
fi
-SDL_STATIC_LIBS="$SDL_LIBS $EXTRA_LDFLAGS"
+SDL_STATIC_LIBS="$EXTRA_LDFLAGS"
dnl Expand the cflags and libraries needed by apps using SDL
AC_SUBST(SDL_CFLAGS)
diff -r 89a457159af4 -r fc03d19926ed sdl2-config.in
--- a/sdl2-config.in Sat Apr 11 23:38:34 2020 +0100
+++ b/sdl2-config.in Sun Apr 12 13:24:36 2020 +0100
@@ -49,7 +49,7 @@
@ENABLE_SHARED_TRUE@ ;;
@ENABLE_STATIC_TRUE@@ENABLE_SHARED_TRUE@ --static-libs)
@ENABLE_STATIC_TRUE@@ENABLE_SHARED_FALSE@ --libs|--static-libs)
-@ENABLE_STATIC_TRUE@ echo -L@libdir@ @SDL_RLD_FLAGS@ @SDL_STATIC_LIBS@
+@ENABLE_STATIC_TRUE@ echo -L@libdir@ @SDL_RLD_FLAGS@ @SDL_LIBS@ @SDL_STATIC_LIBS@
@ENABLE_STATIC_TRUE@ ;;
*)
echo "${usage}" 1>&2

View File

@ -41,7 +41,9 @@ RUN apt-get update \
unzip \
wget \
xz-utils \
ninja-build
ninja-build \
python3-pip \
python3-yaml
RUN cd /opt \
&& git clone https://github.com/mxe/mxe.git \
@ -57,12 +59,8 @@ RUN cd /opt \
cmake
COPY sdl2.mk /opt/mxe/src/sdl2.mk
COPY 001-fix-cmake-target-relocation-2.0.12.patch /opt/mxe/src/sdl2-1-cmake.patch
COPY 002-fix-link-order.patch /opt/mxe/src/sdl2-2-link.patch
COPY 003-fix-static-library-name.patch /opt/mxe/src/sdl2-3-static.patch
COPY 004-dont-duplicate-libs-in-libs-private.patch /opt/mxe/src/sdl2-4-fix-duplicate-libs.patch
RUN make -C /opt/mxe \
COPY sdl2-2-link-order.patch /opt/mxe/src/sdl2-2-link-order.patch
RUN V=1 MXE_VERBOSE=1 make -C /opt/mxe \
MXE_TARGETS=x86_64-w64-mingw32.static \
MXE_PLUGIN_DIRS=plugins/gcc10 \
sdl2

View File

@ -1,9 +0,0 @@
sdl2.mk is a copy of existing autotools based configuration, modified to instead
use CMake, which appears to be the preferred method when building for Windows,
msys2 project also uses the CMake system.
These patches come from msys2:
- 001-fix-cmake-target-relocation.patch
- 003-fix-static-library-name.patch
Origin: https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-SDL2

View File

@ -0,0 +1,45 @@
--- SDL2-2.0.20/CMakeLists.txt
+++ SDL2-2.0.20/CMakeLists.txt
@@ -1784,10 +1784,9 @@ elseif(WINDOWS)
file(GLOB VERSION_SOURCES ${SDL2_SOURCE_DIR}/src/main/windows/*.rc)
file(GLOB SDLMAIN_SOURCES ${SDL2_SOURCE_DIR}/src/main/windows/*.c)
if(MINGW OR CYGWIN)
- list(APPEND EXTRA_LIBS mingw32)
list(APPEND EXTRA_LDFLAGS "-mwindows")
set(SDL_CFLAGS "${SDL_CFLAGS} -Dmain=SDL_main")
- list(APPEND SDL_LIBS "-lmingw32" "-lSDL2main" "-mwindows")
+ list(APPEND SDL_LIBS "-lmingw32" "-lSDL2main")
endif()
elseif(APPLE)
@@ -2582,23 +2581,13 @@ Libs.private:")
endif()
# Clean up the different lists
- if (VITA)
- listtostrrev(EXTRA_LIBS _EXTRA_LIBS "-l")
- set(SDL_STATIC_LIBS ${SDL_LIBS} ${EXTRA_LDFLAGS} ${_EXTRA_LIBS})
- list(REMOVE_DUPLICATES SDL_STATIC_LIBS)
- listtostrrev(SDL_STATIC_LIBS _SDL_STATIC_LIBS)
- set(SDL_STATIC_LIBS ${_SDL_STATIC_LIBS})
- listtostrrev(SDL_LIBS _SDL_LIBS)
- set(SDL_LIBS ${_SDL_LIBS})
- else()
- listtostr(EXTRA_LIBS _EXTRA_LIBS "-l")
- set(SDL_STATIC_LIBS ${SDL_LIBS} ${EXTRA_LDFLAGS} ${_EXTRA_LIBS})
- list(REMOVE_DUPLICATES SDL_STATIC_LIBS)
- listtostr(SDL_STATIC_LIBS _SDL_STATIC_LIBS)
- set(SDL_STATIC_LIBS ${_SDL_STATIC_LIBS})
- listtostr(SDL_LIBS _SDL_LIBS)
- set(SDL_LIBS ${_SDL_LIBS})
- endif()
+ listtostrrev(EXTRA_LIBS _EXTRA_LIBS "-l")
+ set(SDL_STATIC_LIBS ${SDL_LIBS} ${EXTRA_LDFLAGS} ${_EXTRA_LIBS})
+ list(REMOVE_DUPLICATES SDL_STATIC_LIBS)
+ listtostrrev(SDL_STATIC_LIBS _SDL_STATIC_LIBS)
+ set(SDL_STATIC_LIBS ${_SDL_STATIC_LIBS})
+ listtostrrev(SDL_LIBS _SDL_LIBS)
+ set(SDL_LIBS ${_SDL_LIBS})
# MESSAGE(STATUS "SDL_LIBS: ${SDL_LIBS}")
# MESSAGE(STATUS "SDL_STATIC_LIBS: ${SDL_STATIC_LIBS}")

View File

@ -1,17 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b9b9eb62..5d92e60d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1636,10 +1636,10 @@ elseif(WINDOWS)
file(GLOB VERSION_SOURCES ${SDL2_SOURCE_DIR}/src/main/windows/*.rc)
file(GLOB SDLMAIN_SOURCES ${SDL2_SOURCE_DIR}/src/main/windows/*.c)
if(MINGW OR CYGWIN)
- list(APPEND EXTRA_LIBS mingw32)
+ list(APPEND EXTRA_LIBS SDL2main mingw32)
list(APPEND EXTRA_LDFLAGS "-mwindows")
set(SDL_CFLAGS "${SDL_CFLAGS} -Dmain=SDL_main")
- list(APPEND SDL_LIBS "-lmingw32" "-lSDL2main" "-mwindows")
+ list(APPEND SDL_LIBS "-lSDL2main" "-lmingw32" "-mwindows")
endif()
elseif(APPLE)

View File

@ -4,21 +4,11 @@ PKG := sdl2
$(PKG)_WEBSITE := https://www.libsdl.org/
$(PKG)_DESCR := SDL2
$(PKG)_IGNORE :=
$(PKG)_VERSION := 2.0.12
# $(PKG)_VERSION := 2.0.14
$(PKG)_CHECKSUM := 349268f695c02efbc9b9148a70b85e58cefbbf704abd3e91be654db7f1e2c863
# $(PKG)_CHECKSUM := d8215b571a581be1332d2106f8036fcb03d12a70bae01e20f424976d275432bc
$(PKG)_SUBDIR := SDL2-$($(PKG)_VERSION)
$(PKG)_FILE := SDL2-$($(PKG)_VERSION).tar.gz
$(PKG)_URL := https://www.libsdl.org/release/$($(PKG)_FILE)
$(PKG)_VERSION := 2.0.20
$(PKG)_CHECKSUM := 2a026753af9b03fca043824bca8341f74921a836d28729e0c31aa262202a83c6
$(PKG)_GH_CONF := libsdl-org/SDL/releases/tag,release-,,
$(PKG)_DEPS := cc libiconv libsamplerate
define $(PKG)_UPDATE
$(WGET) -q -O- 'https://hg.libsdl.org/SDL/tags' | \
$(SED) -n 's,.*release-\([0-9][^<]*\).*,\1,p' | \
head -1
endef
define $(PKG)_BUILD
cd '$(BUILD_DIR)' && $(TARGET)-cmake '$(SOURCE_DIR)' \
-DSDL_SHARED=$(CMAKE_SHARED_BOOL) \