Skip to content

Commit a9655f8

Browse files
authored
feat: new gcc versions and allow versions override (#196)
1 parent 9a6bd03 commit a9655f8

File tree

2 files changed

+70
-23
lines changed

2 files changed

+70
-23
lines changed

docs/defs.md

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

toolchain/defs.bzl

Lines changed: 66 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ load("@bazel_skylib//lib:dicts.bzl", "dicts")
2222
load("@bazel_skylib//lib:paths.bzl", "paths")
2323

2424
def _gcc_toolchain_impl(rctx):
25+
versions = json.decode(rctx.attr.gcc_versions)
2526
rctx.download_and_extract(
26-
url = VERSIONS[rctx.attr.gcc_version][rctx.attr.target_arch]["url"],
27-
sha256 = VERSIONS[rctx.attr.gcc_version][rctx.attr.target_arch]["sha256"],
27+
url = versions[rctx.attr.gcc_version][rctx.attr.target_arch]["url"],
28+
sha256 = versions[rctx.attr.gcc_version][rctx.attr.target_arch]["sha256"],
2829
)
2930

3031
absolute_toolchain_root = str(rctx.path("."))
@@ -241,9 +242,71 @@ _FEATURE_ATTRS = {
241242
default = "gcc_toolchain",
242243
),
243244
"gcc_version": attr.string(
244-
default = "14.2.0",
245+
default = "14.3.0",
245246
doc = "The version of GCC.",
246247
),
248+
"gcc_versions": attr.string(
249+
default = json.encode({
250+
"12.5.0": {
251+
"aarch64": {
252+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-12.5.0-aarch64.tar.xz",
253+
"sha256": "7b0e25133a98d44b648a925ba11f64a3adc470e87668af80ce2c3af389ebe9be",
254+
},
255+
"armv7": {
256+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-12.5.0-armv7.tar.xz",
257+
"sha256": "a0ef76c8cc517b3d76dd2f09b1a371975b2ff1082e2f9372ed79af01b9292934",
258+
},
259+
"x86_64": {
260+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-12.5.0-x86_64.tar.xz",
261+
"sha256": "51076e175839b434bb2dc0006c0096916df585e8c44666d35b0e3ce821d535db",
262+
},
263+
},
264+
"13.4.0": {
265+
"aarch64": {
266+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-13.4.0-aarch64.tar.xz",
267+
"sha256": "770cf6bf62bdf78763de526d3a9f5cae4c19f1a3aca0ef8f18b05f1a46d1ffaf",
268+
},
269+
"armv7": {
270+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-13.4.0-armv7.tar.xz",
271+
"sha256": "1b2739b5003c5a3f0ab7c4cc7fb95cc99c0e933982512de7255c2bd9ced757ad",
272+
},
273+
"x86_64": {
274+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-13.4.0-x86_64.tar.xz",
275+
"sha256": "d96071c1b98499afd7b7b56ebd69ad414020edf66e982004acffe7df8aaf7e02",
276+
},
277+
},
278+
"14.3.0": {
279+
"aarch64": {
280+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-14.3.0-aarch64.tar.xz",
281+
"sha256": "74b1f0072769f8865b62897ab962f6fce174115dab2e6596765bb4e700ffe0d1",
282+
},
283+
"armv7": {
284+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-14.3.0-armv7.tar.xz",
285+
"sha256": "0c20a130f424ce83dd4eb2a4ec8fbcd0c0ddc5f42f0b4660bcd0108cb8c0fb21",
286+
},
287+
"x86_64": {
288+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-14.3.0-x86_64.tar.xz",
289+
"sha256": "0b365e5da451f5c7adc594f967885d7181ff6d187d6089a4bcf36f954bf3ccf9",
290+
},
291+
},
292+
"15.2.0": {
293+
"aarch64": {
294+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-15.2.0-aarch64.tar.xz",
295+
"sha256": "e1ae45038d350b297bea4ac10f095a98e2218971a8a37b8ab95f3faad2ec69f8",
296+
},
297+
"armv7": {
298+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-15.2.0-armv7.tar.xz",
299+
"sha256": "fda64b3ee1c3d7ddcb28378a1b131eadc5d3e3ff1cfab2aab71da7a3f899b601",
300+
},
301+
"x86_64": {
302+
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/18082025/gcc-toolchain-15.2.0-x86_64.tar.xz",
303+
"sha256": "50dd28021365e7443853d5e77bc94ab1d1c947ad48fd91cbec44dbdfa61412c9",
304+
},
305+
},
306+
}),
307+
doc = "A JSON dictionary of GCC versions to their download URLs and SHA256 hashes." +
308+
" The structure is {<gcc_version>: {<target_arch>: {url: <url>, sha256: <sha256>}}}.",
309+
),
247310
"includes": attr.string_list(
248311
doc = "Extra includes for compiling C and C++." +
249312
" %workspace% is rendered to the toolchain root path." +
@@ -405,23 +468,6 @@ def gcc_register_toolchain(
405468
native.register_toolchains("@{}//:cc_toolchain".format(name))
406469
native.register_toolchains("@{}//:fortran_toolchain".format(name))
407470

408-
VERSIONS = {
409-
"14.2.0": {
410-
"aarch64": {
411-
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/14.2.0_17%2F08%2F2025/gcc-toolchain-14.2.0-aarch64.tar.xz",
412-
"sha256": "30e49f3c542e2d49e8c46c7546e4fa9c15f47c5a88e8391be0c544678065e7d7",
413-
},
414-
"armv7": {
415-
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/14.2.0_17%2F08%2F2025/gcc-toolchain-14.2.0-armv7.tar.xz",
416-
"sha256": "7b1edb9b81a19c588327607b4adb57b65a9ef68350fe769513a05a93df168023",
417-
},
418-
"x86_64": {
419-
"url": "https://github.com/f0rmiga/gcc-builds/releases/download/14.2.0_17%2F08%2F2025/gcc-toolchain-14.2.0-x86_64.tar.xz",
420-
"sha256": "fdbd3841a7f25af4f5f7cd24b1757c5040b4a6ac52cdfb5785a83358a7b8e655",
421-
},
422-
},
423-
}
424-
425471
ARCHS = struct(
426472
aarch64 = "aarch64",
427473
armv7 = "armv7",

0 commit comments

Comments
 (0)