summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2022-09-16 23:15:05 +0100
committerSam James <sam@gentoo.org>2022-09-16 23:15:44 +0100
commitbb8b7e254186f5c9a2b33833f26e766f08eb0912 (patch)
tree5f86d1f7724049892ec0dc537e49d336e5c7fc1c /media-gfx/graphite2
parentnet-fs/nfs-utils: fix build with -Werror=strict-prototypes (Clang 15+) (diff)
downloadgentoo-bb8b7e254186f5c9a2b33833f26e766f08eb0912.tar.gz
gentoo-bb8b7e254186f5c9a2b33833f26e766f08eb0912.tar.bz2
gentoo-bb8b7e254186f5c9a2b33833f26e766f08eb0912.zip
media-gfx/graphite2: fix build w/o gcc trois
Uncomment the patch & fix it up to work on GCC machines too. (I'd started rebasing it before then got fed up because of how frustrating this package has been, I think.) Bug: https://bugs.gentoo.org/870034 Fixes: 3b5c8a7e7e9517ec4919f2948d04bdd5b270df48 Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'media-gfx/graphite2')
-rw-r--r--media-gfx/graphite2/files/graphite2-1.3.14-fix-nodefaultlibs-deux.patch112
-rw-r--r--media-gfx/graphite2/graphite2-1.3.14_p20210810-r2.ebuild1
2 files changed, 78 insertions, 35 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
index 815301dd307b..64fcfd63beab 100644
--- 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
@@ -1,61 +1,105 @@
https://bugs.gentoo.org/870034
https://bugs.gentoo.org/829690
+https://github.com/silnrsi/graphite/pull/44.
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()
+"""
+
+This patch is based on the linked one above from Chimera Linux. We have
+to adapt it a bit because GCC lacks -nostdlib++.
+
+Quoting it:
+"Clang has -nostdlib++, which can be used more effectively than disabling
+all and then hardcoding linking against libgcc (which we do not have)"
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
-@@ -105,7 +105,7 @@ set_target_properties(graphite2 PROPERTIES PUBLIC_HEADER "${GRAPHITE_HEADERS}"
+@@ -105,7 +105,6 @@ 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)
+@@ -114,22 +113,32 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+ add_definitions(-Wno-class-memaccess -Wdouble-promotion)
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)
+ message(STATUS "Compiler ID is: ${CMAKE_CXX_COMPILER_ID}")
+- if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
+- add_definitions(-Wimplicit-fallthrough -Wshorten-64-to-32)
- endif()
- include(Graphite)
++
++ include(Graphite)
++
+ if (${CMAKE_CXX_COMPILER} MATCHES ".*mingw.*")
+ target_link_libraries(graphite2 kernel32 msvcr90 mingw32 gcc user32)
+ else (${CMAKE_CXX_COMPILER} MATCHES ".*mingw.*")
+- if (GRAPHITE2_SANITIZERS)
+- target_link_libraries(graphite2 c gcc_s)
+- else ()
+- target_link_libraries(graphite2 c gcc)
+- endif ()
++ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
++ add_definitions(-Wimplicit-fallthrough -Wshorten-64-to-32)
++ set_target_properties(graphite2 PROPERTIES
++ LINK_FLAGS "-nostdlib++ ${GRAPHITE_LINK_FLAGS}")
++ else()
++ set_target_properties(graphite2 PROPERTIES
++ LINK_FLAGS "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}")
++
++ if (GRAPHITE2_SANITIZERS)
++ target_link_libraries(graphite2 c gcc_s)
++ else()
++ target_link_libraries(graphite2 c gcc)
++ endif()
++
++ if (BUILD_SHARED_LIBS)
++ nolib_test(stdc++ $<TARGET_SONAME_FILE:graphite2>)
++ endif ()
++ endif()
+ 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}")
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -44,15 +44,25 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+ COMPILE_DEFINITIONS "GRAPHITE2_STATIC;GRAPHITE2_NTRACING${TELEMETRY};_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;UNICODE")
+ else (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+ # don't -D GRAPHITE2_STATIC so that tests can see the API symbols in the static library
++ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
++ set_target_properties(graphite2-base PROPERTIES
++ LINK_FLAGS "-nostdlib++ ${GRAPHITE_LINK_FLAGS}")
++ set_target_properties(graphite2-file PROPERTIES
++ LINK_FLAGS "-nostdlib++ ${GRAPHITE_LINK_FLAGS}")
++ else()
++ set_target_properties(graphite2-base PROPERTIES
++ LINK_FLAGS "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}")
++ set_target_properties(graphite2-file PROPERTIES
++ LINK_FLAGS "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}")
++ endif()
++
+ 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}"
+ 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}"
+ LINKER_LANGUAGE C)
+ endif()
+
diff --git a/media-gfx/graphite2/graphite2-1.3.14_p20210810-r2.ebuild b/media-gfx/graphite2/graphite2-1.3.14_p20210810-r2.ebuild
index 390f3b02fb00..29a6138c3bf3 100644
--- a/media-gfx/graphite2/graphite2-1.3.14_p20210810-r2.ebuild
+++ b/media-gfx/graphite2/graphite2-1.3.14_p20210810-r2.ebuild
@@ -39,7 +39,6 @@ BDEPEND="
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"