Skip to content

Commit 54d6862

Browse files
committed
[GCC 14] Build newer libtapi
1 parent a87eaa3 commit 54d6862

File tree

4 files changed

+166
-17
lines changed

4 files changed

+166
-17
lines changed

0_RootFS/GCCBootstrap@12-IainS/bundled/patches/libtapi/libtapi-llvm-missing-include.patch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ Date: Tue, 10 Nov 2020 14:55:25 +0100
44
Subject: [PATCH] [nfc] Fix missing include
55

66
---
7-
llvm/utils/benchmark/src/benchmark_register.h | 1 +
7+
src/llvm/utils/benchmark/src/benchmark_register.h | 1 +
88
1 file changed, 1 insertion(+)
99

10-
diff --git a/llvm/utils/benchmark/src/benchmark_register.h b/llvm/utils/benchmark/src/benchmark_register.h
10+
diff --git a/src/llvm/utils/benchmark/src/benchmark_register.h b/src/llvm/utils/benchmark/src/benchmark_register.h
1111
index 0705e219f2fa2..4caa5ad4da079 100644
12-
--- a/llvm/utils/benchmark/src/benchmark_register.h
13-
+++ b/llvm/utils/benchmark/src/benchmark_register.h
12+
--- a/src/llvm/utils/benchmark/src/benchmark_register.h
13+
+++ b/src/llvm/utils/benchmark/src/benchmark_register.h
1414
@@ -1,6 +1,7 @@
1515
#ifndef BENCHMARK_REGISTER_H
1616
#define BENCHMARK_REGISTER_H
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
From 2a171548436296653279d809cebf2a655be85716 Mon Sep 17 00:00:00 2001
2+
From: Lightmann <[email protected]>
3+
Date: Thu, 26 Dec 2024 08:54:57 -0800
4+
Subject: [PATCH] Fixing linking of tapi bin (dup and undef symbols)
5+
6+
---
7+
src/tapi/lib/Core/CMakeLists.txt | 2 ++
8+
src/tapi/lib/Core/TextStubCommon.cpp | 26 +++++++++++++-------------
9+
2 files changed, 15 insertions(+), 13 deletions(-)
10+
mode change 100644 => 100755 src/tapi/lib/Core/CMakeLists.txt
11+
mode change 100644 => 100755 src/tapi/lib/Core/TextStubCommon.cpp
12+
13+
diff --git a/src/tapi/lib/Core/CMakeLists.txt b/src/tapi/lib/Core/CMakeLists.txt
14+
old mode 100644
15+
new mode 100755
16+
index 787e0a08fa..ecba545377
17+
--- a/src/tapi/lib/Core/CMakeLists.txt
18+
+++ b/src/tapi/lib/Core/CMakeLists.txt
19+
@@ -35,4 +35,6 @@ add_tapi_library(tapiCore
20+
21+
LINK_LIBS
22+
clangBasic
23+
+ PRIVATE
24+
+ tapiObjCMetadata
25+
)
26+
diff --git a/src/tapi/lib/Core/TextStubCommon.cpp b/src/tapi/lib/Core/TextStubCommon.cpp
27+
old mode 100644
28+
new mode 100755
29+
index c83e54b6da..ad0de73744
30+
--- a/src/tapi/lib/Core/TextStubCommon.cpp
31+
+++ b/src/tapi/lib/Core/TextStubCommon.cpp
32+
@@ -20,15 +20,15 @@ namespace llvm {
33+
namespace yaml {
34+
35+
using Impl = ScalarTraits<StringRef>;
36+
-void ScalarTraits<FlowStringRef>::output(const FlowStringRef &value, void *ctx,
37+
+inline void ScalarTraits<FlowStringRef>::output(const FlowStringRef &value, void *ctx,
38+
raw_ostream &os) {
39+
Impl::output(value, ctx, os);
40+
}
41+
-StringRef ScalarTraits<FlowStringRef>::input(StringRef value, void *ctx,
42+
+inline StringRef ScalarTraits<FlowStringRef>::input(StringRef value, void *ctx,
43+
FlowStringRef &out) {
44+
return Impl::input(value, ctx, out.value);
45+
}
46+
-QuotingType ScalarTraits<FlowStringRef>::mustQuote(StringRef name) {
47+
+inline QuotingType ScalarTraits<FlowStringRef>::mustQuote(StringRef name) {
48+
return Impl::mustQuote(name);
49+
}
50+
51+
@@ -57,7 +57,7 @@ void ScalarEnumerationTraits<PlatformKind>::enumeration(
52+
io.enumCase(platform, "bridgeos", PlatformKind::bridgeOS);
53+
}
54+
55+
-void ScalarBitSetTraits<ArchitectureSet>::bitset(IO &io,
56+
+inline void ScalarBitSetTraits<ArchitectureSet>::bitset(IO &io,
57+
ArchitectureSet &archs) {
58+
#define ARCHINFO(arch, type, subtype, numbits) \
59+
io.bitSetCase(archs, #arch, 1U << static_cast<int>(AK_##arch));
60+
@@ -65,16 +65,16 @@ void ScalarBitSetTraits<ArchitectureSet>::bitset(IO &io,
61+
#undef ARCHINFO
62+
}
63+
64+
-void ScalarTraits<Architecture>::output(const Architecture &value, void *,
65+
+inline void ScalarTraits<Architecture>::output(const Architecture &value, void *,
66+
raw_ostream &os) {
67+
os << value;
68+
}
69+
-StringRef ScalarTraits<Architecture>::input(StringRef scalar, void *,
70+
+inline StringRef ScalarTraits<Architecture>::input(StringRef scalar, void *,
71+
Architecture &value) {
72+
value = getArchitectureFromName(scalar);
73+
return {};
74+
}
75+
-QuotingType ScalarTraits<Architecture>::mustQuote(StringRef) {
76+
+inline QuotingType ScalarTraits<Architecture>::mustQuote(StringRef) {
77+
return QuotingType::None;
78+
}
79+
80+
@@ -93,7 +93,7 @@ QuotingType ScalarTraits<PackedVersion>::mustQuote(StringRef) {
81+
return QuotingType::None;
82+
}
83+
84+
-void ScalarTraits<SwiftVersion>::output(const SwiftVersion &value, void *,
85+
+inline void ScalarTraits<SwiftVersion>::output(const SwiftVersion &value, void *,
86+
raw_ostream &os) {
87+
switch (value) {
88+
case 1:
89+
@@ -113,7 +113,7 @@ void ScalarTraits<SwiftVersion>::output(const SwiftVersion &value, void *,
90+
break;
91+
}
92+
}
93+
-StringRef ScalarTraits<SwiftVersion>::input(StringRef scalar, void *,
94+
+inline StringRef ScalarTraits<SwiftVersion>::input(StringRef scalar, void *,
95+
SwiftVersion &value) {
96+
value = StringSwitch<SwiftVersion>(scalar)
97+
.Case("1.0", 1)
98+
@@ -129,7 +129,7 @@ StringRef ScalarTraits<SwiftVersion>::input(StringRef scalar, void *,
99+
100+
return StringRef();
101+
}
102+
-QuotingType ScalarTraits<SwiftVersion>::mustQuote(StringRef) {
103+
+inline QuotingType ScalarTraits<SwiftVersion>::mustQuote(StringRef) {
104+
return QuotingType::None;
105+
}
106+
107+
@@ -171,7 +171,7 @@ QuotingType ScalarTraits<AvailabilityInfo>::mustQuote(StringRef) {
108+
return QuotingType::None;
109+
}
110+
111+
-void ScalarTraits<UUID>::output(const UUID &value, void *c, raw_ostream &os) {
112+
+inline void ScalarTraits<UUID>::output(const UUID &value, void *c, raw_ostream &os) {
113+
auto *ctx = reinterpret_cast<YAMLContext *>(c);
114+
assert(ctx);
115+
116+
@@ -180,7 +180,7 @@ void ScalarTraits<UUID>::output(const UUID &value, void *c, raw_ostream &os) {
117+
else
118+
os << value.first << ": " << value.second;
119+
}
120+
-StringRef ScalarTraits<UUID>::input(StringRef scalar, void *c, UUID &value) {
121+
+inline StringRef ScalarTraits<UUID>::input(StringRef scalar, void *c, UUID &value) {
122+
auto split = scalar.split(':');
123+
auto arch = split.first.trim();
124+
auto uuid = split.second.trim();
125+
@@ -191,7 +191,7 @@ StringRef ScalarTraits<UUID>::input(StringRef scalar, void *c, UUID &value) {
126+
value.second = uuid.str();
127+
return {};
128+
}
129+
-QuotingType ScalarTraits<UUID>::mustQuote(StringRef) {
130+
+inline QuotingType ScalarTraits<UUID>::mustQuote(StringRef) {
131+
return QuotingType::Single;
132+
}
133+

0_RootFS/gcc_common.jl

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,22 +196,34 @@ function gcc_script(gcc_version::VersionNumber, compiler_target::Platform)
196196
# Apply libtapi patches, if any
197197
if [[ -d "${WORKSPACE}/srcdir/patches/libtapi" ]]; then
198198
for p in ${WORKSPACE}/srcdir/patches/libtapi/*.patch; do
199-
atomic_patch -p1 -d src/ "${p}"
199+
atomic_patch -p1 "${p}"
200200
done
201201
fi
202202
203203
# Install libtapi
204204
mkdir -p ${WORKSPACE}/srcdir/apple-libtapi/build
205205
cd ${WORKSPACE}/srcdir/apple-libtapi/build
206206
export TAPIDIR=${WORKSPACE}/srcdir/apple-libtapi
207+
208+
TAPI_CMAKE_FLAGS=()
209+
if [[ "${GCC_VERSION_MAJOR}" -ge 14 ]]; then
210+
TAPI_CMAKE_FLAGS+=(
211+
-DLLVM_ENABLE_PROJECTS="tapi;clang"
212+
-DLLVM_TARGETS_TO_BUILD:STRING="host"
213+
)
214+
fi
215+
207216
cmake ../src/llvm \
217+
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
218+
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
208219
-DCMAKE_CXX_FLAGS="-I${TAPIDIR}/src/llvm/projects/clang/include -I${TAPIDIR}/build/projects/clang/include" \
209220
-DLLVM_INCLUDE_TESTS=OFF \
210221
-DCMAKE_BUILD_TYPE=RELEASE \
211-
-DCMAKE_INSTALL_PREFIX=${prefix}
222+
-DCMAKE_INSTALL_PREFIX=${prefix} \
223+
"${TAPI_CMAKE_FLAGS[@]}"
212224
make -j${nproc} VERBOSE=1 clangBasic
213-
make -j${nproc} VERBOSE=1
214-
make install
225+
make -j${nproc} VERBOSE=1 libtapi
226+
make -j${nproc} VERBOSE=1 install
215227
216228
# Install cctools
217229
cd ${WORKSPACE}/srcdir/cctools-port/cctools

0_RootFS/gcc_sources.jl

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -167,20 +167,24 @@ function gcc_sources(gcc_version::VersionNumber, compiler_target::Platform; kwar
167167
"258e6cd51b3fbdfc185c716d55f82c08aff57df0c6fbd143cf6ed561267a1526"),
168168
]
169169
# MacOS doesn't actually use binutils, it uses cctools
170+
binutils_sources = [
171+
GitSource("https://github.com/tpoechtrager/apple-libtapi.git",
172+
"aa37c11ad1a817248c9d1578ac99e133875b4eb5"),
173+
]
174+
if gcc_version < v"14"
170175
binutils_sources = [
171176
GitSource("https://github.com/tpoechtrager/apple-libtapi.git",
172177
"a66284251b46d591ee4a0cb4cf561b92a0c138d8"),
178+
GitSource("https://github.com/tpoechtrager/cctools-port.git",
179+
"634a084377ee2e2932c66459b0396edf76da2e9f"),
173180
]
174-
if gcc_version v"14"
175-
push!(binutils_sources,
176-
GitSource("https://github.com/tpoechtrager/cctools-port.git",
177-
"81f205e8ca6bbf2fdbcb6948132454fd1f97839e"),
178-
)
179181
else
180-
push!(binutils_sources,
181-
GitSource("https://github.com/tpoechtrager/cctools-port.git",
182-
"634a084377ee2e2932c66459b0396edf76da2e9f"),
183-
)
182+
binutils_sources = [
183+
GitSource("https://github.com/tpoechtrager/apple-libtapi.git",
184+
"aa37c11ad1a817248c9d1578ac99e133875b4eb5"),
185+
GitSource("https://github.com/tpoechtrager/cctools-port.git",
186+
"81f205e8ca6bbf2fdbcb6948132454fd1f97839e"),
187+
]
184188
end
185189
else
186190
# Different versions of GCC should be paired with different versions of Binutils

0 commit comments

Comments
 (0)