1*c8dee2aaSAndroid Build Coastguard Worker""" 2*c8dee2aaSAndroid Build Coastguard WorkerThis file assembles a toolchain for an amd64 Linux host using the Clang Compiler and glibc. 3*c8dee2aaSAndroid Build Coastguard Worker 4*c8dee2aaSAndroid Build Coastguard WorkerIt downloads the necessary headers, executables, and pre-compiled static/shared libraries to 5*c8dee2aaSAndroid Build Coastguard Workerthe external subfolder of the Bazel cache (the same place third party deps are downloaded with 6*c8dee2aaSAndroid Build Coastguard Workerhttp_archive or similar functions in WORKSPACE.bazel). These will be able to be used via our 7*c8dee2aaSAndroid Build Coastguard Workercustom c++ toolchain configuration (see //toolchain/linux_amd64_toolchain_config.bzl) 8*c8dee2aaSAndroid Build Coastguard Worker 9*c8dee2aaSAndroid Build Coastguard WorkerMost files are downloaded as .deb files from packages.debian.org (with us acting as the dependency 10*c8dee2aaSAndroid Build Coastguard Workerresolver) and extracted to 11*c8dee2aaSAndroid Build Coastguard Worker [outputRoot (aka Bazel cache)]/[outputUserRoot]/[outputBase]/external/clang_linux_amd64 12*c8dee2aaSAndroid Build Coastguard Worker (See https://bazel.build/docs/output_directories#layout-diagram) 13*c8dee2aaSAndroid Build Coastguard Workerwhich will act as our sysroot. 14*c8dee2aaSAndroid Build Coastguard Worker""" 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Workerload(":clang_layering_check.bzl", "generate_system_module_map") 17*c8dee2aaSAndroid Build Coastguard Workerload(":utils.bzl", "gcs_mirror_only", "gcs_mirror_url") 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Worker# The clang from CIPD has no prefix, and we download it directly from our GCS bucket 20*c8dee2aaSAndroid Build Coastguard Worker# This is clang 15.0.1 and iwyu built from source. 21*c8dee2aaSAndroid Build Coastguard Worker# https://chrome-infra-packages.appspot.com/p/skia/bots/clang_linux/+/5h9JgVTkZk0fFuOyLUCHZXIFqG1b1TAdYG9fHTFLEzoC 22*c8dee2aaSAndroid Build Coastguard Workerclang_sha256 = "e61f498154e4664d1f16e3b22d4087657205a86d5bd5301d606f5f1d314b133a" 23*c8dee2aaSAndroid Build Coastguard Worker 24*c8dee2aaSAndroid Build Coastguard Workerdebs_to_install = [ 25*c8dee2aaSAndroid Build Coastguard Worker # These three comprise glibc. libc6 has the shared libraries, like libc itself, the math library 26*c8dee2aaSAndroid Build Coastguard Worker # (libm), etc. linux-libc-dev has the header files specific to linux. libc6-dev has the libc 27*c8dee2aaSAndroid Build Coastguard Worker # system headers (e.g. malloc.h, math.h). 28*c8dee2aaSAndroid Build Coastguard Worker { 29*c8dee2aaSAndroid Build Coastguard Worker # We use this old version of glibc because as of Nov 2022, many of our Swarming machines 30*c8dee2aaSAndroid Build Coastguard Worker # are still on Debian 10. While many of the Bazel tasks can be run in RBE, using a newer 31*c8dee2aaSAndroid Build Coastguard Worker # Debian 11 image (see //bazel/rbe/gce_linux_container/Dockerfile) some tasks need to be 32*c8dee2aaSAndroid Build Coastguard Worker # run on these host machines using Debian 10. As a result, we need to compile and link 33*c8dee2aaSAndroid Build Coastguard Worker # against a version of glibc that can be run on Debian 10 until we update those Swarming 34*c8dee2aaSAndroid Build Coastguard Worker # hosts. 35*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/buster/amd64/libc6/download 36*c8dee2aaSAndroid Build Coastguard Worker "sha256": "980066e3e6124b8d84cdfd4cfa96d78a97cd659f8f3ba995bbcb887dad9ac237", 37*c8dee2aaSAndroid Build Coastguard Worker "url": "https://security.debian.org/debian-security/pool/updates/main/g/glibc/libc6_2.28-10+deb10u2_amd64.deb", 38*c8dee2aaSAndroid Build Coastguard Worker }, 39*c8dee2aaSAndroid Build Coastguard Worker { 40*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/buster/amd64/linux-libc-dev/download 41*c8dee2aaSAndroid Build Coastguard Worker "sha256": "e724656440d71d6316772fe58d7a8ac9634a0060a94af4e3b50e4f0a9e5a75e0", 42*c8dee2aaSAndroid Build Coastguard Worker "url": "https://security.debian.org/debian-security/pool/updates/main/l/linux/linux-libc-dev_4.19.260-1_amd64.deb", 43*c8dee2aaSAndroid Build Coastguard Worker }, 44*c8dee2aaSAndroid Build Coastguard Worker { 45*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/buster/amd64/libc6-dev/download 46*c8dee2aaSAndroid Build Coastguard Worker "sha256": "6c11087f5bdc6a2a59fc6424e003dddede53fb97888ade2e35738448fa30a159", 47*c8dee2aaSAndroid Build Coastguard Worker "url": "https://security.debian.org/debian-security/pool/updates/main/g/glibc/libc6-dev_2.28-10+deb10u2_amd64.deb", 48*c8dee2aaSAndroid Build Coastguard Worker }, 49*c8dee2aaSAndroid Build Coastguard Worker # These two put the X11 include files in ${PWD}/usr/include/X11 50*c8dee2aaSAndroid Build Coastguard Worker # libx11-dev puts libX11.a in ${PWD}/usr/lib/x86_64-linux-gnu 51*c8dee2aaSAndroid Build Coastguard Worker { 52*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libx11-dev/download 53*c8dee2aaSAndroid Build Coastguard Worker "sha256": "11e5f9dcded1a1226b3ee02847b86edce525240367b3989274a891a43dc49f5f", 54*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.7.2-1_amd64.deb", 55*c8dee2aaSAndroid Build Coastguard Worker }, 56*c8dee2aaSAndroid Build Coastguard Worker { 57*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libx11-6/download 58*c8dee2aaSAndroid Build Coastguard Worker "sha256": "086bd667fc07369472a923da015d182bb0c15a72228a5c0e6ddbcbeaab70acd2", 59*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libx/libx11/libx11-6_1.7.2-1_amd64.deb", 60*c8dee2aaSAndroid Build Coastguard Worker }, 61*c8dee2aaSAndroid Build Coastguard Worker { 62*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/all/x11proto-dev/download 63*c8dee2aaSAndroid Build Coastguard Worker "sha256": "d5568d587d9ad2664c34c14b0ac538ccb3c567e126ee5291085a8de704a565f5", 64*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb", 65*c8dee2aaSAndroid Build Coastguard Worker }, 66*c8dee2aaSAndroid Build Coastguard Worker # xcb is a dep of X11 67*c8dee2aaSAndroid Build Coastguard Worker { 68*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libxcb1-dev/download 69*c8dee2aaSAndroid Build Coastguard Worker "sha256": "b75544f334c8963b8b7b0e8a88f8a7cde95a714dddbcda076d4beb669a961b58", 70*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libx/libxcb/libxcb1-dev_1.14-3_amd64.deb", 71*c8dee2aaSAndroid Build Coastguard Worker }, 72*c8dee2aaSAndroid Build Coastguard Worker { 73*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libxcb1/download 74*c8dee2aaSAndroid Build Coastguard Worker "sha256": "d5e0f047ed766f45eb7473947b70f9e8fddbe45ef22ecfd92ab712c0671a93ac", 75*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libx/libxcb/libxcb1_1.14-3_amd64.deb", 76*c8dee2aaSAndroid Build Coastguard Worker }, 77*c8dee2aaSAndroid Build Coastguard Worker # Xau is a dep of xcb 78*c8dee2aaSAndroid Build Coastguard Worker { 79*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libxau-dev/download 80*c8dee2aaSAndroid Build Coastguard Worker "sha256": "d1a7f5d484e0879b3b2e8d512894744505e53d078712ce65903fef2ecfd824bb", 81*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libx/libxau/libxau-dev_1.0.9-1_amd64.deb", 82*c8dee2aaSAndroid Build Coastguard Worker }, 83*c8dee2aaSAndroid Build Coastguard Worker { 84*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libxau6/download 85*c8dee2aaSAndroid Build Coastguard Worker "sha256": "679db1c4579ec7c61079adeaae8528adeb2e4bf5465baa6c56233b995d714750", 86*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libx/libxau/libxau6_1.0.9-1_amd64.deb", 87*c8dee2aaSAndroid Build Coastguard Worker }, 88*c8dee2aaSAndroid Build Coastguard Worker 89*c8dee2aaSAndroid Build Coastguard Worker # Xdmcp is a dep of xcb. libxdmcp-dev provides the the libXdmcp.so symlink (and the 90*c8dee2aaSAndroid Build Coastguard Worker # .a if we want to statically include it). libxdmcp6 actually provides the .so file 91*c8dee2aaSAndroid Build Coastguard Worker { 92*c8dee2aaSAndroid Build Coastguard Worker # https://packages.debian.org/bullseye/amd64/libxdmcp-dev/download 93*c8dee2aaSAndroid Build Coastguard Worker "sha256": "c6733e5f6463afd261998e408be6eb37f24ce0a64b63bed50a87ddb18ebc1699", 94*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_amd64.deb", 95*c8dee2aaSAndroid Build Coastguard Worker }, 96*c8dee2aaSAndroid Build Coastguard Worker { 97*c8dee2aaSAndroid Build Coastguard Worker # https://packages.debian.org/bullseye/amd64/libxdmcp6/download 98*c8dee2aaSAndroid Build Coastguard Worker "sha256": "ecb8536f5fb34543b55bb9dc5f5b14c9dbb4150a7bddb3f2287b7cab6e9d25ef", 99*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_amd64.deb", 100*c8dee2aaSAndroid Build Coastguard Worker }, 101*c8dee2aaSAndroid Build Coastguard Worker # These two put GL include files in ${PWD}/usr/include/GL 102*c8dee2aaSAndroid Build Coastguard Worker { 103*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libgl-dev/download 104*c8dee2aaSAndroid Build Coastguard Worker "sha256": "a6487873f2706bbabf9346cdb190f47f23a1464f31cecf92c363bac37c342f2f", 105*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_amd64.deb", 106*c8dee2aaSAndroid Build Coastguard Worker }, 107*c8dee2aaSAndroid Build Coastguard Worker { 108*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libglx-dev/download 109*c8dee2aaSAndroid Build Coastguard Worker "sha256": "5a50549948bc4363eab32b1083dad2165402c3628f2ee85e9a32563228cc61c1", 110*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_amd64.deb", 111*c8dee2aaSAndroid Build Coastguard Worker }, 112*c8dee2aaSAndroid Build Coastguard Worker { 113*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libglx0/download 114*c8dee2aaSAndroid Build Coastguard Worker "sha256": "cb642200f7e28e6dbb4075110a0b441880eeec35c8a00a2198c59c53309e5e17", 115*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libg/libglvnd/libglx0_1.3.2-1_amd64.deb", 116*c8dee2aaSAndroid Build Coastguard Worker }, 117*c8dee2aaSAndroid Build Coastguard Worker # This provides libGL.so for us to link against. 118*c8dee2aaSAndroid Build Coastguard Worker { 119*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libgl1/download 120*c8dee2aaSAndroid Build Coastguard Worker "sha256": "f300f9610b5f05f1ce566c4095f1bf2170e512ac5d201c40d895b8fce29dec98", 121*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libg/libglvnd/libgl1_1.3.2-1_amd64.deb", 122*c8dee2aaSAndroid Build Coastguard Worker }, 123*c8dee2aaSAndroid Build Coastguard Worker # This is used by sk_app for Vulkan and Dawn on Unix. 124*c8dee2aaSAndroid Build Coastguard Worker { 125*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libx11-xcb-dev/download 126*c8dee2aaSAndroid Build Coastguard Worker "sha256": "80a2413ace2a0a073f2472059b9e589737cbf8a336fb6862684a5811bf640aa3", 127*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_amd64.deb", 128*c8dee2aaSAndroid Build Coastguard Worker }, 129*c8dee2aaSAndroid Build Coastguard Worker { 130*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libx11-xcb1/download 131*c8dee2aaSAndroid Build Coastguard Worker "sha256": "1f9f2dbe7744a2bb7f855d819f43167df095fe7d5291546bec12865aed045e0c", 132*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_amd64.deb", 133*c8dee2aaSAndroid Build Coastguard Worker }, 134*c8dee2aaSAndroid Build Coastguard Worker { 135*c8dee2aaSAndroid Build Coastguard Worker # https://packages.debian.org/bullseye/libfontconfig-dev/download 136*c8dee2aaSAndroid Build Coastguard Worker "sha256": "7655d4238ee7e6ced13501006d20986cbf9ff08454a4e502d5aa399f83e28876", 137*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_amd64.deb", 138*c8dee2aaSAndroid Build Coastguard Worker }, 139*c8dee2aaSAndroid Build Coastguard Worker { 140*c8dee2aaSAndroid Build Coastguard Worker # https://packages.debian.org/bullseye/amd64/libfontconfig1/download 141*c8dee2aaSAndroid Build Coastguard Worker "sha256": "b92861827627a76e74d6f447a5577d039ef2f95da18af1f29aa98fb96baea4c1", 142*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_amd64.deb", 143*c8dee2aaSAndroid Build Coastguard Worker }, 144*c8dee2aaSAndroid Build Coastguard Worker { 145*c8dee2aaSAndroid Build Coastguard Worker # https://packages.debian.org/bullseye/libglu1-mesa-dev/download 146*c8dee2aaSAndroid Build Coastguard Worker "sha256": "5df6abeedb1f6986cec4b17810ef1a2773a5cd3291544abacc2bf602a9520893", 147*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libg/libglu/libglu1-mesa-dev_9.0.1-1_amd64.deb", 148*c8dee2aaSAndroid Build Coastguard Worker }, 149*c8dee2aaSAndroid Build Coastguard Worker { 150*c8dee2aaSAndroid Build Coastguard Worker # https://packages.debian.org/bullseye/amd64/libglu1-mesa/download 151*c8dee2aaSAndroid Build Coastguard Worker "sha256": "479736c235af0537c1af8df4befc32e638a4e979961fdb02f366501298c50526", 152*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/libg/libglu/libglu1-mesa_9.0.1-1_amd64.deb", 153*c8dee2aaSAndroid Build Coastguard Worker }, 154*c8dee2aaSAndroid Build Coastguard Worker # These are needed for rustc to link executables 155*c8dee2aaSAndroid Build Coastguard Worker { 156*c8dee2aaSAndroid Build Coastguard Worker # https://packages.debian.org/bullseye/amd64/libgcc-s1/download 157*c8dee2aaSAndroid Build Coastguard Worker "sha256": "e478f2709d8474165bb664de42e16950c391f30eaa55bc9b3573281d83a29daf", 158*c8dee2aaSAndroid Build Coastguard Worker "url": "https://ftp.debian.org/debian/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_amd64.deb", 159*c8dee2aaSAndroid Build Coastguard Worker }, 160*c8dee2aaSAndroid Build Coastguard Worker # needed for EGL support 161*c8dee2aaSAndroid Build Coastguard Worker { 162*c8dee2aaSAndroid Build Coastguard Worker # From https://packages.debian.org/bullseye/amd64/libegl-dev/download 163*c8dee2aaSAndroid Build Coastguard Worker "sha256": "2847662b23487d5b1e467bca8cc8753baa880f794744a9b492c978bd5514b286", 164*c8dee2aaSAndroid Build Coastguard Worker "url": "http://ftp.debian.org/debian/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_amd64.deb", 165*c8dee2aaSAndroid Build Coastguard Worker }, 166*c8dee2aaSAndroid Build Coastguard Worker { 167*c8dee2aaSAndroid Build Coastguard Worker # https://packages.debian.org/bullseye/amd64/libgles-dev/download 168*c8dee2aaSAndroid Build Coastguard Worker "sha256": "969e9197d8b8a36780f9b5d86f7c3066cdfef9dd7cdc3aee59a1870415c53578", 169*c8dee2aaSAndroid Build Coastguard Worker "url": "http://ftp.debian.org/debian/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_amd64.deb", 170*c8dee2aaSAndroid Build Coastguard Worker }, 171*c8dee2aaSAndroid Build Coastguard Worker] 172*c8dee2aaSAndroid Build Coastguard Worker 173*c8dee2aaSAndroid Build Coastguard Workerdef _download_and_extract_deb(ctx, deb, sha256, prefix, output = ""): 174*c8dee2aaSAndroid Build Coastguard Worker """Downloads a debian file and extracts the data into the provided output directory""" 175*c8dee2aaSAndroid Build Coastguard Worker 176*c8dee2aaSAndroid Build Coastguard Worker # https://bazel.build/rules/lib/repository_ctx#download_and_extract 177*c8dee2aaSAndroid Build Coastguard Worker # A .deb file has a data.tar.xz and a control.tar.xz, but the important contents 178*c8dee2aaSAndroid Build Coastguard Worker # (i.e. the headers or libs) are in the data.tar.xz 179*c8dee2aaSAndroid Build Coastguard Worker ctx.download_and_extract( 180*c8dee2aaSAndroid Build Coastguard Worker url = gcs_mirror_url(deb, sha256), 181*c8dee2aaSAndroid Build Coastguard Worker output = "tmp", 182*c8dee2aaSAndroid Build Coastguard Worker sha256 = sha256, 183*c8dee2aaSAndroid Build Coastguard Worker ) 184*c8dee2aaSAndroid Build Coastguard Worker 185*c8dee2aaSAndroid Build Coastguard Worker # https://bazel.build/rules/lib/repository_ctx#extract 186*c8dee2aaSAndroid Build Coastguard Worker ctx.extract( 187*c8dee2aaSAndroid Build Coastguard Worker archive = "tmp/data.tar.xz", 188*c8dee2aaSAndroid Build Coastguard Worker output = output, 189*c8dee2aaSAndroid Build Coastguard Worker stripPrefix = prefix, 190*c8dee2aaSAndroid Build Coastguard Worker ) 191*c8dee2aaSAndroid Build Coastguard Worker 192*c8dee2aaSAndroid Build Coastguard Worker # Clean up 193*c8dee2aaSAndroid Build Coastguard Worker ctx.delete("tmp") 194*c8dee2aaSAndroid Build Coastguard Worker 195*c8dee2aaSAndroid Build Coastguard Workerdef _download_linux_amd64_toolchain_impl(ctx): 196*c8dee2aaSAndroid Build Coastguard Worker # Download the clang toolchain (the extraction can take a while) 197*c8dee2aaSAndroid Build Coastguard Worker # https://bazel.build/rules/lib/repository_ctx#download_and_extract 198*c8dee2aaSAndroid Build Coastguard Worker ctx.download_and_extract( 199*c8dee2aaSAndroid Build Coastguard Worker url = gcs_mirror_only(clang_sha256, ".zip"), 200*c8dee2aaSAndroid Build Coastguard Worker output = "", 201*c8dee2aaSAndroid Build Coastguard Worker sha256 = clang_sha256, 202*c8dee2aaSAndroid Build Coastguard Worker ) 203*c8dee2aaSAndroid Build Coastguard Worker 204*c8dee2aaSAndroid Build Coastguard Worker # Extract all the debs into our sysroot. This is very similar to installing them, except their 205*c8dee2aaSAndroid Build Coastguard Worker # dependencies are not installed automatically. 206*c8dee2aaSAndroid Build Coastguard Worker for deb in debs_to_install: 207*c8dee2aaSAndroid Build Coastguard Worker _download_and_extract_deb( 208*c8dee2aaSAndroid Build Coastguard Worker ctx, 209*c8dee2aaSAndroid Build Coastguard Worker deb["url"], 210*c8dee2aaSAndroid Build Coastguard Worker deb["sha256"], 211*c8dee2aaSAndroid Build Coastguard Worker ".", 212*c8dee2aaSAndroid Build Coastguard Worker ) 213*c8dee2aaSAndroid Build Coastguard Worker 214*c8dee2aaSAndroid Build Coastguard Worker # Make -lgcc_s work 215*c8dee2aaSAndroid Build Coastguard Worker ctx.symlink("lib/x86_64-linux-gnu/libgcc_s.so.1", "lib/x86_64-linux-gnu/libgcc_s.so") 216*c8dee2aaSAndroid Build Coastguard Worker 217*c8dee2aaSAndroid Build Coastguard Worker # This list of files lines up with _make_default_flags() in linux_amd64_toolchain_config.bzl 218*c8dee2aaSAndroid Build Coastguard Worker # It is all locations that our toolchain could find a system header. 219*c8dee2aaSAndroid Build Coastguard Worker builtin_include_directories = [ 220*c8dee2aaSAndroid Build Coastguard Worker "include/c++/v1", 221*c8dee2aaSAndroid Build Coastguard Worker "include/x86_64-unknown-linux-gnu/c++/v1", 222*c8dee2aaSAndroid Build Coastguard Worker "lib/clang/15.0.1/include", 223*c8dee2aaSAndroid Build Coastguard Worker "usr/include", 224*c8dee2aaSAndroid Build Coastguard Worker "usr/include/x86_64-linux-gnu", 225*c8dee2aaSAndroid Build Coastguard Worker ] 226*c8dee2aaSAndroid Build Coastguard Worker 227*c8dee2aaSAndroid Build Coastguard Worker generate_system_module_map( 228*c8dee2aaSAndroid Build Coastguard Worker ctx, 229*c8dee2aaSAndroid Build Coastguard Worker module_file = "toolchain_system_headers.modulemap", 230*c8dee2aaSAndroid Build Coastguard Worker folders = builtin_include_directories, 231*c8dee2aaSAndroid Build Coastguard Worker ) 232*c8dee2aaSAndroid Build Coastguard Worker 233*c8dee2aaSAndroid Build Coastguard Worker # Create a BUILD.bazel file that makes the files downloaded into the toolchain visible. 234*c8dee2aaSAndroid Build Coastguard Worker # We have separate groups for each task because doing less work (sandboxing fewer files 235*c8dee2aaSAndroid Build Coastguard Worker # or uploading less data to RBE) makes compiles go faster. We try to strike a balance 236*c8dee2aaSAndroid Build Coastguard Worker # between minimal specifications and not having to edit this file often with our use 237*c8dee2aaSAndroid Build Coastguard Worker # of globs. 238*c8dee2aaSAndroid Build Coastguard Worker # https://bazel.build/rules/lib/repository_ctx#file 239*c8dee2aaSAndroid Build Coastguard Worker ctx.file( 240*c8dee2aaSAndroid Build Coastguard Worker "BUILD.bazel", 241*c8dee2aaSAndroid Build Coastguard Worker content = """ 242*c8dee2aaSAndroid Build Coastguard Worker# DO NOT EDIT THIS BAZEL FILE DIRECTLY 243*c8dee2aaSAndroid Build Coastguard Worker# Generated from ctx.file action in download_linux_amd64_toolchain.bzl 244*c8dee2aaSAndroid Build Coastguard Workerfilegroup( 245*c8dee2aaSAndroid Build Coastguard Worker name = "generated_module_map", 246*c8dee2aaSAndroid Build Coastguard Worker srcs = ["toolchain_system_headers.modulemap"], 247*c8dee2aaSAndroid Build Coastguard Worker visibility = ["//visibility:public"], 248*c8dee2aaSAndroid Build Coastguard Worker) 249*c8dee2aaSAndroid Build Coastguard Worker 250*c8dee2aaSAndroid Build Coastguard Workerfilegroup( 251*c8dee2aaSAndroid Build Coastguard Worker name = "archive_files", 252*c8dee2aaSAndroid Build Coastguard Worker srcs = [ 253*c8dee2aaSAndroid Build Coastguard Worker "bin/llvm-ar", 254*c8dee2aaSAndroid Build Coastguard Worker ], 255*c8dee2aaSAndroid Build Coastguard Worker visibility = ["//visibility:public"], 256*c8dee2aaSAndroid Build Coastguard Worker) 257*c8dee2aaSAndroid Build Coastguard Worker 258*c8dee2aaSAndroid Build Coastguard Workerfilegroup( 259*c8dee2aaSAndroid Build Coastguard Worker name = "compile_files", 260*c8dee2aaSAndroid Build Coastguard Worker srcs = [ 261*c8dee2aaSAndroid Build Coastguard Worker "bin/clang", 262*c8dee2aaSAndroid Build Coastguard Worker "bin/include-what-you-use", 263*c8dee2aaSAndroid Build Coastguard Worker ] + glob( 264*c8dee2aaSAndroid Build Coastguard Worker include = [ 265*c8dee2aaSAndroid Build Coastguard Worker "include/c++/v1/**", 266*c8dee2aaSAndroid Build Coastguard Worker "include/x86_64-unknown-linux-gnu/c++/v1/**", 267*c8dee2aaSAndroid Build Coastguard Worker "usr/include/**", 268*c8dee2aaSAndroid Build Coastguard Worker "lib/clang/15.0.1/**", 269*c8dee2aaSAndroid Build Coastguard Worker "usr/include/x86_64-linux-gnu/**", 270*c8dee2aaSAndroid Build Coastguard Worker ], 271*c8dee2aaSAndroid Build Coastguard Worker allow_empty = False, 272*c8dee2aaSAndroid Build Coastguard Worker ), 273*c8dee2aaSAndroid Build Coastguard Worker visibility = ["//visibility:public"], 274*c8dee2aaSAndroid Build Coastguard Worker) 275*c8dee2aaSAndroid Build Coastguard Worker 276*c8dee2aaSAndroid Build Coastguard Workerfilegroup( 277*c8dee2aaSAndroid Build Coastguard Worker name = "link_files", 278*c8dee2aaSAndroid Build Coastguard Worker srcs = [ 279*c8dee2aaSAndroid Build Coastguard Worker "bin/clang", 280*c8dee2aaSAndroid Build Coastguard Worker "bin/ld.lld", 281*c8dee2aaSAndroid Build Coastguard Worker "bin/lld", 282*c8dee2aaSAndroid Build Coastguard Worker "lib/x86_64-unknown-linux-gnu/libc++.a", 283*c8dee2aaSAndroid Build Coastguard Worker "lib/x86_64-unknown-linux-gnu/libc++abi.a", 284*c8dee2aaSAndroid Build Coastguard Worker "lib/x86_64-unknown-linux-gnu/libunwind.a", 285*c8dee2aaSAndroid Build Coastguard Worker "lib64/ld-linux-x86-64.so.2", 286*c8dee2aaSAndroid Build Coastguard Worker ] + glob( 287*c8dee2aaSAndroid Build Coastguard Worker include = [ 288*c8dee2aaSAndroid Build Coastguard Worker "lib/clang/15.0.1/lib/**", 289*c8dee2aaSAndroid Build Coastguard Worker "lib/x86_64-linux-gnu/**", 290*c8dee2aaSAndroid Build Coastguard Worker "usr/lib/x86_64-linux-gnu/**", 291*c8dee2aaSAndroid Build Coastguard Worker ], 292*c8dee2aaSAndroid Build Coastguard Worker allow_empty = False, 293*c8dee2aaSAndroid Build Coastguard Worker ), 294*c8dee2aaSAndroid Build Coastguard Worker visibility = ["//visibility:public"], 295*c8dee2aaSAndroid Build Coastguard Worker) 296*c8dee2aaSAndroid Build Coastguard Worker 297*c8dee2aaSAndroid Build Coastguard Workerfilegroup( 298*c8dee2aaSAndroid Build Coastguard Worker name = "link_libs", 299*c8dee2aaSAndroid Build Coastguard Worker srcs = [ 300*c8dee2aaSAndroid Build Coastguard Worker "lib/x86_64-unknown-linux-gnu/libc++.a", 301*c8dee2aaSAndroid Build Coastguard Worker "lib/x86_64-unknown-linux-gnu/libc++abi.a", 302*c8dee2aaSAndroid Build Coastguard Worker], 303*c8dee2aaSAndroid Build Coastguard Worker visibility = ["//visibility:public"], 304*c8dee2aaSAndroid Build Coastguard Worker) 305*c8dee2aaSAndroid Build Coastguard Worker""", 306*c8dee2aaSAndroid Build Coastguard Worker executable = False, 307*c8dee2aaSAndroid Build Coastguard Worker ) 308*c8dee2aaSAndroid Build Coastguard Worker 309*c8dee2aaSAndroid Build Coastguard Worker# https://bazel.build/rules/repository_rules 310*c8dee2aaSAndroid Build Coastguard Workerdownload_linux_amd64_toolchain = repository_rule( 311*c8dee2aaSAndroid Build Coastguard Worker implementation = _download_linux_amd64_toolchain_impl, 312*c8dee2aaSAndroid Build Coastguard Worker attrs = {}, 313*c8dee2aaSAndroid Build Coastguard Worker doc = "Downloads clang, and all supporting headers, executables, " + 314*c8dee2aaSAndroid Build Coastguard Worker "and shared libraries required to build Skia on a Linux amd64 host", 315*c8dee2aaSAndroid Build Coastguard Worker) 316