commit:     bb8b7e254186f5c9a2b33833f26e766f08eb0912
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 16 22:15:05 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Sep 16 22:15:44 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bb8b7e25

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 <AT> gentoo.org>

 .../graphite2-1.3.14-fix-nodefaultlibs-deux.patch  | 112 ++++++++++++++-------
 .../graphite2/graphite2-1.3.14_p20210810-r2.ebuild |   1 -
 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"

Reply via email to