Skip to content

Commit

Permalink
Ports: Replace manually linking SDL2_gfx with a libtool patch
Browse files Browse the repository at this point in the history
  • Loading branch information
timschumi authored and linusg committed Jun 3, 2022
1 parent 34e193a commit 9b4b068
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 6 deletions.
7 changes: 1 addition & 6 deletions Ports/SDL2_gfx/package.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,4 @@ auth_type=sha256
depends=("SDL2")
useconfigure=true
use_fresh_config_sub=true
configopts=("--with-sdl-prefix=${SERENITY_INSTALL_ROOT}/usr/local")

install() {
run make install DESTDIR=${SERENITY_INSTALL_ROOT} "${installopts[@]}"
run ${CC} -shared -o ${SERENITY_INSTALL_ROOT}/usr/local/lib/libSDL2_gfx.so -Wl,-soname,libSDL2_gfx.so -Wl,--whole-archive ${SERENITY_INSTALL_ROOT}/usr/local/lib/libSDL2_gfx.a -Wl,--no-whole-archive
}
configopts=("--with-sdl-prefix=${SERENITY_INSTALL_ROOT}/usr/local" "--disable-static" "--enable-shared")
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
From 0f827bb1e7e70c292982d68d1be79c0c64317333 Mon Sep 17 00:00:00 2001
From: Tim Schumacher <[email protected]>
Date: Sun, 29 May 2022 15:01:28 +0200
Subject: [PATCH] libtool: Enable shared library support for SerenityOS

For some odd reason, libtool handles the configuration for shared
libraries entirely statically and in its configure script. If no
shared library support is "present", building shared libraries is
disabled entirely.

Fix that by just adding the appropriate configuration options for
`serenity`. This allows us to finally create dynamic libraries
automatically using libtool, without having to manually link the
static library into a shared library.
---
configure | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

diff --git a/configure b/configure
index ddcc961..4767551 100755
--- a/configure
+++ b/configure
@@ -4600,6 +4600,10 @@ sysv4 | sysv4.3*)
tpf*)
lt_cv_deplibs_check_method=pass_all
;;
+
+serenity*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
esac

fi
@@ -7874,6 +7878,10 @@ lt_prog_compiler_static=
lt_prog_compiler_static='-Bstatic'
;;

+ serenity*)
+ lt_prog_compiler_can_build_shared=yes
+ ;;
+
*)
lt_prog_compiler_can_build_shared=no
;;
@@ -9291,6 +9299,10 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
hardcode_shlibpath_var=no
;;

+ serenity*)
+ ld_shlibs=yes
+ ;;
+
*)
ld_shlibs=no
;;
@@ -10282,6 +10294,17 @@ uts4*)
shlibpath_var=LD_LIBRARY_PATH
;;

+serenity*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}${versuffix} ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}${major}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ dynamic_linker='SerenityOS LibELF'
+ ;;
+
*)
dynamic_linker=no
;;
--
2.36.1

16 changes: 16 additions & 0 deletions Ports/SDL2_gfx/patches/ReadMe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Patches for SDL2_gfx on SerenityOS

## `0001-libtool-Enable-shared-library-support-for-SerenityOS.patch`

libtool: Enable shared library support for SerenityOS

For some odd reason, libtool handles the configuration for shared
libraries entirely statically and in its configure script. If no
shared library support is "present", building shared libraries is
disabled entirely.

Fix that by just adding the appropriate configuration options for
`serenity`. This allows us to finally create dynamic libraries
automatically using libtool, without having to manually link the
static library into a shared library.

0 comments on commit 9b4b068

Please sign in to comment.