aboutsummaryrefslogtreecommitdiff
path: root/libs/libgd/patches
diff options
context:
space:
mode:
authorRosen Penev <rosenp@gmail.com>2019-09-13 12:47:50 -0700
committerRosen Penev <rosenp@gmail.com>2019-09-13 12:54:50 -0700
commitb5b2fa187d189740fa897bb49e331f2f7d3e7f34 (patch)
treef3076e649b68283274f18b575f0eb6674eb619c9 /libs/libgd/patches
parent6468932200bf2860b1c66a007fabd8f2e47fa1e9 (diff)
libgd: Backport SOVERSION and pkgconfig changes
The latter is needed for some packages to find libgd. Signed-off-by: Rosen Penev <rosenp@gmail.com>
Diffstat (limited to 'libs/libgd/patches')
-rw-r--r--libs/libgd/patches/200-cmake-add-soname-info-to-libgd.so.patch135
-rw-r--r--libs/libgd/patches/210-generate-install-gdlib.pc-for-cmake-builds-too-164.patch37
2 files changed, 172 insertions, 0 deletions
diff --git a/libs/libgd/patches/200-cmake-add-soname-info-to-libgd.so.patch b/libs/libgd/patches/200-cmake-add-soname-info-to-libgd.so.patch
new file mode 100644
index 000000000..f4af74491
--- /dev/null
+++ b/libs/libgd/patches/200-cmake-add-soname-info-to-libgd.so.patch
@@ -0,0 +1,135 @@
+From 5ebbd50cffc013a7dd0f3b1eaaa83d199e8e47fd Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Sun, 24 Jul 2016 00:14:20 +0530
+Subject: [PATCH] cmake: add soname info to libgd.so
+
+Pull out the library versioning info out of configure and into a common
+script that both cmake & autotools can run. This way we have a single
+source of truth for the versioning info.
+---
+ CMakeLists.txt | 11 +++++++++++
+ config/getlib.sh | 42 ++++++++++++++++++++++++++++++++++++++++++
+ configure.ac | 25 +++++++++++--------------
+ src/CMakeLists.txt | 2 ++
+ 4 files changed, 66 insertions(+), 14 deletions(-)
+ create mode 100755 config/getlib.sh
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7c8ad34b..9fe2eb4e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -78,6 +78,17 @@ else (USE_EXT_GD)
+
+ SET(GD_VERSION_INT "2020555")
+
++ MACRO(GV_LT VER VAR)
++ execute_process(
++ COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/config/getlib.sh ${VER}
++ OUTPUT_VARIABLE ${VAR}
++ )
++ ENDMACRO(GV_LT)
++
++ GV_LT(SONAME GDLIB_LIB_SOVERSION)
++ GV_LT(VERSION GDLIB_LIB_VERSION)
++ MESSAGE(STATUS "gd shared lib version ${GDLIB_LIB_SOVERSION} (${GDLIB_LIB_VERSION})")
++
+ SET(CMAKE_REQUIRED_INCLUDES "/usr/include" "/usr/local/include")
+
+ include(CheckIncludeFiles)
+diff --git a/config/getlib.sh b/config/getlib.sh
+new file mode 100755
+index 00000000..4835cf6c
+--- /dev/null
++++ b/config/getlib.sh
+@@ -0,0 +1,42 @@
++#!/bin/sh
++
++GETVER="${0%/*}/getver.pl"
++GDLIB_MAJOR=$("${GETVER}" MAJOR)
++GDLIB_MINOR=$("${GETVER}" MINOR)
++GDLIB_REVISION=$("${GETVER}" RELEASE)
++
++# Dynamic library version information
++# See http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
++
++GDLIB_LT_CURRENT=3
++# This is the version where the soname (current above) changes. We use it
++# to reset the revision base back to zero. It's a bit of a pain, but some
++# systems restrict the revision range below to [0..255] (like OS X).
++GDLIB_PREV_MAJOR=2
++GDLIB_PREV_MINOR=2
++# This isn't 100% correct, but it tends to be a close enough approximation
++# for how we manage the codebase. It's rare to do a release that doesn't
++# modify the library since this project is centered around the library.
++GDLIB_LT_REVISION=$(( ((GDLIB_MAJOR - GDLIB_PREV_MAJOR) << 6) | ((GDLIB_MINOR - GDLIB_PREV_MINOR) << 3) | GDLIB_REVISION ))
++GDLIB_LT_AGE=0
++
++# The first three fields we feed into libtool and the OS target determines how
++# they get used. The last two fields we feed into cmake. We use the same rules
++# as Linux SONAME versioning in libtool, but cmake should handle it for us.
++case $1 in
++CURRENT)
++ printf '%s' "${GDLIB_LT_CURRENT}"
++ ;;
++REVISION)
++ printf '%s' "${GDLIB_LT_REVISION}"
++ ;;
++AGE)
++ printf '%s' "${GDLIB_LT_AGE}"
++ ;;
++VERSION)
++ printf '%s' "$(( GDLIB_LT_CURRENT - GDLIB_LT_AGE )).${GDLIB_LT_AGE}.${GDLIB_LT_REVISION}"
++ ;;
++SONAME)
++ printf '%s' "$(( GDLIB_LT_CURRENT - GDLIB_LT_AGE ))"
++ ;;
++esac
+diff --git a/configure.ac b/configure.ac
+index 91643bd6..c3fb034e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -34,20 +34,17 @@ AC_SUBST(GDLIB_REVISION)
+ AC_SUBST(GDLIB_EXTRA)
+ AC_SUBST(GDLIB_VERSION)
+
+-# Dynamic library version information
+-# See http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
+-
+-GDLIB_LT_CURRENT=3
+-dnl This is the version where the soname (current above) changes. We use it
+-dnl to reset the revision base back to zero. It's a bit of a pain, but some
+-dnl systems restrict the revision range below to [0..255] (like OS X).
+-GDLIB_PREV_MAJOR=2
+-GDLIB_PREV_MINOR=2
+-dnl This isn't 100% correct, but it tends to be a close enough approximation
+-dnl for how we manage the codebase. It's rare to do a release that doesn't
+-dnl modify the library since this project is centered around the library.
+-GDLIB_LT_REVISION=$(( ((GDLIB_MAJOR - GDLIB_PREV_MAJOR) << 6) | ((GDLIB_MINOR - GDLIB_PREV_MINOR) << 3) | GDLIB_REVISION ))
+-GDLIB_LT_AGE=0
++dnl Keep the libtool version details in an external script so cmake can
++dnl access the values too.
++define([lt_gv], [config/getlib.sh ]$1)
++m4_define([gd_LT_CURRENT], esyscmd(lt_gv(CURRENT)))
++m4_define([gd_LT_REVISION], esyscmd(lt_gv(REVISION)))
++m4_define([gd_LT_AGE], esyscmd(lt_gv(AGE)))
++
++GDLIB_LT_CURRENT=gd_LT_CURRENT
++GDLIB_LT_REVISION=gd_LT_REVISION
++GDLIB_LT_AGE=gd_LT_AGE
++
+ AC_SUBST(GDLIB_LT_CURRENT)
+ AC_SUBST(GDLIB_LT_REVISION)
+ AC_SUBST(GDLIB_LT_AGE)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 08fd6991..a621fe1e 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -76,6 +76,8 @@ include(GNUInstallDirs)
+ if (BUILD_SHARED_LIBS)
+ add_library(${GD_LIB} ${LIBGD_SRC_FILES})
+ set_target_properties(${GD_LIB} PROPERTIES
++ SOVERSION ${GDLIB_LIB_SOVERSION}
++ VERSION ${GDLIB_LIB_VERSION}
+ C_VISIBILITY_PRESET hidden
+ CXX_VISIBILITY_PRESET hidden
+ )
diff --git a/libs/libgd/patches/210-generate-install-gdlib.pc-for-cmake-builds-too-164.patch b/libs/libgd/patches/210-generate-install-gdlib.pc-for-cmake-builds-too-164.patch
new file mode 100644
index 000000000..78a1988ed
--- /dev/null
+++ b/libs/libgd/patches/210-generate-install-gdlib.pc-for-cmake-builds-too-164.patch
@@ -0,0 +1,37 @@
+From dd76e8fcf2a2d7e122110444695ad20f2549420e Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Wed, 10 Jan 2018 01:56:10 -0500
+Subject: [PATCH] generate & install gdlib.pc for cmake builds too #164
+
+---
+ config/gdlib.pc.cmake | 9 +++++++++
+ src/CMakeLists.txt | 3 +++
+ 2 files changed, 12 insertions(+)
+ create mode 100644 config/gdlib.pc.cmake
+
+diff --git a/config/gdlib.pc.cmake b/config/gdlib.pc.cmake
+new file mode 100644
+index 00000000..fb828882
+--- /dev/null
++++ b/config/gdlib.pc.cmake
+@@ -0,0 +1,9 @@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
++
++Name: gd
++Description: GD graphics library
++Version: @GDLIB_VERSION@
++Cflags: -I${includedir}
++Libs.private: @LIBGD_DEP_LIBS@
++Libs: -L${libdir} -lgd
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index a621fe1e..38fc9c42 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -174,3 +174,6 @@ install(FILES
+ gdfontt.h
+ gdfx.h
+ DESTINATION include)
++
++CONFIGURE_FILE(../config/gdlib.pc.cmake gdlib.pc @ONLY)
++INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/gdlib.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")