summaryrefslogtreecommitdiff
path: root/media-gfx/graphite2/files/graphite2-1.3.14-fix-nodefaultlibs-deux.patch
blob: 64fcfd63beaba071ca4a711b7ee5f01ca4dbf4a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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

Obsoletes graphite2-1.3.14-fix-nodefaultlibs.patch whose description was:
"""
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.
"""

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,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}"
         LINKER_LANGUAGE C)
     if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86")
         add_definitions(-mfpmath=sse -msse2)
@@ -114,22 +113,32 @@ if  (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
         add_definitions(-Wno-class-memaccess -Wdouble-promotion)
     endif()
     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)
+
     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()