summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2022-09-14 19:20:54 +0100
committerSam James <sam@gentoo.org>2022-09-14 19:21:04 +0100
commit3b5c8a7e7e9517ec4919f2948d04bdd5b270df48 (patch)
tree5913ab90fe8f2482062f61d9f37892cb7a014d0a /media-gfx
parentmedia-libs/libjxl: version bump to 20220825 snapshot (diff)
downloadgentoo-3b5c8a7e7e9517ec4919f2948d04bdd5b270df48.tar.gz
gentoo-3b5c8a7e7e9517ec4919f2948d04bdd5b270df48.tar.bz2
gentoo-3b5c8a7e7e9517ec4919f2948d04bdd5b270df48.zip
media-gfx/graphite2: fix build w/o gcc
Closes: https://bugs.gentoo.org/870034 Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'media-gfx')
-rw-r--r--media-gfx/graphite2/files/graphite2-1.3.14-fix-nodefaultlibs-deux.patch61
-rw-r--r--media-gfx/graphite2/graphite2-1.3.14_p20210810-r2.ebuild124
2 files changed, 185 insertions, 0 deletions
diff --git a/media-gfx/graphite2/files/graphite2-1.3.14-fix-nodefaultlibs-deux.patch b/media-gfx/graphite2/files/graphite2-1.3.14-fix-nodefaultlibs-deux.patch
new file mode 100644
index 000000000000..815301dd307b
--- /dev/null
+++ b/media-gfx/graphite2/files/graphite2-1.3.14-fix-nodefaultlibs-deux.patch
@@ -0,0 +1,61 @@
+https://bugs.gentoo.org/870034
+https://bugs.gentoo.org/829690
+https://raw.githubusercontent.com/chimera-linux/cports/6d3cabd18bac6f4caaea08eaa928840552711c0c/main/graphite2/patches/clang.patch
+
+From chimera patch:
+"Clang has -nostdlib++, which can be used more effectively than disabling
+all and then hardcoding linking against libgcc (which we do not have)"
+
+Obsoletes graphite2-1.3.14-fix-nodefaultlibs.patch whose description was:
+```
+See https://github.com/silnrsi/graphite/pull/44.
+
+Drop -nodefaultlibs:
+- graphite is written in C++ which makes avoiding libstdc++ (or libc++) a dubious
+ goal;
+- this ends up breaking e.g. x86/musl because we need to inject -lssp_nonshared,
+ but it wouldn't be surprising if it broke other exotic targets too.
+```
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -47,12 +47,12 @@ else (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+ set_target_properties(graphite2-base PROPERTIES
+ COMPILE_FLAGS "-Wall -Wextra -Wno-class-memaccess -fno-rtti -fno-exceptions"
+ COMPILE_DEFINITIONS "GRAPHITE2_NTRACING"
+- LINK_FLAGS "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}"
++ LINK_FLAGS "-nostdlib++ ${GRAPHITE_LINK_FLAGS}"
+ LINKER_LANGUAGE C)
+ set_target_properties(graphite2-file PROPERTIES
+ COMPILE_FLAGS "-Wall -Wextra -Wno-class-memaccess -fno-rtti -fno-exceptions"
+ COMPILE_DEFINITIONS "GRAPHITE2_NTRACING${TELEMETRY}"
+- LINK_FLAGS "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}"
++ LINK_FLAGS "-nostdlib++ ${GRAPHITE_LINK_FLAGS}"
+ LINKER_LANGUAGE C)
+ endif()
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -105,7 +105,7 @@ set_target_properties(graphite2 PROPERTIES PUBLIC_HEADER "${GRAPHITE_HEADERS}"
+ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+ set_target_properties(graphite2 PROPERTIES
+ COMPILE_FLAGS "-Wall -Wextra -Wno-unknown-pragmas -Wendif-labels -Wshadow -Wctor-dtor-privacy -Wnon-virtual-dtor -fno-rtti -fno-exceptions -fvisibility=hidden -fvisibility-inlines-hidden"
+- LINK_FLAGS "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}"
++ LINK_FLAGS "-nostdlib++ ${GRAPHITE_LINK_FLAGS}"
+ LINKER_LANGUAGE C)
+ if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86")
+ add_definitions(-mfpmath=sse -msse2)
+@@ -117,15 +117,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
+ add_definitions(-Wimplicit-fallthrough -Wshorten-64-to-32)
+ endif()
+- if (${CMAKE_CXX_COMPILER} MATCHES ".*mingw.*")
+- target_link_libraries(graphite2 kernel32 msvcr90 mingw32 gcc user32)
+- else (${CMAKE_CXX_COMPILER} MATCHES ".*mingw.*")
+- target_link_libraries(graphite2 c gcc_s)
+- endif()
+ include(Graphite)
+- if (BUILD_SHARED_LIBS)
+- nolib_test(stdc++ $<TARGET_SONAME_FILE:graphite2>)
+- endif ()
+ set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "")
+ if (0)
+ CREATE_LIBTOOL_FILE(graphite2 "/lib${LIB_SUFFIX}")
diff --git a/media-gfx/graphite2/graphite2-1.3.14_p20210810-r2.ebuild b/media-gfx/graphite2/graphite2-1.3.14_p20210810-r2.ebuild
new file mode 100644
index 000000000000..390f3b02fb00
--- /dev/null
+++ b/media-gfx/graphite2/graphite2-1.3.14_p20210810-r2.ebuild
@@ -0,0 +1,124 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+COMMIT=80c52493ef42e6fe605a69dcddd2a691cd8a1380
+GENTOO_DEPEND_ON_PERL="no"
+PYTHON_COMPAT=( python3_{8..10} )
+inherit perl-module python-any-r1 cmake-multilib
+
+DESCRIPTION="Library providing rendering capabilities for complex non-Roman writing systems"
+HOMEPAGE="https://scripts.sil.org/cms/scripts/page.php?site_id=projects&item_id=graphite_home"
+SRC_URI="https://github.com/silnrsi/graphite/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/graphite-${COMMIT}"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="perl test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="perl? ( dev-lang/perl:= )"
+DEPEND="${RDEPEND}
+ test? ( dev-libs/glib:2 )
+"
+BDEPEND="
+ perl? (
+ dev-lang/perl
+ dev-perl/Locale-Maketext-Lexicon
+ dev-perl/Module-Build
+ )
+ test? (
+ ${PYTHON_DEPS}
+ $(python_gen_any_dep 'dev-python/fonttools[${PYTHON_USEDEP}]')
+ media-libs/fontconfig
+ perl? ( virtual/perl-Test-Simple )
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-1.3.5-includes-libs-perl.patch"
+ "${FILESDIR}/${PN}-1.35-fix-gcc-linking.patch"
+ "${FILESDIR}/${PN}-1.3.14-fix-cmake-files-libdir.patch"
+ "${FILESDIR}/${PN}-1.3.14-no-libtool-file.patch"
+ #"${FILESDIR}/${PN}-1.3.14-fix-nodefaultlibs-deux.patch"
+)
+
+pkg_setup() {
+ use perl && perl_set_version
+ use test && python-any-r1_pkg_setup
+}
+
+python_check_deps() {
+ has_version -b "dev-python/fonttools[${PYTHON_USEDEP}]"
+}
+
+src_prepare() {
+ cmake_src_prepare
+ use test || cmake_comment_add_subdirectory tests
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ # Renamed VM_MACHINE_TYPE to GRAPHITE2_VM_TYPE
+ -DGRAPHITE2_VM_TYPE=direct
+ )
+ # https://sourceforge.net/p/silgraphite/bugs/49/
+ [[ ${CHOST} == powerpc*-apple* ]] && mycmakeargs+=(
+ -DGRAPHITE2_NSEGCACHE:BOOL=ON
+ )
+
+ if use elibc_musl ; then
+ # bug #829690
+ if use ppc || use x86 ; then
+ sed -e 's:${GRAPHITE_LINK_FLAGS}:-lssp_nonshared &:' \
+ -i "${S}"/src/CMakeLists.txt || die
+ fi
+ fi
+
+ cmake_src_configure
+
+ # fix perl linking
+ if multilib_is_native_abi && use perl; then
+ # we rely on the fact that cmake_src_configure sets BUILD_DIR
+ sed -e "s:@BUILD_DIR@:\"${BUILD_DIR}/src\":" \
+ -i "${S}"/contrib/perl/Build.PL || die
+ fi
+}
+
+src_compile() {
+ cmake-multilib_src_compile
+ if use perl; then
+ cd contrib/perl || die
+ perl-module_src_configure
+ perl-module_src_compile
+ fi
+}
+
+multilib_src_test() {
+ if multilib_is_native_abi; then
+ cmake_src_test
+ else
+ einfo "Cannot test since python is not multilib."
+ fi
+}
+
+src_test() {
+ cmake-multilib_src_test
+ if use perl; then
+ # Perl tests fail due to missing POD coverage...
+ perl_rm_files "contrib/perl/t/pod.t" "contrib/perl/t/pod-coverage.t"
+ cd contrib/perl || die
+ perl-module_src_test
+ fi
+}
+
+src_install() {
+ cmake-multilib_src_install
+ if use perl; then
+ cd contrib/perl || die
+ perl-module_src_install
+ perl_delete_localpod
+ fi
+}