From fee3b8233fceec06f7d06881848890f20d4896e3 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 31 Mar 2025 14:29:15 -0400 Subject: [PATCH 01/77] Build Android image From 3656ddd7945611fa72b39590fdb58778a1b9f483 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 31 Mar 2025 14:32:03 -0400 Subject: [PATCH 02/77] Checkout without ssh --- swift-ci/sdks/static-linux/build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift-ci/sdks/static-linux/build b/swift-ci/sdks/static-linux/build index 6e984960..b7ad4ba6 100755 --- a/swift-ci/sdks/static-linux/build +++ b/swift-ci/sdks/static-linux/build @@ -35,7 +35,7 @@ esac $DOCKER build --build-arg OS_ARCH_SUFFIX=$OS_ARCH_SUFFIX -t static-swift-linux . # Check-out the sources -scripts/fetch-source.sh --clone-with-ssh --source-dir source +scripts/fetch-source.sh --source-dir source mkdir -p products From 3337239524b5642f0ec64977def1660969b03893 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 31 Mar 2025 16:14:41 -0400 Subject: [PATCH 03/77] Retry build if it fails --- .github/workflows/pull_request.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index ab7601c9..bb46a73e 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -30,7 +30,8 @@ jobs: uses: actions/checkout@v4 - name: Build Docker images working-directory: swift-ci/sdks/static-linux - run: ./build + # need 2 since the initial checkout sometimes fails + run: ./build || ./build android-build: name: Build Android image From bf9feecfc9cf8ed7372e330de4b95c8e00c0a688 Mon Sep 17 00:00:00 2001 From: Mishal Shah Date: Mon, 31 Mar 2025 13:14:24 -0700 Subject: [PATCH 04/77] Swift 6.1 Release Dockerfiles (#456) --- 6.1/amazonlinux/2/Dockerfile | 69 +++++++++++++ 6.1/amazonlinux/2/slim/Dockerfile | 49 ++++++++++ 6.1/debian/12/Dockerfile | 71 ++++++++++++++ 6.1/debian/12/slim/Dockerfile | 58 +++++++++++ 6.1/fedora/39/Dockerfile | 65 +++++++++++++ 6.1/fedora/39/slim/Dockerfile | 48 +++++++++ 6.1/rhel-ubi/9/Dockerfile | 63 ++++++++++++ 6.1/rhel-ubi/9/slim/Dockerfile | 48 +++++++++ 6.1/ubuntu/20.04/Dockerfile | 72 ++++++++++++++ 6.1/ubuntu/20.04/slim/Dockerfile | 58 +++++++++++ 6.1/ubuntu/22.04/Dockerfile | 73 ++++++++++++++ 6.1/ubuntu/22.04/slim/Dockerfile | 58 +++++++++++ 6.1/ubuntu/24.04/Dockerfile | 73 ++++++++++++++ 6.1/ubuntu/24.04/slim/Dockerfile | 59 +++++++++++ 6.1/windows/1809/Dockerfile | 156 ++++++++++++++++++++++++++++++ 6.1/windows/LTSC2022/Dockerfile | 156 ++++++++++++++++++++++++++++++ 16 files changed, 1176 insertions(+) create mode 100644 6.1/amazonlinux/2/Dockerfile create mode 100644 6.1/amazonlinux/2/slim/Dockerfile create mode 100644 6.1/debian/12/Dockerfile create mode 100644 6.1/debian/12/slim/Dockerfile create mode 100644 6.1/fedora/39/Dockerfile create mode 100644 6.1/fedora/39/slim/Dockerfile create mode 100644 6.1/rhel-ubi/9/Dockerfile create mode 100644 6.1/rhel-ubi/9/slim/Dockerfile create mode 100644 6.1/ubuntu/20.04/Dockerfile create mode 100644 6.1/ubuntu/20.04/slim/Dockerfile create mode 100644 6.1/ubuntu/22.04/Dockerfile create mode 100644 6.1/ubuntu/22.04/slim/Dockerfile create mode 100644 6.1/ubuntu/24.04/Dockerfile create mode 100644 6.1/ubuntu/24.04/slim/Dockerfile create mode 100644 6.1/windows/1809/Dockerfile create mode 100644 6.1/windows/LTSC2022/Dockerfile diff --git a/6.1/amazonlinux/2/Dockerfile b/6.1/amazonlinux/2/Dockerfile new file mode 100644 index 00000000..e5ccc59b --- /dev/null +++ b/6.1/amazonlinux/2/Dockerfile @@ -0,0 +1,69 @@ +FROM amazonlinux:2 +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +RUN yum -y install \ + binutils \ + gcc \ + git \ + unzip \ + glibc-static \ + gzip \ + libbsd \ + libcurl-devel \ + libedit \ + libicu \ + libsqlite \ + libstdc++-static \ + libuuid \ + libxml2-devel \ + openssl-devel \ + tar \ + tzdata \ + zlib-devel + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=amazonlinux2 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(rpm --eval '%{_arch}')"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'x86_64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'aarch64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + && echo $SWIFT_BIN_URL \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + && chmod -R o+r /usr/lib/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz + +# Print Installed Swift Version +RUN swift --version diff --git a/6.1/amazonlinux/2/slim/Dockerfile b/6.1/amazonlinux/2/slim/Dockerfile new file mode 100644 index 00000000..67b5b9cc --- /dev/null +++ b/6.1/amazonlinux/2/slim/Dockerfile @@ -0,0 +1,49 @@ +FROM amazonlinux:2 +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=amazonlinux2 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(rpm --eval '%{_arch}')"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'x86_64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'aarch64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && yum -y install tar gzip \ + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/lib/swift/linux \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/libexec/swift/linux \ + && chmod -R o+r /usr/lib/swift /usr/libexec/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ + && yum autoremove -y tar gzip diff --git a/6.1/debian/12/Dockerfile b/6.1/debian/12/Dockerfile new file mode 100644 index 00000000..09022a69 --- /dev/null +++ b/6.1/debian/12/Dockerfile @@ -0,0 +1,71 @@ +FROM debian:12 + +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + binutils-gold \ + libicu-dev \ + libcurl4-openssl-dev \ + libedit-dev \ + libsqlite3-dev \ + libncurses-dev \ + libpython3-dev \ + libxml2-dev \ + pkg-config \ + uuid-dev \ + tzdata \ + git \ + gcc \ + libstdc++-12-dev \ + && rm -r /var/lib/apt/lists/* + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=debian12 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(dpkg --print-architecture)"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'amd64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'arm64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + # - Grab curl and gpg here so we cache better up above + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -q update && apt-get -q install -y curl gpg && rm -rf /var/lib/apt/lists/* \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + && chmod -R o+r /usr/lib/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ + && apt-get purge --auto-remove -y curl gpg + +# Print Installed Swift Version +RUN swift --version diff --git a/6.1/debian/12/slim/Dockerfile b/6.1/debian/12/slim/Dockerfile new file mode 100644 index 00000000..1f75a4f2 --- /dev/null +++ b/6.1/debian/12/slim/Dockerfile @@ -0,0 +1,58 @@ +FROM debian:12 +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + libcurl4 \ + libxml2 \ + tzdata \ + && rm -r /var/lib/apt/lists/* + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=debian12 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(dpkg --print-architecture)"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'amd64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'arm64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + # - Grab curl and gpg here so we cache better up above + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -q update && apt-get -q install -y curl gpg && rm -rf /var/lib/apt/lists/* \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/lib/swift/linux \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/libexec/swift/linux \ + && chmod -R o+r /usr/lib/swift /usr/libexec/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ + && apt-get purge --auto-remove -y curl gpg diff --git a/6.1/fedora/39/Dockerfile b/6.1/fedora/39/Dockerfile new file mode 100644 index 00000000..4d1cc247 --- /dev/null +++ b/6.1/fedora/39/Dockerfile @@ -0,0 +1,65 @@ +FROM fedora:39 + +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +RUN yum -y install \ + binutils \ + gcc \ + git \ + unzip \ + libcurl-devel \ + libedit-devel \ + libicu-devel \ + sqlite-devel \ + libuuid-devel \ + libxml2-devel \ + python3-devel \ + libstdc++-devel \ + libstdc++-static + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=fedora39 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(rpm --eval '%{_arch}')"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'x86_64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'aarch64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + && echo $SWIFT_BIN_URL \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + && chmod -R o+r /usr/lib/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz + +# Print Installed Swift Version +RUN swift --version diff --git a/6.1/fedora/39/slim/Dockerfile b/6.1/fedora/39/slim/Dockerfile new file mode 100644 index 00000000..881cd1bb --- /dev/null +++ b/6.1/fedora/39/slim/Dockerfile @@ -0,0 +1,48 @@ +FROM fedora:39 + +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=fedora39 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -ex; \ + ARCH_NAME="$(rpm --eval '%{_arch}')"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'x86_64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'aarch64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/lib/swift/linux \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/libexec/swift/linux \ + && chmod -R o+r /usr/lib/swift /usr/libexec/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz diff --git a/6.1/rhel-ubi/9/Dockerfile b/6.1/rhel-ubi/9/Dockerfile new file mode 100644 index 00000000..e511f4d3 --- /dev/null +++ b/6.1/rhel-ubi/9/Dockerfile @@ -0,0 +1,63 @@ +FROM redhat/ubi9 +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +RUN yum -y install \ + git \ + gcc-c++ \ + libcurl-devel \ + libedit-devel \ + libuuid-devel \ + libxml2-devel \ + ncurses-devel \ + python3-devel \ + rsync \ + sqlite-devel \ + unzip \ + zip + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=ubi9 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(rpm --eval '%{_arch}')"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'x86_64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'aarch64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + && echo $SWIFT_BIN_URL \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + && chmod -R o+r /usr/lib/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz + +# Print Installed Swift Version +RUN swift --version diff --git a/6.1/rhel-ubi/9/slim/Dockerfile b/6.1/rhel-ubi/9/slim/Dockerfile new file mode 100644 index 00000000..9f095346 --- /dev/null +++ b/6.1/rhel-ubi/9/slim/Dockerfile @@ -0,0 +1,48 @@ +FROM redhat/ubi9 +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=ubi9 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(rpm --eval '%{_arch}')"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'x86_64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'aarch64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && yum -y install tar gzip \ + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/lib/swift/linux \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/libexec/swift/linux \ + && chmod -R o+r /usr/lib/swift /usr/libexec/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz diff --git a/6.1/ubuntu/20.04/Dockerfile b/6.1/ubuntu/20.04/Dockerfile new file mode 100644 index 00000000..0bf992f7 --- /dev/null +++ b/6.1/ubuntu/20.04/Dockerfile @@ -0,0 +1,72 @@ +FROM ubuntu:20.04 +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + binutils \ + git \ + unzip \ + gnupg2 \ + libc6-dev \ + libcurl4-openssl-dev \ + libedit2 \ + libgcc-9-dev \ + libpython3.8 \ + libsqlite3-0 \ + libstdc++-9-dev \ + libxml2-dev \ + libz3-dev \ + pkg-config \ + tzdata \ + zlib1g-dev \ + && rm -r /var/lib/apt/lists/* + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=ubuntu20.04 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(dpkg --print-architecture)"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'amd64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'arm64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + # - Grab curl here so we cache better up above + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + && chmod -R o+r /usr/lib/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ + && apt-get purge --auto-remove -y curl + +# Print Installed Swift Version +RUN swift --version diff --git a/6.1/ubuntu/20.04/slim/Dockerfile b/6.1/ubuntu/20.04/slim/Dockerfile new file mode 100644 index 00000000..b9954a69 --- /dev/null +++ b/6.1/ubuntu/20.04/slim/Dockerfile @@ -0,0 +1,58 @@ +FROM ubuntu:20.04 +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + libcurl4 \ + libxml2 \ + tzdata \ + && rm -r /var/lib/apt/lists/* + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=ubuntu20.04 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(dpkg --print-architecture)"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'amd64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'arm64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + # - Grab curl and gpg here so we cache better up above + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -q update && apt-get -q install -y curl gnupg && rm -rf /var/lib/apt/lists/* \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/lib/swift/linux \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/libexec/swift/linux \ + && chmod -R o+r /usr/lib/swift /usr/libexec/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ + && apt-get purge --auto-remove -y curl gnupg diff --git a/6.1/ubuntu/22.04/Dockerfile b/6.1/ubuntu/22.04/Dockerfile new file mode 100644 index 00000000..d3be1e41 --- /dev/null +++ b/6.1/ubuntu/22.04/Dockerfile @@ -0,0 +1,73 @@ +FROM ubuntu:22.04 +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + binutils \ + git \ + unzip \ + gnupg2 \ + libc6-dev \ + libcurl4-openssl-dev \ + libedit2 \ + libgcc-11-dev \ + libpython3-dev \ + libsqlite3-0 \ + libstdc++-11-dev \ + libxml2-dev \ + libz3-dev \ + pkg-config \ + python3-lldb-13 \ + tzdata \ + zlib1g-dev \ + && rm -r /var/lib/apt/lists/* + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=ubuntu22.04 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(dpkg --print-architecture)"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'amd64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'arm64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + # - Grab curl here so we cache better up above + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + && chmod -R o+r /usr/lib/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ + && apt-get purge --auto-remove -y curl + +# Print Installed Swift Version +RUN swift --version diff --git a/6.1/ubuntu/22.04/slim/Dockerfile b/6.1/ubuntu/22.04/slim/Dockerfile new file mode 100644 index 00000000..0b733079 --- /dev/null +++ b/6.1/ubuntu/22.04/slim/Dockerfile @@ -0,0 +1,58 @@ +FROM ubuntu:22.04 +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + libcurl4 \ + libxml2 \ + tzdata \ + && rm -r /var/lib/apt/lists/* + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=ubuntu22.04 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(dpkg --print-architecture)"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'amd64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'arm64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + # - Grab curl and gpg here so we cache better up above + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -q update && apt-get -q install -y curl gnupg && rm -rf /var/lib/apt/lists/* \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/lib/swift/linux \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/libexec/swift/linux \ + && chmod -R o+r /usr/lib/swift /usr/libexec/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ + && apt-get purge --auto-remove -y curl gnupg diff --git a/6.1/ubuntu/24.04/Dockerfile b/6.1/ubuntu/24.04/Dockerfile new file mode 100644 index 00000000..41f35ef0 --- /dev/null +++ b/6.1/ubuntu/24.04/Dockerfile @@ -0,0 +1,73 @@ +FROM ubuntu:24.04 +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + binutils \ + git \ + unzip \ + gnupg2 \ + libc6-dev \ + libcurl4-openssl-dev \ + libedit2 \ + libgcc-13-dev \ + libpython3-dev \ + libsqlite3-0 \ + libstdc++-13-dev \ + libxml2-dev \ + libncurses-dev \ + libz3-dev \ + pkg-config \ + tzdata \ + zlib1g-dev \ + && rm -r /var/lib/apt/lists/* + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=ubuntu24.04 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(dpkg --print-architecture)"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'amd64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'arm64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + # - Grab curl here so we cache better up above + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + && chmod -R o+r /usr/lib/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ + && apt-get purge --auto-remove -y curl + +# Print Installed Swift Version +RUN swift --version diff --git a/6.1/ubuntu/24.04/slim/Dockerfile b/6.1/ubuntu/24.04/slim/Dockerfile new file mode 100644 index 00000000..8b430261 --- /dev/null +++ b/6.1/ubuntu/24.04/slim/Dockerfile @@ -0,0 +1,59 @@ +FROM ubuntu:24.04 + +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + libcurl4 \ + libxml2 \ + tzdata \ + && rm -r /var/lib/apt/lists/* + +# Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little + +# pub rsa4096 2024-09-16 [SC] [expires: 2026-09-16] +# 52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +# uid [ unknown] Swift 6.x Release Signing Key +ARG SWIFT_SIGNING_KEY=52BB7E3DE28A71BE22EC05FFEF80A866B47A981F +ARG SWIFT_PLATFORM=ubuntu24.04 +ARG SWIFT_BRANCH=swift-6.1-release +ARG SWIFT_VERSION=swift-6.1-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org + +ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ + SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_WEBROOT=$SWIFT_WEBROOT + +RUN set -e; \ + ARCH_NAME="$(dpkg --print-architecture)"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'amd64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'arm64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + # - Grab curl and gpg here so we cache better up above + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -q update && apt-get -q install -y curl gnupg && rm -rf /var/lib/apt/lists/* \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && tar -xzf swift.tar.gz --directory / --strip-components=1 \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/lib/swift/linux \ + $SWIFT_VERSION-$SWIFT_PLATFORM$OS_ARCH_SUFFIX/usr/libexec/swift/linux \ + && chmod -R o+r /usr/lib/swift /usr/libexec/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ + && apt-get purge --auto-remove -y curl gnupg diff --git a/6.1/windows/1809/Dockerfile b/6.1/windows/1809/Dockerfile new file mode 100644 index 00000000..1522366e --- /dev/null +++ b/6.1/windows/1809/Dockerfile @@ -0,0 +1,156 @@ +FROM mcr.microsoft.com/windows/servercore:1809 AS windows + +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] + +ENV PYTHONIOENCODING UTF-8 + +# Install Git. +# See: git-[version]-[bit].exe /SAVEINF=git.inf and /? +ARG GIT=https://github.com/git-for-windows/git/releases/download/v2.42.0.windows.2/Git-2.42.0.2-64-bit.exe +ARG GIT_SHA256=BD9B41641A258FD16D99BEECEC66132160331D685DFB4C714CEA2BCC78D63BDB +RUN Write-Host -NoNewLine ('Downloading {0} ... ' -f ${env:GIT}); \ + Invoke-WebRequest -Uri ${env:GIT} -OutFile git.exe; \ + Write-Host '✓'; \ + Write-Host -NoNewLine ('Verifying SHA256 ({0}) ... ' -f ${env:GIT_SHA256}); \ + $Hash = Get-FileHash git.exe -Algorithm sha256; \ + if ($Hash.Hash -eq ${env:GIT_SHA256}) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Hash.Hash); \ + exit 1; \ + } \ + Write-Host -NoNewLine 'Installing git ... '; \ + $Process = \ + Start-Process git.exe -Wait -PassThru -NoNewWindow -ArgumentList @( \ + '/SP-', \ + '/VERYSILENT', \ + '/SUPPRESSMSGBOXES', \ + '/NOCANCEL', \ + '/NORESTART', \ + '/CLOSEAPPLICATIONS', \ + '/FORCECLOSEAPPLICATIONS', \ + '/NOICONS', \ + '/COMPONENTS="gitlfs"', \ + '/EditorOption=VIM', \ + '/PathOption=Cmd', \ + '/SSHOption=OpenSSH', \ + '/CURLOption=WinSSL', \ + '/UseCredentialManager=Enabled', \ + '/EnableSymlinks=Enabled', \ + '/EnableFSMonitor=Enabled' \ + ); \ + if ($Process.ExitCode -eq 0) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Process.ExitCode); \ + exit 1; \ + } \ + Remove-Item -Force git.exe; \ + Remove-Item -ErrorAction SilentlyContinue -Force -Recurse ${env:TEMP}\* + +# Install Python +ARG PY39=https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe +ARG PY39_SHA256=FB3D0466F3754752CA7FD839A09FFE53375FF2C981279FD4BC23A005458F7F5D +RUN Write-Host -NoNewLine ('Downloading {0} ... ' -f ${env:PY39}); \ + Invoke-WebRequest -Uri ${env:PY39} -OutFile python-3.9.13-amd64.exe; \ + Write-Host '✓'; \ + Write-Host -NoNewLine ('Verifying SHA256 ({0}) ... ' -f ${env:PY39_SHA256});\ + $Hash = Get-FileHash python-3.9.13-amd64.exe -Algorithm sha256; \ + if ($Hash.Hash -eq ${env:PY39_SHA256}) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Hash.Hash); \ + exit 1; \ + } \ + Write-Host -NoNewLine 'Installing Python ... '; \ + $Process = \ + Start-Process python-3.9.13-amd64.exe -Wait -PassThru -NoNewWindow -ArgumentList @( \ + 'AssociateFiles=0', \ + 'Include_doc=0', \ + 'Include_debug=0', \ + 'Include_lib=1', \ + 'Include_tcltk=0', \ + 'Include_test=0', \ + 'InstallAllUsers=1', \ + 'InstallLauncherAllUsers=0', \ + 'PrependPath=1', \ + '/quiet' \ + ); \ + if ($Process.ExitCode -eq 0) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Process.ExitCode); \ + exit 1; \ + } \ + Remove-Item -Force python-3.9.13-amd64.exe; \ + Remove-Item -ErrorAction SilentlyContinue -Force -Recurse ${env:TEMP}\* + +# Install Visual Studio Build Tools +ARG VSB=https://download.visualstudio.microsoft.com/download/pr/5536698c-711c-4834-876f-2817d31a2ef2/c792bdb0fd46155de19955269cac85d52c4c63c23db2cf43d96b9390146f9390/vs_BuildTools.exe +ARG VSB_SHA256=C792BDB0FD46155DE19955269CAC85D52C4C63C23DB2CF43D96B9390146F9390 +RUN Write-Host -NoNewLine ('Downloading {0} ... ' -f ${env:VSB}); \ + Invoke-WebRequest -Uri ${env:VSB} -OutFile vs_buildtools.exe; \ + Write-Host '✓'; \ + Write-Host -NoNewLine ('Verifying SHA256 ({0}) ... ' -f ${env:VSB_SHA256}); \ + $Hash = Get-FileHash vs_buildtools.exe -Algorithm sha256; \ + if ($Hash.Hash -eq ${env:VSB_SHA256}) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Hash.Hash); \ + } \ + Write-Host -NoNewLine 'Installing Visual Studio Build Tools ... '; \ + $Process = \ + Start-Process vs_buildtools.exe -Wait -PassThru -NoNewWindow -ArgumentList @( \ + '--quiet', \ + '--wait', \ + '--norestart', \ + '--nocache', \ + '--add', 'Microsoft.VisualStudio.Component.Windows11SDK.22000', \ + '--add', 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64' \ + ); \ + if ($Process.ExitCode -eq 0 -or $Process.ExitCode -eq 3010) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Process.ExitCode); \ + exit 1; \ + } \ + Remove-Item -Force vs_buildtools.exe; \ + Remove-Item -ErrorAction SilentlyContinue -Force -Recurse ${env:TEMP}\* + +# Install Swift toolchain. +ARG SWIFT=https://download.swift.org/swift-6.1-release/windows10/swift-6.1-RELEASE/swift-6.1-RELEASE-windows10.exe +ARG SWIFT_SHA256=8C8AEF8B4A449EBEEFD74482AC767E269F8CBE7E520871C1D103C7079C5F4C6A +RUN Write-Host -NoNewLine ('Downloading {0} ... ' -f ${env:SWIFT}); \ + Invoke-WebRequest -Uri ${env:SWIFT} -OutFile installer.exe; \ + Write-Host '✓'; \ + Write-Host -NoNewLine ('Verifying SHA256 ({0}) ... ' -f ${env:SWIFT_SHA256}); \ + $Hash = Get-FileHash installer.exe -Algorithm sha256; \ + if ($Hash.Hash -eq ${env:SWIFT_SHA256}) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Hash.Hash); \ + exit 1; \ + } \ + Write-Host -NoNewLine 'Installing Swift ... '; \ + $Process = \ + Start-Process installer.exe -Wait -PassThru -NoNewWindow -ArgumentList @( \ + '/quiet', \ + '/norestart' \ + ); \ + if ($Process.ExitCode -eq 0) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Process.ExitCode); \ + exit 1; \ + } \ + Remove-Item -Force installer.exe; \ + Remove-Item -ErrorAction SilentlyContinue -Force -Recurse ${env:TEMP}\* + +# Default to powershell +# FIXME: we need to grant ContainerUser the SeCreateSymbolicLinkPrivilege +# privilege so that it can create symbolic links. +# USER ContainerUser +CMD ["powershell.exe", "-nologo", "-ExecutionPolicy", "Bypass"] diff --git a/6.1/windows/LTSC2022/Dockerfile b/6.1/windows/LTSC2022/Dockerfile new file mode 100644 index 00000000..3d85730d --- /dev/null +++ b/6.1/windows/LTSC2022/Dockerfile @@ -0,0 +1,156 @@ +FROM mcr.microsoft.com/windows/servercore:ltsc2022 AS windows + +LABEL maintainer="Swift Infrastructure " +LABEL description="Docker Container for the Swift programming language" + +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] + +ENV PYTHONIOENCODING UTF-8 + +# Install Git. +# See: git-[version]-[bit].exe /SAVEINF=git.inf and /? +ARG GIT=https://github.com/git-for-windows/git/releases/download/v2.42.0.windows.2/Git-2.42.0.2-64-bit.exe +ARG GIT_SHA256=BD9B41641A258FD16D99BEECEC66132160331D685DFB4C714CEA2BCC78D63BDB +RUN Write-Host -NoNewLine ('Downloading {0} ... ' -f ${env:GIT}); \ + Invoke-WebRequest -Uri ${env:GIT} -OutFile git.exe; \ + Write-Host '✓'; \ + Write-Host -NoNewLine ('Verifying SHA256 ({0}) ... ' -f ${env:GIT_SHA256}); \ + $Hash = Get-FileHash git.exe -Algorithm sha256; \ + if ($Hash.Hash -eq ${env:GIT_SHA256}) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Hash.Hash); \ + exit 1; \ + } \ + Write-Host -NoNewLine 'Installing git ... '; \ + $Process = \ + Start-Process git.exe -Wait -PassThru -NoNewWindow -ArgumentList @( \ + '/SP-', \ + '/VERYSILENT', \ + '/SUPPRESSMSGBOXES', \ + '/NOCANCEL', \ + '/NORESTART', \ + '/CLOSEAPPLICATIONS', \ + '/FORCECLOSEAPPLICATIONS', \ + '/NOICONS', \ + '/COMPONENTS="gitlfs"', \ + '/EditorOption=VIM', \ + '/PathOption=Cmd', \ + '/SSHOption=OpenSSH', \ + '/CURLOption=WinSSL', \ + '/UseCredentialManager=Enabled', \ + '/EnableSymlinks=Enabled', \ + '/EnableFSMonitor=Enabled' \ + ); \ + if ($Process.ExitCode -eq 0) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Process.ExitCode); \ + exit 1; \ + } \ + Remove-Item -Force git.exe; \ + Remove-Item -ErrorAction SilentlyContinue -Force -Recurse ${env:TEMP}\* + +# Install Python +ARG PY39=https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe +ARG PY39_SHA256=FB3D0466F3754752CA7FD839A09FFE53375FF2C981279FD4BC23A005458F7F5D +RUN Write-Host -NoNewLine ('Downloading {0} ... ' -f ${env:PY39}); \ + Invoke-WebRequest -Uri ${env:PY39} -OutFile python-3.9.13-amd64.exe; \ + Write-Host '✓'; \ + Write-Host -NoNewLine ('Verifying SHA256 ({0}) ... ' -f ${env:PY39_SHA256});\ + $Hash = Get-FileHash python-3.9.13-amd64.exe -Algorithm sha256; \ + if ($Hash.Hash -eq ${env:PY39_SHA256}) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Hash.Hash); \ + exit 1; \ + } \ + Write-Host -NoNewLine 'Installing Python ... '; \ + $Process = \ + Start-Process python-3.9.13-amd64.exe -Wait -PassThru -NoNewWindow -ArgumentList @( \ + 'AssociateFiles=0', \ + 'Include_doc=0', \ + 'Include_debug=0', \ + 'Include_lib=1', \ + 'Include_tcltk=0', \ + 'Include_test=0', \ + 'InstallAllUsers=1', \ + 'InstallLauncherAllUsers=0', \ + 'PrependPath=1', \ + '/quiet' \ + ); \ + if ($Process.ExitCode -eq 0) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Process.ExitCode); \ + exit 1; \ + } \ + Remove-Item -Force python-3.9.13-amd64.exe; \ + Remove-Item -ErrorAction SilentlyContinue -Force -Recurse ${env:TEMP}\* + +# Install Visual Studio Build Tools +ARG VSB=https://download.visualstudio.microsoft.com/download/pr/5536698c-711c-4834-876f-2817d31a2ef2/c792bdb0fd46155de19955269cac85d52c4c63c23db2cf43d96b9390146f9390/vs_BuildTools.exe +ARG VSB_SHA256=C792BDB0FD46155DE19955269CAC85D52C4C63C23DB2CF43D96B9390146F9390 +RUN Write-Host -NoNewLine ('Downloading {0} ... ' -f ${env:VSB}); \ + Invoke-WebRequest -Uri ${env:VSB} -OutFile vs_buildtools.exe; \ + Write-Host '✓'; \ + Write-Host -NoNewLine ('Verifying SHA256 ({0}) ... ' -f ${env:VSB_SHA256}); \ + $Hash = Get-FileHash vs_buildtools.exe -Algorithm sha256; \ + if ($Hash.Hash -eq ${env:VSB_SHA256}) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Hash.Hash); \ + } \ + Write-Host -NoNewLine 'Installing Visual Studio Build Tools ... '; \ + $Process = \ + Start-Process vs_buildtools.exe -Wait -PassThru -NoNewWindow -ArgumentList @( \ + '--quiet', \ + '--wait', \ + '--norestart', \ + '--nocache', \ + '--add', 'Microsoft.VisualStudio.Component.Windows11SDK.22000', \ + '--add', 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64' \ + ); \ + if ($Process.ExitCode -eq 0 -or $Process.ExitCode -eq 3010) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Process.ExitCode); \ + exit 1; \ + } \ + Remove-Item -Force vs_buildtools.exe; \ + Remove-Item -ErrorAction SilentlyContinue -Force -Recurse ${env:TEMP}\* + +# Install Swift toolchain. +ARG SWIFT=https://download.swift.org/swift-6.1-release/windows10/swift-6.1-RELEASE/swift-6.1-RELEASE-windows10.exe +ARG SWIFT_SHA256=8C8AEF8B4A449EBEEFD74482AC767E269F8CBE7E520871C1D103C7079C5F4C6A +RUN Write-Host -NoNewLine ('Downloading {0} ... ' -f ${env:SWIFT}); \ + Invoke-WebRequest -Uri ${env:SWIFT} -OutFile installer.exe; \ + Write-Host '✓'; \ + Write-Host -NoNewLine ('Verifying SHA256 ({0}) ... ' -f ${env:SWIFT_SHA256}); \ + $Hash = Get-FileHash installer.exe -Algorithm sha256; \ + if ($Hash.Hash -eq ${env:SWIFT_SHA256}) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Hash.Hash); \ + exit 1; \ + } \ + Write-Host -NoNewLine 'Installing Swift ... '; \ + $Process = \ + Start-Process installer.exe -Wait -PassThru -NoNewWindow -ArgumentList @( \ + '/quiet', \ + '/norestart' \ + ); \ + if ($Process.ExitCode -eq 0) { \ + Write-Host '✓'; \ + } else { \ + Write-Host ('✘ ({0})' -f $Process.ExitCode); \ + exit 1; \ + } \ + Remove-Item -Force installer.exe; \ + Remove-Item -ErrorAction SilentlyContinue -Force -Recurse ${env:TEMP}\* + +# Default to powershell +# FIXME: we need to grant ContainerUser the SeCreateSymbolicLinkPrivilege +# privilege so that it can create symbolic links. +# USER ContainerUser +CMD ["powershell.exe", "-nologo", "-ExecutionPolicy", "Bypass"] From dedc07b2152c5874d9cf187c9aa848eaf715d844 Mon Sep 17 00:00:00 2001 From: Chris McGee <87777443+cmcgee1024@users.noreply.github.com> Date: Mon, 31 Mar 2025 20:12:10 -0400 Subject: [PATCH 05/77] Change binutils-gold package dependency on Debian 12 to binutils (#457) --- 6.1/debian/12/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/6.1/debian/12/Dockerfile b/6.1/debian/12/Dockerfile index 09022a69..083e4199 100644 --- a/6.1/debian/12/Dockerfile +++ b/6.1/debian/12/Dockerfile @@ -5,7 +5,7 @@ LABEL description="Docker Container for the Swift programming language" RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ apt-get -q install -y \ - binutils-gold \ + binutils \ libicu-dev \ libcurl4-openssl-dev \ libedit-dev \ From 7c662590a27c264cdc857cce35b69a65726e9685 Mon Sep 17 00:00:00 2001 From: Justice Adams <107649528+justice-adams-apple@users.noreply.github.com> Date: Tue, 1 Apr 2025 18:06:46 -0700 Subject: [PATCH 06/77] Update installed packages after nightly platform expansion (#458) * update nightly-6.1 dependencies * update nightly-main dependencies * fix ubuntu images --- nightly-6.1/debian/12/Dockerfile | 56 ++++++++------------- nightly-6.1/debian/12/buildx/Dockerfile | 53 ++++++++----------- nightly-6.1/fedora/39/Dockerfile | 40 +++++---------- nightly-6.1/fedora/39/buildx/Dockerfile | 37 +++++--------- nightly-6.1/ubuntu/24.04/Dockerfile | 10 ++-- nightly-6.1/ubuntu/24.04/buildx/Dockerfile | 12 ++--- nightly-main/debian/12/Dockerfile | 53 ++++++++----------- nightly-main/debian/12/buildx/Dockerfile | 51 ++++++++----------- nightly-main/fedora/39/Dockerfile | 40 +++++---------- nightly-main/fedora/39/buildx/Dockerfile | 37 +++++--------- nightly-main/ubuntu/24.04/Dockerfile | 10 ++-- nightly-main/ubuntu/24.04/buildx/Dockerfile | 13 ++--- 12 files changed, 146 insertions(+), 266 deletions(-) diff --git a/nightly-6.1/debian/12/Dockerfile b/nightly-6.1/debian/12/Dockerfile index 06b09b8b..e242cdf0 100644 --- a/nightly-6.1/debian/12/Dockerfile +++ b/nightly-6.1/debian/12/Dockerfile @@ -3,35 +3,25 @@ FROM debian:12 RUN groupadd -g 998 build-user && \ useradd -m -r -u 998 -g build-user build-user -ENV DEBIAN_FRONTEND="noninteractive" - -RUN apt-get -y update && apt-get -y install \ - build-essential \ - clang \ - cmake \ - diffutils \ - git \ - icu-devtools \ - libcurl4-openssl-dev \ - libedit-dev \ - libicu-dev \ - libncurses-dev \ - libpython3-dev \ - libsqlite3-dev \ - libxml2-dev \ - ninja-build \ - pkg-config \ - python3-distutils \ - python3-pip \ - python3-pkg-resources \ - python3-psutil \ - rsync \ - swig \ - systemtap-sdt-dev \ - tzdata \ - uuid-dev \ - zip \ - libstdc++-12-dev +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + binutils-gold \ + curl \ + gpg \ + libicu-dev \ + libcurl4-openssl-dev \ + libedit-dev \ + libsqlite3-dev \ + libncurses-dev \ + libpython3-dev \ + libxml2-dev \ + pkg-config \ + uuid-dev \ + tzdata \ + git \ + gcc \ + libstdc++-12-dev \ + && rm -r /var/lib/apt/lists/* ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 @@ -46,9 +36,6 @@ ENV SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_WEBROOT=$SWIFT_WEBROOT \ SWIFT_PREFIX=$SWIFT_PREFIX -COPY swift-ci/dependencies/requirements.txt /dependencies/ -RUN pip3 install -r /dependencies/requirements.txt --break-system-packages - RUN set -e; \ ARCH_NAME="$(dpkg --print-architecture)"; \ url=; \ @@ -61,10 +48,7 @@ RUN set -e; \ ;; \ *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ esac; \ - # - Grab curl here so we cache better up above - export DEBIAN_FRONTEND=noninteractive \ - && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \ - && export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ + export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ && export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download_signature:' | sed 's/:[^:\/\/]/=/g') \ && export DOWNLOAD_DIR=$(echo $download | sed "s/-${SWIFT_PLATFORM}${OS_ARCH_SUFFIX}.tar.gz//g") \ && echo $DOWNLOAD_DIR > .swift_tag \ diff --git a/nightly-6.1/debian/12/buildx/Dockerfile b/nightly-6.1/debian/12/buildx/Dockerfile index 2a11d0d5..7487753c 100644 --- a/nightly-6.1/debian/12/buildx/Dockerfile +++ b/nightly-6.1/debian/12/buildx/Dockerfile @@ -3,35 +3,25 @@ FROM debian:12 as Base RUN groupadd -g 998 build-user && \ useradd -m -r -u 998 -g build-user build-user -ENV DEBIAN_FRONTEND="noninteractive" - -RUN apt-get -y update && apt-get -y install \ - build-essential \ - clang \ - cmake \ - diffutils \ - git \ - icu-devtools \ - libcurl4-openssl-dev \ - libedit-dev \ - libicu-dev \ - libncurses-dev \ - libpython3-dev \ - libsqlite3-dev \ - libxml2-dev \ - ninja-build \ - pkg-config \ - python3-distutils \ - python3-pip \ - python3-pkg-resources \ - python3-psutil \ - rsync \ - swig \ - systemtap-sdt-dev \ - tzdata \ - uuid-dev \ - zip \ - libstdc++-12-dev +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + binutils-gold \ + curl \ + gpg \ + libicu-dev \ + libcurl4-openssl-dev \ + libedit-dev \ + libsqlite3-dev \ + libncurses-dev \ + libpython3-dev \ + libxml2-dev \ + pkg-config \ + uuid-dev \ + tzdata \ + git \ + gcc \ + libstdc++-12-dev \ + && rm -r /var/lib/apt/lists/* ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 @@ -68,10 +58,7 @@ RUN set -e; \ ;; \ *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ esac; \ - # - Grab curl here so we cache better up above - export DEBIAN_FRONTEND=noninteractive \ - && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \ - && export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ + export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ && export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download_signature:' | sed 's/:[^:\/\/]/=/g') \ && export DOWNLOAD_DIR=$(echo $download | sed "s/-${SWIFT_PLATFORM}${OS_ARCH_SUFFIX}.tar.gz//g") \ && echo $DOWNLOAD_DIR > .swift_tag \ diff --git a/nightly-6.1/fedora/39/Dockerfile b/nightly-6.1/fedora/39/Dockerfile index bf2b7c36..0cc950fa 100644 --- a/nightly-6.1/fedora/39/Dockerfile +++ b/nightly-6.1/fedora/39/Dockerfile @@ -5,30 +5,19 @@ LABEL description="Docker Container for the Swift programming language" RUN groupadd -g 998 build-user && \ useradd -m -r -u 998 -g build-user build-user -RUN yum install -y \ - libcurl-devel \ - libedit-devel \ - libicu-devel \ - sqlite-devel \ - libuuid-devel \ - libxml2-devel \ - python3 \ - python3-pip \ - python3-devel \ - python3-distro \ - python3-setuptools \ - python3-six \ - rsync \ - swig \ - clang \ - perl-podlators \ - which \ - git \ - cmake \ - zip \ - unzip \ - diffutils \ - libstdc++-devel \ +RUN yum -y install \ + binutils \ + gcc \ + git \ + unzip \ + libcurl-devel \ + libedit-devel \ + libicu-devel \ + sqlite-devel \ + libuuid-devel \ + libxml2-devel \ + python3-devel \ + libstdc++-devel \ libstdc++-static @@ -49,9 +38,6 @@ ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_WEBROOT=$SWIFT_WEBROOT \ SWIFT_PREFIX=$SWIFT_PREFIX -COPY swift-ci/dependencies/requirements.txt /dependencies/ -RUN pip3 install -r /dependencies/requirements.txt - RUN set -e; \ ARCH_NAME="$(rpm --eval '%{_arch}')"; \ url=; \ diff --git a/nightly-6.1/fedora/39/buildx/Dockerfile b/nightly-6.1/fedora/39/buildx/Dockerfile index f326f65c..6d9b4407 100644 --- a/nightly-6.1/fedora/39/buildx/Dockerfile +++ b/nightly-6.1/fedora/39/buildx/Dockerfile @@ -5,30 +5,19 @@ LABEL description="Docker Container for the Swift programming language" RUN groupadd -g 998 build-user && \ useradd -m -r -u 998 -g build-user build-user -RUN yum install -y \ - libcurl-devel \ - libedit-devel \ - libicu-devel \ - sqlite-devel \ - libuuid-devel \ - libxml2-devel \ - python3 \ - python3-pip \ - python3-devel \ - python3-distro \ - python3-setuptools \ - python3-six \ - rsync \ - swig \ - clang \ - perl-podlators \ - which \ - git \ - cmake \ - zip \ - unzip \ - diffutils \ - libstdc++-devel \ +RUN yum -y install \ + binutils \ + gcc \ + git \ + unzip \ + libcurl-devel \ + libedit-devel \ + libicu-devel \ + sqlite-devel \ + libuuid-devel \ + libxml2-devel \ + python3-devel \ + libstdc++-devel \ libstdc++-static diff --git a/nightly-6.1/ubuntu/24.04/Dockerfile b/nightly-6.1/ubuntu/24.04/Dockerfile index 90033d62..df0f2de9 100644 --- a/nightly-6.1/ubuntu/24.04/Dockerfile +++ b/nightly-6.1/ubuntu/24.04/Dockerfile @@ -5,18 +5,18 @@ LABEL description="Docker Container for the Swift programming language" RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ apt-get -q install -y \ binutils \ + curl \ git \ - unzip \ gnupg2 \ libc6-dev \ libcurl4-openssl-dev \ + libncurses5-dev \ libedit2 \ libgcc-13-dev \ libpython3-dev \ libsqlite3-0 \ libstdc++-13-dev \ libxml2-dev \ - libncurses-dev \ libz3-dev \ pkg-config \ tzdata \ @@ -45,11 +45,7 @@ ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ RUN echo "${SWIFT_WEBROOT}/latest-build.yml" RUN set -e; \ - # - Grab curl here so we cache better up above - export DEBIAN_FRONTEND=noninteractive \ - && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \ - # - Latest Toolchain info - && export $(curl -s ${SWIFT_WEBROOT}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ + export $(curl -s ${SWIFT_WEBROOT}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ && export $(curl -s ${SWIFT_WEBROOT}/latest-build.yml | grep 'download_signature:' | sed 's/:[^:\/\/]/=/g') \ && export DOWNLOAD_DIR=$(echo $download | sed "s/-${OS_VER}.tar.gz//g") \ && echo $DOWNLOAD_DIR > .swift_tag \ diff --git a/nightly-6.1/ubuntu/24.04/buildx/Dockerfile b/nightly-6.1/ubuntu/24.04/buildx/Dockerfile index 964d1410..9e3190c0 100644 --- a/nightly-6.1/ubuntu/24.04/buildx/Dockerfile +++ b/nightly-6.1/ubuntu/24.04/buildx/Dockerfile @@ -5,21 +5,21 @@ LABEL description="Docker Container for the Swift programming language" RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ apt-get -q install -y \ binutils \ + curl \ git \ gnupg2 \ libc6-dev \ libcurl4-openssl-dev \ libncurses5-dev \ libedit2 \ - libgcc-11-dev \ + libgcc-13-dev \ libpython3-dev \ libsqlite3-0 \ - libstdc++-11-dev \ + libstdc++-13-dev \ libxml2-dev \ libz3-dev \ pkg-config \ tzdata \ - zip \ zlib1g-dev \ && rm -r /var/lib/apt/lists/* @@ -51,11 +51,7 @@ ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER$OS_ RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" RUN set -e; \ - # - Grab curl here so we cache better up above - export DEBIAN_FRONTEND=noninteractive \ - && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \ - # - Latest Toolchain info - && export $(curl -s ${PLATFORM_WEBROOT}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ + export $(curl -s ${PLATFORM_WEBROOT}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ && export $(curl -s ${PLATFORM_WEBROOT}/latest-build.yml | grep 'download_signature:' | sed 's/:[^:\/\/]/=/g') \ && export DOWNLOAD_DIR=$(echo $download | sed "s/-${OS_VER}.tar.gz//g") \ && echo $DOWNLOAD_DIR > .swift_tag \ diff --git a/nightly-main/debian/12/Dockerfile b/nightly-main/debian/12/Dockerfile index 09305d2b..1c129439 100644 --- a/nightly-main/debian/12/Dockerfile +++ b/nightly-main/debian/12/Dockerfile @@ -3,35 +3,25 @@ FROM debian:12 RUN groupadd -g 998 build-user && \ useradd -m -r -u 998 -g build-user build-user -ENV DEBIAN_FRONTEND="noninteractive" - -RUN apt-get -y update && apt-get -y install \ - build-essential \ - clang \ - cmake \ - diffutils \ - git \ - icu-devtools \ - libcurl4-openssl-dev \ - libedit-dev \ - libicu-dev \ - libncurses-dev \ - libpython3-dev \ - libsqlite3-dev \ - libxml2-dev \ - ninja-build \ - pkg-config \ - python3-distutils \ - python3-pip \ - python3-pkg-resources \ - python3-psutil \ - rsync \ - swig \ - systemtap-sdt-dev \ - tzdata \ - uuid-dev \ - zip \ - libstdc++-12-dev +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + binutils-gold \ + curl \ + gpg \ + libicu-dev \ + libcurl4-openssl-dev \ + libedit-dev \ + libsqlite3-dev \ + libncurses-dev \ + libpython3-dev \ + libxml2-dev \ + pkg-config \ + uuid-dev \ + tzdata \ + git \ + gcc \ + libstdc++-12-dev \ + && rm -r /var/lib/apt/lists/* ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 @@ -61,10 +51,7 @@ RUN set -e; \ ;; \ *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ esac; \ - # - Grab curl here so we cache better up above - export DEBIAN_FRONTEND=noninteractive \ - && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \ - && export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ + export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ && export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download_signature:' | sed 's/:[^:\/\/]/=/g') \ && export DOWNLOAD_DIR=$(echo $download | sed "s/-${SWIFT_PLATFORM}${OS_ARCH_SUFFIX}.tar.gz//g") \ && echo $DOWNLOAD_DIR > .swift_tag \ diff --git a/nightly-main/debian/12/buildx/Dockerfile b/nightly-main/debian/12/buildx/Dockerfile index 6927f1ae..669f80b8 100644 --- a/nightly-main/debian/12/buildx/Dockerfile +++ b/nightly-main/debian/12/buildx/Dockerfile @@ -5,33 +5,25 @@ RUN groupadd -g 998 build-user && \ ENV DEBIAN_FRONTEND="noninteractive" -RUN apt-get -y update && apt-get -y install \ - build-essential \ - clang \ - cmake \ - diffutils \ - git \ - icu-devtools \ - libcurl4-openssl-dev \ - libedit-dev \ - libicu-dev \ - libncurses-dev \ - libpython3-dev \ - libsqlite3-dev \ - libxml2-dev \ - ninja-build \ - pkg-config \ - python3-distutils \ - python3-pip \ - python3-pkg-resources \ - python3-psutil \ - rsync \ - swig \ - systemtap-sdt-dev \ - tzdata \ - uuid-dev \ - zip \ - libstdc++-12-dev +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ + apt-get -q install -y \ + binutils-gold \ + curl \ + gpg \ + libicu-dev \ + libcurl4-openssl-dev \ + libedit-dev \ + libsqlite3-dev \ + libncurses-dev \ + libpython3-dev \ + libxml2-dev \ + pkg-config \ + uuid-dev \ + tzdata \ + git \ + gcc \ + libstdc++-12-dev \ + && rm -r /var/lib/apt/lists/* ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 @@ -68,10 +60,7 @@ RUN set -e; \ ;; \ *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ esac; \ - # - Grab curl here so we cache better up above - export DEBIAN_FRONTEND=noninteractive \ - && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \ - && export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ + export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ && export $(curl -s ${SWIFT_WEBROOT}${OS_ARCH_SUFFIX}/latest-build.yml | grep 'download_signature:' | sed 's/:[^:\/\/]/=/g') \ && export DOWNLOAD_DIR=$(echo $download | sed "s/-${SWIFT_PLATFORM}${OS_ARCH_SUFFIX}.tar.gz//g") \ && echo $DOWNLOAD_DIR > .swift_tag \ diff --git a/nightly-main/fedora/39/Dockerfile b/nightly-main/fedora/39/Dockerfile index e58fc4cb..3dfa400a 100644 --- a/nightly-main/fedora/39/Dockerfile +++ b/nightly-main/fedora/39/Dockerfile @@ -5,30 +5,19 @@ LABEL description="Docker Container for the Swift programming language" RUN groupadd -g 998 build-user && \ useradd -m -r -u 998 -g build-user build-user -RUN yum install -y \ - libcurl-devel \ - libedit-devel \ - libicu-devel \ - sqlite-devel \ - libuuid-devel \ - libxml2-devel \ - python3 \ - python3-pip \ - python3-devel \ - python3-distro \ - python3-setuptools \ - python3-six \ - rsync \ - swig \ - clang \ - perl-podlators \ - which \ - git \ - cmake \ - zip \ - unzip \ - diffutils \ - libstdc++-devel \ +RUN yum -y install \ + binutils \ + gcc \ + git \ + unzip \ + libcurl-devel \ + libedit-devel \ + libicu-devel \ + sqlite-devel \ + libuuid-devel \ + libxml2-devel \ + python3-devel \ + libstdc++-devel \ libstdc++-static @@ -49,9 +38,6 @@ ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_WEBROOT=$SWIFT_WEBROOT \ SWIFT_PREFIX=$SWIFT_PREFIX -COPY swift-ci/dependencies/requirements.txt /dependencies/ -RUN pip3 install -r /dependencies/requirements.txt - RUN set -e; \ ARCH_NAME="$(rpm --eval '%{_arch}')"; \ url=; \ diff --git a/nightly-main/fedora/39/buildx/Dockerfile b/nightly-main/fedora/39/buildx/Dockerfile index 8b0cd722..f7144c56 100644 --- a/nightly-main/fedora/39/buildx/Dockerfile +++ b/nightly-main/fedora/39/buildx/Dockerfile @@ -5,30 +5,19 @@ LABEL description="Docker Container for the Swift programming language" RUN groupadd -g 998 build-user && \ useradd -m -r -u 998 -g build-user build-user -RUN yum install -y \ - libcurl-devel \ - libedit-devel \ - libicu-devel \ - sqlite-devel \ - libuuid-devel \ - libxml2-devel \ - python3 \ - python3-pip \ - python3-devel \ - python3-distro \ - python3-setuptools \ - python3-six \ - rsync \ - swig \ - clang \ - perl-podlators \ - which \ - git \ - cmake \ - zip \ - unzip \ - diffutils \ - libstdc++-devel \ +RUN yum -y install \ + binutils \ + gcc \ + git \ + unzip \ + libcurl-devel \ + libedit-devel \ + libicu-devel \ + sqlite-devel \ + libuuid-devel \ + libxml2-devel \ + python3-devel \ + libstdc++-devel \ libstdc++-static diff --git a/nightly-main/ubuntu/24.04/Dockerfile b/nightly-main/ubuntu/24.04/Dockerfile index 0a90ae56..0fc3783b 100644 --- a/nightly-main/ubuntu/24.04/Dockerfile +++ b/nightly-main/ubuntu/24.04/Dockerfile @@ -5,18 +5,18 @@ LABEL description="Docker Container for the Swift programming language" RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ apt-get -q install -y \ binutils \ + curl \ git \ - unzip \ gnupg2 \ libc6-dev \ libcurl4-openssl-dev \ + libncurses5-dev \ libedit2 \ libgcc-13-dev \ libpython3-dev \ libsqlite3-0 \ libstdc++-13-dev \ libxml2-dev \ - libncurses-dev \ libz3-dev \ pkg-config \ tzdata \ @@ -46,11 +46,7 @@ ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ RUN echo "${SWIFT_WEBROOT}/latest-build.yml" RUN set -e; \ - # - Grab curl here so we cache better up above - export DEBIAN_FRONTEND=noninteractive \ - && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \ - # - Latest Toolchain info - && export $(curl -s ${SWIFT_WEBROOT}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ + export $(curl -s ${SWIFT_WEBROOT}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ && export $(curl -s ${SWIFT_WEBROOT}/latest-build.yml | grep 'download_signature:' | sed 's/:[^:\/\/]/=/g') \ && export DOWNLOAD_DIR=$(echo $download | sed "s/-${OS_VER}.tar.gz//g") \ && echo $DOWNLOAD_DIR > .swift_tag \ diff --git a/nightly-main/ubuntu/24.04/buildx/Dockerfile b/nightly-main/ubuntu/24.04/buildx/Dockerfile index 078a28db..5846944a 100644 --- a/nightly-main/ubuntu/24.04/buildx/Dockerfile +++ b/nightly-main/ubuntu/24.04/buildx/Dockerfile @@ -5,24 +5,23 @@ LABEL description="Docker Container for the Swift programming language" RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ apt-get -q install -y \ binutils \ + curl \ git \ gnupg2 \ libc6-dev \ libcurl4-openssl-dev \ libncurses5-dev \ libedit2 \ - libgcc-11-dev \ + libgcc-13-dev \ libpython3-dev \ libsqlite3-0 \ - libstdc++-11-dev \ + libstdc++-13-dev \ libxml2-dev \ libz3-dev \ pkg-config \ tzdata \ - zip \ zlib1g-dev \ && rm -r /var/lib/apt/lists/* - # Everything up to here should cache nicely between Swift versions, assuming dev dependencies change little # gpg --keyid-format LONG -k FAF6989E1BC16FEA @@ -51,11 +50,7 @@ ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER$OS_ RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" RUN set -e; \ - # - Grab curl here so we cache better up above - export DEBIAN_FRONTEND=noninteractive \ - && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \ - # - Latest Toolchain info - && export $(curl -s ${PLATFORM_WEBROOT}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ + export $(curl -s ${PLATFORM_WEBROOT}/latest-build.yml | grep 'download:' | sed 's/:[^:\/\/]/=/g') \ && export $(curl -s ${PLATFORM_WEBROOT}/latest-build.yml | grep 'download_signature:' | sed 's/:[^:\/\/]/=/g') \ && export DOWNLOAD_DIR=$(echo $download | sed "s/-${OS_VER}.tar.gz//g") \ && echo $DOWNLOAD_DIR > .swift_tag \ From 8f25ca37a07a914df082ca06fceda76a150e0754 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Wed, 16 Apr 2025 18:07:10 -0400 Subject: [PATCH 07/77] Android SDK build --- .github/workflows/pull_request.yml | 11 +- swift-ci/sdks/android/build | 37 ++ swift-ci/sdks/android/scripts/build.sh | 410 ++++++++++++++++++ swift-ci/sdks/android/scripts/fetch-source.sh | 181 ++++++++ 4 files changed, 633 insertions(+), 6 deletions(-) create mode 100755 swift-ci/sdks/android/build create mode 100755 swift-ci/sdks/android/scripts/build.sh create mode 100755 swift-ci/sdks/android/scripts/fetch-source.sh diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index bb46a73e..09c34d80 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -25,22 +25,21 @@ jobs: static-linux-build: name: Build Static Linux image runs-on: ubuntu-latest + if: false steps: - name: Checkout repository uses: actions/checkout@v4 - name: Build Docker images working-directory: swift-ci/sdks/static-linux - # need 2 since the initial checkout sometimes fails - run: ./build || ./build + run: ./build android-build: - name: Build Android image - runs-on: ubuntu-latest - if: false + name: Build Android SDK + runs-on: ubuntu-24.04 steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Build Docker images + - name: Build Android SDK working-directory: swift-ci/sdks/android run: ./build diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build new file mode 100755 index 00000000..10b40a25 --- /dev/null +++ b/swift-ci/sdks/android/build @@ -0,0 +1,37 @@ +#!/bin/bash -ex +# Swift Android SDK: Top-level Build Script + +SDKROOT=${TMPDIR:-/tmp}/swift-android-sdk + +mkdir -p ${SDKROOT}/products + +# Check-out the sources +if [[ ! -d ${SDKROOT}/src ]]; then + scripts/fetch-source.sh --source-dir ${SDKROOT}/src +fi + +mkdir -p ${SDKROOT} + +export ANDROID_NDK_HOME=${SDKROOT}/ndk/android-ndk-r27c +export ANDROID_NDK=${ANDROID_NDK_HOME} + +if [[ ! -d ${ANDROID_NDK_HOME} ]]; then + mkdir -p $(dirname ${ANDROID_NDK_HOME}) + pushd $(dirname ${ANDROID_NDK_HOME}) + wget https://dl.google.com/android/repository/$(basename $ANDROID_NDK_HOME).zip + unzip $(basename $ANDROID_NDK_HOME).zip + popd +fi + +if [[ ! -d ${SDKROOT}/src ]]; then + ./scripts/fetch-source.sh --source-dir ${SDKROOT}/src +fi + +HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-$(dirname $(dirname $(which swiftc)))} +#HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-${HOME}/.local/share/swiftly/toolchains/6.1.0/usr} + +ARCH=aarch64 +#ARCH=x86_64 +./scripts/build.sh --products-dir ${SDKROOT}/prod --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --host-toolchain ${HOST_TOOLCHAIN} --archs $ARCH + + diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh new file mode 100755 index 00000000..a12e8a17 --- /dev/null +++ b/swift-ci/sdks/android/scripts/build.sh @@ -0,0 +1,410 @@ +#!/bin/bash +# Swift SDK for Android: Build Script +set -ex + +# Docker sets TERM to xterm if using a pty; we probably want +# xterm-256color, otherwise we only get eight colors +if [ -t 1 ]; then + if [[ "$TERM" == "xterm" ]]; then + export TERM=xterm-256color + fi +fi + +if [[ -n "$TERM" ]]; then + bold="" + white="" + grey="" + reset="" +else + bold=$(tput bold) + white=$(tput setaf 15) + grey=$(tput setaf 8) + reset=$(tput sgr0) +fi + +function cleanup { + echo "${reset}" +} +trap cleanup EXIT + +function header { + local text="$1" + echo "" + echo "${white}${bold}*** ${text} ***${reset}${grey}" + echo "" +} + +function usage { + cat < --products-dir --ndk-home --host-toolchain + [--name ] [--version ] [--build-dir ] + [--archs [, ...]] + +Build the Swift Android SDK. + +Options: + + --name Specify the name of the SDK bundle. + --version Specify the version of the Android SDK. + --source-dir Specify the path in which the sources can be found. + --ndk-home Specify the path to the Android NDK + --host-toolchain Specify the path to the host Swift toolchain + --products-dir Specify the path in which the products should be written. + --build-dir Specify the path in which intermediates should be stored. + --android-api Specify the Android API level + (Default is ${android_api}). + --archs [, ...] + Specify the architectures for which we should build + the SDK. + (Default is ${archs}). + --build Specify the CMake build type to use (Release, Debug, + RelWithDebInfo). + (Default is ${build_type}). + -j + --jobs Specify the number of parallel jobs to run at a time. + (Default is ${parallel_jobs}.) +EOF +} + +# Declare all the packages we depend on +declare -a packages + +function declare_package +{ + local name=$1 + local userVisibleName=$2 + local license=$3 + local url=$4 + + local snake=$(echo ${name} | tr '_' '-') + + declare -g ${name}_snake="$snake" + declare -g ${name}_name="$userVisibleName" + declare -g ${name}_license="$license" + declare -g ${name}_url="$url" + + packages+=(${name}) +} + +declare_package android_sdk \ + "Swift SDK for Android" \ + "Apache-2.0" "https://swift.org/install" +declare_package swift "swift" "Apache-2.0" "https://swift.org" +declare_package libxml2 "libxml2" "MIT" \ + "https://github.com/GNOME/libxml2" +declare_package curl "curl" "MIT" "https://curl.se" +declare_package boringssl "boringssl" "OpenSSL AND ISC AND MIT" \ + "https://boringssl.googlesource.com/boringssl/" +declare_package zlib "zlib" "Zlib" "https://zlib.net" + +# Parse command line arguments +android_sdk_version=0.1 +sdk_name= +archs=aarch64,armv7,x86_64,x86 +android_api=28 +build_type=RelWithDebInfo +parallel_jobs=$(($(nproc --all) + 2)) +source_dir= +ndk_home=${ANDROID_NDK} +build_dir=$(pwd)/build +products_dir= +# the location of the patches to apply +patch_dir=$(dirname $(dirname $(realpath $0))) + +while [ "$#" -gt 0 ]; do + case "$1" in + --source-dir) + source_dir="$2"; shift ;; + --ndk-home) + ndk_home="$2"; shift ;; + --host-toolchain) + host_toolchain="$2"; shift ;; + --build-dir) + build_dir="$2"; shift ;; + --android-api) + android_api="$2"; shift ;; + --products-dir) + products_dir="$2"; shift ;; + --name) + sdk_name="$2"; shift ;; + --archs) + archs="$2"; shift ;; + --version) + android_sdk_version="$2"; shift ;; + -j|--jobs) + parallel_jobs=$2; shift ;; + *) + echo "Unknown argument '$1'"; usage; exit 0 ;; + esac + shift +done + +# Change the commas for spaces +archs="${archs//,/ }" + +if [[ -z "$source_dir" || -z "$products_dir" || -z "$ndk_home" || -z "$host_toolchain" ]]; then + usage + exit 1 +fi + +if ! swiftc=$(which swiftc); then + echo "build.sh: Unable to find Swift compiler. You must have a Swift toolchain installed to build the Android SDK." + exit 1 +fi + +script_dir=$(dirname -- "${BASH_SOURCE[0]}") +resource_dir="${script_dir}/../resources" + +# Find the version numbers of the various dependencies +function describe { + pushd $1 >/dev/null 2>&1 + git describe --tags + popd >/dev/null 2>&1 +} +function versionFromTag { + desc=$(describe $1) + if [[ $desc == v* ]]; then + echo "${desc#v}" + else + echo "${desc}" + fi +} + +swift_version=$(describe ${source_dir}/swift-project/swift) +if [[ $swift_version == swift-* ]]; then + swift_version=${swift_version#swift-} +fi + +if [[ -z "$sdk_name" ]]; then + sdk_name=swift-${swift_version}_android-${android_sdk_version} +fi + +libxml2_version=$(versionFromTag ${source_dir}/libxml2) + +curl_desc=$(describe ${source_dir}/curl | tr '_' '.') +curl_version=${curl_desc#curl-} + +boringssl_version=$(describe ${source_dir}/boringssl) + +zlib_version=$(versionFromTag ${source_dir}/zlib) + +function quiet_pushd { + pushd "$1" >/dev/null 2>&1 +} +function quiet_popd { + popd >/dev/null 2>&1 +} + +header "Swift Android SDK build script" + +swift_dir=$(realpath $(dirname "$swiftc")/..) + +echo "Swift found at ${swift_dir}" +echo "Host toolchain found at ${host_toolchain}" +${host_toolchain}/bin/swift --version +echo "Android NDK found at ${ndk_home}" +${toolchain}/bin/clang --version +echo "Building for ${archs}" +echo "Sources are in ${source_dir}" +echo "Build will happen in ${build_dir}" +echo "Products will be placed in ${products_dir}" +echo +echo "Building from:" +echo " - Swift ${swift_version}" +echo " - libxml2 ${libxml2_version}" +echo " - curl ${curl_version}" +echo " - BoringSSL ${boringssl_version}" +echo " - zlib ${zlib_version}" + +function run() { + echo "$@" + "$@" +} + +HOST=linux-x86_64 +ndktoolchain=$ndk_home/toolchains/llvm/prebuilt/$HOST + +function export_toolchain_vars { + # needed for libxml, but breaks Swift build-script, + # so need to call unexport_toolchain_vars aferwards + export AR=$ndktoolchain/bin/llvm-ar + export AS=$ndktoolchain/bin/llvm-as + export CC=$ndktoolchain/bin/$compiler_target_host-clang + export CXX=$ndktoolchain/bin/$compiler_target_host-clang++ + export LD=$ndktoolchain/bin/ld + export RANLIB=$ndktoolchain/bin/llvm-ranlib + export STRIP=$ndktoolchain/bin/llvm-strip +} + +function unexport_toolchain_vars { + export AR= + export AS= + export CC= + export CXX= + export LD= + export RANLIB= + export STRIP= +} + +for arch in $archs; do + case $arch in + armv7) target_host="arm-linux-androideabi"; compiler_target_host="armv7a-linux-androideabi$android_api"; android_abi="armeabi-v7a" ;; + aarch64) target_host="aarch64-linux-android"; compiler_target_host="$target_host$android_api"; android_abi="arm64-v8a" ;; + x86) target_host="x86-linux-android"; compiler_target_host="$target_host$android_api"; android_abi="x86" ;; + x86_64) target_host="x86_64-linux-android"; compiler_target_host="$target_host$android_api"; android_abi="x86_64" ;; + *) echo "Unknown architecture '$1'"; usage; exit 0 ;; + esac + + sdk_root=${build_dir}/sdk_root/${arch} + mkdir -p "$sdk_root" + + header "Building libxml2 for $arch" + quiet_pushd ${source_dir}/libxml2 + run cmake \ + -G Ninja \ + -S ${source_dir}/libxml2 \ + -B ${build_dir}/$arch/libxml2 \ + -DANDROID_ABI=$android_abi \ + -DANDROID_PLATFORM=android-$android_api \ + -DCMAKE_TOOLCHAIN_FILE=$ndk_home/build/cmake/android.toolchain.cmake \ + -DCMAKE_BUILD_TYPE=$build_type \ + -DCMAKE_EXTRA_LINK_FLAGS="-rtlib=compiler-rt -unwindlib=libunwind -stdlib=libc++ -fuse-ld=lld -lc++ -lc++abi" \ + -DCMAKE_BUILD_TYPE=$build_type \ + -DCMAKE_INSTALL_PREFIX=$sdk_root/usr \ + -DLIBXML2_WITH_PYTHON=NO \ + -DLIBXML2_WITH_ICU=NO \ + -DLIBXML2_WITH_ICONV=NO \ + -DLIBXML2_WITH_LZMA=NO \ + -DBUILD_SHARED_LIBS=NO \ + -DBUILD_STATIC_LIBS=YES + + quiet_pushd ${build_dir}/$arch/libxml2 + run ninja -j$parallel_jobs + quiet_popd + + header "Installing libxml2 for $arch" + quiet_pushd ${build_dir}/$arch/libxml2 + run ninja -j$parallel_jobs install + quiet_popd + quiet_popd + + header "Building boringssl for ${compiler_target_host}" + quiet_pushd ${source_dir}/boringssl + run cmake \ + -GNinja \ + -B ${build_dir}/$arch/boringssl \ + -DANDROID_ABI=$android_abi \ + -DANDROID_PLATFORM=android-$android_api \ + -DCMAKE_TOOLCHAIN_FILE=$ndk_home/build/cmake/android.toolchain.cmake \ + -DCMAKE_BUILD_TYPE=$build_type \ + -DCMAKE_INSTALL_PREFIX=$sdk_root/usr \ + -DBUILD_SHARED_LIBS=NO \ + -DBUILD_STATIC_LIBS=YES + + quiet_pushd ${build_dir}/$arch/boringssl + run ninja -j$parallel_jobs + quiet_popd + + header "Installing BoringSSL for $arch" + quiet_pushd ${build_dir}/$arch/boringssl + run ninja -j$parallel_jobs install + quiet_popd + quiet_popd + + header "Building libcurl for ${compiler_target_host}" + quiet_pushd ${source_dir}/curl + run cmake \ + -G Ninja \ + -S ${source_dir}/curl \ + -B ${build_dir}/$arch/curl \ + -DANDROID_ABI=$android_abi \ + -DANDROID_PLATFORM=android-$android_api \ + -DCMAKE_TOOLCHAIN_FILE=$ndk_home/build/cmake/android.toolchain.cmake \ + -DCMAKE_BUILD_TYPE=$build_type \ + -DCMAKE_INSTALL_PREFIX=$sdk_root/usr \ + -DOPENSSL_ROOT_DIR=$sdk_root/usr \ + -DOPENSSL_INCLUDE_DIR=$sdk_root/usr/include \ + -DOPENSSL_SSL_LIBRARY=$sdk_root/usr/lib/libssl.a \ + -DOPENSSL_CRYPTO_LIBRARY=$sdk_root/usr/lib/libcrypto.a \ + -DCURL_USE_OPENSSL=ON \ + -DBUILD_SHARED_LIBS=NO \ + -DBUILD_STATIC_LIBS=YES \ + -DCURL_BUILD_TESTS=OFF \ + -DBUILD_CURL_EXE=NO + + quiet_pushd ${build_dir}/$arch/curl + run ninja -j$parallel_jobs + quiet_popd + + header "Installing libcurl for $arch" + quiet_pushd ${build_dir}/$arch/curl + run ninja -j$parallel_jobs install + quiet_popd + + quiet_popd + + header "Building Android SDK for ${compiler_target_host}" + quiet_pushd ${source_dir}/swift-project + # TODO: need to selectively apply patches based on release or not release + git apply $patch_dir/swift-android.patch || true + git apply -C1 $patch_dir/swift-android-ci.patch || true + + # need to un-apply libandroid-spawn since we don't need it for API ???+ + perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt + perl -pi -e 's/ STREQUAL Android\)/ STREQUAL AndroidDISABLED\)/g' swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt + + git apply $patch_dir/swift-android-ci-release.patch || true + git apply $patch_dir/swift-android-testing-release.patch || true + + perl -pi -e 's%String\(cString: getpass%\"fake\" //%' swiftpm/Sources/PackageRegistryCommand/PackageRegistryCommand+Auth.swift + + # TODO: only for release (for some reason) + LSP_BUILD="--sourcekit-lsp" + + build_type_flag="--debug" + case $build_type in + Debug) build_type_flag="--debug" ;; + Release) build_type_flag="--release" ;; + RelWithDebInfo) build_type_flag="--release-debuginfo" ;; + esac + + #./swift/utils/build-script --help + + #--reconfigure \ + ./swift/utils/build-script \ + $build_type_flag \ + --no-assertions \ + --android \ + --android-ndk $ndk_home \ + --android-arch $arch \ + --android-api-level $android_api \ + --native-swift-tools-path=$host_toolchain/bin \ + --native-clang-tools-path=$host_toolchain/bin \ + --cross-compile-hosts=android-$arch \ + --cross-compile-deps-path=$sdk_root \ + --install-destdir=$sdk_root \ + --build-llvm=0 \ + --build-swift-tools=0 \ + --skip-build-cmark \ + --skip-local-build \ + --build-swift-static-stdlib \ + --swiftpm \ + --llbuild --install-llbuild \ + --install-swift \ + --install-libdispatch \ + --install-foundation \ + --xctest --install-xctest \ + $LSP_BUILD \ + --swift-testing --install-swift-testing \ + --swift-install-components='compiler;clang-resource-dir-symlink;license;stdlib;sdk-overlay' \ + --cross-compile-append-host-target-to-destdir=False + + swiftc=$(find ${build_dir}/swift -name 'swiftc' | grep -v bootstrapping) + lld=$(find ${build_dir}/swift -name 'ld.lld') + + echo "built: ${swiftc}" + + quiet_popd + +done + diff --git a/swift-ci/sdks/android/scripts/fetch-source.sh b/swift-ci/sdks/android/scripts/fetch-source.sh new file mode 100755 index 00000000..1b4c093a --- /dev/null +++ b/swift-ci/sdks/android/scripts/fetch-source.sh @@ -0,0 +1,181 @@ +#!/bin/bash +# Swift Android SDK: Fetch Sources +set -e + +# Docker sets TERM to xterm if using a pty; we probably want +# xterm-256color, otherwise we only get eight colors +if [ -t 1 ]; then + if [[ "$TERM" == "xterm" ]]; then + export TERM=xterm-256color + fi +fi + +if [[ -n "$TERM" ]]; then + bold="" + white="" + grey="" + reset="" +else + bold=$(tput bold) + white=$(tput setaf 15) + grey=$(tput setaf 8) + reset=$(tput sgr0) +fi + +function cleanup { + echo "${reset}" +} +trap cleanup EXIT + +function header { + local text="$1" + echo "" + echo "${white}${bold}*** ${text} ***${reset}${grey}" + echo "" +} + +function usage { + cat <|--swift-tag + |--swift-version ] + [--curl-version ] + [--boringssl-version ] + [--zlib-version ] + [--clone-with-ssh] + [--source-dir ] + +Fetch all the sources required to build the fully statically linked Linux +SDK for Swift. Options are: + + --clone-with-ssh Use git-over-SSH rather than HTTPS where possible. + --source-dir Specify the path in which the sources should be checked + out. This directory will be created it if does not exist. + --swift-scheme + --swift-tag + --swift-version + Select the version of Swift to check out sources for. + If starts with "scheme:" or "tag:", it will + select a scheme or tag; otherwise it will be treated as + a version number. + --libxml2-version + --curl-version + --boringssl-version + --zlib-version + Select the versions of other dependencies. +EOF +} + +# Defaults +if [[ -z "${SWIFT_VERSION}" ]]; then + SWIFT_VERSION=scheme:release/6.1 +fi +if [[ -z "${LIBXML2_VERSION}" ]]; then + LIBXML2_VERSION=2.12.7 +fi +if [[ -z "${CURL_VERSION}" ]]; then + CURL_VERSION=8.7.1 +fi +if [[ -z "${BORINGSSL_VERSION}" ]]; then + BORINGSSL_VERSION=fips-20220613 +fi +if [[ -z "${ZLIB_VERSION}" ]]; then + ZLIB_VERSION=1.3.1 +fi + +clone_with_ssh=false +while [ "$#" -gt 0 ]; do + case "$1" in + --swift-scheme) + SWIFT_VERSION="scheme:$2"; shift ;; + --swift-tag) + SWIFT_VERSION="tag:$2"; shift ;; + --swift-version) + SWIFT_VERSION="$2"; shift ;; + --libxml2-version) + LIBXML2_VERSION="$2"; shift ;; + --curl-version) + CURL_VERSION="$2"; shift ;; + --boringssl-version) + BORINGSSL_VERSION="$2"; shift ;; + --zlib-version) + ZLIB_VERSION="$2"; shift ;; + --clone-with-ssh) + clone_with_ssh=true ;; + --source-dir) + source_dir="$2"; shift ;; + *) + usage; exit 0 ;; + esac + shift +done + +if [[ ! -z "$source_dir" ]]; then + mkdir -p "$source_dir" +else + source_dir=. +fi + +if [[ "$clone_with_ssh" == "true" ]]; then + github=git@github.com: + clone_arg=--clone-with-ssh +else + github=https://github.com/ + clone_arg=--clone +fi + +cd "$source_dir" + +# Fetch Swift +header "Fetching Swift" + +mkdir -p swift-project +pushd swift-project >/dev/null + +[[ -d swift ]] || git clone ${github}apple/swift.git +cd swift + +# Get its dependencies +header "Fetching Swift Dependencies" + +extra_args="--skip-history --all-repositories" +if [[ $SWIFT_VERSION == scheme:* ]]; then + utils/update-checkout ${clone_arg} --scheme ${SWIFT_VERSION#scheme:} ${extra_args} +elif [[ $SWIFT_VERSION == tag:* ]]; then + utils/update-checkout ${clone_arg} --tag ${SWIFT_VERSION#tag:} ${extra_args} +else + utils/update-checkout ${clone_arg} --tag swift-${SWIFT_VERSION}-RELEASE ${extra_args} +fi + +popd >/dev/null + +# Fetch libxml2 +header "Fetching libxml2" + +[[ -d libxml2 ]] || git clone ${github}GNOME/libxml2.git +pushd libxml2 >/dev/null 2>&1 +git checkout v${LIBXML2_VERSION} +popd >/dev/null 2>&1 + +# Fetch curl +header "Fetching curl" + +[[ -d curl ]] || git clone ${github}curl/curl.git +pushd curl >/dev/null 2>&1 +git checkout curl-$(echo ${CURL_VERSION} | tr '.' '_') +popd >/dev/null 2>&1 + +# Fetch BoringSSL (also can't clone using ssh) +header "Fetching BoringSSL" + +[[ -d boringssl ]] || git clone https://boringssl.googlesource.com/boringssl +pushd boringssl >/dev/null 2>&1 +git checkout ${BORINGSSL_VERSION} +popd >/dev/null 2>&1 + +# Fetch zlib +header "Fetching zlib" + +[[ -d zlib ]] || git clone ${github}madler/zlib.git +pushd zlib >/dev/null 2>&1 +git checkout v${ZLIB_VERSION} +popd >/dev/null 2>&1 From e396c4144a00570ba22242c871245d74d9dd105a Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Wed, 16 Apr 2025 18:35:22 -0400 Subject: [PATCH 08/77] Android SDK build --- swift-ci/sdks/android/build | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 10b40a25..55a4c4a5 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -1,15 +1,11 @@ #!/bin/bash -ex # Swift Android SDK: Top-level Build Script -SDKROOT=${TMPDIR:-/tmp}/swift-android-sdk - -mkdir -p ${SDKROOT}/products - -# Check-out the sources -if [[ ! -d ${SDKROOT}/src ]]; then - scripts/fetch-source.sh --source-dir ${SDKROOT}/src -fi +# the architecture(s) to build +ARCH=aarch64 +#ARCH=x86_64,aarch64 +SDKROOT=${TMPDIR:-/tmp}/swift-android-sdk mkdir -p ${SDKROOT} export ANDROID_NDK_HOME=${SDKROOT}/ndk/android-ndk-r27c @@ -18,11 +14,20 @@ export ANDROID_NDK=${ANDROID_NDK_HOME} if [[ ! -d ${ANDROID_NDK_HOME} ]]; then mkdir -p $(dirname ${ANDROID_NDK_HOME}) pushd $(dirname ${ANDROID_NDK_HOME}) - wget https://dl.google.com/android/repository/$(basename $ANDROID_NDK_HOME).zip - unzip $(basename $ANDROID_NDK_HOME).zip + NDKFILE=$(basename $ANDROID_NDK_HOME)-linux.zip + wget https://dl.google.com/android/repository/${NDKFILE} + unzip ${NDKFILE} popd fi + +mkdir -p ${SDKROOT}/products + +# Check-out the sources +if [[ ! -d ${SDKROOT}/src ]]; then + scripts/fetch-source.sh --source-dir ${SDKROOT}/src +fi + if [[ ! -d ${SDKROOT}/src ]]; then ./scripts/fetch-source.sh --source-dir ${SDKROOT}/src fi @@ -30,8 +35,6 @@ fi HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-$(dirname $(dirname $(which swiftc)))} #HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-${HOME}/.local/share/swiftly/toolchains/6.1.0/usr} -ARCH=aarch64 -#ARCH=x86_64 ./scripts/build.sh --products-dir ${SDKROOT}/prod --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --host-toolchain ${HOST_TOOLCHAIN} --archs $ARCH From e0e98bad593d270eb0c004918f15e117dda71c72 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Wed, 16 Apr 2025 18:49:53 -0400 Subject: [PATCH 09/77] Android SDK build --- swift-ci/sdks/android/build | 18 ++++++++++++------ swift-ci/sdks/android/scripts/build.sh | 7 ++++--- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 55a4c4a5..f2f90cd7 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -8,6 +8,17 @@ ARCH=aarch64 SDKROOT=${TMPDIR:-/tmp}/swift-android-sdk mkdir -p ${SDKROOT} +# fetch the patches +PATCHDIR=${SDKROOT}/patches +if [[ ! -d ${PATCHDIR} ]]; then + git clone https://github.com/finagolfin/swift-android-sdk.git ${PATCHDIR} +fi + +HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-$(dirname $(dirname $(which swiftc)))} +#HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-${HOME}/.local/share/swiftly/toolchains/6.1.0/usr} + +${HOST_TOOLCHAIN}/bin/swift --version + export ANDROID_NDK_HOME=${SDKROOT}/ndk/android-ndk-r27c export ANDROID_NDK=${ANDROID_NDK_HOME} @@ -20,7 +31,6 @@ if [[ ! -d ${ANDROID_NDK_HOME} ]]; then popd fi - mkdir -p ${SDKROOT}/products # Check-out the sources @@ -32,9 +42,5 @@ if [[ ! -d ${SDKROOT}/src ]]; then ./scripts/fetch-source.sh --source-dir ${SDKROOT}/src fi -HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-$(dirname $(dirname $(which swiftc)))} -#HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-${HOME}/.local/share/swiftly/toolchains/6.1.0/usr} - -./scripts/build.sh --products-dir ${SDKROOT}/prod --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --host-toolchain ${HOST_TOOLCHAIN} --archs $ARCH - +./scripts/build.sh --patch-dir ${PATCHDIR} --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --host-toolchain ${HOST_TOOLCHAIN} --archs $ARCH diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index a12e8a17..92f6ff09 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -108,13 +108,14 @@ source_dir= ndk_home=${ANDROID_NDK} build_dir=$(pwd)/build products_dir= -# the location of the patches to apply -patch_dir=$(dirname $(dirname $(realpath $0))) +patch_dir= while [ "$#" -gt 0 ]; do case "$1" in --source-dir) source_dir="$2"; shift ;; + --patch-dir) + patch_dir="$2"; shift ;; --ndk-home) ndk_home="$2"; shift ;; --host-toolchain) @@ -142,7 +143,7 @@ done # Change the commas for spaces archs="${archs//,/ }" -if [[ -z "$source_dir" || -z "$products_dir" || -z "$ndk_home" || -z "$host_toolchain" ]]; then +if [[ -z "$source_dir" || -z "$products_dir" || -z "$patch_dir" || -z "$ndk_home" || -z "$host_toolchain" ]]; then usage exit 1 fi From a6289728ee68f5b869907c97cc5a70fb16efade0 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Wed, 16 Apr 2025 19:55:40 -0400 Subject: [PATCH 10/77] Android SDK build --- .github/workflows/pull_request.yml | 5 ++++- swift-ci/sdks/android/build | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 09c34d80..f4abe32f 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -9,6 +9,7 @@ jobs: build: name: Build Docker images runs-on: ubuntu-latest + if: false steps: - name: Checkout repository uses: actions/checkout@v4 @@ -41,5 +42,7 @@ jobs: uses: actions/checkout@v4 - name: Build Android SDK working-directory: swift-ci/sdks/android - run: ./build + run: | + apt install ninja-build + ./build diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index f2f90cd7..74310991 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -4,6 +4,8 @@ # the architecture(s) to build ARCH=aarch64 #ARCH=x86_64,aarch64 +NDK=android-ndk-r27c +API=28 SDKROOT=${TMPDIR:-/tmp}/swift-android-sdk mkdir -p ${SDKROOT} @@ -19,7 +21,7 @@ HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-$(dirname $(dirname $(which swiftc)))} ${HOST_TOOLCHAIN}/bin/swift --version -export ANDROID_NDK_HOME=${SDKROOT}/ndk/android-ndk-r27c +export ANDROID_NDK_HOME=${SDKROOT}/ndk/${NDK} export ANDROID_NDK=${ANDROID_NDK_HOME} if [[ ! -d ${ANDROID_NDK_HOME} ]]; then @@ -42,5 +44,5 @@ if [[ ! -d ${SDKROOT}/src ]]; then ./scripts/fetch-source.sh --source-dir ${SDKROOT}/src fi -./scripts/build.sh --patch-dir ${PATCHDIR} --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --host-toolchain ${HOST_TOOLCHAIN} --archs $ARCH +./scripts/build.sh --patch-dir ${PATCHDIR} --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --android-api ${API} --host-toolchain ${HOST_TOOLCHAIN} --archs $ARCH From 42cfd3bacd06d5e733b769750f0aeb3b3c7828a1 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Wed, 16 Apr 2025 20:07:35 -0400 Subject: [PATCH 11/77] Android SDK build --- .github/workflows/pull_request.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index f4abe32f..39d24c29 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -43,6 +43,6 @@ jobs: - name: Build Android SDK working-directory: swift-ci/sdks/android run: | - apt install ninja-build + sudo apt install ninja-build ./build From 2e9df8ec6b2851399f78294fc14d1802229145d3 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Wed, 16 Apr 2025 21:20:06 -0400 Subject: [PATCH 12/77] Android SDK build --- swift-ci/sdks/android/build | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 74310991..1d693587 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -10,6 +10,30 @@ API=28 SDKROOT=${TMPDIR:-/tmp}/swift-android-sdk mkdir -p ${SDKROOT} +# Install a Swift host toolchain if it isn't already present +SWIFT_ROOT=${SDKROOT}/host-toolchain +HOST_ARCH=ubuntu24.04 +SWIFT_VERSION=6.1 +SWIFT_TAG="swift-${SWIFT_VERSION}-RELEASE" +SWIFT_BRANCH="swift-$(echo $SWIFT_TAG | cut -d- -f2)-release" +SWIFT_BASE=$SWIFT_TAG-$HOST_ARCH + +if [[ ! -d $SWIFT_ROOT ]]; then + mkdir -p $SWIFT_ROOT + pushd $SWIFT_ROOT + + + SWIFT_URL="https://download.swift.org/$SWIFT_BRANCH/$(echo $HOST_ARCH | tr -d '.')/$SWIFT_TAG/$SWIFT_BASE.tar.gz" + wget -q $SWIFT_URL + tar xzf $SWIFT_BASE.tar.gz + + popd +fi + +$SWIFT_ROOT/$SWIFT_BASE/usr/bin/swift --version +# ensure the correct Swift is first in the PATH +export PATH=$SWIFT_ROOT/$SWIFT_BASE/usr/bin:$PATH + # fetch the patches PATCHDIR=${SDKROOT}/patches if [[ ! -d ${PATCHDIR} ]]; then From 353511a86b29689e44e048670ea35271393aec38 Mon Sep 17 00:00:00 2001 From: Andrew Sukach <134116196+sookach@users.noreply.github.com> Date: Mon, 14 Apr 2025 14:58:34 -0700 Subject: [PATCH 13/77] Fedora 41 Dockerfile (#464) --- swift-ci/main/fedora/41/Dockerfile | 82 ++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 swift-ci/main/fedora/41/Dockerfile diff --git a/swift-ci/main/fedora/41/Dockerfile b/swift-ci/main/fedora/41/Dockerfile new file mode 100644 index 00000000..cee95234 --- /dev/null +++ b/swift-ci/main/fedora/41/Dockerfile @@ -0,0 +1,82 @@ +FROM fedora:41 + +RUN groupadd -g 998 build-user && \ + useradd -m -r -u 998 -g build-user build-user + +RUN yum install -y \ + libcurl-devel \ + libedit-devel \ + libicu-devel \ + sqlite-devel \ + libuuid-devel \ + libxml2-devel \ + python3 \ + python3-pip \ + python3-devel \ + python3-distro \ + python3-setuptools \ + python3-six \ + rsync \ + swig \ + clang \ + perl-podlators \ + which \ + git \ + cmake \ + zip \ + unzip \ + diffutils \ + libstdc++-devel \ + libstdc++-static \ + ninja-build \ + gnupg + +ARG SWIFT_PLATFORM=fedora39 +ARG SWIFT_VERSION=6.1 +ARG SWIFT_BRANCH=swift-${SWIFT_VERSION}-release +ARG SWIFT_TAG=swift-${SWIFT_VERSION}-RELEASE +ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} + +ENV SWIFT_PLATFORM=$SWIFT_PLATFORM \ + SWIFT_VERSION=$SWIFT_VERSION \ + SWIFT_BRANCH=$SWIFT_BRANCH \ + SWIFT_TAG=$SWIFT_TAG \ + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX + +COPY swift-ci/dependencies/requirements.txt /dependencies/ +RUN pip3 install -r /dependencies/requirements.txt + +RUN set -e; \ + ARCH_NAME="$(rpm --eval '%{_arch}')"; \ + url=; \ + case "${ARCH_NAME##*-}" in \ + 'x86_64') \ + OS_ARCH_SUFFIX=''; \ + ;; \ + 'aarch64') \ + OS_ARCH_SUFFIX='-aarch64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \ + esac; \ + SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \ + && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_TAG/$SWIFT_TAG-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \ + && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \ + && echo $SWIFT_BIN_URL \ + # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify. + && export GNUPGHOME="$(mktemp -d)" \ + && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \ + && curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \ + && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ + # - Unpack the toolchain, set libs permissions, and clean up. + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz + +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" + +USER build-user + +WORKDIR /home/build-user From 31af52d9f6a73499870a3ed3002c85b50353dc4d Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 31 Mar 2025 14:29:15 -0400 Subject: [PATCH 14/77] Build Android image From 0c436f9e7a3c09eb9849aa257a5517f4e19d1b40 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 31 Mar 2025 14:29:15 -0400 Subject: [PATCH 15/77] Build Android image From 2bc10dfbbac2e0facd34a8cb7dca3e505b827233 Mon Sep 17 00:00:00 2001 From: Mishal Shah Date: Mon, 31 Mar 2025 13:14:24 -0700 Subject: [PATCH 16/77] Swift 6.1 Release Dockerfiles (#456) --- 6.1/debian/12/Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/6.1/debian/12/Dockerfile b/6.1/debian/12/Dockerfile index 083e4199..ac8cb4c7 100644 --- a/6.1/debian/12/Dockerfile +++ b/6.1/debian/12/Dockerfile @@ -5,7 +5,11 @@ LABEL description="Docker Container for the Swift programming language" RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ apt-get -q install -y \ +<<<<<<< HEAD binutils \ +======= + binutils-gold \ +>>>>>>> bf9feec (Swift 6.1 Release Dockerfiles (#456)) libicu-dev \ libcurl4-openssl-dev \ libedit-dev \ From b4ccd68a6b7f7aa41cc201a4b576d93f7f383d5a Mon Sep 17 00:00:00 2001 From: Chris McGee <87777443+cmcgee1024@users.noreply.github.com> Date: Mon, 31 Mar 2025 20:12:10 -0400 Subject: [PATCH 17/77] Change binutils-gold package dependency on Debian 12 to binutils (#457) --- 6.1/debian/12/Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/6.1/debian/12/Dockerfile b/6.1/debian/12/Dockerfile index ac8cb4c7..83e6af41 100644 --- a/6.1/debian/12/Dockerfile +++ b/6.1/debian/12/Dockerfile @@ -5,11 +5,15 @@ LABEL description="Docker Container for the Swift programming language" RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && apt-get -q update && \ apt-get -q install -y \ +<<<<<<< HEAD <<<<<<< HEAD binutils \ ======= binutils-gold \ >>>>>>> bf9feec (Swift 6.1 Release Dockerfiles (#456)) +======= + binutils \ +>>>>>>> dedc07b (Change binutils-gold package dependency on Debian 12 to binutils (#457)) libicu-dev \ libcurl4-openssl-dev \ libedit-dev \ From c1cfaa394acd92aaaacc2624180171a389b14a61 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 31 Mar 2025 14:29:15 -0400 Subject: [PATCH 18/77] Build Android image From 1fce8ff80d54a18db8dd2f678c3ffdb65cb0da20 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 31 Mar 2025 14:29:15 -0400 Subject: [PATCH 19/77] Build Android image From 893d6bfda4b9b42e87121dc5506ff4123fcc7b0f Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 31 Mar 2025 14:29:15 -0400 Subject: [PATCH 20/77] Build Android image From 530626e4ead4bae8875d28da0699b055a38e2fdb Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Wed, 16 Apr 2025 22:23:10 -0400 Subject: [PATCH 21/77] Android SDK build --- swift-ci/sdks/android/build | 21 +++++++-------------- swift-ci/sdks/android/scripts/build.sh | 2 ++ swift-ci/sdks/static-linux/build | 2 +- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 1d693587..bc7c7393 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -22,7 +22,6 @@ if [[ ! -d $SWIFT_ROOT ]]; then mkdir -p $SWIFT_ROOT pushd $SWIFT_ROOT - SWIFT_URL="https://download.swift.org/$SWIFT_BRANCH/$(echo $HOST_ARCH | tr -d '.')/$SWIFT_TAG/$SWIFT_BASE.tar.gz" wget -q $SWIFT_URL tar xzf $SWIFT_BASE.tar.gz @@ -30,9 +29,12 @@ if [[ ! -d $SWIFT_ROOT ]]; then popd fi -$SWIFT_ROOT/$SWIFT_BASE/usr/bin/swift --version +#HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-$(dirname $(dirname $(which swiftc)))} +HOST_TOOLCHAIN=$SWIFT_ROOT/$SWIFT_BASE/usr +$HOST_TOOLCHAIN/bin/swift --version + # ensure the correct Swift is first in the PATH -export PATH=$SWIFT_ROOT/$SWIFT_BASE/usr/bin:$PATH +export PATH=$HOST_TOOLCHAIN/bin:$PATH # fetch the patches PATCHDIR=${SDKROOT}/patches @@ -40,11 +42,6 @@ if [[ ! -d ${PATCHDIR} ]]; then git clone https://github.com/finagolfin/swift-android-sdk.git ${PATCHDIR} fi -HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-$(dirname $(dirname $(which swiftc)))} -#HOST_TOOLCHAIN=${HOST_TOOLCHAIN:-${HOME}/.local/share/swiftly/toolchains/6.1.0/usr} - -${HOST_TOOLCHAIN}/bin/swift --version - export ANDROID_NDK_HOME=${SDKROOT}/ndk/${NDK} export ANDROID_NDK=${ANDROID_NDK_HOME} @@ -52,8 +49,8 @@ if [[ ! -d ${ANDROID_NDK_HOME} ]]; then mkdir -p $(dirname ${ANDROID_NDK_HOME}) pushd $(dirname ${ANDROID_NDK_HOME}) NDKFILE=$(basename $ANDROID_NDK_HOME)-linux.zip - wget https://dl.google.com/android/repository/${NDKFILE} - unzip ${NDKFILE} + wget -q https://dl.google.com/android/repository/${NDKFILE} + unzip -q ${NDKFILE} popd fi @@ -64,9 +61,5 @@ if [[ ! -d ${SDKROOT}/src ]]; then scripts/fetch-source.sh --source-dir ${SDKROOT}/src fi -if [[ ! -d ${SDKROOT}/src ]]; then - ./scripts/fetch-source.sh --source-dir ${SDKROOT}/src -fi - ./scripts/build.sh --patch-dir ${PATCHDIR} --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --android-api ${API} --host-toolchain ${HOST_TOOLCHAIN} --archs $ARCH diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 92f6ff09..2161dd7d 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -353,6 +353,8 @@ for arch in $archs; do # need to un-apply libandroid-spawn since we don't need it for API ???+ perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt perl -pi -e 's/ STREQUAL Android\)/ STREQUAL AndroidDISABLED\)/g' swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt + # fix for Process.swift:953:57: error: value of optional type 'posix_spawnattr_t?' (aka 'Optional') must be unwrapped to a value of type 'posix_spawnattr_t' (aka 'OpaquePointer') + perl -pi -e 's%canImport\(Darwin\) \|\| os\(Android\) \|\| os\(OpenBSD\)%canImport\(Darwin\) || os\(AndroidXXX\) || os\(OpenBSD\)%g' swift-corelibs-foundation/Sources/Foundation/Process.swift git apply $patch_dir/swift-android-ci-release.patch || true git apply $patch_dir/swift-android-testing-release.patch || true diff --git a/swift-ci/sdks/static-linux/build b/swift-ci/sdks/static-linux/build index b7ad4ba6..6e984960 100755 --- a/swift-ci/sdks/static-linux/build +++ b/swift-ci/sdks/static-linux/build @@ -35,7 +35,7 @@ esac $DOCKER build --build-arg OS_ARCH_SUFFIX=$OS_ARCH_SUFFIX -t static-swift-linux . # Check-out the sources -scripts/fetch-source.sh --source-dir source +scripts/fetch-source.sh --clone-with-ssh --source-dir source mkdir -p products From a28c1c1b1768e0e74bc8e858f3b8026cc922af43 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Wed, 16 Apr 2025 22:35:58 -0400 Subject: [PATCH 22/77] Android SDK build --- swift-ci/sdks/android/build | 31 +++++++++++---- swift-ci/sdks/android/scripts/build.sh | 52 +++----------------------- 2 files changed, 29 insertions(+), 54 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index bc7c7393..b46e2e8d 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -36,12 +36,6 @@ $HOST_TOOLCHAIN/bin/swift --version # ensure the correct Swift is first in the PATH export PATH=$HOST_TOOLCHAIN/bin:$PATH -# fetch the patches -PATCHDIR=${SDKROOT}/patches -if [[ ! -d ${PATCHDIR} ]]; then - git clone https://github.com/finagolfin/swift-android-sdk.git ${PATCHDIR} -fi - export ANDROID_NDK_HOME=${SDKROOT}/ndk/${NDK} export ANDROID_NDK=${ANDROID_NDK_HOME} @@ -61,5 +55,28 @@ if [[ ! -d ${SDKROOT}/src ]]; then scripts/fetch-source.sh --source-dir ${SDKROOT}/src fi -./scripts/build.sh --patch-dir ${PATCHDIR} --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --android-api ${API} --host-toolchain ${HOST_TOOLCHAIN} --archs $ARCH +# fetch and apply the patches +PATCHDIR=${SDKROOT}/patches +if [[ ! -d ${PATCHDIR} ]]; then + git clone https://github.com/finagolfin/swift-android-sdk.git ${PATCHDIR} +fi + +pushd ${SDKROOT}/src/swift-project + # TODO: need to selectively apply patches based on release or not release + git apply $PATCHDIR/swift-android.patch || true + git apply -C1 $PATCHDIR/swift-android-ci.patch || true + + # need to un-apply libandroid-spawn since we don't need it for API ???+ + perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt + perl -pi -e 's/ STREQUAL Android\)/ STREQUAL AndroidDISABLED\)/g' swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt + # fix for Process.swift:953:57: error: value of optional type 'posix_spawnattr_t?' (aka 'Optional') must be unwrapped to a value of type 'posix_spawnattr_t' (aka 'OpaquePointer') + perl -pi -e 's%canImport\(Darwin\) \|\| os\(Android\) \|\| os\(OpenBSD\)%canImport\(Darwin\) || os\(AndroidXXX\) || os\(OpenBSD\)%g' swift-corelibs-foundation/Sources/Foundation/Process.swift + + git apply $PATCHDIR/swift-android-ci-release.patch || true + git apply $PATCHDIR/swift-android-testing-release.patch || true + + perl -pi -e 's%String\(cString: getpass%\"fake\" //%' swiftpm/Sources/PackageRegistryCommand/PackageRegistryCommand+Auth.swift +popd + +./scripts/build.sh --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --android-api ${API} --host-toolchain ${HOST_TOOLCHAIN} --archs $ARCH diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 2161dd7d..140c9be4 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -108,14 +108,11 @@ source_dir= ndk_home=${ANDROID_NDK} build_dir=$(pwd)/build products_dir= -patch_dir= while [ "$#" -gt 0 ]; do case "$1" in --source-dir) source_dir="$2"; shift ;; - --patch-dir) - patch_dir="$2"; shift ;; --ndk-home) ndk_home="$2"; shift ;; --host-toolchain) @@ -143,7 +140,7 @@ done # Change the commas for spaces archs="${archs//,/ }" -if [[ -z "$source_dir" || -z "$products_dir" || -z "$patch_dir" || -z "$ndk_home" || -z "$host_toolchain" ]]; then +if [[ -z "$source_dir" || -z "$products_dir" || -z "$ndk_home" || -z "$host_toolchain" ]]; then usage exit 1 fi @@ -222,30 +219,10 @@ function run() { "$@" } -HOST=linux-x86_64 -ndktoolchain=$ndk_home/toolchains/llvm/prebuilt/$HOST - -function export_toolchain_vars { - # needed for libxml, but breaks Swift build-script, - # so need to call unexport_toolchain_vars aferwards - export AR=$ndktoolchain/bin/llvm-ar - export AS=$ndktoolchain/bin/llvm-as - export CC=$ndktoolchain/bin/$compiler_target_host-clang - export CXX=$ndktoolchain/bin/$compiler_target_host-clang++ - export LD=$ndktoolchain/bin/ld - export RANLIB=$ndktoolchain/bin/llvm-ranlib - export STRIP=$ndktoolchain/bin/llvm-strip -} +#HOST=linux-x86_64 +HOST=$(uname -s -m | tr '[:upper:]' '[:lower:]' | tr ' ' '-') -function unexport_toolchain_vars { - export AR= - export AS= - export CC= - export CXX= - export LD= - export RANLIB= - export STRIP= -} +ndktoolchain=$ndk_home/toolchains/llvm/prebuilt/$HOST for arch in $archs; do case $arch in @@ -341,26 +318,10 @@ for arch in $archs; do quiet_pushd ${build_dir}/$arch/curl run ninja -j$parallel_jobs install quiet_popd - quiet_popd header "Building Android SDK for ${compiler_target_host}" quiet_pushd ${source_dir}/swift-project - # TODO: need to selectively apply patches based on release or not release - git apply $patch_dir/swift-android.patch || true - git apply -C1 $patch_dir/swift-android-ci.patch || true - - # need to un-apply libandroid-spawn since we don't need it for API ???+ - perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt - perl -pi -e 's/ STREQUAL Android\)/ STREQUAL AndroidDISABLED\)/g' swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt - # fix for Process.swift:953:57: error: value of optional type 'posix_spawnattr_t?' (aka 'Optional') must be unwrapped to a value of type 'posix_spawnattr_t' (aka 'OpaquePointer') - perl -pi -e 's%canImport\(Darwin\) \|\| os\(Android\) \|\| os\(OpenBSD\)%canImport\(Darwin\) || os\(AndroidXXX\) || os\(OpenBSD\)%g' swift-corelibs-foundation/Sources/Foundation/Process.swift - - git apply $patch_dir/swift-android-ci-release.patch || true - git apply $patch_dir/swift-android-testing-release.patch || true - - perl -pi -e 's%String\(cString: getpass%\"fake\" //%' swiftpm/Sources/PackageRegistryCommand/PackageRegistryCommand+Auth.swift - # TODO: only for release (for some reason) LSP_BUILD="--sourcekit-lsp" @@ -371,11 +332,9 @@ for arch in $archs; do RelWithDebInfo) build_type_flag="--release-debuginfo" ;; esac - #./swift/utils/build-script --help - - #--reconfigure \ ./swift/utils/build-script \ $build_type_flag \ + --reconfigure \ --no-assertions \ --android \ --android-ndk $ndk_home \ @@ -408,6 +367,5 @@ for arch in $archs; do echo "built: ${swiftc}" quiet_popd - done From e5d5fdf15923e733aeea6ddb3c17aafa790a3502 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Wed, 16 Apr 2025 23:20:36 -0400 Subject: [PATCH 23/77] Android SDK build --- swift-ci/sdks/android/build | 15 ++++++++++++--- swift-ci/sdks/android/scripts/build.sh | 4 ++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index b46e2e8d..b5ed2239 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -61,16 +61,25 @@ if [[ ! -d ${PATCHDIR} ]]; then git clone https://github.com/finagolfin/swift-android-sdk.git ${PATCHDIR} fi +# Apply patches +# TODO: need to selectively apply patches based on release or not release pushd ${SDKROOT}/src/swift-project - # TODO: need to selectively apply patches based on release or not release + # patch the patch, which seems to only be needed for an API less than 28 + # https://github.com/finagolfin/swift-android-sdk/blob/main/swift-android.patch#L110 + perl -pi -e 's/#if os\(Windows\)/#if os\(Android\)/g' $PATCHDIR/swift-android.patch + + echo "### PATCH: $PATCHDIR/swift-android.patch" + cat $PATCHDIR/swift-android.patch + git apply $PATCHDIR/swift-android.patch || true git apply -C1 $PATCHDIR/swift-android-ci.patch || true - # need to un-apply libandroid-spawn since we don't need it for API ???+ + # need to un-apply libandroid-spawn since we don't need it for API28+ perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt perl -pi -e 's/ STREQUAL Android\)/ STREQUAL AndroidDISABLED\)/g' swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt + # fix for Process.swift:953:57: error: value of optional type 'posix_spawnattr_t?' (aka 'Optional') must be unwrapped to a value of type 'posix_spawnattr_t' (aka 'OpaquePointer') - perl -pi -e 's%canImport\(Darwin\) \|\| os\(Android\) \|\| os\(OpenBSD\)%canImport\(Darwin\) || os\(AndroidXXX\) || os\(OpenBSD\)%g' swift-corelibs-foundation/Sources/Foundation/Process.swift + #perl -pi -e 's%canImport\(Darwin\) \|\| os\(Android\) \|\| os\(OpenBSD\)%canImport\(Darwin\) || os\(AndroidXXX\) || os\(OpenBSD\)%g' swift-corelibs-foundation/Sources/Foundation/Process.swift git apply $PATCHDIR/swift-android-ci-release.patch || true git apply $PATCHDIR/swift-android-testing-release.patch || true diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 140c9be4..2750adad 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -219,8 +219,8 @@ function run() { "$@" } -#HOST=linux-x86_64 -HOST=$(uname -s -m | tr '[:upper:]' '[:lower:]' | tr ' ' '-') +HOST=linux-x86_64 +#HOST=$(uname -s -m | tr '[:upper:]' '[:lower:]' | tr ' ' '-') ndktoolchain=$ndk_home/toolchains/llvm/prebuilt/$HOST From c292c89b872f78a805a5b1d9cf4b692f2cb1f252 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 00:11:31 -0400 Subject: [PATCH 24/77] Android SDK build --- swift-ci/sdks/android/scripts/build.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 2750adad..c2c31704 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -359,8 +359,12 @@ for arch in $archs; do $LSP_BUILD \ --swift-testing --install-swift-testing \ --swift-install-components='compiler;clang-resource-dir-symlink;license;stdlib;sdk-overlay' \ + --extra-cmake-options="-DTHREADS_PREFER_PTHREAD_FLAG=FALSE" \ + --extra-cmake-options="-DCMAKE_THREAD_PREFER_PTHREAD=FALSE" \ --cross-compile-append-host-target-to-destdir=False + # THREADS_PREFER_PTHREAD_FLAG=OFF is needed to prevent adding the -pthread flag, which fails on Android + swiftc=$(find ${build_dir}/swift -name 'swiftc' | grep -v bootstrapping) lld=$(find ${build_dir}/swift -name 'ld.lld') From fa28b818d0182b59c69b4521ee8a580e25707e0c Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 10:56:51 -0400 Subject: [PATCH 25/77] Android SDK build --- swift-ci/sdks/android/scripts/build.sh | 32 ++++++++++++++++++-------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index c2c31704..ea09d61f 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -253,8 +253,8 @@ for arch in $archs; do -DLIBXML2_WITH_ICU=NO \ -DLIBXML2_WITH_ICONV=NO \ -DLIBXML2_WITH_LZMA=NO \ - -DBUILD_SHARED_LIBS=NO \ - -DBUILD_STATIC_LIBS=YES + -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_STATIC_LIBS=ON quiet_pushd ${build_dir}/$arch/libxml2 run ninja -j$parallel_jobs @@ -276,8 +276,9 @@ for arch in $archs; do -DCMAKE_TOOLCHAIN_FILE=$ndk_home/build/cmake/android.toolchain.cmake \ -DCMAKE_BUILD_TYPE=$build_type \ -DCMAKE_INSTALL_PREFIX=$sdk_root/usr \ - -DBUILD_SHARED_LIBS=NO \ - -DBUILD_STATIC_LIBS=YES + -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_STATIC_LIBS=ON \ + -DBUILD_TESTING=OFF quiet_pushd ${build_dir}/$arch/boringssl run ninja -j$parallel_jobs @@ -305,10 +306,15 @@ for arch in $archs; do -DOPENSSL_SSL_LIBRARY=$sdk_root/usr/lib/libssl.a \ -DOPENSSL_CRYPTO_LIBRARY=$sdk_root/usr/lib/libcrypto.a \ -DCURL_USE_OPENSSL=ON \ - -DBUILD_SHARED_LIBS=NO \ - -DBUILD_STATIC_LIBS=YES \ - -DCURL_BUILD_TESTS=OFF \ - -DBUILD_CURL_EXE=NO + -DCURLSSLOPT_NATIVE_CA=ON \ + -DTHREADS_PREFER_PTHREAD_FLAG=OFF \ + -DCMAKE_THREAD_PREFER_PTHREAD=OFF \ + -DCMAKE_THREADS_PREFER_PTHREAD_FLAG=OFF \ + -DCMAKE_HAVE_LIBC_PTHREAD=YES \ + -DBUILD_CURL_EXE=NO \ + -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_STATIC_LIBS=ON \ + -DCURL_BUILD_TESTS=OFF quiet_pushd ${build_dir}/$arch/curl run ninja -j$parallel_jobs @@ -359,10 +365,16 @@ for arch in $archs; do $LSP_BUILD \ --swift-testing --install-swift-testing \ --swift-install-components='compiler;clang-resource-dir-symlink;license;stdlib;sdk-overlay' \ - --extra-cmake-options="-DTHREADS_PREFER_PTHREAD_FLAG=FALSE" \ - --extra-cmake-options="-DCMAKE_THREAD_PREFER_PTHREAD=FALSE" \ + --extra-cmake-options="-DCMAKE_HAVE_LIBC_PTHREAD=YES" \ + --extra-cmake-options="-DTHREADS_PREFER_PTHREAD_FLAG=OFF" \ + --extra-cmake-options="-DCMAKE_THREAD_PREFER_PTHREAD=OFF" \ --cross-compile-append-host-target-to-destdir=False + #--extra-cmake-options="-DCMAKE_HAVE_LIBC_PTHREAD=YES" \ + #--extra-cmake-options="-DTHREADS_PREFER_PTHREAD_FLAG=OFF" \ + #--extra-cmake-options="-DCMAKE_THREAD_PREFER_PTHREAD=OFF" \ + #--extra-cmake-options="-DCMAKE_HAVE_LIBC_PTHREAD=ON" \ + # THREADS_PREFER_PTHREAD_FLAG=OFF is needed to prevent adding the -pthread flag, which fails on Android swiftc=$(find ${build_dir}/swift -name 'swiftc' | grep -v bootstrapping) From 2029bbe22a88dacdf3647800da2a82a8a7625310 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 11:26:43 -0400 Subject: [PATCH 26/77] Android SDK build --- swift-ci/sdks/android/build | 6 +++--- swift-ci/sdks/android/scripts/build.sh | 7 ++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index b5ed2239..52825ee2 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -68,9 +68,6 @@ pushd ${SDKROOT}/src/swift-project # https://github.com/finagolfin/swift-android-sdk/blob/main/swift-android.patch#L110 perl -pi -e 's/#if os\(Windows\)/#if os\(Android\)/g' $PATCHDIR/swift-android.patch - echo "### PATCH: $PATCHDIR/swift-android.patch" - cat $PATCHDIR/swift-android.patch - git apply $PATCHDIR/swift-android.patch || true git apply -C1 $PATCHDIR/swift-android-ci.patch || true @@ -81,6 +78,9 @@ pushd ${SDKROOT}/src/swift-project # fix for Process.swift:953:57: error: value of optional type 'posix_spawnattr_t?' (aka 'Optional') must be unwrapped to a value of type 'posix_spawnattr_t' (aka 'OpaquePointer') #perl -pi -e 's%canImport\(Darwin\) \|\| os\(Android\) \|\| os\(OpenBSD\)%canImport\(Darwin\) || os\(AndroidXXX\) || os\(OpenBSD\)%g' swift-corelibs-foundation/Sources/Foundation/Process.swift + # disable backtrace() for Android (needs either API33+ or libandroid-execinfo, or to manually add in backtrace backport) + perl -pi -e 's/os\(Android\)/os\(AndroidDISABLED\)/g' swift-testing/Sources/Testing/SourceAttribution/Backtrace.swift + git apply $PATCHDIR/swift-android-ci-release.patch || true git apply $PATCHDIR/swift-android-testing-release.patch || true diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index ea09d61f..ada49922 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -357,19 +357,16 @@ for arch in $archs; do --skip-local-build \ --build-swift-static-stdlib \ --swiftpm \ - --llbuild --install-llbuild \ --install-swift \ --install-libdispatch \ --install-foundation \ --xctest --install-xctest \ $LSP_BUILD \ --swift-testing --install-swift-testing \ - --swift-install-components='compiler;clang-resource-dir-symlink;license;stdlib;sdk-overlay' \ - --extra-cmake-options="-DCMAKE_HAVE_LIBC_PTHREAD=YES" \ - --extra-cmake-options="-DTHREADS_PREFER_PTHREAD_FLAG=OFF" \ - --extra-cmake-options="-DCMAKE_THREAD_PREFER_PTHREAD=OFF" \ --cross-compile-append-host-target-to-destdir=False + #--llbuild --install-llbuild \ + #--extra-cmake-options="-DCMAKE_HAVE_LIBC_PTHREAD=YES" \ #--extra-cmake-options="-DTHREADS_PREFER_PTHREAD_FLAG=OFF" \ #--extra-cmake-options="-DCMAKE_THREAD_PREFER_PTHREAD=OFF" \ From 79fa529572a6b7ca18dca834cd69b29b3ae67e17 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 11:37:26 -0400 Subject: [PATCH 27/77] Android SDK build --- swift-ci/sdks/android/build | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 52825ee2..f3730e61 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -68,6 +68,14 @@ pushd ${SDKROOT}/src/swift-project # https://github.com/finagolfin/swift-android-sdk/blob/main/swift-android.patch#L110 perl -pi -e 's/#if os\(Windows\)/#if os\(Android\)/g' $PATCHDIR/swift-android.patch + # disable backtrace() for Android (needs either API33+ or libandroid-execinfo, or to manually add in backtrace backport) + perl -pi -e 's/os\(Android\)/os\(AndroidDISABLED\)/g' swift-testing/Sources/Testing/SourceAttribution/Backtrace.swift + # remove the need to link in android-execinfo + perl -pi -e 's/dispatch android-execinfo/dispatch/g' $PATCHDIR/swift-android.patch + + # fix for Process.swift:953:57: error: value of optional type 'posix_spawnattr_t?' (aka 'Optional') must be unwrapped to a value of type 'posix_spawnattr_t' (aka 'OpaquePointer') + #perl -pi -e 's%canImport\(Darwin\) \|\| os\(Android\) \|\| os\(OpenBSD\)%canImport\(Darwin\) || os\(AndroidXXX\) || os\(OpenBSD\)%g' swift-corelibs-foundation/Sources/Foundation/Process.swift + git apply $PATCHDIR/swift-android.patch || true git apply -C1 $PATCHDIR/swift-android-ci.patch || true @@ -75,12 +83,6 @@ pushd ${SDKROOT}/src/swift-project perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt perl -pi -e 's/ STREQUAL Android\)/ STREQUAL AndroidDISABLED\)/g' swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt - # fix for Process.swift:953:57: error: value of optional type 'posix_spawnattr_t?' (aka 'Optional') must be unwrapped to a value of type 'posix_spawnattr_t' (aka 'OpaquePointer') - #perl -pi -e 's%canImport\(Darwin\) \|\| os\(Android\) \|\| os\(OpenBSD\)%canImport\(Darwin\) || os\(AndroidXXX\) || os\(OpenBSD\)%g' swift-corelibs-foundation/Sources/Foundation/Process.swift - - # disable backtrace() for Android (needs either API33+ or libandroid-execinfo, or to manually add in backtrace backport) - perl -pi -e 's/os\(Android\)/os\(AndroidDISABLED\)/g' swift-testing/Sources/Testing/SourceAttribution/Backtrace.swift - git apply $PATCHDIR/swift-android-ci-release.patch || true git apply $PATCHDIR/swift-android-testing-release.patch || true From 200025dd8e563676274e83b4d0695a135a72bb41 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 11:52:25 -0400 Subject: [PATCH 28/77] Android SDK build --- swift-ci/sdks/android/build | 24 ++++++++++++++---------- swift-ci/sdks/android/scripts/build.sh | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index f3730e61..1d9baba1 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -1,28 +1,32 @@ #!/bin/bash -ex # Swift Android SDK: Top-level Build Script -# the architecture(s) to build -ARCH=aarch64 -#ARCH=x86_64,aarch64 -NDK=android-ndk-r27c -API=28 +# the architecture(s) to build; on GH Actions we build everything +if [[ -z "${CI}" ]]; then + TARGET_ARCHS=${TARGET_ARCHS:-aarch64} +else + TARGET_ARCHS=${TARGET_ARCHS:-aarch64,armv7,x86_64,x86} +fi + +ANDROID_NDK_VERSION=android-ndk-r27c +ANDROID_API=28 SDKROOT=${TMPDIR:-/tmp}/swift-android-sdk mkdir -p ${SDKROOT} # Install a Swift host toolchain if it isn't already present SWIFT_ROOT=${SDKROOT}/host-toolchain -HOST_ARCH=ubuntu24.04 +HOST_OS=ubuntu$(lsb_release -sr) SWIFT_VERSION=6.1 SWIFT_TAG="swift-${SWIFT_VERSION}-RELEASE" SWIFT_BRANCH="swift-$(echo $SWIFT_TAG | cut -d- -f2)-release" -SWIFT_BASE=$SWIFT_TAG-$HOST_ARCH +SWIFT_BASE=$SWIFT_TAG-$HOST_OS if [[ ! -d $SWIFT_ROOT ]]; then mkdir -p $SWIFT_ROOT pushd $SWIFT_ROOT - SWIFT_URL="https://download.swift.org/$SWIFT_BRANCH/$(echo $HOST_ARCH | tr -d '.')/$SWIFT_TAG/$SWIFT_BASE.tar.gz" + SWIFT_URL="https://download.swift.org/$SWIFT_BRANCH/$(echo $HOST_OS | tr -d '.')/$SWIFT_TAG/$SWIFT_BASE.tar.gz" wget -q $SWIFT_URL tar xzf $SWIFT_BASE.tar.gz @@ -36,7 +40,7 @@ $HOST_TOOLCHAIN/bin/swift --version # ensure the correct Swift is first in the PATH export PATH=$HOST_TOOLCHAIN/bin:$PATH -export ANDROID_NDK_HOME=${SDKROOT}/ndk/${NDK} +export ANDROID_NDK_HOME=${SDKROOT}/ndk/${ANDROID_NDK_VERSION} export ANDROID_NDK=${ANDROID_NDK_HOME} if [[ ! -d ${ANDROID_NDK_HOME} ]]; then @@ -89,5 +93,5 @@ pushd ${SDKROOT}/src/swift-project perl -pi -e 's%String\(cString: getpass%\"fake\" //%' swiftpm/Sources/PackageRegistryCommand/PackageRegistryCommand+Auth.swift popd -./scripts/build.sh --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --android-api ${API} --host-toolchain ${HOST_TOOLCHAIN} --archs $ARCH +./scripts/build.sh --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --android-api ${ANDROID_API} --host-toolchain ${HOST_TOOLCHAIN} --archs $TARGET_ARCHS diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index ada49922..2b5bdb6b 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -356,7 +356,6 @@ for arch in $archs; do --skip-build-cmark \ --skip-local-build \ --build-swift-static-stdlib \ - --swiftpm \ --install-swift \ --install-libdispatch \ --install-foundation \ @@ -366,6 +365,7 @@ for arch in $archs; do --cross-compile-append-host-target-to-destdir=False #--llbuild --install-llbuild \ + #--swiftpm \ #--extra-cmake-options="-DCMAKE_HAVE_LIBC_PTHREAD=YES" \ #--extra-cmake-options="-DTHREADS_PREFER_PTHREAD_FLAG=OFF" \ From 234ca95acceb9584ae8694a45a8e14600be63868 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 12:04:47 -0400 Subject: [PATCH 29/77] Android SDK build --- swift-ci/sdks/android/build | 2 +- swift-ci/sdks/android/scripts/build.sh | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 1d9baba1..25ebab88 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -11,7 +11,7 @@ fi ANDROID_NDK_VERSION=android-ndk-r27c ANDROID_API=28 -SDKROOT=${TMPDIR:-/tmp}/swift-android-sdk +SDKROOT=${RUNNER_TEMP:-${TMPDIR:-'/tmp'}}/swift-android-sdk mkdir -p ${SDKROOT} # Install a Swift host toolchain if it isn't already present diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 2b5bdb6b..c9de9de8 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -328,9 +328,6 @@ for arch in $archs; do header "Building Android SDK for ${compiler_target_host}" quiet_pushd ${source_dir}/swift-project - # TODO: only for release (for some reason) - LSP_BUILD="--sourcekit-lsp" - build_type_flag="--debug" case $build_type in Debug) build_type_flag="--debug" ;; @@ -360,12 +357,12 @@ for arch in $archs; do --install-libdispatch \ --install-foundation \ --xctest --install-xctest \ - $LSP_BUILD \ --swift-testing --install-swift-testing \ --cross-compile-append-host-target-to-destdir=False #--llbuild --install-llbuild \ #--swiftpm \ + #--sourcekit-lsp \ #--extra-cmake-options="-DCMAKE_HAVE_LIBC_PTHREAD=YES" \ #--extra-cmake-options="-DTHREADS_PREFER_PTHREAD_FLAG=OFF" \ From ffb35bedd8a63091cfb537e0389a84e1ab0ef607 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 14:05:07 -0400 Subject: [PATCH 30/77] Android SDK build --- swift-ci/sdks/android/scripts/build.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index c9de9de8..a89c3990 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -370,11 +370,9 @@ for arch in $archs; do #--extra-cmake-options="-DCMAKE_HAVE_LIBC_PTHREAD=ON" \ # THREADS_PREFER_PTHREAD_FLAG=OFF is needed to prevent adding the -pthread flag, which fails on Android - - swiftc=$(find ${build_dir}/swift -name 'swiftc' | grep -v bootstrapping) - lld=$(find ${build_dir}/swift -name 'ld.lld') - - echo "built: ${swiftc}" + #swiftc=$(find ${build_dir}/swift -name 'swiftc' | grep -v bootstrapping) + #lld=$(find ${build_dir}/swift -name 'ld.lld') + #echo "built: ${swiftc}" quiet_popd done From a137f03531b9731e5fe580a87807a25a5b8e12a6 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 15:13:51 -0400 Subject: [PATCH 31/77] Android SDK build --- swift-ci/sdks/android/build | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 25ebab88..1b9122c8 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -5,7 +5,8 @@ if [[ -z "${CI}" ]]; then TARGET_ARCHS=${TARGET_ARCHS:-aarch64} else - TARGET_ARCHS=${TARGET_ARCHS:-aarch64,armv7,x86_64,x86} + #TARGET_ARCHS=${TARGET_ARCHS:-aarch64,armv7,x86_64,x86} + TARGET_ARCHS=${TARGET_ARCHS:-aarch64,x86_64} fi ANDROID_NDK_VERSION=android-ndk-r27c From e937f5440f0b26813a0c532931008d9291451fe8 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 16:18:27 -0400 Subject: [PATCH 32/77] Android SDK build --- swift-ci/sdks/android/build | 4 +++- swift-ci/sdks/android/scripts/build.sh | 17 +---------------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 1b9122c8..350b4052 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -3,10 +3,12 @@ # the architecture(s) to build; on GH Actions we build everything if [[ -z "${CI}" ]]; then + #TARGET_ARCHS=${TARGET_ARCHS:-x86_64,aarch64} TARGET_ARCHS=${TARGET_ARCHS:-aarch64} else #TARGET_ARCHS=${TARGET_ARCHS:-aarch64,armv7,x86_64,x86} - TARGET_ARCHS=${TARGET_ARCHS:-aarch64,x86_64} + #TARGET_ARCHS=${TARGET_ARCHS:-aarch64,x86_64} + TARGET_ARCHS=${TARGET_ARCHS:-x86_64,aarch64} fi ANDROID_NDK_VERSION=android-ndk-r27c diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index a89c3990..50cd8fa2 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -102,7 +102,7 @@ android_sdk_version=0.1 sdk_name= archs=aarch64,armv7,x86_64,x86 android_api=28 -build_type=RelWithDebInfo +build_type=Release parallel_jobs=$(($(nproc --all) + 2)) source_dir= ndk_home=${ANDROID_NDK} @@ -359,21 +359,6 @@ for arch in $archs; do --xctest --install-xctest \ --swift-testing --install-swift-testing \ --cross-compile-append-host-target-to-destdir=False - - #--llbuild --install-llbuild \ - #--swiftpm \ - #--sourcekit-lsp \ - - #--extra-cmake-options="-DCMAKE_HAVE_LIBC_PTHREAD=YES" \ - #--extra-cmake-options="-DTHREADS_PREFER_PTHREAD_FLAG=OFF" \ - #--extra-cmake-options="-DCMAKE_THREAD_PREFER_PTHREAD=OFF" \ - #--extra-cmake-options="-DCMAKE_HAVE_LIBC_PTHREAD=ON" \ - - # THREADS_PREFER_PTHREAD_FLAG=OFF is needed to prevent adding the -pthread flag, which fails on Android - #swiftc=$(find ${build_dir}/swift -name 'swiftc' | grep -v bootstrapping) - #lld=$(find ${build_dir}/swift -name 'ld.lld') - #echo "built: ${swiftc}" - quiet_popd done From 4050451ff422cbe18f3e8254434c3bd87b9af6e0 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 17:17:48 -0400 Subject: [PATCH 33/77] Android SDK build --- swift-ci/sdks/android/build | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 350b4052..07863a98 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -3,12 +3,12 @@ # the architecture(s) to build; on GH Actions we build everything if [[ -z "${CI}" ]]; then - #TARGET_ARCHS=${TARGET_ARCHS:-x86_64,aarch64} - TARGET_ARCHS=${TARGET_ARCHS:-aarch64} + TARGET_ARCHS=${TARGET_ARCHS:-x86_64,aarch64} + #TARGET_ARCHS=${TARGET_ARCHS:-aarch64} else #TARGET_ARCHS=${TARGET_ARCHS:-aarch64,armv7,x86_64,x86} #TARGET_ARCHS=${TARGET_ARCHS:-aarch64,x86_64} - TARGET_ARCHS=${TARGET_ARCHS:-x86_64,aarch64} + TARGET_ARCHS=${TARGET_ARCHS:-aarch64} fi ANDROID_NDK_VERSION=android-ndk-r27c From 74f81e5a7f86d185f66e03a108fc34101499cfa5 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 17:28:15 -0400 Subject: [PATCH 34/77] Android SDK build --- swift-ci/sdks/android/build | 6 +++--- swift-ci/sdks/android/scripts/build.sh | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 07863a98..1eab0266 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -3,12 +3,12 @@ # the architecture(s) to build; on GH Actions we build everything if [[ -z "${CI}" ]]; then - TARGET_ARCHS=${TARGET_ARCHS:-x86_64,aarch64} + TARGET_ARCHS=${TARGET_ARCHS:-aarch64,x86_64} #TARGET_ARCHS=${TARGET_ARCHS:-aarch64} else - #TARGET_ARCHS=${TARGET_ARCHS:-aarch64,armv7,x86_64,x86} + TARGET_ARCHS=${TARGET_ARCHS:-armv7,aarch64,x86_64,x86} #TARGET_ARCHS=${TARGET_ARCHS:-aarch64,x86_64} - TARGET_ARCHS=${TARGET_ARCHS:-aarch64} + #TARGET_ARCHS=${TARGET_ARCHS:-aarch64} fi ANDROID_NDK_VERSION=android-ndk-r27c diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 50cd8fa2..f790c12c 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -340,9 +340,9 @@ for arch in $archs; do --reconfigure \ --no-assertions \ --android \ - --android-ndk $ndk_home \ - --android-arch $arch \ - --android-api-level $android_api \ + --android-ndk=$ndk_home \ + --android-arch=$arch \ + --android-api-level=$android_api \ --native-swift-tools-path=$host_toolchain/bin \ --native-clang-tools-path=$host_toolchain/bin \ --cross-compile-hosts=android-$arch \ @@ -360,5 +360,7 @@ for arch in $archs; do --swift-testing --install-swift-testing \ --cross-compile-append-host-target-to-destdir=False quiet_popd + + header "Completed build for $arch in $sdk_root" done From 641cb60b00b3dd1640516ff6d948de75adc1f4fb Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 17:39:13 -0400 Subject: [PATCH 35/77] Android SDK build --- .github/workflows/pull_request.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 39d24c29..1ae1e07a 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -35,8 +35,13 @@ jobs: run: ./build android-build: - name: Build Android SDK + name: Build Android ${{ matrix.arch }} runs-on: ubuntu-24.04 + timeout-minutes: 120 + strategy: + fail-fast: false + matrix: + arch: [armv7,aarch64,x86_64,x86] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -44,5 +49,5 @@ jobs: working-directory: swift-ci/sdks/android run: | sudo apt install ninja-build - ./build + TARGET_ARCHS=${{ matrix.arch }} ./build From 0d2a8d5f9377a3261e87be4628d8343af814c373 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 18:25:42 -0400 Subject: [PATCH 36/77] Android SDK build --- .github/workflows/pull_request.yml | 15 ++++++++------- swift-ci/sdks/android/build | 11 ++--------- swift-ci/sdks/android/scripts/build.sh | 18 ++++++++++-------- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 1ae1e07a..ea8fb5c8 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -35,13 +35,13 @@ jobs: run: ./build android-build: - name: Build Android ${{ matrix.arch }} + #name: Build Android ${{ matrix.arch }} + #strategy: + #fail-fast: false + #matrix: + #arch: [armv7,aarch64,x86_64] + name: Build Android SDK runs-on: ubuntu-24.04 - timeout-minutes: 120 - strategy: - fail-fast: false - matrix: - arch: [armv7,aarch64,x86_64,x86] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -49,5 +49,6 @@ jobs: working-directory: swift-ci/sdks/android run: | sudo apt install ninja-build - TARGET_ARCHS=${{ matrix.arch }} ./build + #TARGET_ARCHS=${{ matrix.arch }} ./build + ./build diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 1eab0266..fa14448c 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -1,15 +1,8 @@ #!/bin/bash -ex # Swift Android SDK: Top-level Build Script -# the architecture(s) to build; on GH Actions we build everything -if [[ -z "${CI}" ]]; then - TARGET_ARCHS=${TARGET_ARCHS:-aarch64,x86_64} - #TARGET_ARCHS=${TARGET_ARCHS:-aarch64} -else - TARGET_ARCHS=${TARGET_ARCHS:-armv7,aarch64,x86_64,x86} - #TARGET_ARCHS=${TARGET_ARCHS:-aarch64,x86_64} - #TARGET_ARCHS=${TARGET_ARCHS:-aarch64} -fi +# default architectures to build for +TARGET_ARCHS=${TARGET_ARCHS:-armv7,aarch64,x86_64} ANDROID_NDK_VERSION=android-ndk-r27c ANDROID_API=28 diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index f790c12c..c34d1b5b 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -100,7 +100,7 @@ declare_package zlib "zlib" "Zlib" "https://zlib.net" # Parse command line arguments android_sdk_version=0.1 sdk_name= -archs=aarch64,armv7,x86_64,x86 +archs=aarch64,armv7,x86_64 android_api=28 build_type=Release parallel_jobs=$(($(nproc --all) + 2)) @@ -196,12 +196,16 @@ function quiet_popd { header "Swift Android SDK build script" swift_dir=$(realpath $(dirname "$swiftc")/..) +HOST=linux-x86_64 +#HOST=$(uname -s -m | tr '[:upper:]' '[:lower:]' | tr ' ' '-') +ndk_toolchain=$ndk_home/toolchains/llvm/prebuilt/$HOST + echo "Swift found at ${swift_dir}" echo "Host toolchain found at ${host_toolchain}" ${host_toolchain}/bin/swift --version echo "Android NDK found at ${ndk_home}" -${toolchain}/bin/clang --version +${ndk_toolchain}/bin/clang --version echo "Building for ${archs}" echo "Sources are in ${source_dir}" echo "Build will happen in ${build_dir}" @@ -219,17 +223,12 @@ function run() { "$@" } -HOST=linux-x86_64 -#HOST=$(uname -s -m | tr '[:upper:]' '[:lower:]' | tr ' ' '-') - -ndktoolchain=$ndk_home/toolchains/llvm/prebuilt/$HOST - for arch in $archs; do case $arch in armv7) target_host="arm-linux-androideabi"; compiler_target_host="armv7a-linux-androideabi$android_api"; android_abi="armeabi-v7a" ;; aarch64) target_host="aarch64-linux-android"; compiler_target_host="$target_host$android_api"; android_abi="arm64-v8a" ;; - x86) target_host="x86-linux-android"; compiler_target_host="$target_host$android_api"; android_abi="x86" ;; x86_64) target_host="x86_64-linux-android"; compiler_target_host="$target_host$android_api"; android_abi="x86_64" ;; + x86) target_host="x86-linux-android"; compiler_target_host="$target_host$android_api"; android_abi="x86" ;; *) echo "Unknown architecture '$1'"; usage; exit 0 ;; esac @@ -335,6 +334,9 @@ for arch in $archs; do RelWithDebInfo) build_type_flag="--release-debuginfo" ;; esac + # use an out-of-tree build folder, otherwise subsequent arch builds have conflicts + export SWIFT_BUILD_ROOT=${build_dir}/$arch/swift-project + ./swift/utils/build-script \ $build_type_flag \ --reconfigure \ From f7e8486d0cdea325297b765277f3faac1d672c84 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 21:04:37 -0400 Subject: [PATCH 37/77] Android SDK build --- swift-ci/sdks/android/scripts/fetch-source.sh | 21 +++---------------- 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/swift-ci/sdks/android/scripts/fetch-source.sh b/swift-ci/sdks/android/scripts/fetch-source.sh index 1b4c093a..c86ba231 100755 --- a/swift-ci/sdks/android/scripts/fetch-source.sh +++ b/swift-ci/sdks/android/scripts/fetch-source.sh @@ -40,7 +40,6 @@ usage: fetch-source.sh [--swift-scheme |--swift-tag |--swift-version ] [--curl-version ] [--boringssl-version ] - [--zlib-version ] [--clone-with-ssh] [--source-dir ] @@ -60,8 +59,6 @@ SDK for Swift. Options are: --libxml2-version --curl-version --boringssl-version - --zlib-version - Select the versions of other dependencies. EOF } @@ -70,17 +67,14 @@ if [[ -z "${SWIFT_VERSION}" ]]; then SWIFT_VERSION=scheme:release/6.1 fi if [[ -z "${LIBXML2_VERSION}" ]]; then - LIBXML2_VERSION=2.12.7 + LIBXML2_VERSION=2.14.2 fi if [[ -z "${CURL_VERSION}" ]]; then - CURL_VERSION=8.7.1 + CURL_VERSION=8.13.0 fi if [[ -z "${BORINGSSL_VERSION}" ]]; then BORINGSSL_VERSION=fips-20220613 fi -if [[ -z "${ZLIB_VERSION}" ]]; then - ZLIB_VERSION=1.3.1 -fi clone_with_ssh=false while [ "$#" -gt 0 ]; do @@ -97,8 +91,6 @@ while [ "$#" -gt 0 ]; do CURL_VERSION="$2"; shift ;; --boringssl-version) BORINGSSL_VERSION="$2"; shift ;; - --zlib-version) - ZLIB_VERSION="$2"; shift ;; --clone-with-ssh) clone_with_ssh=true ;; --source-dir) @@ -164,7 +156,7 @@ pushd curl >/dev/null 2>&1 git checkout curl-$(echo ${CURL_VERSION} | tr '.' '_') popd >/dev/null 2>&1 -# Fetch BoringSSL (also can't clone using ssh) +# Fetch BoringSSL header "Fetching BoringSSL" [[ -d boringssl ]] || git clone https://boringssl.googlesource.com/boringssl @@ -172,10 +164,3 @@ pushd boringssl >/dev/null 2>&1 git checkout ${BORINGSSL_VERSION} popd >/dev/null 2>&1 -# Fetch zlib -header "Fetching zlib" - -[[ -d zlib ]] || git clone ${github}madler/zlib.git -pushd zlib >/dev/null 2>&1 -git checkout v${ZLIB_VERSION} -popd >/dev/null 2>&1 From 7a59154cd45518948469a8dd6a695676d303b275 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Thu, 17 Apr 2025 21:28:51 -0400 Subject: [PATCH 38/77] Android SDK build --- swift-ci/sdks/android/build | 5 ++++- swift-ci/sdks/android/scripts/fetch-source.sh | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index fa14448c..3affd3a8 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -2,7 +2,7 @@ # Swift Android SDK: Top-level Build Script # default architectures to build for -TARGET_ARCHS=${TARGET_ARCHS:-armv7,aarch64,x86_64} +TARGET_ARCHS=${TARGET_ARCHS:-aarch64,x86_64,armv7} ANDROID_NDK_VERSION=android-ndk-r27c ANDROID_API=28 @@ -91,3 +91,6 @@ popd ./scripts/build.sh --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --android-api ${ANDROID_API} --host-toolchain ${HOST_TOOLCHAIN} --archs $TARGET_ARCHS +# assemble the artifactbundle +#./scripts/assemble.sh --products-dir ${SDKROOT}/products --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --archs $TARGET_ARCHS + diff --git a/swift-ci/sdks/android/scripts/fetch-source.sh b/swift-ci/sdks/android/scripts/fetch-source.sh index c86ba231..ed725bbf 100755 --- a/swift-ci/sdks/android/scripts/fetch-source.sh +++ b/swift-ci/sdks/android/scripts/fetch-source.sh @@ -67,10 +67,12 @@ if [[ -z "${SWIFT_VERSION}" ]]; then SWIFT_VERSION=scheme:release/6.1 fi if [[ -z "${LIBXML2_VERSION}" ]]; then - LIBXML2_VERSION=2.14.2 + LIBXML2_VERSION=2.12.7 + #LIBXML2_VERSION=2.14.2 fi if [[ -z "${CURL_VERSION}" ]]; then - CURL_VERSION=8.13.0 + CURL_VERSION=8.7.1 + #CURL_VERSION=8.13.0 fi if [[ -z "${BORINGSSL_VERSION}" ]]; then BORINGSSL_VERSION=fips-20220613 From d0ef38e99c29b58b2ad1388828cf69fc478cc140 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Fri, 18 Apr 2025 15:14:10 -0400 Subject: [PATCH 39/77] Android SDK build --- .github/workflows/pull_request.yml | 16 ++-- swift-ci/sdks/android/build | 8 +- swift-ci/sdks/android/scripts/build.sh | 102 +++++++++++++++++++++++++ 3 files changed, 113 insertions(+), 13 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index ea8fb5c8..9c6fcc18 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -35,12 +35,12 @@ jobs: run: ./build android-build: - #name: Build Android ${{ matrix.arch }} - #strategy: - #fail-fast: false - #matrix: - #arch: [armv7,aarch64,x86_64] - name: Build Android SDK + name: Build Android ${{ matrix.arch }} SDK + strategy: + fail-fast: false + matrix: + arch: [armv7,aarch64,x86_64] + #name: Build Android SDK runs-on: ubuntu-24.04 steps: - name: Checkout repository @@ -49,6 +49,6 @@ jobs: working-directory: swift-ci/sdks/android run: | sudo apt install ninja-build - #TARGET_ARCHS=${{ matrix.arch }} ./build - ./build + TARGET_ARCHS=${{ matrix.arch }} ./build + #./build diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 3affd3a8..9488bc6c 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -77,7 +77,8 @@ pushd ${SDKROOT}/src/swift-project #perl -pi -e 's%canImport\(Darwin\) \|\| os\(Android\) \|\| os\(OpenBSD\)%canImport\(Darwin\) || os\(AndroidXXX\) || os\(OpenBSD\)%g' swift-corelibs-foundation/Sources/Foundation/Process.swift git apply $PATCHDIR/swift-android.patch || true - git apply -C1 $PATCHDIR/swift-android-ci.patch || true + # swift-android-ci.patch is not needed, since it is only used for llbuild, etc. + #git apply -C1 $PATCHDIR/swift-android-ci.patch || true # need to un-apply libandroid-spawn since we don't need it for API28+ perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt @@ -89,8 +90,5 @@ pushd ${SDKROOT}/src/swift-project perl -pi -e 's%String\(cString: getpass%\"fake\" //%' swiftpm/Sources/PackageRegistryCommand/PackageRegistryCommand+Auth.swift popd -./scripts/build.sh --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --android-api ${ANDROID_API} --host-toolchain ${HOST_TOOLCHAIN} --archs $TARGET_ARCHS - -# assemble the artifactbundle -#./scripts/assemble.sh --products-dir ${SDKROOT}/products --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --archs $TARGET_ARCHS +./scripts/build.sh --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --android-api ${ANDROID_API} --host-toolchain ${HOST_TOOLCHAIN} --archs ${TARGET_ARCHS} diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index c34d1b5b..59663228 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -224,6 +224,11 @@ function run() { } for arch in $archs; do + # enable short-circuiting the individual builds + if [[ ! -z "$SKIP_ARCH_BUILD" ]]; then + continue + fi + case $arch in armv7) target_host="arm-linux-androideabi"; compiler_target_host="armv7a-linux-androideabi$android_api"; android_abi="armeabi-v7a" ;; aarch64) target_host="aarch64-linux-android"; compiler_target_host="$target_host$android_api"; android_abi="arm64-v8a" ;; @@ -366,3 +371,100 @@ for arch in $archs; do header "Completed build for $arch in $sdk_root" done +# Now generate the bundle +header "Bundling SDK" + +sdk_name=swift-${swift_version}_static-linux-${static_linux_sdk_version} +bundle="${sdk_name}.artifactbundle" + +rm -rf "${build_dir}/$bundle" +mkdir -p "${build_dir}/$bundle/$sdk_name/swift-linux-musl" + +quiet_pushd ${build_dir}/$bundle + +# First the info.json, for SwiftPM +cat > info.json < swift-sdk.json <> swift-sdk.json <> swift-sdk.json <> swift-sdk.json < toolset.json < Date: Fri, 18 Apr 2025 15:23:01 -0400 Subject: [PATCH 40/77] Android SDK build --- .github/workflows/pull_request.yml | 16 ++++++++-------- swift-ci/sdks/android/scripts/build.sh | 2 ++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 9c6fcc18..1c099631 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -35,12 +35,12 @@ jobs: run: ./build android-build: - name: Build Android ${{ matrix.arch }} SDK - strategy: - fail-fast: false - matrix: - arch: [armv7,aarch64,x86_64] - #name: Build Android SDK + #name: Build Android ${{ matrix.arch }} SDK + #strategy: + #fail-fast: false + #matrix: + # arch: [armv7,aarch64,x86_64] + name: Build Android SDK runs-on: ubuntu-24.04 steps: - name: Checkout repository @@ -49,6 +49,6 @@ jobs: working-directory: swift-ci/sdks/android run: | sudo apt install ninja-build - TARGET_ARCHS=${{ matrix.arch }} ./build - #./build + #TARGET_ARCHS=${{ matrix.arch }} ./build + ./build diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 59663228..a6291bba 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -345,6 +345,8 @@ for arch in $archs; do ./swift/utils/build-script \ $build_type_flag \ --reconfigure \ + --clean \ + --clean-install-destdir \ --no-assertions \ --android \ --android-ndk=$ndk_home \ From 7db77443e416c456928938a2a91300fa842ff261 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Fri, 18 Apr 2025 15:23:40 -0400 Subject: [PATCH 41/77] Android SDK build --- swift-ci/sdks/android/scripts/build.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index a6291bba..642742d1 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -346,7 +346,6 @@ for arch in $archs; do $build_type_flag \ --reconfigure \ --clean \ - --clean-install-destdir \ --no-assertions \ --android \ --android-ndk=$ndk_home \ @@ -368,6 +367,8 @@ for arch in $archs; do --xctest --install-xctest \ --swift-testing --install-swift-testing \ --cross-compile-append-host-target-to-destdir=False + + #--clean-install-destdir \ quiet_popd header "Completed build for $arch in $sdk_root" From e6a2b929ae9ddfd6ef4c0b0d0db610f47805e096 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Fri, 18 Apr 2025 16:20:57 -0400 Subject: [PATCH 42/77] Android SDK build --- swift-ci/sdks/android/scripts/build.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 642742d1..afbf515b 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -342,10 +342,14 @@ for arch in $archs; do # use an out-of-tree build folder, otherwise subsequent arch builds have conflicts export SWIFT_BUILD_ROOT=${build_dir}/$arch/swift-project + # need to remove symlink that gets created in the NDK to the previous arch's build + # or else we get errors like: + # error: could not find module '_Builtin_float' for target 'x86_64-unknown-linux-android'; found: aarch64-unknown-linux-android, at: /home/runner/work/_temp/swift-android-sdk/ndk/android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/swift/android/_Builtin_float.swiftmodule + rm -f $ndk_toolchain/sysroot/usr/lib/swift + ./swift/utils/build-script \ $build_type_flag \ --reconfigure \ - --clean \ --no-assertions \ --android \ --android-ndk=$ndk_home \ @@ -369,6 +373,7 @@ for arch in $archs; do --cross-compile-append-host-target-to-destdir=False #--clean-install-destdir \ + #--clean \ quiet_popd header "Completed build for $arch in $sdk_root" From a8ebb6cad5b2b9165454083d7fa3b0e1a564990d Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Fri, 18 Apr 2025 17:58:13 -0400 Subject: [PATCH 43/77] Android SDK build --- .github/workflows/pull_request.yml | 7 ++- swift-ci/sdks/android/scripts/build.sh | 61 +++++++++++++++++--------- 2 files changed, 46 insertions(+), 22 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 1c099631..095b488f 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -49,6 +49,11 @@ jobs: working-directory: swift-ci/sdks/android run: | sudo apt install ninja-build - #TARGET_ARCHS=${{ matrix.arch }} ./build ./build + #TARGET_ARCHS=${{ matrix.arch }} ./build + - name: Upload SDK artifactbundle + uses: actions/upload-artifact@v4 + with: + compression-level: 0 + path: $RUNNER_TEMP/swift-android-sdk/products/*.artifactbundle.tar.gz diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index afbf515b..9ce9dfca 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -34,6 +34,20 @@ function header { echo "" } +function groupstart { + local text="$1" + if [[ ! -z "$CI" ]]; then + echo "::group::{${text}}" + fi + header $text +} + +function groupend { + if [[ ! -z "$CI" ]]; then + echo "::endgroup::" + fi +} + function usage { cat < --products-dir --ndk-home --host-toolchain @@ -225,7 +239,7 @@ function run() { for arch in $archs; do # enable short-circuiting the individual builds - if [[ ! -z "$SKIP_ARCH_BUILD" ]]; then + if [[ ! -z "$SWIFT_ANDROID_ARCHIVEONLY" ]]; then continue fi @@ -240,7 +254,7 @@ for arch in $archs; do sdk_root=${build_dir}/sdk_root/${arch} mkdir -p "$sdk_root" - header "Building libxml2 for $arch" + groupstart "Building libxml2 for $arch" quiet_pushd ${source_dir}/libxml2 run cmake \ -G Ninja \ @@ -269,8 +283,9 @@ for arch in $archs; do run ninja -j$parallel_jobs install quiet_popd quiet_popd + groupend - header "Building boringssl for ${compiler_target_host}" + groupstart "Building boringssl for ${compiler_target_host}" quiet_pushd ${source_dir}/boringssl run cmake \ -GNinja \ @@ -293,8 +308,9 @@ for arch in $archs; do run ninja -j$parallel_jobs install quiet_popd quiet_popd + groupend - header "Building libcurl for ${compiler_target_host}" + groupstart "Building libcurl for ${compiler_target_host}" quiet_pushd ${source_dir}/curl run cmake \ -G Ninja \ @@ -329,8 +345,9 @@ for arch in $archs; do run ninja -j$parallel_jobs install quiet_popd quiet_popd + groupend - header "Building Android SDK for ${compiler_target_host}" + groupstart "Building Android SDK for ${compiler_target_host}" quiet_pushd ${source_dir}/swift-project build_type_flag="--debug" case $build_type in @@ -375,18 +392,20 @@ for arch in $archs; do #--clean-install-destdir \ #--clean \ quiet_popd - - header "Completed build for $arch in $sdk_root" + groupend done # Now generate the bundle -header "Bundling SDK" +groupstart "Bundling SDK" + +sdk_name=swift-${swift_version}-android-${android_api}-${android_sdk_version} +#sdk_base=android-27c-sysroot +sdk_base=swift-android -sdk_name=swift-${swift_version}_static-linux-${static_linux_sdk_version} bundle="${sdk_name}.artifactbundle" rm -rf "${build_dir}/$bundle" -mkdir -p "${build_dir}/$bundle/$sdk_name/swift-linux-musl" +mkdir -p "${build_dir}/$bundle/$sdk_name/$sdk_base" quiet_pushd ${build_dir}/$bundle @@ -398,7 +417,7 @@ cat > info.json < info.json < swift-sdk.json <> swift-sdk.json < Date: Fri, 18 Apr 2025 18:49:00 -0400 Subject: [PATCH 44/77] Android SDK build --- .github/workflows/pull_request.yml | 19 ++++++++++- swift-ci/sdks/android/scripts/build.sh | 4 +-- swift-ci/sdks/android/scripts/fetch-source.sh | 32 +++++++++++++------ 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 095b488f..75d71749 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -48,7 +48,7 @@ jobs: - name: Build Android SDK working-directory: swift-ci/sdks/android run: | - sudo apt install ninja-build + sudo apt -q install ninja-build ./build #TARGET_ARCHS=${{ matrix.arch }} ./build - name: Upload SDK artifactbundle @@ -56,4 +56,21 @@ jobs: with: compression-level: 0 path: $RUNNER_TEMP/swift-android-sdk/products/*.artifactbundle.tar.gz + - name: Install SDK Locally + run: + $RUNNER_TEMP/host-toolchain/*/usr/bin/swift sdk install $RUNNER_TEMP/swift-android-sdk/products/*.artifactbundle.tar.gz + - name: Build Demo Project + run: | + cd $RUNNER_TEMP + mkdir DemoProject + cd DemoProject + $RUNNER_TEMP/host-toolchain/*/usr/bin/swift package init + $RUNNER_TEMP/host-toolchain/*/usr/bin/swift build --build-tests --sdk --swift-sdk aarch64-unknown-linux-android28 + - name: Test Swift Package on Android + # TODO: need to implement installed-sdk option in swift-android-action + if: false + uses: skiptools/swift-android-action@main + with: + package-path: $RUNNER_TEMP/DemoProject + installed-sdk: aarch64-unknown-linux-android28 diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 9ce9dfca..de6bedc7 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -1,6 +1,6 @@ #!/bin/bash # Swift SDK for Android: Build Script -set -ex +set -e # Docker sets TERM to xterm if using a pty; we probably want # xterm-256color, otherwise we only get eight colors @@ -37,7 +37,7 @@ function header { function groupstart { local text="$1" if [[ ! -z "$CI" ]]; then - echo "::group::{${text}}" + echo "::group::${text}" fi header $text } diff --git a/swift-ci/sdks/android/scripts/fetch-source.sh b/swift-ci/sdks/android/scripts/fetch-source.sh index ed725bbf..09ad6798 100755 --- a/swift-ci/sdks/android/scripts/fetch-source.sh +++ b/swift-ci/sdks/android/scripts/fetch-source.sh @@ -34,6 +34,20 @@ function header { echo "" } +function groupstart { + local text="$1" + if [[ ! -z "$CI" ]]; then + echo "::group::${text}" + fi + header $text +} + +function groupend { + if [[ ! -z "$CI" ]]; then + echo "::endgroup::" + fi +} + function usage { cat <|--swift-tag @@ -120,9 +134,9 @@ fi cd "$source_dir" # Fetch Swift -header "Fetching Swift" - mkdir -p swift-project + +groupstart "Fetching Swift" pushd swift-project >/dev/null [[ -d swift ]] || git clone ${github}apple/swift.git @@ -141,28 +155,28 @@ else fi popd >/dev/null +groupend # Fetch libxml2 -header "Fetching libxml2" - +groupstart "Fetching libxml2" [[ -d libxml2 ]] || git clone ${github}GNOME/libxml2.git pushd libxml2 >/dev/null 2>&1 git checkout v${LIBXML2_VERSION} popd >/dev/null 2>&1 +groupend # Fetch curl -header "Fetching curl" - -[[ -d curl ]] || git clone ${github}curl/curl.git +groupstart "Fetching curl" pushd curl >/dev/null 2>&1 git checkout curl-$(echo ${CURL_VERSION} | tr '.' '_') popd >/dev/null 2>&1 +groupend # Fetch BoringSSL -header "Fetching BoringSSL" - +groupstart "Fetching BoringSSL" [[ -d boringssl ]] || git clone https://boringssl.googlesource.com/boringssl pushd boringssl >/dev/null 2>&1 git checkout ${BORINGSSL_VERSION} popd >/dev/null 2>&1 +groupend From 16dcbaa19edff545fbe276a7e74b86035524dabf Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Fri, 18 Apr 2025 21:15:53 -0400 Subject: [PATCH 45/77] Android SDK build --- .github/workflows/pull_request.yml | 2 +- swift-ci/sdks/android/build | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 75d71749..da9423bf 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -48,7 +48,7 @@ jobs: - name: Build Android SDK working-directory: swift-ci/sdks/android run: | - sudo apt -q install ninja-build + sudo apt install -q ninja-build ./build #TARGET_ARCHS=${{ matrix.arch }} ./build - name: Upload SDK artifactbundle diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 9488bc6c..3839f10b 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -1,4 +1,4 @@ -#!/bin/bash -ex +#!/bin/bash -e # Swift Android SDK: Top-level Build Script # default architectures to build for From 413d4313104bd747cffb5bd726c33e1eebbe839d Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Fri, 18 Apr 2025 21:16:47 -0400 Subject: [PATCH 46/77] Android SDK build --- .github/workflows/pull_request.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index da9423bf..4565b34d 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -55,7 +55,7 @@ jobs: uses: actions/upload-artifact@v4 with: compression-level: 0 - path: $RUNNER_TEMP/swift-android-sdk/products/*.artifactbundle.tar.gz + path: ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz - name: Install SDK Locally run: $RUNNER_TEMP/host-toolchain/*/usr/bin/swift sdk install $RUNNER_TEMP/swift-android-sdk/products/*.artifactbundle.tar.gz From 0ef0ecad2f4f584c249bcc1fce5fe353ec669f86 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Sat, 19 Apr 2025 08:46:37 -0400 Subject: [PATCH 47/77] Android SDK build --- swift-ci/sdks/android/scripts/fetch-source.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/swift-ci/sdks/android/scripts/fetch-source.sh b/swift-ci/sdks/android/scripts/fetch-source.sh index 09ad6798..26c88d7a 100755 --- a/swift-ci/sdks/android/scripts/fetch-source.sh +++ b/swift-ci/sdks/android/scripts/fetch-source.sh @@ -167,6 +167,7 @@ groupend # Fetch curl groupstart "Fetching curl" +[[ -d curl ]] || git clone ${github}curl/curl.git pushd curl >/dev/null 2>&1 git checkout curl-$(echo ${CURL_VERSION} | tr '.' '_') popd >/dev/null 2>&1 From ddd2c4b464ffd17ed85ac7c55632f50143fe678a Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Sat, 19 Apr 2025 10:10:45 -0400 Subject: [PATCH 48/77] Android SDK build --- .github/workflows/pull_request.yml | 14 +++++++++---- swift-ci/sdks/android/scripts/build.sh | 29 +++++++++++--------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 4565b34d..34637c04 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -49,7 +49,13 @@ jobs: working-directory: swift-ci/sdks/android run: | sudo apt install -q ninja-build - ./build + # build all architectures + #./build + + # just build x86_64 for testing + TARGET_ARCHS=x86_64 ./build + + # build arch specified by the matrix #TARGET_ARCHS=${{ matrix.arch }} ./build - name: Upload SDK artifactbundle uses: actions/upload-artifact@v4 @@ -58,14 +64,14 @@ jobs: path: ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz - name: Install SDK Locally run: - $RUNNER_TEMP/host-toolchain/*/usr/bin/swift sdk install $RUNNER_TEMP/swift-android-sdk/products/*.artifactbundle.tar.gz + $RUNNER_TEMP/swift-android-sdk/host-toolchain/*/usr/bin/swift sdk install $RUNNER_TEMP/swift-android-sdk/products/*.artifactbundle.tar.gz - name: Build Demo Project run: | cd $RUNNER_TEMP mkdir DemoProject cd DemoProject - $RUNNER_TEMP/host-toolchain/*/usr/bin/swift package init - $RUNNER_TEMP/host-toolchain/*/usr/bin/swift build --build-tests --sdk --swift-sdk aarch64-unknown-linux-android28 + $RUNNER_TEMP/swift-android-sdk/host-toolchain/*/usr/bin/swift package init + $RUNNER_TEMP/swift-android-sdk/host-toolchain/*/usr/bin/swift build --build-tests --sdk --swift-sdk aarch64-unknown-linux-android28 - name: Test Swift Package on Android # TODO: need to implement installed-sdk option in swift-android-action if: false diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index de6bedc7..c285eb67 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -401,6 +401,8 @@ groupstart "Bundling SDK" sdk_name=swift-${swift_version}-android-${android_api}-${android_sdk_version} #sdk_base=android-27c-sysroot sdk_base=swift-android +#sdk_root="${sdk_base}-${android_sdk_version}.sdk" +sdk_root="${sdk_base}.sdk" bundle="${sdk_name}.artifactbundle" @@ -420,7 +422,7 @@ cat > info.json <> swift-sdk.json <> swift-sdk.json < toolset.json < swift-toolset.json < Date: Sat, 19 Apr 2025 10:20:30 -0400 Subject: [PATCH 49/77] Android SDK build --- .github/workflows/pull_request.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 34637c04..f4e406c6 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -57,21 +57,29 @@ jobs: # build arch specified by the matrix #TARGET_ARCHS=${{ matrix.arch }} ./build + - name: Get artifact info + id: paths + run: | + echo "swift-path=$(ls ${{ runner.temp }}/swift-android-sdk/host-toolchain/*/usr/bin/swift)" >> $GITHUB_OUTPUT + echo "artifact-name=$(basename ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz)" >> $GITHUB_OUTPUT + echo "artifact-path=$(realpath ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz)" >> $GITHUB_OUTPUT - name: Upload SDK artifactbundle uses: actions/upload-artifact@v4 with: compression-level: 0 - path: ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz + name: ${{ steps.paths.outputs.artifact-name }} + path: ${{ steps.paths.outputs.artifact-path }} - name: Install SDK Locally run: - $RUNNER_TEMP/swift-android-sdk/host-toolchain/*/usr/bin/swift sdk install $RUNNER_TEMP/swift-android-sdk/products/*.artifactbundle.tar.gz + ${{ steps.paths.outputs.swift-path }} sdk install ${{ steps.paths.outputs.artifact-path }} - name: Build Demo Project run: | cd $RUNNER_TEMP mkdir DemoProject cd DemoProject - $RUNNER_TEMP/swift-android-sdk/host-toolchain/*/usr/bin/swift package init - $RUNNER_TEMP/swift-android-sdk/host-toolchain/*/usr/bin/swift build --build-tests --sdk --swift-sdk aarch64-unknown-linux-android28 + ${{ steps.paths.outputs.swift-path }} --version + ${{ steps.paths.outputs.swift-path }} package init + ${{ steps.paths.outputs.swift-path }} build --build-tests --sdk --swift-sdk x86_64-unknown-linux-android28 - name: Test Swift Package on Android # TODO: need to implement installed-sdk option in swift-android-action if: false From 31bd0e94715fcdd92da6f111761881d49892fd5f Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Sat, 19 Apr 2025 10:53:36 -0400 Subject: [PATCH 50/77] Android SDK build --- .github/workflows/pull_request.yml | 14 +- swift-ci/sdks/android/tee | 7780 ++++++++++++++++++++++++++++ 2 files changed, 7788 insertions(+), 6 deletions(-) create mode 100644 swift-ci/sdks/android/tee diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index f4e406c6..fbde1623 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -69,22 +69,24 @@ jobs: compression-level: 0 name: ${{ steps.paths.outputs.artifact-name }} path: ${{ steps.paths.outputs.artifact-path }} - - name: Install SDK Locally - run: + - name: Install SDK + run: | ${{ steps.paths.outputs.swift-path }} sdk install ${{ steps.paths.outputs.artifact-path }} + ${{ steps.paths.outputs.swift-path }} sdk configure --show-configuration $(${{ steps.paths.outputs.swift-path }} sdk list | head -n 1) x86_64-swift-android - name: Build Demo Project run: | - cd $RUNNER_TEMP + cd ${{ runner.temp }} mkdir DemoProject cd DemoProject ${{ steps.paths.outputs.swift-path }} --version ${{ steps.paths.outputs.swift-path }} package init - ${{ steps.paths.outputs.swift-path }} build --build-tests --sdk --swift-sdk x86_64-unknown-linux-android28 + ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-swift-android - name: Test Swift Package on Android # TODO: need to implement installed-sdk option in swift-android-action if: false uses: skiptools/swift-android-action@main with: - package-path: $RUNNER_TEMP/DemoProject - installed-sdk: aarch64-unknown-linux-android28 + package-path: ${{ runner.temp }}/DemoProject + installed-sdk: x86_64-swift-android + installed-swift: ${{ steps.paths.outputs.swift-path }} diff --git a/swift-ci/sdks/android/tee b/swift-ci/sdks/android/tee new file mode 100644 index 00000000..8d7690ae --- /dev/null +++ b/swift-ci/sdks/android/tee @@ -0,0 +1,7780 @@ +/tmp/swift-android-sdk/build/swift-6.1-DEVELOPMENT-SNAPSHOT-2025-03-25-a-40-gf3c113c772d-android-28-0.1.artifactbundle +├── info.json +└── swift-6.1-DEVELOPMENT-SNAPSHOT-2025-03-25-a-40-gf3c113c772d-android-28-0.1 + └── swift-android + ├── swift-android.sdk + │   ├── aarch64 + │   │   └── usr + │   │   ├── bin + │   │   │   ├── bssl + │   │   │   ├── curl-config + │   │   │   ├── plutil + │   │   │   ├── sdk-module-lists + │   │   │   │   ├── create-module-lists.sh + │   │   │   │   ├── fixed-clang-modules-appletvos.txt + │   │   │   │   ├── fixed-clang-modules-common.txt + │   │   │   │   ├── fixed-clang-modules-iosmac.txt + │   │   │   │   ├── fixed-clang-modules-iphoneos.txt + │   │   │   │   ├── fixed-clang-modules-macosx.txt + │   │   │   │   ├── fixed-clang-modules-watchos.txt + │   │   │   │   ├── fixed-swift-modules-appletvos.txt + │   │   │   │   ├── fixed-swift-modules-common.txt + │   │   │   │   ├── fixed-swift-modules-iosmac.txt + │   │   │   │   ├── fixed-swift-modules-iphoneos.txt + │   │   │   │   ├── fixed-swift-modules-macosx.txt + │   │   │   │   ├── fixed-swift-modules-watchos.txt + │   │   │   │   └── infer-imports.py + │   │   │   ├── swift-api-checker.py + │   │   │   ├── swift-api-dump.py + │   │   │   ├── xml2-config + │   │   │   ├── xmlcatalog + │   │   │   └── xmllint + │   │   ├── include + │   │   │   ├── curl + │   │   │   │   ├── curl.h + │   │   │   │   ├── curlver.h + │   │   │   │   ├── easy.h + │   │   │   │   ├── header.h + │   │   │   │   ├── mprintf.h + │   │   │   │   ├── multi.h + │   │   │   │   ├── options.h + │   │   │   │   ├── stdcheaders.h + │   │   │   │   ├── system.h + │   │   │   │   ├── typecheck-gcc.h + │   │   │   │   ├── urlapi.h + │   │   │   │   └── websockets.h + │   │   │   ├── libxml2 + │   │   │   │   └── libxml + │   │   │   │   ├── c14n.h + │   │   │   │   ├── catalog.h + │   │   │   │   ├── chvalid.h + │   │   │   │   ├── debugXML.h + │   │   │   │   ├── dict.h + │   │   │   │   ├── encoding.h + │   │   │   │   ├── entities.h + │   │   │   │   ├── globals.h + │   │   │   │   ├── hash.h + │   │   │   │   ├── HTMLparser.h + │   │   │   │   ├── HTMLtree.h + │   │   │   │   ├── list.h + │   │   │   │   ├── nanoftp.h + │   │   │   │   ├── nanohttp.h + │   │   │   │   ├── parser.h + │   │   │   │   ├── parserInternals.h + │   │   │   │   ├── pattern.h + │   │   │   │   ├── relaxng.h + │   │   │   │   ├── SAX2.h + │   │   │   │   ├── SAX.h + │   │   │   │   ├── schemasInternals.h + │   │   │   │   ├── schematron.h + │   │   │   │   ├── threads.h + │   │   │   │   ├── tree.h + │   │   │   │   ├── uri.h + │   │   │   │   ├── valid.h + │   │   │   │   ├── xinclude.h + │   │   │   │   ├── xlink.h + │   │   │   │   ├── xmlautomata.h + │   │   │   │   ├── xmlerror.h + │   │   │   │   ├── xmlexports.h + │   │   │   │   ├── xmlIO.h + │   │   │   │   ├── xmlmemory.h + │   │   │   │   ├── xmlmodule.h + │   │   │   │   ├── xmlreader.h + │   │   │   │   ├── xmlregexp.h + │   │   │   │   ├── xmlsave.h + │   │   │   │   ├── xmlschemas.h + │   │   │   │   ├── xmlschemastypes.h + │   │   │   │   ├── xmlstring.h + │   │   │   │   ├── xmlunicode.h + │   │   │   │   ├── xmlversion.h + │   │   │   │   ├── xmlwriter.h + │   │   │   │   ├── xpath.h + │   │   │   │   ├── xpathInternals.h + │   │   │   │   └── xpointer.h + │   │   │   ├── openssl + │   │   │   │   ├── aead.h + │   │   │   │   ├── aes.h + │   │   │   │   ├── arm_arch.h + │   │   │   │   ├── asn1.h + │   │   │   │   ├── asn1_mac.h + │   │   │   │   ├── asn1t.h + │   │   │   │   ├── base64.h + │   │   │   │   ├── base.h + │   │   │   │   ├── bio.h + │   │   │   │   ├── blake2.h + │   │   │   │   ├── blowfish.h + │   │   │   │   ├── bn.h + │   │   │   │   ├── buffer.h + │   │   │   │   ├── buf.h + │   │   │   │   ├── bytestring.h + │   │   │   │   ├── cast.h + │   │   │   │   ├── chacha.h + │   │   │   │   ├── cipher.h + │   │   │   │   ├── cmac.h + │   │   │   │   ├── conf.h + │   │   │   │   ├── cpu.h + │   │   │   │   ├── crypto.h + │   │   │   │   ├── ctrdrbg.h + │   │   │   │   ├── curve25519.h + │   │   │   │   ├── des.h + │   │   │   │   ├── dh.h + │   │   │   │   ├── digest.h + │   │   │   │   ├── dsa.h + │   │   │   │   ├── dtls1.h + │   │   │   │   ├── ecdh.h + │   │   │   │   ├── ecdsa.h + │   │   │   │   ├── ec.h + │   │   │   │   ├── ec_key.h + │   │   │   │   ├── engine.h + │   │   │   │   ├── e_os2.h + │   │   │   │   ├── err.h + │   │   │   │   ├── evp_errors.h + │   │   │   │   ├── evp.h + │   │   │   │   ├── ex_data.h + │   │   │   │   ├── hkdf.h + │   │   │   │   ├── hmac.h + │   │   │   │   ├── hpke.h + │   │   │   │   ├── hrss.h + │   │   │   │   ├── is_boringssl.h + │   │   │   │   ├── lhash.h + │   │   │   │   ├── md4.h + │   │   │   │   ├── md5.h + │   │   │   │   ├── mem.h + │   │   │   │   ├── nid.h + │   │   │   │   ├── objects.h + │   │   │   │   ├── obj.h + │   │   │   │   ├── obj_mac.h + │   │   │   │   ├── opensslconf.h + │   │   │   │   ├── opensslv.h + │   │   │   │   ├── ossl_typ.h + │   │   │   │   ├── pem.h + │   │   │   │   ├── pkcs12.h + │   │   │   │   ├── pkcs7.h + │   │   │   │   ├── pkcs8.h + │   │   │   │   ├── poly1305.h + │   │   │   │   ├── pool.h + │   │   │   │   ├── rand.h + │   │   │   │   ├── rc4.h + │   │   │   │   ├── ripemd.h + │   │   │   │   ├── rsa.h + │   │   │   │   ├── safestack.h + │   │   │   │   ├── service_indicator.h + │   │   │   │   ├── sha.h + │   │   │   │   ├── siphash.h + │   │   │   │   ├── span.h + │   │   │   │   ├── srtp.h + │   │   │   │   ├── ssl3.h + │   │   │   │   ├── ssl.h + │   │   │   │   ├── stack.h + │   │   │   │   ├── thread.h + │   │   │   │   ├── tls1.h + │   │   │   │   ├── trust_token.h + │   │   │   │   ├── type_check.h + │   │   │   │   ├── x509.h + │   │   │   │   ├── x509v3.h + │   │   │   │   └── x509_vfy.h + │   │   │   └── swift + │   │   │   ├── Runtime + │   │   │   │   └── CMakeConfig.h + │   │   │   └── SwiftRemoteMirror + │   │   │   ├── MemoryReaderInterface.h + │   │   │   ├── module.modulemap + │   │   │   ├── Platform.h + │   │   │   ├── SwiftRemoteMirror.h + │   │   │   └── SwiftRemoteMirrorTypes.h + │   │   ├── lib + │   │   │   ├── cmake + │   │   │   │   ├── CURL + │   │   │   │   │   ├── CURLConfig.cmake + │   │   │   │   │   ├── CURLConfigVersion.cmake + │   │   │   │   │   ├── CURLTargets.cmake + │   │   │   │   │   └── CURLTargets-release.cmake + │   │   │   │   ├── libxml2-2.12.7 + │   │   │   │   │   ├── libxml2-config.cmake + │   │   │   │   │   ├── libxml2-config-version.cmake + │   │   │   │   │   ├── libxml2-export.cmake + │   │   │   │   │   └── libxml2-export-release.cmake + │   │   │   │   └── OpenSSL + │   │   │   │   ├── OpenSSLConfig.cmake + │   │   │   │   ├── OpenSSLTargets.cmake + │   │   │   │   └── OpenSSLTargets-release.cmake + │   │   │   ├── libcrypto.a + │   │   │   ├── libcurl.a + │   │   │   ├── libssl.a + │   │   │   ├── libxml2.a + │   │   │   ├── pkgconfig + │   │   │   │   ├── libcurl.pc + │   │   │   │   └── libxml-2.0.pc + │   │   │   ├── swift + │   │   │   │   ├── android + │   │   │   │   │   ├── aarch64 + │   │   │   │   │   │   ├── android.modulemap + │   │   │   │   │   │   ├── Dispatch.swiftdoc + │   │   │   │   │   │   ├── Dispatch.swiftmodule + │   │   │   │   │   │   ├── SwiftAndroidNDK.h + │   │   │   │   │   │   ├── SwiftBionic.h + │   │   │   │   │   │   ├── swiftrt.o + │   │   │   │   │   │   ├── XCTest.swiftdoc + │   │   │   │   │   │   └── XCTest.swiftmodule + │   │   │   │   │   ├── Android.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── _Builtin_float.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── _Concurrency.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── CxxStdlib.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Cxx.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── _Differentiation.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Distributed.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── _FoundationCollections.swiftmodule + │   │   │   │   │   │   ├── aarch64.swiftdoc + │   │   │   │   │   │   └── aarch64.swiftmodule + │   │   │   │   │   ├── FoundationEssentials.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── FoundationInternationalization.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── FoundationNetworking.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Foundation.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── FoundationXML.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── libBlocksRuntime.so + │   │   │   │   │   ├── libcxxshim.h + │   │   │   │   │   ├── libcxxshim.modulemap + │   │   │   │   │   ├── libcxxstdlibshim.h + │   │   │   │   │   ├── libdispatch.so + │   │   │   │   │   ├── libFoundationEssentials.so + │   │   │   │   │   ├── lib_FoundationICU.so + │   │   │   │   │   ├── libFoundationInternationalization.so + │   │   │   │   │   ├── libFoundationNetworking.so + │   │   │   │   │   ├── libFoundation.so + │   │   │   │   │   ├── libFoundationXML.so + │   │   │   │   │   ├── libswiftAndroid.so + │   │   │   │   │   ├── libswift_Builtin_float.so + │   │   │   │   │   ├── libswift_Concurrency.so + │   │   │   │   │   ├── libswiftCore.so + │   │   │   │   │   ├── libswiftCxx.a + │   │   │   │   │   ├── libswiftCxxStdlib.a + │   │   │   │   │   ├── libswift_Differentiation.so + │   │   │   │   │   ├── libswiftDispatch.so + │   │   │   │   │   ├── libswiftDistributed.so + │   │   │   │   │   ├── libswift_math.so + │   │   │   │   │   ├── libswiftObservation.so + │   │   │   │   │   ├── libswiftRegexBuilder.so + │   │   │   │   │   ├── libswift_RegexParser.so + │   │   │   │   │   ├── libswiftRemoteMirror.so + │   │   │   │   │   ├── libswift_StringProcessing.so + │   │   │   │   │   ├── libswiftSwiftOnoneSupport.so + │   │   │   │   │   ├── libswiftSynchronization.so + │   │   │   │   │   ├── libswift_Volatile.so + │   │   │   │   │   ├── libXCTest.so + │   │   │   │   │   ├── _math.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Observation.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── RegexBuilder.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── _RegexParser.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── _StringProcessing.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── SwiftOnoneSupport.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Swift.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Synchronization.swiftmodule + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   │   └── _Volatile.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.abi.json + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── apinotes + │   │   │   │   │   ├── posix_filesystem.apinotes + │   │   │   │   │   └── std.apinotes + │   │   │   │   ├── Block + │   │   │   │   │   └── Block.h + │   │   │   │   ├── clang + │   │   │   │   │   ├── bin + │   │   │   │   │   │   └── hwasan_symbolize + │   │   │   │   │   ├── include + │   │   │   │   │   │   ├── adcintrin.h + │   │   │   │   │   │   ├── adxintrin.h + │   │   │   │   │   │   ├── altivec.h + │   │   │   │   │   │   ├── ammintrin.h + │   │   │   │   │   │   ├── amxcomplexintrin.h + │   │   │   │   │   │   ├── amxfp16intrin.h + │   │   │   │   │   │   ├── amxintrin.h + │   │   │   │   │   │   ├── arm64intr.h + │   │   │   │   │   │   ├── arm_acle.h + │   │   │   │   │   │   ├── arm_bf16.h + │   │   │   │   │   │   ├── arm_cde.h + │   │   │   │   │   │   ├── arm_cmse.h + │   │   │   │   │   │   ├── arm_fp16.h + │   │   │   │   │   │   ├── armintr.h + │   │   │   │   │   │   ├── arm_mve.h + │   │   │   │   │   │   ├── arm_neon.h + │   │   │   │   │   │   ├── arm_neon_sve_bridge.h + │   │   │   │   │   │   ├── arm_sme.h + │   │   │   │   │   │   ├── arm_sve.h + │   │   │   │   │   │   ├── arm_vector_types.h + │   │   │   │   │   │   ├── avx2intrin.h + │   │   │   │   │   │   ├── avx512bf16intrin.h + │   │   │   │   │   │   ├── avx512bitalgintrin.h + │   │   │   │   │   │   ├── avx512bwintrin.h + │   │   │   │   │   │   ├── avx512cdintrin.h + │   │   │   │   │   │   ├── avx512dqintrin.h + │   │   │   │   │   │   ├── avx512fintrin.h + │   │   │   │   │   │   ├── avx512fp16intrin.h + │   │   │   │   │   │   ├── avx512ifmaintrin.h + │   │   │   │   │   │   ├── avx512ifmavlintrin.h + │   │   │   │   │   │   ├── avx512vbmi2intrin.h + │   │   │   │   │   │   ├── avx512vbmiintrin.h + │   │   │   │   │   │   ├── avx512vbmivlintrin.h + │   │   │   │   │   │   ├── avx512vlbf16intrin.h + │   │   │   │   │   │   ├── avx512vlbitalgintrin.h + │   │   │   │   │   │   ├── avx512vlbwintrin.h + │   │   │   │   │   │   ├── avx512vlcdintrin.h + │   │   │   │   │   │   ├── avx512vldqintrin.h + │   │   │   │   │   │   ├── avx512vlfp16intrin.h + │   │   │   │   │   │   ├── avx512vlintrin.h + │   │   │   │   │   │   ├── avx512vlvbmi2intrin.h + │   │   │   │   │   │   ├── avx512vlvnniintrin.h + │   │   │   │   │   │   ├── avx512vlvp2intersectintrin.h + │   │   │   │   │   │   ├── avx512vnniintrin.h + │   │   │   │   │   │   ├── avx512vp2intersectintrin.h + │   │   │   │   │   │   ├── avx512vpopcntdqintrin.h + │   │   │   │   │   │   ├── avx512vpopcntdqvlintrin.h + │   │   │   │   │   │   ├── avxifmaintrin.h + │   │   │   │   │   │   ├── avxintrin.h + │   │   │   │   │   │   ├── avxneconvertintrin.h + │   │   │   │   │   │   ├── avxvnniint16intrin.h + │   │   │   │   │   │   ├── avxvnniint8intrin.h + │   │   │   │   │   │   ├── avxvnniintrin.h + │   │   │   │   │   │   ├── bmi2intrin.h + │   │   │   │   │   │   ├── bmiintrin.h + │   │   │   │   │   │   ├── builtins.h + │   │   │   │   │   │   ├── cet.h + │   │   │   │   │   │   ├── cetintrin.h + │   │   │   │   │   │   ├── __clang_cuda_builtin_vars.h + │   │   │   │   │   │   ├── __clang_cuda_cmath.h + │   │   │   │   │   │   ├── __clang_cuda_complex_builtins.h + │   │   │   │   │   │   ├── __clang_cuda_device_functions.h + │   │   │   │   │   │   ├── __clang_cuda_intrinsics.h + │   │   │   │   │   │   ├── __clang_cuda_libdevice_declares.h + │   │   │   │   │   │   ├── __clang_cuda_math_forward_declares.h + │   │   │   │   │   │   ├── __clang_cuda_math.h + │   │   │   │   │   │   ├── __clang_cuda_runtime_wrapper.h + │   │   │   │   │   │   ├── __clang_cuda_texture_intrinsics.h + │   │   │   │   │   │   ├── __clang_hip_cmath.h + │   │   │   │   │   │   ├── __clang_hip_libdevice_declares.h + │   │   │   │   │   │   ├── __clang_hip_math.h + │   │   │   │   │   │   ├── __clang_hip_runtime_wrapper.h + │   │   │   │   │   │   ├── __clang_hip_stdlib.h + │   │   │   │   │   │   ├── cldemoteintrin.h + │   │   │   │   │   │   ├── clflushoptintrin.h + │   │   │   │   │   │   ├── clwbintrin.h + │   │   │   │   │   │   ├── clzerointrin.h + │   │   │   │   │   │   ├── cmpccxaddintrin.h + │   │   │   │   │   │   ├── cpuid.h + │   │   │   │   │   │   ├── crc32intrin.h + │   │   │   │   │   │   ├── cuda_wrappers + │   │   │   │   │   │   │   ├── algorithm + │   │   │   │   │   │   │   ├── bits + │   │   │   │   │   │   │   │   ├── basic_string.h + │   │   │   │   │   │   │   │   ├── basic_string.tcc + │   │   │   │   │   │   │   │   └── shared_ptr_base.h + │   │   │   │   │   │   │   ├── cmath + │   │   │   │   │   │   │   ├── complex + │   │   │   │   │   │   │   └── new + │   │   │   │   │   │   ├── emmintrin.h + │   │   │   │   │   │   ├── enqcmdintrin.h + │   │   │   │   │   │   ├── f16cintrin.h + │   │   │   │   │   │   ├── float.h + │   │   │   │   │   │   ├── fma4intrin.h + │   │   │   │   │   │   ├── fmaintrin.h + │   │   │   │   │   │   ├── fuzzer + │   │   │   │   │   │   │   └── FuzzedDataProvider.h + │   │   │   │   │   │   ├── fxsrintrin.h + │   │   │   │   │   │   ├── gfniintrin.h + │   │   │   │   │   │   ├── hexagon_circ_brev_intrinsics.h + │   │   │   │   │   │   ├── hexagon_protos.h + │   │   │   │   │   │   ├── hexagon_types.h + │   │   │   │   │   │   ├── hresetintrin.h + │   │   │   │   │   │   ├── htmintrin.h + │   │   │   │   │   │   ├── htmxlintrin.h + │   │   │   │   │   │   ├── hvx_hexagon_protos.h + │   │   │   │   │   │   ├── ia32intrin.h + │   │   │   │   │   │   ├── immintrin.h + │   │   │   │   │   │   ├── intrin0.h + │   │   │   │   │   │   ├── intrin.h + │   │   │   │   │   │   ├── inttypes.h + │   │   │   │   │   │   ├── invpcidintrin.h + │   │   │   │   │   │   ├── iso646.h + │   │   │   │   │   │   ├── keylockerintrin.h + │   │   │   │   │   │   ├── larchintrin.h + │   │   │   │   │   │   ├── lasxintrin.h + │   │   │   │   │   │   ├── limits.h + │   │   │   │   │   │   ├── llvm_libc_wrappers + │   │   │   │   │   │   │   ├── assert.h + │   │   │   │   │   │   │   ├── ctype.h + │   │   │   │   │   │   │   ├── inttypes.h + │   │   │   │   │   │   │   ├── stdio.h + │   │   │   │   │   │   │   ├── stdlib.h + │   │   │   │   │   │   │   ├── string.h + │   │   │   │   │   │   │   └── time.h + │   │   │   │   │   │   ├── lsxintrin.h + │   │   │   │   │   │   ├── lwpintrin.h + │   │   │   │   │   │   ├── lzcntintrin.h + │   │   │   │   │   │   ├── mm3dnow.h + │   │   │   │   │   │   ├── mmintrin.h + │   │   │   │   │   │   ├── mm_malloc.h + │   │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   │   ├── movdirintrin.h + │   │   │   │   │   │   ├── msa.h + │   │   │   │   │   │   ├── mwaitxintrin.h + │   │   │   │   │   │   ├── nmmintrin.h + │   │   │   │   │   │   ├── opencl-c-base.h + │   │   │   │   │   │   ├── opencl-c.h + │   │   │   │   │   │   ├── openmp_wrappers + │   │   │   │   │   │   │   ├── __clang_openmp_device_functions.h + │   │   │   │   │   │   │   ├── cmath + │   │   │   │   │   │   │   ├── complex + │   │   │   │   │   │   │   ├── complex_cmath.h + │   │   │   │   │   │   │   ├── complex.h + │   │   │   │   │   │   │   ├── math.h + │   │   │   │   │   │   │   └── new + │   │   │   │   │   │   ├── orc + │   │   │   │   │   │   │   └── c_api.h + │   │   │   │   │   │   ├── pconfigintrin.h + │   │   │   │   │   │   ├── pkuintrin.h + │   │   │   │   │   │   ├── pmmintrin.h + │   │   │   │   │   │   ├── popcntintrin.h + │   │   │   │   │   │   ├── ppc_wrappers + │   │   │   │   │   │   │   ├── bmi2intrin.h + │   │   │   │   │   │   │   ├── bmiintrin.h + │   │   │   │   │   │   │   ├── emmintrin.h + │   │   │   │   │   │   │   ├── immintrin.h + │   │   │   │   │   │   │   ├── mmintrin.h + │   │   │   │   │   │   │   ├── mm_malloc.h + │   │   │   │   │   │   │   ├── nmmintrin.h + │   │   │   │   │   │   │   ├── pmmintrin.h + │   │   │   │   │   │   │   ├── smmintrin.h + │   │   │   │   │   │   │   ├── tmmintrin.h + │   │   │   │   │   │   │   ├── x86gprintrin.h + │   │   │   │   │   │   │   ├── x86intrin.h + │   │   │   │   │   │   │   └── xmmintrin.h + │   │   │   │   │   │   ├── prfchiintrin.h + │   │   │   │   │   │   ├── prfchwintrin.h + │   │   │   │   │   │   ├── profile + │   │   │   │   │   │   │   ├── InstrProfData.inc + │   │   │   │   │   │   │   └── instr_prof_interface.h + │   │   │   │   │   │   ├── ptrauth.h + │   │   │   │   │   │   ├── ptwriteintrin.h + │   │   │   │   │   │   ├── raointintrin.h + │   │   │   │   │   │   ├── rdpruintrin.h + │   │   │   │   │   │   ├── rdseedintrin.h + │   │   │   │   │   │   ├── riscv_bitmanip.h + │   │   │   │   │   │   ├── riscv_crypto.h + │   │   │   │   │   │   ├── riscv_ntlh.h + │   │   │   │   │   │   ├── riscv_vector.h + │   │   │   │   │   │   ├── rtmintrin.h + │   │   │   │   │   │   ├── s390intrin.h + │   │   │   │   │   │   ├── sanitizer + │   │   │   │   │   │   │   ├── allocator_interface.h + │   │   │   │   │   │   │   ├── asan_interface.h + │   │   │   │   │   │   │   ├── common_interface_defs.h + │   │   │   │   │   │   │   ├── coverage_interface.h + │   │   │   │   │   │   │   ├── dfsan_interface.h + │   │   │   │   │   │   │   ├── hwasan_interface.h + │   │   │   │   │   │   │   ├── linux_syscall_hooks.h + │   │   │   │   │   │   │   ├── lsan_interface.h + │   │   │   │   │   │   │   ├── memprof_interface.h + │   │   │   │   │   │   │   ├── msan_interface.h + │   │   │   │   │   │   │   ├── netbsd_syscall_hooks.h + │   │   │   │   │   │   │   ├── scudo_interface.h + │   │   │   │   │   │   │   ├── tsan_interface_atomic.h + │   │   │   │   │   │   │   ├── tsan_interface.h + │   │   │   │   │   │   │   └── ubsan_interface.h + │   │   │   │   │   │   ├── serializeintrin.h + │   │   │   │   │   │   ├── sgxintrin.h + │   │   │   │   │   │   ├── sha512intrin.h + │   │   │   │   │   │   ├── shaintrin.h + │   │   │   │   │   │   ├── sifive_vector.h + │   │   │   │   │   │   ├── sm3intrin.h + │   │   │   │   │   │   ├── sm4intrin.h + │   │   │   │   │   │   ├── smmintrin.h + │   │   │   │   │   │   ├── stdalign.h + │   │   │   │   │   │   ├── __stdarg___gnuc_va_list.h + │   │   │   │   │   │   ├── stdarg.h + │   │   │   │   │   │   ├── __stdarg_header_macro.h + │   │   │   │   │   │   ├── __stdarg_va_arg.h + │   │   │   │   │   │   ├── __stdarg___va_copy.h + │   │   │   │   │   │   ├── __stdarg_va_copy.h + │   │   │   │   │   │   ├── __stdarg_va_list.h + │   │   │   │   │   │   ├── stdatomic.h + │   │   │   │   │   │   ├── stdbool.h + │   │   │   │   │   │   ├── stdckdint.h + │   │   │   │   │   │   ├── stddef.h + │   │   │   │   │   │   ├── __stddef_header_macro.h + │   │   │   │   │   │   ├── __stddef_max_align_t.h + │   │   │   │   │   │   ├── __stddef_null.h + │   │   │   │   │   │   ├── __stddef_nullptr_t.h + │   │   │   │   │   │   ├── __stddef_offsetof.h + │   │   │   │   │   │   ├── __stddef_ptrdiff_t.h + │   │   │   │   │   │   ├── __stddef_rsize_t.h + │   │   │   │   │   │   ├── __stddef_size_t.h + │   │   │   │   │   │   ├── __stddef_unreachable.h + │   │   │   │   │   │   ├── __stddef_wchar_t.h + │   │   │   │   │   │   ├── __stddef_wint_t.h + │   │   │   │   │   │   ├── stdint.h + │   │   │   │   │   │   ├── stdnoreturn.h + │   │   │   │   │   │   ├── tbmintrin.h + │   │   │   │   │   │   ├── tgmath.h + │   │   │   │   │   │   ├── tmmintrin.h + │   │   │   │   │   │   ├── tsxldtrkintrin.h + │   │   │   │   │   │   ├── uintrintrin.h + │   │   │   │   │   │   ├── unwind.h + │   │   │   │   │   │   ├── usermsrintrin.h + │   │   │   │   │   │   ├── vadefs.h + │   │   │   │   │   │   ├── vaesintrin.h + │   │   │   │   │   │   ├── varargs.h + │   │   │   │   │   │   ├── vecintrin.h + │   │   │   │   │   │   ├── velintrin_approx.h + │   │   │   │   │   │   ├── velintrin_gen.h + │   │   │   │   │   │   ├── velintrin.h + │   │   │   │   │   │   ├── vpclmulqdqintrin.h + │   │   │   │   │   │   ├── waitpkgintrin.h + │   │   │   │   │   │   ├── wasm_simd128.h + │   │   │   │   │   │   ├── wbnoinvdintrin.h + │   │   │   │   │   │   ├── __wmmintrin_aes.h + │   │   │   │   │   │   ├── wmmintrin.h + │   │   │   │   │   │   ├── __wmmintrin_pclmul.h + │   │   │   │   │   │   ├── x86gprintrin.h + │   │   │   │   │   │   ├── x86intrin.h + │   │   │   │   │   │   ├── xmmintrin.h + │   │   │   │   │   │   ├── xopintrin.h + │   │   │   │   │   │   ├── xray + │   │   │   │   │   │   │   ├── xray_interface.h + │   │   │   │   │   │   │   ├── xray_log_interface.h + │   │   │   │   │   │   │   └── xray_records.h + │   │   │   │   │   │   ├── xsavecintrin.h + │   │   │   │   │   │   ├── xsaveintrin.h + │   │   │   │   │   │   ├── xsaveoptintrin.h + │   │   │   │   │   │   ├── xsavesintrin.h + │   │   │   │   │   │   ├── xtestintrin.h + │   │   │   │   │   │   ├── yvals_core.h + │   │   │   │   │   │   └── zos_wrappers + │   │   │   │   │   │   └── builtins.h + │   │   │   │   │   ├── lib + │   │   │   │   │   │   └── linux + │   │   │   │   │   │   ├── clang_rt.crtbegin-x86_64.o + │   │   │   │   │   │   ├── clang_rt.crtend-x86_64.o + │   │   │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.asan-preinit-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.asan_static-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.asan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.asan-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.asan-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.builtins-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.cfi_diag-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.cfi-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.ctx_profile-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.dd-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.dfsan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.dfsan-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.dyndd-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.fuzzer_interceptors-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.fuzzer_no_main-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.fuzzer-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.gwp_asan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.hwasan-preinit-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.lsan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.memprof-preinit-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.memprof-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.memprof-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.memprof-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.msan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.msan-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.nsan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.nsan-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.profile-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.rtsan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.safestack-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.scudo_standalone_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.stats_client-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.stats-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.tsan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.tsan-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.tsan-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.xray-basic-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.xray-fdr-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.xray-profiling-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.xray-x86_64.a + │   │   │   │   │   │   └── liborc_rt-x86_64.a + │   │   │   │   │   └── share + │   │   │   │   │   ├── asan_ignorelist.txt + │   │   │   │   │   ├── cfi_ignorelist.txt + │   │   │   │   │   ├── dfsan_abilist.txt + │   │   │   │   │   ├── hwasan_ignorelist.txt + │   │   │   │   │   └── msan_ignorelist.txt + │   │   │   │   ├── CoreFoundation + │   │   │   │   │   ├── CFArray.h + │   │   │   │   │   ├── CFAttributedString.h + │   │   │   │   │   ├── CFAttributedStringPriv.h + │   │   │   │   │   ├── CFAvailability.h + │   │   │   │   │   ├── CFBag.h + │   │   │   │   │   ├── CFBase.h + │   │   │   │   │   ├── CFBigNumber.h + │   │   │   │   │   ├── CFBinaryHeap.h + │   │   │   │   │   ├── CFBitVector.h + │   │   │   │   │   ├── CFBundle_BinaryTypes.h + │   │   │   │   │   ├── CFBundle.h + │   │   │   │   │   ├── CFBundlePriv.h + │   │   │   │   │   ├── CFBurstTrie.h + │   │   │   │   │   ├── CFByteOrder.h + │   │   │   │   │   ├── CFCalendar.h + │   │   │   │   │   ├── CFCalendarPriv.h + │   │   │   │   │   ├── CFCharacterSet.h + │   │   │   │   │   ├── CFCharacterSetPriv.h + │   │   │   │   │   ├── CFConstantKeys.h + │   │   │   │   │   ├── CFData.h + │   │   │   │   │   ├── CFDateComponents.h + │   │   │   │   │   ├── CFDateFormatter.h + │   │   │   │   │   ├── CFDateFormatter_Private.h + │   │   │   │   │   ├── CFDate.h + │   │   │   │   │   ├── CFDateIntervalFormatter.h + │   │   │   │   │   ├── CFDateInterval.h + │   │   │   │   │   ├── CFDictionary.h + │   │   │   │   │   ├── CFError.h + │   │   │   │   │   ├── CFError_Private.h + │   │   │   │   │   ├── CFKnownLocations.h + │   │   │   │   │   ├── CFListFormatter.h + │   │   │   │   │   ├── CFLocale.h + │   │   │   │   │   ├── CFLocale_Private.h + │   │   │   │   │   ├── CFLocking.h + │   │   │   │   │   ├── CFLogUtilities.h + │   │   │   │   │   ├── CFMachPort.h + │   │   │   │   │   ├── CFMessagePort.h + │   │   │   │   │   ├── CFNotificationCenter.h + │   │   │   │   │   ├── CFNumberFormatter.h + │   │   │   │   │   ├── CFNumber.h + │   │   │   │   │   ├── CFNumber_Private.h + │   │   │   │   │   ├── CFOverflow.h + │   │   │   │   │   ├── CFPlugInCOM.h + │   │   │   │   │   ├── CFPlugIn.h + │   │   │   │   │   ├── CFPreferences.h + │   │   │   │   │   ├── CFPriv.h + │   │   │   │   │   ├── CFPropertyList.h + │   │   │   │   │   ├── CFPropertyList_Private.h + │   │   │   │   │   ├── CFRegularExpression.h + │   │   │   │   │   ├── CFRelativeDateTimeFormatter.h + │   │   │   │   │   ├── CFRunArray.h + │   │   │   │   │   ├── CFRunLoop.h + │   │   │   │   │   ├── CFRuntime.h + │   │   │   │   │   ├── CFSet.h + │   │   │   │   │   ├── CFSocket.h + │   │   │   │   │   ├── CFStorage.h + │   │   │   │   │   ├── CFStreamAbstract.h + │   │   │   │   │   ├── CFStream.h + │   │   │   │   │   ├── CFStreamPriv.h + │   │   │   │   │   ├── CFStringDefaultEncoding.h + │   │   │   │   │   ├── CFStringEncodingConverterExt.h + │   │   │   │   │   ├── CFStringEncodingConverter.h + │   │   │   │   │   ├── CFStringEncodingConverterPriv.h + │   │   │   │   │   ├── CFStringEncodingDatabase.h + │   │   │   │   │   ├── CFStringEncodingExt.h + │   │   │   │   │   ├── CFString.h + │   │   │   │   │   ├── CFString_Private.h + │   │   │   │   │   ├── CFTargetConditionals.h + │   │   │   │   │   ├── CFTimeZone.h + │   │   │   │   │   ├── CFTree.h + │   │   │   │   │   ├── CFUniChar.h + │   │   │   │   │   ├── CFUnicodeDecomposition.h + │   │   │   │   │   ├── CFUnicodePrecomposition.h + │   │   │   │   │   ├── CFURLAccess.h + │   │   │   │   │   ├── CFURLComponents.h + │   │   │   │   │   ├── CFURL.h + │   │   │   │   │   ├── CFURLPriv.h + │   │   │   │   │   ├── CFUserNotification.h + │   │   │   │   │   ├── CFUtilities.h + │   │   │   │   │   ├── CFUUID.h + │   │   │   │   │   ├── CoreFoundation.h + │   │   │   │   │   ├── ForFoundationOnly.h + │   │   │   │   │   ├── ForSwiftFoundationOnly.h + │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   └── static-module.map + │   │   │   │   ├── dispatch + │   │   │   │   │   ├── base.h + │   │   │   │   │   ├── block.h + │   │   │   │   │   ├── data.h + │   │   │   │   │   ├── dispatch.h + │   │   │   │   │   ├── group.h + │   │   │   │   │   ├── introspection.h + │   │   │   │   │   ├── io.h + │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   ├── object.h + │   │   │   │   │   ├── once.h + │   │   │   │   │   ├── queue.h + │   │   │   │   │   ├── semaphore.h + │   │   │   │   │   ├── source.h + │   │   │   │   │   └── time.h + │   │   │   │   ├── _FoundationCShims + │   │   │   │   │   ├── bplist_shims.h + │   │   │   │   │   ├── CFUniCharBitmapData.h + │   │   │   │   │   ├── CFUniCharBitmapData.inc.h + │   │   │   │   │   ├── _CShimsMacros.h + │   │   │   │   │   ├── _CShimsTargetConditionals.h + │   │   │   │   │   ├── _CStdlib.h + │   │   │   │   │   ├── filemanager_shims.h + │   │   │   │   │   ├── _FoundationCShims.h + │   │   │   │   │   ├── io_shims.h + │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   ├── platform_shims.h + │   │   │   │   │   ├── string_shims.h + │   │   │   │   │   └── uuid.h + │   │   │   │   ├── _foundation_unicode + │   │   │   │   │   ├── alphaindex.h + │   │   │   │   │   ├── appendable.h + │   │   │   │   │   ├── basictz.h + │   │   │   │   │   ├── brkiter.h + │   │   │   │   │   ├── bytestream.h + │   │   │   │   │   ├── bytestriebuilder.h + │   │   │   │   │   ├── bytestrie.h + │   │   │   │   │   ├── calendar.h + │   │   │   │   │   ├── caniter.h + │   │   │   │   │   ├── casemap.h + │   │   │   │   │   ├── char16ptr.h + │   │   │   │   │   ├── chariter.h + │   │   │   │   │   ├── choicfmt.h + │   │   │   │   │   ├── coleitr.h + │   │   │   │   │   ├── coll.h + │   │   │   │   │   ├── compactdecimalformat.h + │   │   │   │   │   ├── curramt.h + │   │   │   │   │   ├── currpinf.h + │   │   │   │   │   ├── currunit.h + │   │   │   │   │   ├── datefmt.h + │   │   │   │   │   ├── dbbi.h + │   │   │   │   │   ├── dcfmtsym.h + │   │   │   │   │   ├── decimfmt.h + │   │   │   │   │   ├── displayoptions.h + │   │   │   │   │   ├── docmain.h + │   │   │   │   │   ├── dtfmtsym.h + │   │   │   │   │   ├── dtintrv.h + │   │   │   │   │   ├── dtitvfmt.h + │   │   │   │   │   ├── dtitvinf.h + │   │   │   │   │   ├── dtptngen.h + │   │   │   │   │   ├── dtrule.h + │   │   │   │   │   ├── edits.h + │   │   │   │   │   ├── enumset.h + │   │   │   │   │   ├── errorcode.h + │   │   │   │   │   ├── fieldpos.h + │   │   │   │   │   ├── filteredbrk.h + │   │   │   │   │   ├── fmtable.h + │   │   │   │   │   ├── format.h + │   │   │   │   │   ├── formattednumber.h + │   │   │   │   │   ├── formattedvalue.h + │   │   │   │   │   ├── fpositer.h + │   │   │   │   │   ├── gender.h + │   │   │   │   │   ├── gregocal.h + │   │   │   │   │   ├── icudataver.h + │   │   │   │   │   ├── icuplug.h + │   │   │   │   │   ├── idna.h + │   │   │   │   │   ├── listformatter.h + │   │   │   │   │   ├── localebuilder.h + │   │   │   │   │   ├── localematcher.h + │   │   │   │   │   ├── localpointer.h + │   │   │   │   │   ├── locdspnm.h + │   │   │   │   │   ├── locid.h + │   │   │   │   │   ├── measfmt.h + │   │   │   │   │   ├── measunit.h + │   │   │   │   │   ├── measure.h + │   │   │   │   │   ├── messagepattern.h + │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   ├── msgfmt.h + │   │   │   │   │   ├── normalizer2.h + │   │   │   │   │   ├── normlzr.h + │   │   │   │   │   ├── nounit.h + │   │   │   │   │   ├── numberformatter.h + │   │   │   │   │   ├── numberrangeformatter.h + │   │   │   │   │   ├── numfmt.h + │   │   │   │   │   ├── numsys.h + │   │   │   │   │   ├── parseerr.h + │   │   │   │   │   ├── parsepos.h + │   │   │   │   │   ├── platform.h + │   │   │   │   │   ├── plurfmt.h + │   │   │   │   │   ├── plurrule.h + │   │   │   │   │   ├── ptypes.h + │   │   │   │   │   ├── putil.h + │   │   │   │   │   ├── rbbi.h + │   │   │   │   │   ├── rbnf.h + │   │   │   │   │   ├── rbtz.h + │   │   │   │   │   ├── regex.h + │   │   │   │   │   ├── region.h + │   │   │   │   │   ├── reldatefmt.h + │   │   │   │   │   ├── rep.h + │   │   │   │   │   ├── resbund.h + │   │   │   │   │   ├── schriter.h + │   │   │   │   │   ├── scientificnumberformatter.h + │   │   │   │   │   ├── search.h + │   │   │   │   │   ├── selfmt.h + │   │   │   │   │   ├── simpleformatter.h + │   │   │   │   │   ├── simplenumberformatter.h + │   │   │   │   │   ├── simpletz.h + │   │   │   │   │   ├── smpdtfmt.h + │   │   │   │   │   ├── sortkey.h + │   │   │   │   │   ├── std_string.h + │   │   │   │   │   ├── strenum.h + │   │   │   │   │   ├── stringoptions.h + │   │   │   │   │   ├── stringpiece.h + │   │   │   │   │   ├── stringtriebuilder.h + │   │   │   │   │   ├── stsearch.h + │   │   │   │   │   ├── symtable.h + │   │   │   │   │   ├── tblcoll.h + │   │   │   │   │   ├── timezone.h + │   │   │   │   │   ├── tmunit.h + │   │   │   │   │   ├── tmutamt.h + │   │   │   │   │   ├── tmutfmt.h + │   │   │   │   │   ├── translit.h + │   │   │   │   │   ├── tzfmt.h + │   │   │   │   │   ├── tznames.h + │   │   │   │   │   ├── tzrule.h + │   │   │   │   │   ├── tztrans.h + │   │   │   │   │   ├── ualoc.h + │   │   │   │   │   ├── uameasureformat.h + │   │   │   │   │   ├── uameasureunit.h + │   │   │   │   │   ├── uatimeunitformat.h + │   │   │   │   │   ├── ubidi.h + │   │   │   │   │   ├── ubiditransform.h + │   │   │   │   │   ├── ubrk.h + │   │   │   │   │   ├── ucal.h + │   │   │   │   │   ├── ucasemap.h + │   │   │   │   │   ├── ucat.h + │   │   │   │   │   ├── uchar.h + │   │   │   │   │   ├── ucharstriebuilder.h + │   │   │   │   │   ├── ucharstrie.h + │   │   │   │   │   ├── uchriter.h + │   │   │   │   │   ├── uclean.h + │   │   │   │   │   ├── ucnv_cb.h + │   │   │   │   │   ├── ucnv_err.h + │   │   │   │   │   ├── ucnv.h + │   │   │   │   │   ├── ucnvsel.h + │   │   │   │   │   ├── ucoleitr.h + │   │   │   │   │   ├── ucol.h + │   │   │   │   │   ├── uconfig.h + │   │   │   │   │   ├── ucpmap.h + │   │   │   │   │   ├── ucptrie.h + │   │   │   │   │   ├── ucsdet.h + │   │   │   │   │   ├── ucurr.h + │   │   │   │   │   ├── udata.h + │   │   │   │   │   ├── udateintervalformat.h + │   │   │   │   │   ├── udat.h + │   │   │   │   │   ├── udatintv.h + │   │   │   │   │   ├── udatpg.h + │   │   │   │   │   ├── udisplaycontext.h + │   │   │   │   │   ├── udisplayoptions.h + │   │   │   │   │   ├── uenum.h + │   │   │   │   │   ├── ufieldpositer.h + │   │   │   │   │   ├── uformattable.h + │   │   │   │   │   ├── uformattednumber.h + │   │   │   │   │   ├── uformattedvalue.h + │   │   │   │   │   ├── ugender.h + │   │   │   │   │   ├── uidna.h + │   │   │   │   │   ├── uiter.h + │   │   │   │   │   ├── uldnames.h + │   │   │   │   │   ├── ulistformatter.h + │   │   │   │   │   ├── ulocale.h + │   │   │   │   │   ├── ulocbuilder.h + │   │   │   │   │   ├── ulocdata.h + │   │   │   │   │   ├── uloc.h + │   │   │   │   │   ├── umachine.h + │   │   │   │   │   ├── umisc.h + │   │   │   │   │   ├── umsg.h + │   │   │   │   │   ├── umutablecptrie.h + │   │   │   │   │   ├── unifilt.h + │   │   │   │   │   ├── unifunct.h + │   │   │   │   │   ├── unimatch.h + │   │   │   │   │   ├── unirepl.h + │   │   │   │   │   ├── uniset.h + │   │   │   │   │   ├── unistr.h + │   │   │   │   │   ├── unorm2.h + │   │   │   │   │   ├── unorm.h + │   │   │   │   │   ├── unumberformatter.h + │   │   │   │   │   ├── unumberoptions.h + │   │   │   │   │   ├── unumberrangeformatter.h + │   │   │   │   │   ├── unum.h + │   │   │   │   │   ├── unumsys.h + │   │   │   │   │   ├── uobject.h + │   │   │   │   │   ├── uplrule.h + │   │   │   │   │   ├── upluralrules.h + │   │   │   │   │   ├── urbtok.h + │   │   │   │   │   ├── uregex.h + │   │   │   │   │   ├── uregion.h + │   │   │   │   │   ├── ureldatefmt.h + │   │   │   │   │   ├── urename.h + │   │   │   │   │   ├── urep.h + │   │   │   │   │   ├── ures.h + │   │   │   │   │   ├── uscript.h + │   │   │   │   │   ├── usearch.h + │   │   │   │   │   ├── uset.h + │   │   │   │   │   ├── usetiter.h + │   │   │   │   │   ├── ushape.h + │   │   │   │   │   ├── usimplenumberformatter.h + │   │   │   │   │   ├── uspoof.h + │   │   │   │   │   ├── usprep.h + │   │   │   │   │   ├── ustdio.h + │   │   │   │   │   ├── ustream.h + │   │   │   │   │   ├── ustring.h + │   │   │   │   │   ├── ustringtrie.h + │   │   │   │   │   ├── utext.h + │   │   │   │   │   ├── utf16.h + │   │   │   │   │   ├── utf32.h + │   │   │   │   │   ├── utf8.h + │   │   │   │   │   ├── utf.h + │   │   │   │   │   ├── utf_old.h + │   │   │   │   │   ├── utmscale.h + │   │   │   │   │   ├── utrace.h + │   │   │   │   │   ├── utrans.h + │   │   │   │   │   ├── utypes.h + │   │   │   │   │   ├── uvernum.h + │   │   │   │   │   ├── uversion.h + │   │   │   │   │   └── vtzone.h + │   │   │   │   ├── FrameworkABIBaseline + │   │   │   │   │   ├── _Concurrency + │   │   │   │   │   │   └── ABI + │   │   │   │   │   │   └── macos.json + │   │   │   │   │   ├── nil.json + │   │   │   │   │   ├── README + │   │   │   │   │   └── Swift + │   │   │   │   │   ├── ABI + │   │   │   │   │   │   └── macos.json + │   │   │   │   │   └── API + │   │   │   │   │   └── macos.json + │   │   │   │   ├── os + │   │   │   │   │   ├── generic_base.h + │   │   │   │   │   ├── generic_unix_base.h + │   │   │   │   │   ├── generic_win_base.h + │   │   │   │   │   └── object.h + │   │   │   │   └── shims + │   │   │   │   ├── AssertionReporting.h + │   │   │   │   ├── CoreFoundationShims.h + │   │   │   │   ├── EmbeddedShims.h + │   │   │   │   ├── FoundationShims.h + │   │   │   │   ├── GlobalObjects.h + │   │   │   │   ├── HeapObject.h + │   │   │   │   ├── KeyPath.h + │   │   │   │   ├── LibcOverlayShims.h + │   │   │   │   ├── LibcShims.h + │   │   │   │   ├── MetadataSections.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── Random.h + │   │   │   │   ├── RefCount.h + │   │   │   │   ├── Reflection.h + │   │   │   │   ├── RuntimeShims.h + │   │   │   │   ├── RuntimeStubs.h + │   │   │   │   ├── _SwiftConcurrency.h + │   │   │   │   ├── _SwiftDistributed.h + │   │   │   │   ├── SwiftStdbool.h + │   │   │   │   ├── SwiftStddef.h + │   │   │   │   ├── SwiftStdint.h + │   │   │   │   ├── _SynchronizationShims.h + │   │   │   │   ├── System.h + │   │   │   │   ├── Target.h + │   │   │   │   ├── ThreadLocalStorage.h + │   │   │   │   ├── UnicodeData.h + │   │   │   │   └── Visibility.h + │   │   │   └── swift_static + │   │   │   ├── android + │   │   │   │   ├── aarch64 + │   │   │   │   │   ├── android.modulemap + │   │   │   │   │   ├── Dispatch.swiftdoc + │   │   │   │   │   ├── Dispatch.swiftmodule + │   │   │   │   │   ├── SwiftAndroidNDK.h + │   │   │   │   │   ├── SwiftBionic.h + │   │   │   │   │   └── swiftrt.o + │   │   │   │   ├── Android.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _Builtin_float.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _Concurrency.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── CxxStdlib.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Cxx.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _Differentiation.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Distributed.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _FoundationCollections.swiftmodule + │   │   │   │   │   ├── aarch64.swiftdoc + │   │   │   │   │   └── aarch64.swiftmodule + │   │   │   │   ├── FoundationEssentials.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── FoundationInternationalization.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── FoundationNetworking.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Foundation.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── FoundationXML.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── libBlocksRuntime.a + │   │   │   │   ├── lib_CFURLSessionInterface.a + │   │   │   │   ├── lib_CFXMLInterface.a + │   │   │   │   ├── libCoreFoundation.a + │   │   │   │   ├── libcxxshim.h + │   │   │   │   ├── libcxxshim.modulemap + │   │   │   │   ├── libcxxstdlibshim.h + │   │   │   │   ├── libdispatch.a + │   │   │   │   ├── libDispatchStubs.a + │   │   │   │   ├── libFoundation.a + │   │   │   │   ├── lib_FoundationCollections.a + │   │   │   │   ├── lib_FoundationCShims.a + │   │   │   │   ├── libFoundationEssentials.a + │   │   │   │   ├── lib_FoundationICU.a + │   │   │   │   ├── libFoundationInternationalization.a + │   │   │   │   ├── libFoundationNetworking.a + │   │   │   │   ├── libFoundationXML.a + │   │   │   │   ├── libswiftAndroid.a + │   │   │   │   ├── libswift_Builtin_float.a + │   │   │   │   ├── libswift_Concurrency.a + │   │   │   │   ├── libswiftCore.a + │   │   │   │   ├── libswift_Differentiation.a + │   │   │   │   ├── libswiftDispatch.a + │   │   │   │   ├── libswiftDistributed.a + │   │   │   │   ├── libswift_math.a + │   │   │   │   ├── libswiftObservation.a + │   │   │   │   ├── libswiftRegexBuilder.a + │   │   │   │   ├── libswift_RegexParser.a + │   │   │   │   ├── libswift_StringProcessing.a + │   │   │   │   ├── libswiftSwiftOnoneSupport.a + │   │   │   │   ├── libswiftSynchronization.a + │   │   │   │   ├── libswift_Volatile.a + │   │   │   │   ├── _math.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Observation.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── RegexBuilder.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _RegexParser.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── static-stdlib-args.lnk + │   │   │   │   ├── _StringProcessing.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── SwiftOnoneSupport.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Swift.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Synchronization.swiftmodule + │   │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   │   └── _Volatile.swiftmodule + │   │   │   │   ├── aarch64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── aarch64-unknown-linux-android.swiftdoc + │   │   │   │   ├── aarch64-unknown-linux-android.swiftinterface + │   │   │   │   └── aarch64-unknown-linux-android.swiftmodule + │   │   │   ├── Block + │   │   │   │   └── Block.h + │   │   │   ├── clang + │   │   │   │   ├── bin + │   │   │   │   │   └── hwasan_symbolize + │   │   │   │   ├── include + │   │   │   │   │   ├── adcintrin.h + │   │   │   │   │   ├── adxintrin.h + │   │   │   │   │   ├── altivec.h + │   │   │   │   │   ├── ammintrin.h + │   │   │   │   │   ├── amxcomplexintrin.h + │   │   │   │   │   ├── amxfp16intrin.h + │   │   │   │   │   ├── amxintrin.h + │   │   │   │   │   ├── arm64intr.h + │   │   │   │   │   ├── arm_acle.h + │   │   │   │   │   ├── arm_bf16.h + │   │   │   │   │   ├── arm_cde.h + │   │   │   │   │   ├── arm_cmse.h + │   │   │   │   │   ├── arm_fp16.h + │   │   │   │   │   ├── armintr.h + │   │   │   │   │   ├── arm_mve.h + │   │   │   │   │   ├── arm_neon.h + │   │   │   │   │   ├── arm_neon_sve_bridge.h + │   │   │   │   │   ├── arm_sme.h + │   │   │   │   │   ├── arm_sve.h + │   │   │   │   │   ├── arm_vector_types.h + │   │   │   │   │   ├── avx2intrin.h + │   │   │   │   │   ├── avx512bf16intrin.h + │   │   │   │   │   ├── avx512bitalgintrin.h + │   │   │   │   │   ├── avx512bwintrin.h + │   │   │   │   │   ├── avx512cdintrin.h + │   │   │   │   │   ├── avx512dqintrin.h + │   │   │   │   │   ├── avx512fintrin.h + │   │   │   │   │   ├── avx512fp16intrin.h + │   │   │   │   │   ├── avx512ifmaintrin.h + │   │   │   │   │   ├── avx512ifmavlintrin.h + │   │   │   │   │   ├── avx512vbmi2intrin.h + │   │   │   │   │   ├── avx512vbmiintrin.h + │   │   │   │   │   ├── avx512vbmivlintrin.h + │   │   │   │   │   ├── avx512vlbf16intrin.h + │   │   │   │   │   ├── avx512vlbitalgintrin.h + │   │   │   │   │   ├── avx512vlbwintrin.h + │   │   │   │   │   ├── avx512vlcdintrin.h + │   │   │   │   │   ├── avx512vldqintrin.h + │   │   │   │   │   ├── avx512vlfp16intrin.h + │   │   │   │   │   ├── avx512vlintrin.h + │   │   │   │   │   ├── avx512vlvbmi2intrin.h + │   │   │   │   │   ├── avx512vlvnniintrin.h + │   │   │   │   │   ├── avx512vlvp2intersectintrin.h + │   │   │   │   │   ├── avx512vnniintrin.h + │   │   │   │   │   ├── avx512vp2intersectintrin.h + │   │   │   │   │   ├── avx512vpopcntdqintrin.h + │   │   │   │   │   ├── avx512vpopcntdqvlintrin.h + │   │   │   │   │   ├── avxifmaintrin.h + │   │   │   │   │   ├── avxintrin.h + │   │   │   │   │   ├── avxneconvertintrin.h + │   │   │   │   │   ├── avxvnniint16intrin.h + │   │   │   │   │   ├── avxvnniint8intrin.h + │   │   │   │   │   ├── avxvnniintrin.h + │   │   │   │   │   ├── bmi2intrin.h + │   │   │   │   │   ├── bmiintrin.h + │   │   │   │   │   ├── builtins.h + │   │   │   │   │   ├── cet.h + │   │   │   │   │   ├── cetintrin.h + │   │   │   │   │   ├── __clang_cuda_builtin_vars.h + │   │   │   │   │   ├── __clang_cuda_cmath.h + │   │   │   │   │   ├── __clang_cuda_complex_builtins.h + │   │   │   │   │   ├── __clang_cuda_device_functions.h + │   │   │   │   │   ├── __clang_cuda_intrinsics.h + │   │   │   │   │   ├── __clang_cuda_libdevice_declares.h + │   │   │   │   │   ├── __clang_cuda_math_forward_declares.h + │   │   │   │   │   ├── __clang_cuda_math.h + │   │   │   │   │   ├── __clang_cuda_runtime_wrapper.h + │   │   │   │   │   ├── __clang_cuda_texture_intrinsics.h + │   │   │   │   │   ├── __clang_hip_cmath.h + │   │   │   │   │   ├── __clang_hip_libdevice_declares.h + │   │   │   │   │   ├── __clang_hip_math.h + │   │   │   │   │   ├── __clang_hip_runtime_wrapper.h + │   │   │   │   │   ├── __clang_hip_stdlib.h + │   │   │   │   │   ├── cldemoteintrin.h + │   │   │   │   │   ├── clflushoptintrin.h + │   │   │   │   │   ├── clwbintrin.h + │   │   │   │   │   ├── clzerointrin.h + │   │   │   │   │   ├── cmpccxaddintrin.h + │   │   │   │   │   ├── cpuid.h + │   │   │   │   │   ├── crc32intrin.h + │   │   │   │   │   ├── cuda_wrappers + │   │   │   │   │   │   ├── algorithm + │   │   │   │   │   │   ├── bits + │   │   │   │   │   │   │   ├── basic_string.h + │   │   │   │   │   │   │   ├── basic_string.tcc + │   │   │   │   │   │   │   └── shared_ptr_base.h + │   │   │   │   │   │   ├── cmath + │   │   │   │   │   │   ├── complex + │   │   │   │   │   │   └── new + │   │   │   │   │   ├── emmintrin.h + │   │   │   │   │   ├── enqcmdintrin.h + │   │   │   │   │   ├── f16cintrin.h + │   │   │   │   │   ├── float.h + │   │   │   │   │   ├── fma4intrin.h + │   │   │   │   │   ├── fmaintrin.h + │   │   │   │   │   ├── fuzzer + │   │   │   │   │   │   └── FuzzedDataProvider.h + │   │   │   │   │   ├── fxsrintrin.h + │   │   │   │   │   ├── gfniintrin.h + │   │   │   │   │   ├── hexagon_circ_brev_intrinsics.h + │   │   │   │   │   ├── hexagon_protos.h + │   │   │   │   │   ├── hexagon_types.h + │   │   │   │   │   ├── hresetintrin.h + │   │   │   │   │   ├── htmintrin.h + │   │   │   │   │   ├── htmxlintrin.h + │   │   │   │   │   ├── hvx_hexagon_protos.h + │   │   │   │   │   ├── ia32intrin.h + │   │   │   │   │   ├── immintrin.h + │   │   │   │   │   ├── intrin0.h + │   │   │   │   │   ├── intrin.h + │   │   │   │   │   ├── inttypes.h + │   │   │   │   │   ├── invpcidintrin.h + │   │   │   │   │   ├── iso646.h + │   │   │   │   │   ├── keylockerintrin.h + │   │   │   │   │   ├── larchintrin.h + │   │   │   │   │   ├── lasxintrin.h + │   │   │   │   │   ├── limits.h + │   │   │   │   │   ├── llvm_libc_wrappers + │   │   │   │   │   │   ├── assert.h + │   │   │   │   │   │   ├── ctype.h + │   │   │   │   │   │   ├── inttypes.h + │   │   │   │   │   │   ├── stdio.h + │   │   │   │   │   │   ├── stdlib.h + │   │   │   │   │   │   ├── string.h + │   │   │   │   │   │   └── time.h + │   │   │   │   │   ├── lsxintrin.h + │   │   │   │   │   ├── lwpintrin.h + │   │   │   │   │   ├── lzcntintrin.h + │   │   │   │   │   ├── mm3dnow.h + │   │   │   │   │   ├── mmintrin.h + │   │   │   │   │   ├── mm_malloc.h + │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   ├── movdirintrin.h + │   │   │   │   │   ├── msa.h + │   │   │   │   │   ├── mwaitxintrin.h + │   │   │   │   │   ├── nmmintrin.h + │   │   │   │   │   ├── opencl-c-base.h + │   │   │   │   │   ├── opencl-c.h + │   │   │   │   │   ├── openmp_wrappers + │   │   │   │   │   │   ├── __clang_openmp_device_functions.h + │   │   │   │   │   │   ├── cmath + │   │   │   │   │   │   ├── complex + │   │   │   │   │   │   ├── complex_cmath.h + │   │   │   │   │   │   ├── complex.h + │   │   │   │   │   │   ├── math.h + │   │   │   │   │   │   └── new + │   │   │   │   │   ├── orc + │   │   │   │   │   │   └── c_api.h + │   │   │   │   │   ├── pconfigintrin.h + │   │   │   │   │   ├── pkuintrin.h + │   │   │   │   │   ├── pmmintrin.h + │   │   │   │   │   ├── popcntintrin.h + │   │   │   │   │   ├── ppc_wrappers + │   │   │   │   │   │   ├── bmi2intrin.h + │   │   │   │   │   │   ├── bmiintrin.h + │   │   │   │   │   │   ├── emmintrin.h + │   │   │   │   │   │   ├── immintrin.h + │   │   │   │   │   │   ├── mmintrin.h + │   │   │   │   │   │   ├── mm_malloc.h + │   │   │   │   │   │   ├── nmmintrin.h + │   │   │   │   │   │   ├── pmmintrin.h + │   │   │   │   │   │   ├── smmintrin.h + │   │   │   │   │   │   ├── tmmintrin.h + │   │   │   │   │   │   ├── x86gprintrin.h + │   │   │   │   │   │   ├── x86intrin.h + │   │   │   │   │   │   └── xmmintrin.h + │   │   │   │   │   ├── prfchiintrin.h + │   │   │   │   │   ├── prfchwintrin.h + │   │   │   │   │   ├── profile + │   │   │   │   │   │   ├── InstrProfData.inc + │   │   │   │   │   │   └── instr_prof_interface.h + │   │   │   │   │   ├── ptrauth.h + │   │   │   │   │   ├── ptwriteintrin.h + │   │   │   │   │   ├── raointintrin.h + │   │   │   │   │   ├── rdpruintrin.h + │   │   │   │   │   ├── rdseedintrin.h + │   │   │   │   │   ├── riscv_bitmanip.h + │   │   │   │   │   ├── riscv_crypto.h + │   │   │   │   │   ├── riscv_ntlh.h + │   │   │   │   │   ├── riscv_vector.h + │   │   │   │   │   ├── rtmintrin.h + │   │   │   │   │   ├── s390intrin.h + │   │   │   │   │   ├── sanitizer + │   │   │   │   │   │   ├── allocator_interface.h + │   │   │   │   │   │   ├── asan_interface.h + │   │   │   │   │   │   ├── common_interface_defs.h + │   │   │   │   │   │   ├── coverage_interface.h + │   │   │   │   │   │   ├── dfsan_interface.h + │   │   │   │   │   │   ├── hwasan_interface.h + │   │   │   │   │   │   ├── linux_syscall_hooks.h + │   │   │   │   │   │   ├── lsan_interface.h + │   │   │   │   │   │   ├── memprof_interface.h + │   │   │   │   │   │   ├── msan_interface.h + │   │   │   │   │   │   ├── netbsd_syscall_hooks.h + │   │   │   │   │   │   ├── scudo_interface.h + │   │   │   │   │   │   ├── tsan_interface_atomic.h + │   │   │   │   │   │   ├── tsan_interface.h + │   │   │   │   │   │   └── ubsan_interface.h + │   │   │   │   │   ├── serializeintrin.h + │   │   │   │   │   ├── sgxintrin.h + │   │   │   │   │   ├── sha512intrin.h + │   │   │   │   │   ├── shaintrin.h + │   │   │   │   │   ├── sifive_vector.h + │   │   │   │   │   ├── sm3intrin.h + │   │   │   │   │   ├── sm4intrin.h + │   │   │   │   │   ├── smmintrin.h + │   │   │   │   │   ├── stdalign.h + │   │   │   │   │   ├── __stdarg___gnuc_va_list.h + │   │   │   │   │   ├── stdarg.h + │   │   │   │   │   ├── __stdarg_header_macro.h + │   │   │   │   │   ├── __stdarg_va_arg.h + │   │   │   │   │   ├── __stdarg___va_copy.h + │   │   │   │   │   ├── __stdarg_va_copy.h + │   │   │   │   │   ├── __stdarg_va_list.h + │   │   │   │   │   ├── stdatomic.h + │   │   │   │   │   ├── stdbool.h + │   │   │   │   │   ├── stdckdint.h + │   │   │   │   │   ├── stddef.h + │   │   │   │   │   ├── __stddef_header_macro.h + │   │   │   │   │   ├── __stddef_max_align_t.h + │   │   │   │   │   ├── __stddef_null.h + │   │   │   │   │   ├── __stddef_nullptr_t.h + │   │   │   │   │   ├── __stddef_offsetof.h + │   │   │   │   │   ├── __stddef_ptrdiff_t.h + │   │   │   │   │   ├── __stddef_rsize_t.h + │   │   │   │   │   ├── __stddef_size_t.h + │   │   │   │   │   ├── __stddef_unreachable.h + │   │   │   │   │   ├── __stddef_wchar_t.h + │   │   │   │   │   ├── __stddef_wint_t.h + │   │   │   │   │   ├── stdint.h + │   │   │   │   │   ├── stdnoreturn.h + │   │   │   │   │   ├── tbmintrin.h + │   │   │   │   │   ├── tgmath.h + │   │   │   │   │   ├── tmmintrin.h + │   │   │   │   │   ├── tsxldtrkintrin.h + │   │   │   │   │   ├── uintrintrin.h + │   │   │   │   │   ├── unwind.h + │   │   │   │   │   ├── usermsrintrin.h + │   │   │   │   │   ├── vadefs.h + │   │   │   │   │   ├── vaesintrin.h + │   │   │   │   │   ├── varargs.h + │   │   │   │   │   ├── vecintrin.h + │   │   │   │   │   ├── velintrin_approx.h + │   │   │   │   │   ├── velintrin_gen.h + │   │   │   │   │   ├── velintrin.h + │   │   │   │   │   ├── vpclmulqdqintrin.h + │   │   │   │   │   ├── waitpkgintrin.h + │   │   │   │   │   ├── wasm_simd128.h + │   │   │   │   │   ├── wbnoinvdintrin.h + │   │   │   │   │   ├── __wmmintrin_aes.h + │   │   │   │   │   ├── wmmintrin.h + │   │   │   │   │   ├── __wmmintrin_pclmul.h + │   │   │   │   │   ├── x86gprintrin.h + │   │   │   │   │   ├── x86intrin.h + │   │   │   │   │   ├── xmmintrin.h + │   │   │   │   │   ├── xopintrin.h + │   │   │   │   │   ├── xray + │   │   │   │   │   │   ├── xray_interface.h + │   │   │   │   │   │   ├── xray_log_interface.h + │   │   │   │   │   │   └── xray_records.h + │   │   │   │   │   ├── xsavecintrin.h + │   │   │   │   │   ├── xsaveintrin.h + │   │   │   │   │   ├── xsaveoptintrin.h + │   │   │   │   │   ├── xsavesintrin.h + │   │   │   │   │   ├── xtestintrin.h + │   │   │   │   │   ├── yvals_core.h + │   │   │   │   │   └── zos_wrappers + │   │   │   │   │   └── builtins.h + │   │   │   │   ├── lib + │   │   │   │   │   └── linux + │   │   │   │   │   ├── clang_rt.crtbegin-x86_64.o + │   │   │   │   │   ├── clang_rt.crtend-x86_64.o + │   │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.asan-preinit-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan_static-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.asan-x86_64.so + │   │   │   │   │   ├── libclang_rt.builtins-x86_64.a + │   │   │   │   │   ├── libclang_rt.cfi_diag-x86_64.a + │   │   │   │   │   ├── libclang_rt.cfi-x86_64.a + │   │   │   │   │   ├── libclang_rt.ctx_profile-x86_64.a + │   │   │   │   │   ├── libclang_rt.dd-x86_64.a + │   │   │   │   │   ├── libclang_rt.dfsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.dfsan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.dyndd-x86_64.so + │   │   │   │   │   ├── libclang_rt.fuzzer_interceptors-x86_64.a + │   │   │   │   │   ├── libclang_rt.fuzzer_no_main-x86_64.a + │   │   │   │   │   ├── libclang_rt.fuzzer-x86_64.a + │   │   │   │   │   ├── libclang_rt.gwp_asan-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.so + │   │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan-preinit-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.so + │   │   │   │   │   ├── libclang_rt.lsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.memprof-preinit-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.memprof-x86_64.so + │   │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.msan-x86_64.a + │   │   │   │   │   ├── libclang_rt.msan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.nsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.nsan-x86_64.so + │   │   │   │   │   ├── libclang_rt.profile-x86_64.a + │   │   │   │   │   ├── libclang_rt.rtsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.safestack-x86_64.a + │   │   │   │   │   ├── libclang_rt.scudo_standalone_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.a + │   │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.so + │   │   │   │   │   ├── libclang_rt.stats_client-x86_64.a + │   │   │   │   │   ├── libclang_rt.stats-x86_64.a + │   │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.tsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.tsan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.tsan-x86_64.so + │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a + │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.so + │   │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a + │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.so + │   │   │   │   │   ├── libclang_rt.xray-basic-x86_64.a + │   │   │   │   │   ├── libclang_rt.xray-fdr-x86_64.a + │   │   │   │   │   ├── libclang_rt.xray-profiling-x86_64.a + │   │   │   │   │   ├── libclang_rt.xray-x86_64.a + │   │   │   │   │   └── liborc_rt-x86_64.a + │   │   │   │   └── share + │   │   │   │   ├── asan_ignorelist.txt + │   │   │   │   ├── cfi_ignorelist.txt + │   │   │   │   ├── dfsan_abilist.txt + │   │   │   │   ├── hwasan_ignorelist.txt + │   │   │   │   └── msan_ignorelist.txt + │   │   │   ├── CoreFoundation + │   │   │   │   ├── CFArray.h + │   │   │   │   ├── CFAttributedString.h + │   │   │   │   ├── CFAttributedStringPriv.h + │   │   │   │   ├── CFAvailability.h + │   │   │   │   ├── CFBag.h + │   │   │   │   ├── CFBase.h + │   │   │   │   ├── CFBigNumber.h + │   │   │   │   ├── CFBinaryHeap.h + │   │   │   │   ├── CFBitVector.h + │   │   │   │   ├── CFBundle_BinaryTypes.h + │   │   │   │   ├── CFBundle.h + │   │   │   │   ├── CFBundlePriv.h + │   │   │   │   ├── CFBurstTrie.h + │   │   │   │   ├── CFByteOrder.h + │   │   │   │   ├── CFCalendar.h + │   │   │   │   ├── CFCalendarPriv.h + │   │   │   │   ├── CFCharacterSet.h + │   │   │   │   ├── CFCharacterSetPriv.h + │   │   │   │   ├── CFConstantKeys.h + │   │   │   │   ├── CFData.h + │   │   │   │   ├── CFDateComponents.h + │   │   │   │   ├── CFDateFormatter.h + │   │   │   │   ├── CFDateFormatter_Private.h + │   │   │   │   ├── CFDate.h + │   │   │   │   ├── CFDateIntervalFormatter.h + │   │   │   │   ├── CFDateInterval.h + │   │   │   │   ├── CFDictionary.h + │   │   │   │   ├── CFError.h + │   │   │   │   ├── CFError_Private.h + │   │   │   │   ├── CFKnownLocations.h + │   │   │   │   ├── CFListFormatter.h + │   │   │   │   ├── CFLocale.h + │   │   │   │   ├── CFLocale_Private.h + │   │   │   │   ├── CFLocking.h + │   │   │   │   ├── CFLogUtilities.h + │   │   │   │   ├── CFMachPort.h + │   │   │   │   ├── CFMessagePort.h + │   │   │   │   ├── CFNotificationCenter.h + │   │   │   │   ├── CFNumberFormatter.h + │   │   │   │   ├── CFNumber.h + │   │   │   │   ├── CFNumber_Private.h + │   │   │   │   ├── CFOverflow.h + │   │   │   │   ├── CFPlugInCOM.h + │   │   │   │   ├── CFPlugIn.h + │   │   │   │   ├── CFPreferences.h + │   │   │   │   ├── CFPriv.h + │   │   │   │   ├── CFPropertyList.h + │   │   │   │   ├── CFPropertyList_Private.h + │   │   │   │   ├── CFRegularExpression.h + │   │   │   │   ├── CFRelativeDateTimeFormatter.h + │   │   │   │   ├── CFRunArray.h + │   │   │   │   ├── CFRunLoop.h + │   │   │   │   ├── CFRuntime.h + │   │   │   │   ├── CFSet.h + │   │   │   │   ├── CFSocket.h + │   │   │   │   ├── CFStorage.h + │   │   │   │   ├── CFStreamAbstract.h + │   │   │   │   ├── CFStream.h + │   │   │   │   ├── CFStreamPriv.h + │   │   │   │   ├── CFStringDefaultEncoding.h + │   │   │   │   ├── CFStringEncodingConverterExt.h + │   │   │   │   ├── CFStringEncodingConverter.h + │   │   │   │   ├── CFStringEncodingConverterPriv.h + │   │   │   │   ├── CFStringEncodingDatabase.h + │   │   │   │   ├── CFStringEncodingExt.h + │   │   │   │   ├── CFString.h + │   │   │   │   ├── CFString_Private.h + │   │   │   │   ├── CFTargetConditionals.h + │   │   │   │   ├── CFTimeZone.h + │   │   │   │   ├── CFTree.h + │   │   │   │   ├── CFUniChar.h + │   │   │   │   ├── CFUnicodeDecomposition.h + │   │   │   │   ├── CFUnicodePrecomposition.h + │   │   │   │   ├── CFURLAccess.h + │   │   │   │   ├── CFURLComponents.h + │   │   │   │   ├── CFURL.h + │   │   │   │   ├── CFURLPriv.h + │   │   │   │   ├── CFUserNotification.h + │   │   │   │   ├── CFUtilities.h + │   │   │   │   ├── CFUUID.h + │   │   │   │   ├── CoreFoundation.h + │   │   │   │   ├── ForFoundationOnly.h + │   │   │   │   ├── ForSwiftFoundationOnly.h + │   │   │   │   ├── module.modulemap + │   │   │   │   └── static-module.map + │   │   │   ├── dispatch + │   │   │   │   ├── base.h + │   │   │   │   ├── block.h + │   │   │   │   ├── data.h + │   │   │   │   ├── dispatch.h + │   │   │   │   ├── group.h + │   │   │   │   ├── introspection.h + │   │   │   │   ├── io.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── object.h + │   │   │   │   ├── once.h + │   │   │   │   ├── queue.h + │   │   │   │   ├── semaphore.h + │   │   │   │   ├── source.h + │   │   │   │   └── time.h + │   │   │   ├── _FoundationCShims + │   │   │   │   ├── bplist_shims.h + │   │   │   │   ├── CFUniCharBitmapData.h + │   │   │   │   ├── CFUniCharBitmapData.inc.h + │   │   │   │   ├── _CShimsMacros.h + │   │   │   │   ├── _CShimsTargetConditionals.h + │   │   │   │   ├── _CStdlib.h + │   │   │   │   ├── filemanager_shims.h + │   │   │   │   ├── _FoundationCShims.h + │   │   │   │   ├── io_shims.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── platform_shims.h + │   │   │   │   ├── string_shims.h + │   │   │   │   └── uuid.h + │   │   │   ├── _foundation_unicode + │   │   │   │   ├── alphaindex.h + │   │   │   │   ├── appendable.h + │   │   │   │   ├── basictz.h + │   │   │   │   ├── brkiter.h + │   │   │   │   ├── bytestream.h + │   │   │   │   ├── bytestriebuilder.h + │   │   │   │   ├── bytestrie.h + │   │   │   │   ├── calendar.h + │   │   │   │   ├── caniter.h + │   │   │   │   ├── casemap.h + │   │   │   │   ├── char16ptr.h + │   │   │   │   ├── chariter.h + │   │   │   │   ├── choicfmt.h + │   │   │   │   ├── coleitr.h + │   │   │   │   ├── coll.h + │   │   │   │   ├── compactdecimalformat.h + │   │   │   │   ├── curramt.h + │   │   │   │   ├── currpinf.h + │   │   │   │   ├── currunit.h + │   │   │   │   ├── datefmt.h + │   │   │   │   ├── dbbi.h + │   │   │   │   ├── dcfmtsym.h + │   │   │   │   ├── decimfmt.h + │   │   │   │   ├── displayoptions.h + │   │   │   │   ├── docmain.h + │   │   │   │   ├── dtfmtsym.h + │   │   │   │   ├── dtintrv.h + │   │   │   │   ├── dtitvfmt.h + │   │   │   │   ├── dtitvinf.h + │   │   │   │   ├── dtptngen.h + │   │   │   │   ├── dtrule.h + │   │   │   │   ├── edits.h + │   │   │   │   ├── enumset.h + │   │   │   │   ├── errorcode.h + │   │   │   │   ├── fieldpos.h + │   │   │   │   ├── filteredbrk.h + │   │   │   │   ├── fmtable.h + │   │   │   │   ├── format.h + │   │   │   │   ├── formattednumber.h + │   │   │   │   ├── formattedvalue.h + │   │   │   │   ├── fpositer.h + │   │   │   │   ├── gender.h + │   │   │   │   ├── gregocal.h + │   │   │   │   ├── icudataver.h + │   │   │   │   ├── icuplug.h + │   │   │   │   ├── idna.h + │   │   │   │   ├── listformatter.h + │   │   │   │   ├── localebuilder.h + │   │   │   │   ├── localematcher.h + │   │   │   │   ├── localpointer.h + │   │   │   │   ├── locdspnm.h + │   │   │   │   ├── locid.h + │   │   │   │   ├── measfmt.h + │   │   │   │   ├── measunit.h + │   │   │   │   ├── measure.h + │   │   │   │   ├── messagepattern.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── msgfmt.h + │   │   │   │   ├── normalizer2.h + │   │   │   │   ├── normlzr.h + │   │   │   │   ├── nounit.h + │   │   │   │   ├── numberformatter.h + │   │   │   │   ├── numberrangeformatter.h + │   │   │   │   ├── numfmt.h + │   │   │   │   ├── numsys.h + │   │   │   │   ├── parseerr.h + │   │   │   │   ├── parsepos.h + │   │   │   │   ├── platform.h + │   │   │   │   ├── plurfmt.h + │   │   │   │   ├── plurrule.h + │   │   │   │   ├── ptypes.h + │   │   │   │   ├── putil.h + │   │   │   │   ├── rbbi.h + │   │   │   │   ├── rbnf.h + │   │   │   │   ├── rbtz.h + │   │   │   │   ├── regex.h + │   │   │   │   ├── region.h + │   │   │   │   ├── reldatefmt.h + │   │   │   │   ├── rep.h + │   │   │   │   ├── resbund.h + │   │   │   │   ├── schriter.h + │   │   │   │   ├── scientificnumberformatter.h + │   │   │   │   ├── search.h + │   │   │   │   ├── selfmt.h + │   │   │   │   ├── simpleformatter.h + │   │   │   │   ├── simplenumberformatter.h + │   │   │   │   ├── simpletz.h + │   │   │   │   ├── smpdtfmt.h + │   │   │   │   ├── sortkey.h + │   │   │   │   ├── std_string.h + │   │   │   │   ├── strenum.h + │   │   │   │   ├── stringoptions.h + │   │   │   │   ├── stringpiece.h + │   │   │   │   ├── stringtriebuilder.h + │   │   │   │   ├── stsearch.h + │   │   │   │   ├── symtable.h + │   │   │   │   ├── tblcoll.h + │   │   │   │   ├── timezone.h + │   │   │   │   ├── tmunit.h + │   │   │   │   ├── tmutamt.h + │   │   │   │   ├── tmutfmt.h + │   │   │   │   ├── translit.h + │   │   │   │   ├── tzfmt.h + │   │   │   │   ├── tznames.h + │   │   │   │   ├── tzrule.h + │   │   │   │   ├── tztrans.h + │   │   │   │   ├── ualoc.h + │   │   │   │   ├── uameasureformat.h + │   │   │   │   ├── uameasureunit.h + │   │   │   │   ├── uatimeunitformat.h + │   │   │   │   ├── ubidi.h + │   │   │   │   ├── ubiditransform.h + │   │   │   │   ├── ubrk.h + │   │   │   │   ├── ucal.h + │   │   │   │   ├── ucasemap.h + │   │   │   │   ├── ucat.h + │   │   │   │   ├── uchar.h + │   │   │   │   ├── ucharstriebuilder.h + │   │   │   │   ├── ucharstrie.h + │   │   │   │   ├── uchriter.h + │   │   │   │   ├── uclean.h + │   │   │   │   ├── ucnv_cb.h + │   │   │   │   ├── ucnv_err.h + │   │   │   │   ├── ucnv.h + │   │   │   │   ├── ucnvsel.h + │   │   │   │   ├── ucoleitr.h + │   │   │   │   ├── ucol.h + │   │   │   │   ├── uconfig.h + │   │   │   │   ├── ucpmap.h + │   │   │   │   ├── ucptrie.h + │   │   │   │   ├── ucsdet.h + │   │   │   │   ├── ucurr.h + │   │   │   │   ├── udata.h + │   │   │   │   ├── udateintervalformat.h + │   │   │   │   ├── udat.h + │   │   │   │   ├── udatintv.h + │   │   │   │   ├── udatpg.h + │   │   │   │   ├── udisplaycontext.h + │   │   │   │   ├── udisplayoptions.h + │   │   │   │   ├── uenum.h + │   │   │   │   ├── ufieldpositer.h + │   │   │   │   ├── uformattable.h + │   │   │   │   ├── uformattednumber.h + │   │   │   │   ├── uformattedvalue.h + │   │   │   │   ├── ugender.h + │   │   │   │   ├── uidna.h + │   │   │   │   ├── uiter.h + │   │   │   │   ├── uldnames.h + │   │   │   │   ├── ulistformatter.h + │   │   │   │   ├── ulocale.h + │   │   │   │   ├── ulocbuilder.h + │   │   │   │   ├── ulocdata.h + │   │   │   │   ├── uloc.h + │   │   │   │   ├── umachine.h + │   │   │   │   ├── umisc.h + │   │   │   │   ├── umsg.h + │   │   │   │   ├── umutablecptrie.h + │   │   │   │   ├── unifilt.h + │   │   │   │   ├── unifunct.h + │   │   │   │   ├── unimatch.h + │   │   │   │   ├── unirepl.h + │   │   │   │   ├── uniset.h + │   │   │   │   ├── unistr.h + │   │   │   │   ├── unorm2.h + │   │   │   │   ├── unorm.h + │   │   │   │   ├── unumberformatter.h + │   │   │   │   ├── unumberoptions.h + │   │   │   │   ├── unumberrangeformatter.h + │   │   │   │   ├── unum.h + │   │   │   │   ├── unumsys.h + │   │   │   │   ├── uobject.h + │   │   │   │   ├── uplrule.h + │   │   │   │   ├── upluralrules.h + │   │   │   │   ├── urbtok.h + │   │   │   │   ├── uregex.h + │   │   │   │   ├── uregion.h + │   │   │   │   ├── ureldatefmt.h + │   │   │   │   ├── urename.h + │   │   │   │   ├── urep.h + │   │   │   │   ├── ures.h + │   │   │   │   ├── uscript.h + │   │   │   │   ├── usearch.h + │   │   │   │   ├── uset.h + │   │   │   │   ├── usetiter.h + │   │   │   │   ├── ushape.h + │   │   │   │   ├── usimplenumberformatter.h + │   │   │   │   ├── uspoof.h + │   │   │   │   ├── usprep.h + │   │   │   │   ├── ustdio.h + │   │   │   │   ├── ustream.h + │   │   │   │   ├── ustring.h + │   │   │   │   ├── ustringtrie.h + │   │   │   │   ├── utext.h + │   │   │   │   ├── utf16.h + │   │   │   │   ├── utf32.h + │   │   │   │   ├── utf8.h + │   │   │   │   ├── utf.h + │   │   │   │   ├── utf_old.h + │   │   │   │   ├── utmscale.h + │   │   │   │   ├── utrace.h + │   │   │   │   ├── utrans.h + │   │   │   │   ├── utypes.h + │   │   │   │   ├── uvernum.h + │   │   │   │   ├── uversion.h + │   │   │   │   └── vtzone.h + │   │   │   ├── os + │   │   │   │   ├── generic_base.h + │   │   │   │   ├── generic_unix_base.h + │   │   │   │   ├── generic_win_base.h + │   │   │   │   └── object.h + │   │   │   └── shims + │   │   │   ├── AssertionReporting.h + │   │   │   ├── CoreFoundationShims.h + │   │   │   ├── EmbeddedShims.h + │   │   │   ├── FoundationShims.h + │   │   │   ├── GlobalObjects.h + │   │   │   ├── HeapObject.h + │   │   │   ├── KeyPath.h + │   │   │   ├── LibcOverlayShims.h + │   │   │   ├── LibcShims.h + │   │   │   ├── MetadataSections.h + │   │   │   ├── module.modulemap + │   │   │   ├── Random.h + │   │   │   ├── RefCount.h + │   │   │   ├── Reflection.h + │   │   │   ├── RuntimeShims.h + │   │   │   ├── RuntimeStubs.h + │   │   │   ├── _SwiftConcurrency.h + │   │   │   ├── _SwiftDistributed.h + │   │   │   ├── SwiftStdbool.h + │   │   │   ├── SwiftStddef.h + │   │   │   ├── SwiftStdint.h + │   │   │   ├── _SynchronizationShims.h + │   │   │   ├── System.h + │   │   │   ├── Target.h + │   │   │   ├── ThreadLocalStorage.h + │   │   │   ├── UnicodeData.h + │   │   │   └── Visibility.h + │   │   └── share + │   │   ├── aclocal + │   │   │   └── libxml.m4 + │   │   ├── doc + │   │   │   ├── libxml2 + │   │   │   │   ├── devhelp + │   │   │   │   │   ├── general.html + │   │   │   │   │   ├── home.png + │   │   │   │   │   ├── index.html + │   │   │   │   │   ├── left.png + │   │   │   │   │   ├── libxml2-c14n.html + │   │   │   │   │   ├── libxml2-catalog.html + │   │   │   │   │   ├── libxml2-chvalid.html + │   │   │   │   │   ├── libxml2-debugXML.html + │   │   │   │   │   ├── libxml2.devhelp2 + │   │   │   │   │   ├── libxml2-dict.html + │   │   │   │   │   ├── libxml2-encoding.html + │   │   │   │   │   ├── libxml2-entities.html + │   │   │   │   │   ├── libxml2-globals.html + │   │   │   │   │   ├── libxml2-hash.html + │   │   │   │   │   ├── libxml2-HTMLparser.html + │   │   │   │   │   ├── libxml2-HTMLtree.html + │   │   │   │   │   ├── libxml2-list.html + │   │   │   │   │   ├── libxml2-nanoftp.html + │   │   │   │   │   ├── libxml2-nanohttp.html + │   │   │   │   │   ├── libxml2-parser.html + │   │   │   │   │   ├── libxml2-parserInternals.html + │   │   │   │   │   ├── libxml2-pattern.html + │   │   │   │   │   ├── libxml2-relaxng.html + │   │   │   │   │   ├── libxml2-SAX2.html + │   │   │   │   │   ├── libxml2-SAX.html + │   │   │   │   │   ├── libxml2-schemasInternals.html + │   │   │   │   │   ├── libxml2-schematron.html + │   │   │   │   │   ├── libxml2-threads.html + │   │   │   │   │   ├── libxml2-tree.html + │   │   │   │   │   ├── libxml2-uri.html + │   │   │   │   │   ├── libxml2-valid.html + │   │   │   │   │   ├── libxml2-xinclude.html + │   │   │   │   │   ├── libxml2-xlink.html + │   │   │   │   │   ├── libxml2-xmlautomata.html + │   │   │   │   │   ├── libxml2-xmlerror.html + │   │   │   │   │   ├── libxml2-xmlexports.html + │   │   │   │   │   ├── libxml2-xmlIO.html + │   │   │   │   │   ├── libxml2-xmlmemory.html + │   │   │   │   │   ├── libxml2-xmlmodule.html + │   │   │   │   │   ├── libxml2-xmlreader.html + │   │   │   │   │   ├── libxml2-xmlregexp.html + │   │   │   │   │   ├── libxml2-xmlsave.html + │   │   │   │   │   ├── libxml2-xmlschemas.html + │   │   │   │   │   ├── libxml2-xmlschemastypes.html + │   │   │   │   │   ├── libxml2-xmlstring.html + │   │   │   │   │   ├── libxml2-xmlunicode.html + │   │   │   │   │   ├── libxml2-xmlversion.html + │   │   │   │   │   ├── libxml2-xmlwriter.html + │   │   │   │   │   ├── libxml2-xpath.html + │   │   │   │   │   ├── libxml2-xpathInternals.html + │   │   │   │   │   ├── libxml2-xpointer.html + │   │   │   │   │   ├── libxml2-xzlib.html + │   │   │   │   │   ├── right.png + │   │   │   │   │   ├── style.css + │   │   │   │   │   └── up.png + │   │   │   │   ├── examples + │   │   │   │   │   ├── index.html + │   │   │   │   │   ├── io1.c + │   │   │   │   │   ├── io2.c + │   │   │   │   │   ├── parse1.c + │   │   │   │   │   ├── parse2.c + │   │   │   │   │   ├── parse3.c + │   │   │   │   │   ├── parse4.c + │   │   │   │   │   ├── reader1.c + │   │   │   │   │   ├── reader2.c + │   │   │   │   │   ├── reader3.c + │   │   │   │   │   ├── reader4.c + │   │   │   │   │   ├── testWriter.c + │   │   │   │   │   ├── tree1.c + │   │   │   │   │   ├── tree2.c + │   │   │   │   │   ├── xpath1.c + │   │   │   │   │   └── xpath2.c + │   │   │   │   ├── tutorial + │   │   │   │   │   ├── apa.html + │   │   │   │   │   ├── apb.html + │   │   │   │   │   ├── apc.html + │   │   │   │   │   ├── apd.html + │   │   │   │   │   ├── ape.html + │   │   │   │   │   ├── apf.html + │   │   │   │   │   ├── apg.html + │   │   │   │   │   ├── aph.html + │   │   │   │   │   ├── api.html + │   │   │   │   │   ├── ar01s02.html + │   │   │   │   │   ├── ar01s03.html + │   │   │   │   │   ├── ar01s04.html + │   │   │   │   │   ├── ar01s05.html + │   │   │   │   │   ├── ar01s06.html + │   │   │   │   │   ├── ar01s07.html + │   │   │   │   │   ├── ar01s08.html + │   │   │   │   │   ├── ar01s09.html + │   │   │   │   │   ├── images + │   │   │   │   │   │   ├── blank.png + │   │   │   │   │   │   ├── callouts + │   │   │   │   │   │   │   ├── 10.png + │   │   │   │   │   │   │   ├── 1.png + │   │   │   │   │   │   │   ├── 2.png + │   │   │   │   │   │   │   ├── 3.png + │   │   │   │   │   │   │   ├── 4.png + │   │   │   │   │   │   │   ├── 5.png + │   │   │   │   │   │   │   ├── 6.png + │   │   │   │   │   │   │   ├── 7.png + │   │   │   │   │   │   │   ├── 8.png + │   │   │   │   │   │   │   └── 9.png + │   │   │   │   │   │   ├── caution.png + │   │   │   │   │   │   ├── draft.png + │   │   │   │   │   │   ├── home.png + │   │   │   │   │   │   ├── important.png + │   │   │   │   │   │   ├── next.png + │   │   │   │   │   │   ├── note.png + │   │   │   │   │   │   ├── prev.png + │   │   │   │   │   │   ├── tip.png + │   │   │   │   │   │   ├── toc-blank.png + │   │   │   │   │   │   ├── toc-minus.png + │   │   │   │   │   │   ├── toc-plus.png + │   │   │   │   │   │   ├── up.png + │   │   │   │   │   │   └── warning.png + │   │   │   │   │   ├── includeaddattribute.c + │   │   │   │   │   ├── includeaddkeyword.c + │   │   │   │   │   ├── includeconvert.c + │   │   │   │   │   ├── includegetattribute.c + │   │   │   │   │   ├── includekeyword.c + │   │   │   │   │   ├── includexpath.c + │   │   │   │   │   ├── index.html + │   │   │   │   │   └── ix01.html + │   │   │   │   ├── xmlcatalog.html + │   │   │   │   └── xmllint.html + │   │   │   └── swift + │   │   │   └── diagnostics + │   │   │   ├── complex-closure-inference.md + │   │   │   ├── dynamic-callable-requirements.md + │   │   │   ├── error-in-future-swift-version.md + │   │   │   ├── existential-member-access-limitations.md + │   │   │   ├── multiple-inheritance.md + │   │   │   ├── nominal-types.md + │   │   │   ├── opaque-type-inference.md + │   │   │   ├── property-wrapper-requirements.md + │   │   │   ├── protocol-type-non-conformance.md + │   │   │   ├── result-builder-methods.md + │   │   │   ├── string-interpolation-conformance.md + │   │   │   ├── temporary-pointers.md + │   │   │   └── trailing-closure-matching.md + │   │   ├── emacs + │   │   │   └── site-lisp + │   │   │   └── swift-mode.el + │   │   ├── man + │   │   │   ├── man1 + │   │   │   │   ├── swift.1 + │   │   │   │   ├── xml2-config.1 + │   │   │   │   ├── xmlcatalog.1 + │   │   │   │   └── xmllint.1 + │   │   │   └── man3 + │   │   │   ├── curl_easy_cleanup.3 + │   │   │   ├── curl_easy_duphandle.3 + │   │   │   ├── curl_easy_escape.3 + │   │   │   ├── curl_easy_getinfo.3 + │   │   │   ├── curl_easy_header.3 + │   │   │   ├── curl_easy_init.3 + │   │   │   ├── curl_easy_nextheader.3 + │   │   │   ├── curl_easy_option_by_id.3 + │   │   │   ├── curl_easy_option_by_name.3 + │   │   │   ├── curl_easy_option_next.3 + │   │   │   ├── curl_easy_pause.3 + │   │   │   ├── curl_easy_perform.3 + │   │   │   ├── curl_easy_recv.3 + │   │   │   ├── curl_easy_reset.3 + │   │   │   ├── curl_easy_send.3 + │   │   │   ├── curl_easy_setopt.3 + │   │   │   ├── curl_easy_strerror.3 + │   │   │   ├── curl_easy_unescape.3 + │   │   │   ├── curl_easy_upkeep.3 + │   │   │   ├── curl_escape.3 + │   │   │   ├── curl_formadd.3 + │   │   │   ├── curl_formfree.3 + │   │   │   ├── curl_formget.3 + │   │   │   ├── curl_free.3 + │   │   │   ├── curl_getdate.3 + │   │   │   ├── curl_getenv.3 + │   │   │   ├── curl_global_cleanup.3 + │   │   │   ├── curl_global_init.3 + │   │   │   ├── curl_global_init_mem.3 + │   │   │   ├── curl_global_sslset.3 + │   │   │   ├── curl_global_trace.3 + │   │   │   ├── CURLINFO_ACTIVESOCKET.3 + │   │   │   ├── CURLINFO_APPCONNECT_TIME.3 + │   │   │   ├── CURLINFO_APPCONNECT_TIME_T.3 + │   │   │   ├── CURLINFO_CAINFO.3 + │   │   │   ├── CURLINFO_CAPATH.3 + │   │   │   ├── CURLINFO_CERTINFO.3 + │   │   │   ├── CURLINFO_CONDITION_UNMET.3 + │   │   │   ├── CURLINFO_CONNECT_TIME.3 + │   │   │   ├── CURLINFO_CONNECT_TIME_T.3 + │   │   │   ├── CURLINFO_CONN_ID.3 + │   │   │   ├── CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 + │   │   │   ├── CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 + │   │   │   ├── CURLINFO_CONTENT_LENGTH_UPLOAD.3 + │   │   │   ├── CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 + │   │   │   ├── CURLINFO_CONTENT_TYPE.3 + │   │   │   ├── CURLINFO_COOKIELIST.3 + │   │   │   ├── CURLINFO_EFFECTIVE_METHOD.3 + │   │   │   ├── CURLINFO_EFFECTIVE_URL.3 + │   │   │   ├── CURLINFO_FILETIME.3 + │   │   │   ├── CURLINFO_FILETIME_T.3 + │   │   │   ├── CURLINFO_FTP_ENTRY_PATH.3 + │   │   │   ├── CURLINFO_HEADER_SIZE.3 + │   │   │   ├── CURLINFO_HTTPAUTH_AVAIL.3 + │   │   │   ├── CURLINFO_HTTP_CONNECTCODE.3 + │   │   │   ├── CURLINFO_HTTP_VERSION.3 + │   │   │   ├── CURLINFO_LASTSOCKET.3 + │   │   │   ├── CURLINFO_LOCAL_IP.3 + │   │   │   ├── CURLINFO_LOCAL_PORT.3 + │   │   │   ├── CURLINFO_NAMELOOKUP_TIME.3 + │   │   │   ├── CURLINFO_NAMELOOKUP_TIME_T.3 + │   │   │   ├── CURLINFO_NUM_CONNECTS.3 + │   │   │   ├── CURLINFO_OS_ERRNO.3 + │   │   │   ├── CURLINFO_PRETRANSFER_TIME.3 + │   │   │   ├── CURLINFO_PRETRANSFER_TIME_T.3 + │   │   │   ├── CURLINFO_PRIMARY_IP.3 + │   │   │   ├── CURLINFO_PRIMARY_PORT.3 + │   │   │   ├── CURLINFO_PRIVATE.3 + │   │   │   ├── CURLINFO_PROTOCOL.3 + │   │   │   ├── CURLINFO_PROXYAUTH_AVAIL.3 + │   │   │   ├── CURLINFO_PROXY_ERROR.3 + │   │   │   ├── CURLINFO_PROXY_SSL_VERIFYRESULT.3 + │   │   │   ├── CURLINFO_QUEUE_TIME_T.3 + │   │   │   ├── CURLINFO_REDIRECT_COUNT.3 + │   │   │   ├── CURLINFO_REDIRECT_TIME.3 + │   │   │   ├── CURLINFO_REDIRECT_TIME_T.3 + │   │   │   ├── CURLINFO_REDIRECT_URL.3 + │   │   │   ├── CURLINFO_REFERER.3 + │   │   │   ├── CURLINFO_REQUEST_SIZE.3 + │   │   │   ├── CURLINFO_RESPONSE_CODE.3 + │   │   │   ├── CURLINFO_RETRY_AFTER.3 + │   │   │   ├── CURLINFO_RTSP_CLIENT_CSEQ.3 + │   │   │   ├── CURLINFO_RTSP_CSEQ_RECV.3 + │   │   │   ├── CURLINFO_RTSP_SERVER_CSEQ.3 + │   │   │   ├── CURLINFO_RTSP_SESSION_ID.3 + │   │   │   ├── CURLINFO_SCHEME.3 + │   │   │   ├── CURLINFO_SIZE_DOWNLOAD.3 + │   │   │   ├── CURLINFO_SIZE_DOWNLOAD_T.3 + │   │   │   ├── CURLINFO_SIZE_UPLOAD.3 + │   │   │   ├── CURLINFO_SIZE_UPLOAD_T.3 + │   │   │   ├── CURLINFO_SPEED_DOWNLOAD.3 + │   │   │   ├── CURLINFO_SPEED_DOWNLOAD_T.3 + │   │   │   ├── CURLINFO_SPEED_UPLOAD.3 + │   │   │   ├── CURLINFO_SPEED_UPLOAD_T.3 + │   │   │   ├── CURLINFO_SSL_ENGINES.3 + │   │   │   ├── CURLINFO_SSL_VERIFYRESULT.3 + │   │   │   ├── CURLINFO_STARTTRANSFER_TIME.3 + │   │   │   ├── CURLINFO_STARTTRANSFER_TIME_T.3 + │   │   │   ├── CURLINFO_TLS_SESSION.3 + │   │   │   ├── CURLINFO_TLS_SSL_PTR.3 + │   │   │   ├── CURLINFO_TOTAL_TIME.3 + │   │   │   ├── CURLINFO_TOTAL_TIME_T.3 + │   │   │   ├── CURLINFO_USED_PROXY.3 + │   │   │   ├── CURLINFO_XFER_ID.3 + │   │   │   ├── curl_mime_addpart.3 + │   │   │   ├── curl_mime_data.3 + │   │   │   ├── curl_mime_data_cb.3 + │   │   │   ├── curl_mime_encoder.3 + │   │   │   ├── curl_mime_filedata.3 + │   │   │   ├── curl_mime_filename.3 + │   │   │   ├── curl_mime_free.3 + │   │   │   ├── curl_mime_headers.3 + │   │   │   ├── curl_mime_init.3 + │   │   │   ├── curl_mime_name.3 + │   │   │   ├── curl_mime_subparts.3 + │   │   │   ├── curl_mime_type.3 + │   │   │   ├── CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 + │   │   │   ├── CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 + │   │   │   ├── CURLMOPT_MAX_CONCURRENT_STREAMS.3 + │   │   │   ├── CURLMOPT_MAXCONNECTS.3 + │   │   │   ├── CURLMOPT_MAX_HOST_CONNECTIONS.3 + │   │   │   ├── CURLMOPT_MAX_PIPELINE_LENGTH.3 + │   │   │   ├── CURLMOPT_MAX_TOTAL_CONNECTIONS.3 + │   │   │   ├── CURLMOPT_PIPELINING.3 + │   │   │   ├── CURLMOPT_PIPELINING_SERVER_BL.3 + │   │   │   ├── CURLMOPT_PIPELINING_SITE_BL.3 + │   │   │   ├── CURLMOPT_PUSHDATA.3 + │   │   │   ├── CURLMOPT_PUSHFUNCTION.3 + │   │   │   ├── CURLMOPT_SOCKETDATA.3 + │   │   │   ├── CURLMOPT_SOCKETFUNCTION.3 + │   │   │   ├── CURLMOPT_TIMERDATA.3 + │   │   │   ├── CURLMOPT_TIMERFUNCTION.3 + │   │   │   ├── curl_mprintf.3 + │   │   │   ├── curl_multi_add_handle.3 + │   │   │   ├── curl_multi_assign.3 + │   │   │   ├── curl_multi_cleanup.3 + │   │   │   ├── curl_multi_fdset.3 + │   │   │   ├── curl_multi_get_handles.3 + │   │   │   ├── curl_multi_info_read.3 + │   │   │   ├── curl_multi_init.3 + │   │   │   ├── curl_multi_perform.3 + │   │   │   ├── curl_multi_poll.3 + │   │   │   ├── curl_multi_remove_handle.3 + │   │   │   ├── curl_multi_setopt.3 + │   │   │   ├── curl_multi_socket.3 + │   │   │   ├── curl_multi_socket_action.3 + │   │   │   ├── curl_multi_socket_all.3 + │   │   │   ├── curl_multi_strerror.3 + │   │   │   ├── curl_multi_timeout.3 + │   │   │   ├── curl_multi_wait.3 + │   │   │   ├── curl_multi_wakeup.3 + │   │   │   ├── CURLOPT_ABSTRACT_UNIX_SOCKET.3 + │   │   │   ├── CURLOPT_ACCEPT_ENCODING.3 + │   │   │   ├── CURLOPT_ACCEPTTIMEOUT_MS.3 + │   │   │   ├── CURLOPT_ADDRESS_SCOPE.3 + │   │   │   ├── CURLOPT_ALTSVC.3 + │   │   │   ├── CURLOPT_ALTSVC_CTRL.3 + │   │   │   ├── CURLOPT_APPEND.3 + │   │   │   ├── CURLOPT_AUTOREFERER.3 + │   │   │   ├── CURLOPT_AWS_SIGV4.3 + │   │   │   ├── CURLOPT_BUFFERSIZE.3 + │   │   │   ├── CURLOPT_CA_CACHE_TIMEOUT.3 + │   │   │   ├── CURLOPT_CAINFO.3 + │   │   │   ├── CURLOPT_CAINFO_BLOB.3 + │   │   │   ├── CURLOPT_CAPATH.3 + │   │   │   ├── CURLOPT_CERTINFO.3 + │   │   │   ├── CURLOPT_CHUNK_BGN_FUNCTION.3 + │   │   │   ├── CURLOPT_CHUNK_DATA.3 + │   │   │   ├── CURLOPT_CHUNK_END_FUNCTION.3 + │   │   │   ├── CURLOPT_CLOSESOCKETDATA.3 + │   │   │   ├── CURLOPT_CLOSESOCKETFUNCTION.3 + │   │   │   ├── CURLOPT_CONNECT_ONLY.3 + │   │   │   ├── CURLOPT_CONNECTTIMEOUT.3 + │   │   │   ├── CURLOPT_CONNECTTIMEOUT_MS.3 + │   │   │   ├── CURLOPT_CONNECT_TO.3 + │   │   │   ├── CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 + │   │   │   ├── CURLOPT_CONV_FROM_UTF8_FUNCTION.3 + │   │   │   ├── CURLOPT_CONV_TO_NETWORK_FUNCTION.3 + │   │   │   ├── CURLOPT_COOKIE.3 + │   │   │   ├── CURLOPT_COOKIEFILE.3 + │   │   │   ├── CURLOPT_COOKIEJAR.3 + │   │   │   ├── CURLOPT_COOKIELIST.3 + │   │   │   ├── CURLOPT_COOKIESESSION.3 + │   │   │   ├── CURLOPT_COPYPOSTFIELDS.3 + │   │   │   ├── CURLOPT_CRLF.3 + │   │   │   ├── CURLOPT_CRLFILE.3 + │   │   │   ├── CURLOPT_CURLU.3 + │   │   │   ├── CURLOPT_CUSTOMREQUEST.3 + │   │   │   ├── CURLOPT_DEBUGDATA.3 + │   │   │   ├── CURLOPT_DEBUGFUNCTION.3 + │   │   │   ├── CURLOPT_DEFAULT_PROTOCOL.3 + │   │   │   ├── CURLOPT_DIRLISTONLY.3 + │   │   │   ├── CURLOPT_DISALLOW_USERNAME_IN_URL.3 + │   │   │   ├── CURLOPT_DNS_CACHE_TIMEOUT.3 + │   │   │   ├── CURLOPT_DNS_INTERFACE.3 + │   │   │   ├── CURLOPT_DNS_LOCAL_IP4.3 + │   │   │   ├── CURLOPT_DNS_LOCAL_IP6.3 + │   │   │   ├── CURLOPT_DNS_SERVERS.3 + │   │   │   ├── CURLOPT_DNS_SHUFFLE_ADDRESSES.3 + │   │   │   ├── CURLOPT_DNS_USE_GLOBAL_CACHE.3 + │   │   │   ├── CURLOPT_DOH_SSL_VERIFYHOST.3 + │   │   │   ├── CURLOPT_DOH_SSL_VERIFYPEER.3 + │   │   │   ├── CURLOPT_DOH_SSL_VERIFYSTATUS.3 + │   │   │   ├── CURLOPT_DOH_URL.3 + │   │   │   ├── CURLOPT_EGDSOCKET.3 + │   │   │   ├── CURLOPT_ERRORBUFFER.3 + │   │   │   ├── CURLOPT_EXPECT_100_TIMEOUT_MS.3 + │   │   │   ├── CURLOPT_FAILONERROR.3 + │   │   │   ├── CURLOPT_FILETIME.3 + │   │   │   ├── CURLOPT_FNMATCH_DATA.3 + │   │   │   ├── CURLOPT_FNMATCH_FUNCTION.3 + │   │   │   ├── CURLOPT_FOLLOWLOCATION.3 + │   │   │   ├── CURLOPT_FORBID_REUSE.3 + │   │   │   ├── CURLOPT_FRESH_CONNECT.3 + │   │   │   ├── CURLOPT_FTP_ACCOUNT.3 + │   │   │   ├── CURLOPT_FTP_ALTERNATIVE_TO_USER.3 + │   │   │   ├── CURLOPT_FTP_CREATE_MISSING_DIRS.3 + │   │   │   ├── CURLOPT_FTP_FILEMETHOD.3 + │   │   │   ├── CURLOPT_FTPPORT.3 + │   │   │   ├── CURLOPT_FTP_SKIP_PASV_IP.3 + │   │   │   ├── CURLOPT_FTPSSLAUTH.3 + │   │   │   ├── CURLOPT_FTP_SSL_CCC.3 + │   │   │   ├── CURLOPT_FTP_USE_EPRT.3 + │   │   │   ├── CURLOPT_FTP_USE_EPSV.3 + │   │   │   ├── CURLOPT_FTP_USE_PRET.3 + │   │   │   ├── CURLOPT_GSSAPI_DELEGATION.3 + │   │   │   ├── CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 + │   │   │   ├── CURLOPT_HAPROXY_CLIENT_IP.3 + │   │   │   ├── CURLOPT_HAPROXYPROTOCOL.3 + │   │   │   ├── CURLOPT_HEADER.3 + │   │   │   ├── CURLOPT_HEADERDATA.3 + │   │   │   ├── CURLOPT_HEADERFUNCTION.3 + │   │   │   ├── CURLOPT_HEADEROPT.3 + │   │   │   ├── CURLOPT_HSTS.3 + │   │   │   ├── CURLOPT_HSTS_CTRL.3 + │   │   │   ├── CURLOPT_HSTSREADDATA.3 + │   │   │   ├── CURLOPT_HSTSREADFUNCTION.3 + │   │   │   ├── CURLOPT_HSTSWRITEDATA.3 + │   │   │   ├── CURLOPT_HSTSWRITEFUNCTION.3 + │   │   │   ├── CURLOPT_HTTP09_ALLOWED.3 + │   │   │   ├── CURLOPT_HTTP200ALIASES.3 + │   │   │   ├── CURLOPT_HTTPAUTH.3 + │   │   │   ├── CURLOPT_HTTP_CONTENT_DECODING.3 + │   │   │   ├── CURLOPT_HTTPGET.3 + │   │   │   ├── CURLOPT_HTTPHEADER.3 + │   │   │   ├── CURLOPT_HTTPPOST.3 + │   │   │   ├── CURLOPT_HTTPPROXYTUNNEL.3 + │   │   │   ├── CURLOPT_HTTP_TRANSFER_DECODING.3 + │   │   │   ├── CURLOPT_HTTP_VERSION.3 + │   │   │   ├── CURLOPT_IGNORE_CONTENT_LENGTH.3 + │   │   │   ├── CURLOPT_INFILESIZE.3 + │   │   │   ├── CURLOPT_INFILESIZE_LARGE.3 + │   │   │   ├── CURLOPT_INTERFACE.3 + │   │   │   ├── CURLOPT_INTERLEAVEDATA.3 + │   │   │   ├── CURLOPT_INTERLEAVEFUNCTION.3 + │   │   │   ├── CURLOPT_IOCTLDATA.3 + │   │   │   ├── CURLOPT_IOCTLFUNCTION.3 + │   │   │   ├── CURLOPT_IPRESOLVE.3 + │   │   │   ├── CURLOPT_ISSUERCERT.3 + │   │   │   ├── CURLOPT_ISSUERCERT_BLOB.3 + │   │   │   ├── CURLOPT_KEEP_SENDING_ON_ERROR.3 + │   │   │   ├── CURLOPT_KEYPASSWD.3 + │   │   │   ├── CURLOPT_KRBLEVEL.3 + │   │   │   ├── CURLOPT_LOCALPORT.3 + │   │   │   ├── CURLOPT_LOCALPORTRANGE.3 + │   │   │   ├── CURLOPT_LOGIN_OPTIONS.3 + │   │   │   ├── CURLOPT_LOW_SPEED_LIMIT.3 + │   │   │   ├── CURLOPT_LOW_SPEED_TIME.3 + │   │   │   ├── CURLOPT_MAIL_AUTH.3 + │   │   │   ├── CURLOPT_MAIL_FROM.3 + │   │   │   ├── CURLOPT_MAIL_RCPT.3 + │   │   │   ├── CURLOPT_MAIL_RCPT_ALLOWFAILS.3 + │   │   │   ├── CURLOPT_MAXAGE_CONN.3 + │   │   │   ├── CURLOPT_MAXCONNECTS.3 + │   │   │   ├── CURLOPT_MAXFILESIZE.3 + │   │   │   ├── CURLOPT_MAXFILESIZE_LARGE.3 + │   │   │   ├── CURLOPT_MAXLIFETIME_CONN.3 + │   │   │   ├── CURLOPT_MAX_RECV_SPEED_LARGE.3 + │   │   │   ├── CURLOPT_MAXREDIRS.3 + │   │   │   ├── CURLOPT_MAX_SEND_SPEED_LARGE.3 + │   │   │   ├── CURLOPT_MIME_OPTIONS.3 + │   │   │   ├── CURLOPT_MIMEPOST.3 + │   │   │   ├── CURLOPT_NETRC.3 + │   │   │   ├── CURLOPT_NETRC_FILE.3 + │   │   │   ├── CURLOPT_NEW_DIRECTORY_PERMS.3 + │   │   │   ├── CURLOPT_NEW_FILE_PERMS.3 + │   │   │   ├── CURLOPT_NOBODY.3 + │   │   │   ├── CURLOPT_NOPROGRESS.3 + │   │   │   ├── CURLOPT_NOPROXY.3 + │   │   │   ├── CURLOPT_NOSIGNAL.3 + │   │   │   ├── CURLOPT_OPENSOCKETDATA.3 + │   │   │   ├── CURLOPT_OPENSOCKETFUNCTION.3 + │   │   │   ├── CURLOPT_PASSWORD.3 + │   │   │   ├── CURLOPT_PATH_AS_IS.3 + │   │   │   ├── CURLOPT_PINNEDPUBLICKEY.3 + │   │   │   ├── CURLOPT_PIPEWAIT.3 + │   │   │   ├── CURLOPT_PORT.3 + │   │   │   ├── CURLOPT_POST.3 + │   │   │   ├── CURLOPT_POSTFIELDS.3 + │   │   │   ├── CURLOPT_POSTFIELDSIZE.3 + │   │   │   ├── CURLOPT_POSTFIELDSIZE_LARGE.3 + │   │   │   ├── CURLOPT_POSTQUOTE.3 + │   │   │   ├── CURLOPT_POSTREDIR.3 + │   │   │   ├── CURLOPT_PRE_PROXY.3 + │   │   │   ├── CURLOPT_PREQUOTE.3 + │   │   │   ├── CURLOPT_PREREQDATA.3 + │   │   │   ├── CURLOPT_PREREQFUNCTION.3 + │   │   │   ├── CURLOPT_PRIVATE.3 + │   │   │   ├── CURLOPT_PROGRESSDATA.3 + │   │   │   ├── CURLOPT_PROGRESSFUNCTION.3 + │   │   │   ├── CURLOPT_PROTOCOLS.3 + │   │   │   ├── CURLOPT_PROTOCOLS_STR.3 + │   │   │   ├── CURLOPT_PROXY.3 + │   │   │   ├── CURLOPT_PROXYAUTH.3 + │   │   │   ├── CURLOPT_PROXY_CAINFO.3 + │   │   │   ├── CURLOPT_PROXY_CAINFO_BLOB.3 + │   │   │   ├── CURLOPT_PROXY_CAPATH.3 + │   │   │   ├── CURLOPT_PROXY_CRLFILE.3 + │   │   │   ├── CURLOPT_PROXYHEADER.3 + │   │   │   ├── CURLOPT_PROXY_ISSUERCERT.3 + │   │   │   ├── CURLOPT_PROXY_ISSUERCERT_BLOB.3 + │   │   │   ├── CURLOPT_PROXY_KEYPASSWD.3 + │   │   │   ├── CURLOPT_PROXYPASSWORD.3 + │   │   │   ├── CURLOPT_PROXY_PINNEDPUBLICKEY.3 + │   │   │   ├── CURLOPT_PROXYPORT.3 + │   │   │   ├── CURLOPT_PROXY_SERVICE_NAME.3 + │   │   │   ├── CURLOPT_PROXY_SSLCERT.3 + │   │   │   ├── CURLOPT_PROXY_SSLCERT_BLOB.3 + │   │   │   ├── CURLOPT_PROXY_SSLCERTTYPE.3 + │   │   │   ├── CURLOPT_PROXY_SSL_CIPHER_LIST.3 + │   │   │   ├── CURLOPT_PROXY_SSLKEY.3 + │   │   │   ├── CURLOPT_PROXY_SSLKEY_BLOB.3 + │   │   │   ├── CURLOPT_PROXY_SSLKEYTYPE.3 + │   │   │   ├── CURLOPT_PROXY_SSL_OPTIONS.3 + │   │   │   ├── CURLOPT_PROXY_SSL_VERIFYHOST.3 + │   │   │   ├── CURLOPT_PROXY_SSL_VERIFYPEER.3 + │   │   │   ├── CURLOPT_PROXY_SSLVERSION.3 + │   │   │   ├── CURLOPT_PROXY_TLS13_CIPHERS.3 + │   │   │   ├── CURLOPT_PROXY_TLSAUTH_PASSWORD.3 + │   │   │   ├── CURLOPT_PROXY_TLSAUTH_TYPE.3 + │   │   │   ├── CURLOPT_PROXY_TLSAUTH_USERNAME.3 + │   │   │   ├── CURLOPT_PROXY_TRANSFER_MODE.3 + │   │   │   ├── CURLOPT_PROXYTYPE.3 + │   │   │   ├── CURLOPT_PROXYUSERNAME.3 + │   │   │   ├── CURLOPT_PROXYUSERPWD.3 + │   │   │   ├── CURLOPT_PUT.3 + │   │   │   ├── CURLOPT_QUICK_EXIT.3 + │   │   │   ├── CURLOPT_QUOTE.3 + │   │   │   ├── CURLOPT_RANDOM_FILE.3 + │   │   │   ├── CURLOPT_RANGE.3 + │   │   │   ├── CURLOPT_READDATA.3 + │   │   │   ├── CURLOPT_READFUNCTION.3 + │   │   │   ├── CURLOPT_REDIR_PROTOCOLS.3 + │   │   │   ├── CURLOPT_REDIR_PROTOCOLS_STR.3 + │   │   │   ├── CURLOPT_REFERER.3 + │   │   │   ├── CURLOPT_REQUEST_TARGET.3 + │   │   │   ├── CURLOPT_RESOLVE.3 + │   │   │   ├── CURLOPT_RESOLVER_START_DATA.3 + │   │   │   ├── CURLOPT_RESOLVER_START_FUNCTION.3 + │   │   │   ├── CURLOPT_RESUME_FROM.3 + │   │   │   ├── CURLOPT_RESUME_FROM_LARGE.3 + │   │   │   ├── CURLOPT_RTSP_CLIENT_CSEQ.3 + │   │   │   ├── CURLOPT_RTSP_REQUEST.3 + │   │   │   ├── CURLOPT_RTSP_SERVER_CSEQ.3 + │   │   │   ├── CURLOPT_RTSP_SESSION_ID.3 + │   │   │   ├── CURLOPT_RTSP_STREAM_URI.3 + │   │   │   ├── CURLOPT_RTSP_TRANSPORT.3 + │   │   │   ├── CURLOPT_SASL_AUTHZID.3 + │   │   │   ├── CURLOPT_SASL_IR.3 + │   │   │   ├── CURLOPT_SEEKDATA.3 + │   │   │   ├── CURLOPT_SEEKFUNCTION.3 + │   │   │   ├── CURLOPT_SERVER_RESPONSE_TIMEOUT.3 + │   │   │   ├── CURLOPT_SERVER_RESPONSE_TIMEOUT_MS.3 + │   │   │   ├── CURLOPT_SERVICE_NAME.3 + │   │   │   ├── CURLOPT_SHARE.3 + │   │   │   ├── CURLOPT_SOCKOPTDATA.3 + │   │   │   ├── CURLOPT_SOCKOPTFUNCTION.3 + │   │   │   ├── CURLOPT_SOCKS5_AUTH.3 + │   │   │   ├── CURLOPT_SOCKS5_GSSAPI_NEC.3 + │   │   │   ├── CURLOPT_SOCKS5_GSSAPI_SERVICE.3 + │   │   │   ├── CURLOPT_SSH_AUTH_TYPES.3 + │   │   │   ├── CURLOPT_SSH_COMPRESSION.3 + │   │   │   ├── CURLOPT_SSH_HOSTKEYDATA.3 + │   │   │   ├── CURLOPT_SSH_HOSTKEYFUNCTION.3 + │   │   │   ├── CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 + │   │   │   ├── CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 + │   │   │   ├── CURLOPT_SSH_KEYDATA.3 + │   │   │   ├── CURLOPT_SSH_KEYFUNCTION.3 + │   │   │   ├── CURLOPT_SSH_KNOWNHOSTS.3 + │   │   │   ├── CURLOPT_SSH_PRIVATE_KEYFILE.3 + │   │   │   ├── CURLOPT_SSH_PUBLIC_KEYFILE.3 + │   │   │   ├── CURLOPT_SSLCERT.3 + │   │   │   ├── CURLOPT_SSLCERT_BLOB.3 + │   │   │   ├── CURLOPT_SSLCERTTYPE.3 + │   │   │   ├── CURLOPT_SSL_CIPHER_LIST.3 + │   │   │   ├── CURLOPT_SSL_CTX_DATA.3 + │   │   │   ├── CURLOPT_SSL_CTX_FUNCTION.3 + │   │   │   ├── CURLOPT_SSL_EC_CURVES.3 + │   │   │   ├── CURLOPT_SSL_ENABLE_ALPN.3 + │   │   │   ├── CURLOPT_SSL_ENABLE_NPN.3 + │   │   │   ├── CURLOPT_SSLENGINE.3 + │   │   │   ├── CURLOPT_SSLENGINE_DEFAULT.3 + │   │   │   ├── CURLOPT_SSL_FALSESTART.3 + │   │   │   ├── CURLOPT_SSLKEY.3 + │   │   │   ├── CURLOPT_SSLKEY_BLOB.3 + │   │   │   ├── CURLOPT_SSLKEYTYPE.3 + │   │   │   ├── CURLOPT_SSL_OPTIONS.3 + │   │   │   ├── CURLOPT_SSL_SESSIONID_CACHE.3 + │   │   │   ├── CURLOPT_SSL_VERIFYHOST.3 + │   │   │   ├── CURLOPT_SSL_VERIFYPEER.3 + │   │   │   ├── CURLOPT_SSL_VERIFYSTATUS.3 + │   │   │   ├── CURLOPT_SSLVERSION.3 + │   │   │   ├── CURLOPT_STDERR.3 + │   │   │   ├── CURLOPT_STREAM_DEPENDS.3 + │   │   │   ├── CURLOPT_STREAM_DEPENDS_E.3 + │   │   │   ├── CURLOPT_STREAM_WEIGHT.3 + │   │   │   ├── CURLOPT_SUPPRESS_CONNECT_HEADERS.3 + │   │   │   ├── CURLOPT_TCP_FASTOPEN.3 + │   │   │   ├── CURLOPT_TCP_KEEPALIVE.3 + │   │   │   ├── CURLOPT_TCP_KEEPIDLE.3 + │   │   │   ├── CURLOPT_TCP_KEEPINTVL.3 + │   │   │   ├── CURLOPT_TCP_NODELAY.3 + │   │   │   ├── CURLOPT_TELNETOPTIONS.3 + │   │   │   ├── CURLOPT_TFTP_BLKSIZE.3 + │   │   │   ├── CURLOPT_TFTP_NO_OPTIONS.3 + │   │   │   ├── CURLOPT_TIMECONDITION.3 + │   │   │   ├── CURLOPT_TIMEOUT.3 + │   │   │   ├── CURLOPT_TIMEOUT_MS.3 + │   │   │   ├── CURLOPT_TIMEVALUE.3 + │   │   │   ├── CURLOPT_TIMEVALUE_LARGE.3 + │   │   │   ├── CURLOPT_TLS13_CIPHERS.3 + │   │   │   ├── CURLOPT_TLSAUTH_PASSWORD.3 + │   │   │   ├── CURLOPT_TLSAUTH_TYPE.3 + │   │   │   ├── CURLOPT_TLSAUTH_USERNAME.3 + │   │   │   ├── CURLOPT_TRAILERDATA.3 + │   │   │   ├── CURLOPT_TRAILERFUNCTION.3 + │   │   │   ├── CURLOPT_TRANSFER_ENCODING.3 + │   │   │   ├── CURLOPT_TRANSFERTEXT.3 + │   │   │   ├── CURLOPT_UNIX_SOCKET_PATH.3 + │   │   │   ├── CURLOPT_UNRESTRICTED_AUTH.3 + │   │   │   ├── CURLOPT_UPKEEP_INTERVAL_MS.3 + │   │   │   ├── CURLOPT_UPLOAD.3 + │   │   │   ├── CURLOPT_UPLOAD_BUFFERSIZE.3 + │   │   │   ├── CURLOPT_URL.3 + │   │   │   ├── CURLOPT_USERAGENT.3 + │   │   │   ├── CURLOPT_USERNAME.3 + │   │   │   ├── CURLOPT_USERPWD.3 + │   │   │   ├── CURLOPT_USE_SSL.3 + │   │   │   ├── CURLOPT_VERBOSE.3 + │   │   │   ├── CURLOPT_WILDCARDMATCH.3 + │   │   │   ├── CURLOPT_WRITEDATA.3 + │   │   │   ├── CURLOPT_WRITEFUNCTION.3 + │   │   │   ├── CURLOPT_WS_OPTIONS.3 + │   │   │   ├── CURLOPT_XFERINFODATA.3 + │   │   │   ├── CURLOPT_XFERINFOFUNCTION.3 + │   │   │   ├── CURLOPT_XOAUTH2_BEARER.3 + │   │   │   ├── curl_pushheader_byname.3 + │   │   │   ├── curl_pushheader_bynum.3 + │   │   │   ├── curl_share_cleanup.3 + │   │   │   ├── curl_share_init.3 + │   │   │   ├── curl_share_setopt.3 + │   │   │   ├── curl_share_strerror.3 + │   │   │   ├── CURLSHOPT_LOCKFUNC.3 + │   │   │   ├── CURLSHOPT_SHARE.3 + │   │   │   ├── CURLSHOPT_UNLOCKFUNC.3 + │   │   │   ├── CURLSHOPT_UNSHARE.3 + │   │   │   ├── CURLSHOPT_USERDATA.3 + │   │   │   ├── curl_slist_append.3 + │   │   │   ├── curl_slist_free_all.3 + │   │   │   ├── curl_strequal.3 + │   │   │   ├── curl_strnequal.3 + │   │   │   ├── curl_unescape.3 + │   │   │   ├── curl_url.3 + │   │   │   ├── curl_url_cleanup.3 + │   │   │   ├── curl_url_dup.3 + │   │   │   ├── curl_url_get.3 + │   │   │   ├── curl_url_set.3 + │   │   │   ├── curl_url_strerror.3 + │   │   │   ├── curl_version.3 + │   │   │   ├── curl_version_info.3 + │   │   │   ├── curl_ws_meta.3 + │   │   │   ├── curl_ws_recv.3 + │   │   │   ├── curl_ws_send.3 + │   │   │   ├── libcurl.3 + │   │   │   ├── libcurl-easy.3 + │   │   │   ├── libcurl-env.3 + │   │   │   ├── libcurl-env-dbg.3 + │   │   │   ├── libcurl-errors.3 + │   │   │   ├── libcurl-multi.3 + │   │   │   ├── libcurl-security.3 + │   │   │   ├── libcurl-share.3 + │   │   │   ├── libcurl-symbols.3 + │   │   │   ├── libcurl-thread.3 + │   │   │   ├── libcurl-tutorial.3 + │   │   │   ├── libcurl-url.3 + │   │   │   └── libcurl-ws.3 + │   │   ├── swift + │   │   │   └── LICENSE.txt + │   │   └── vim + │   │   └── vim73 + │   │   ├── ftdetect + │   │   │   ├── sil.vim + │   │   │   ├── swiftgyb.vim + │   │   │   └── swift.vim + │   │   └── syntax + │   │   ├── sil.vim + │   │   ├── swiftgyb.vim + │   │   └── swift.vim + │   ├── armv7 + │   │   └── usr + │   │   ├── bin + │   │   │   ├── bssl + │   │   │   ├── curl-config + │   │   │   ├── plutil + │   │   │   ├── sdk-module-lists + │   │   │   │   ├── create-module-lists.sh + │   │   │   │   ├── fixed-clang-modules-appletvos.txt + │   │   │   │   ├── fixed-clang-modules-common.txt + │   │   │   │   ├── fixed-clang-modules-iosmac.txt + │   │   │   │   ├── fixed-clang-modules-iphoneos.txt + │   │   │   │   ├── fixed-clang-modules-macosx.txt + │   │   │   │   ├── fixed-clang-modules-watchos.txt + │   │   │   │   ├── fixed-swift-modules-appletvos.txt + │   │   │   │   ├── fixed-swift-modules-common.txt + │   │   │   │   ├── fixed-swift-modules-iosmac.txt + │   │   │   │   ├── fixed-swift-modules-iphoneos.txt + │   │   │   │   ├── fixed-swift-modules-macosx.txt + │   │   │   │   ├── fixed-swift-modules-watchos.txt + │   │   │   │   └── infer-imports.py + │   │   │   ├── swift-api-checker.py + │   │   │   ├── swift-api-dump.py + │   │   │   ├── xml2-config + │   │   │   ├── xmlcatalog + │   │   │   └── xmllint + │   │   ├── include + │   │   │   ├── curl + │   │   │   │   ├── curl.h + │   │   │   │   ├── curlver.h + │   │   │   │   ├── easy.h + │   │   │   │   ├── header.h + │   │   │   │   ├── mprintf.h + │   │   │   │   ├── multi.h + │   │   │   │   ├── options.h + │   │   │   │   ├── stdcheaders.h + │   │   │   │   ├── system.h + │   │   │   │   ├── typecheck-gcc.h + │   │   │   │   ├── urlapi.h + │   │   │   │   └── websockets.h + │   │   │   ├── libxml2 + │   │   │   │   └── libxml + │   │   │   │   ├── c14n.h + │   │   │   │   ├── catalog.h + │   │   │   │   ├── chvalid.h + │   │   │   │   ├── debugXML.h + │   │   │   │   ├── dict.h + │   │   │   │   ├── encoding.h + │   │   │   │   ├── entities.h + │   │   │   │   ├── globals.h + │   │   │   │   ├── hash.h + │   │   │   │   ├── HTMLparser.h + │   │   │   │   ├── HTMLtree.h + │   │   │   │   ├── list.h + │   │   │   │   ├── nanoftp.h + │   │   │   │   ├── nanohttp.h + │   │   │   │   ├── parser.h + │   │   │   │   ├── parserInternals.h + │   │   │   │   ├── pattern.h + │   │   │   │   ├── relaxng.h + │   │   │   │   ├── SAX2.h + │   │   │   │   ├── SAX.h + │   │   │   │   ├── schemasInternals.h + │   │   │   │   ├── schematron.h + │   │   │   │   ├── threads.h + │   │   │   │   ├── tree.h + │   │   │   │   ├── uri.h + │   │   │   │   ├── valid.h + │   │   │   │   ├── xinclude.h + │   │   │   │   ├── xlink.h + │   │   │   │   ├── xmlautomata.h + │   │   │   │   ├── xmlerror.h + │   │   │   │   ├── xmlexports.h + │   │   │   │   ├── xmlIO.h + │   │   │   │   ├── xmlmemory.h + │   │   │   │   ├── xmlmodule.h + │   │   │   │   ├── xmlreader.h + │   │   │   │   ├── xmlregexp.h + │   │   │   │   ├── xmlsave.h + │   │   │   │   ├── xmlschemas.h + │   │   │   │   ├── xmlschemastypes.h + │   │   │   │   ├── xmlstring.h + │   │   │   │   ├── xmlunicode.h + │   │   │   │   ├── xmlversion.h + │   │   │   │   ├── xmlwriter.h + │   │   │   │   ├── xpath.h + │   │   │   │   ├── xpathInternals.h + │   │   │   │   └── xpointer.h + │   │   │   ├── openssl + │   │   │   │   ├── aead.h + │   │   │   │   ├── aes.h + │   │   │   │   ├── arm_arch.h + │   │   │   │   ├── asn1.h + │   │   │   │   ├── asn1_mac.h + │   │   │   │   ├── asn1t.h + │   │   │   │   ├── base64.h + │   │   │   │   ├── base.h + │   │   │   │   ├── bio.h + │   │   │   │   ├── blake2.h + │   │   │   │   ├── blowfish.h + │   │   │   │   ├── bn.h + │   │   │   │   ├── buffer.h + │   │   │   │   ├── buf.h + │   │   │   │   ├── bytestring.h + │   │   │   │   ├── cast.h + │   │   │   │   ├── chacha.h + │   │   │   │   ├── cipher.h + │   │   │   │   ├── cmac.h + │   │   │   │   ├── conf.h + │   │   │   │   ├── cpu.h + │   │   │   │   ├── crypto.h + │   │   │   │   ├── ctrdrbg.h + │   │   │   │   ├── curve25519.h + │   │   │   │   ├── des.h + │   │   │   │   ├── dh.h + │   │   │   │   ├── digest.h + │   │   │   │   ├── dsa.h + │   │   │   │   ├── dtls1.h + │   │   │   │   ├── ecdh.h + │   │   │   │   ├── ecdsa.h + │   │   │   │   ├── ec.h + │   │   │   │   ├── ec_key.h + │   │   │   │   ├── engine.h + │   │   │   │   ├── e_os2.h + │   │   │   │   ├── err.h + │   │   │   │   ├── evp_errors.h + │   │   │   │   ├── evp.h + │   │   │   │   ├── ex_data.h + │   │   │   │   ├── hkdf.h + │   │   │   │   ├── hmac.h + │   │   │   │   ├── hpke.h + │   │   │   │   ├── hrss.h + │   │   │   │   ├── is_boringssl.h + │   │   │   │   ├── lhash.h + │   │   │   │   ├── md4.h + │   │   │   │   ├── md5.h + │   │   │   │   ├── mem.h + │   │   │   │   ├── nid.h + │   │   │   │   ├── objects.h + │   │   │   │   ├── obj.h + │   │   │   │   ├── obj_mac.h + │   │   │   │   ├── opensslconf.h + │   │   │   │   ├── opensslv.h + │   │   │   │   ├── ossl_typ.h + │   │   │   │   ├── pem.h + │   │   │   │   ├── pkcs12.h + │   │   │   │   ├── pkcs7.h + │   │   │   │   ├── pkcs8.h + │   │   │   │   ├── poly1305.h + │   │   │   │   ├── pool.h + │   │   │   │   ├── rand.h + │   │   │   │   ├── rc4.h + │   │   │   │   ├── ripemd.h + │   │   │   │   ├── rsa.h + │   │   │   │   ├── safestack.h + │   │   │   │   ├── service_indicator.h + │   │   │   │   ├── sha.h + │   │   │   │   ├── siphash.h + │   │   │   │   ├── span.h + │   │   │   │   ├── srtp.h + │   │   │   │   ├── ssl3.h + │   │   │   │   ├── ssl.h + │   │   │   │   ├── stack.h + │   │   │   │   ├── thread.h + │   │   │   │   ├── tls1.h + │   │   │   │   ├── trust_token.h + │   │   │   │   ├── type_check.h + │   │   │   │   ├── x509.h + │   │   │   │   ├── x509v3.h + │   │   │   │   └── x509_vfy.h + │   │   │   └── swift + │   │   │   ├── Runtime + │   │   │   │   └── CMakeConfig.h + │   │   │   └── SwiftRemoteMirror + │   │   │   ├── MemoryReaderInterface.h + │   │   │   ├── module.modulemap + │   │   │   ├── Platform.h + │   │   │   ├── SwiftRemoteMirror.h + │   │   │   └── SwiftRemoteMirrorTypes.h + │   │   ├── lib + │   │   │   ├── cmake + │   │   │   │   ├── CURL + │   │   │   │   │   ├── CURLConfig.cmake + │   │   │   │   │   ├── CURLConfigVersion.cmake + │   │   │   │   │   ├── CURLTargets.cmake + │   │   │   │   │   └── CURLTargets-release.cmake + │   │   │   │   ├── libxml2-2.12.7 + │   │   │   │   │   ├── libxml2-config.cmake + │   │   │   │   │   ├── libxml2-config-version.cmake + │   │   │   │   │   ├── libxml2-export.cmake + │   │   │   │   │   └── libxml2-export-release.cmake + │   │   │   │   └── OpenSSL + │   │   │   │   ├── OpenSSLConfig.cmake + │   │   │   │   ├── OpenSSLTargets.cmake + │   │   │   │   └── OpenSSLTargets-release.cmake + │   │   │   ├── libcrypto.a + │   │   │   ├── libcurl.a + │   │   │   ├── libssl.a + │   │   │   ├── libxml2.a + │   │   │   ├── pkgconfig + │   │   │   │   ├── libcurl.pc + │   │   │   │   └── libxml-2.0.pc + │   │   │   ├── swift + │   │   │   │   ├── android + │   │   │   │   │   ├── Android.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── armv7 + │   │   │   │   │   │   ├── android.modulemap + │   │   │   │   │   │   ├── Dispatch.swiftdoc + │   │   │   │   │   │   ├── Dispatch.swiftmodule + │   │   │   │   │   │   ├── SwiftAndroidNDK.h + │   │   │   │   │   │   ├── SwiftBionic.h + │   │   │   │   │   │   ├── swiftrt.o + │   │   │   │   │   │   ├── XCTest.swiftdoc + │   │   │   │   │   │   └── XCTest.swiftmodule + │   │   │   │   │   ├── _Builtin_float.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── _Concurrency.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── CxxStdlib.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Cxx.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── _Differentiation.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Distributed.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── _FoundationCollections.swiftmodule + │   │   │   │   │   │   ├── armv7.swiftdoc + │   │   │   │   │   │   └── armv7.swiftmodule + │   │   │   │   │   ├── FoundationEssentials.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── FoundationInternationalization.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── FoundationNetworking.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Foundation.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── FoundationXML.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── libBlocksRuntime.so + │   │   │   │   │   ├── libcxxshim.h + │   │   │   │   │   ├── libcxxshim.modulemap + │   │   │   │   │   ├── libcxxstdlibshim.h + │   │   │   │   │   ├── libdispatch.so + │   │   │   │   │   ├── libFoundationEssentials.so + │   │   │   │   │   ├── lib_FoundationICU.so + │   │   │   │   │   ├── libFoundationInternationalization.so + │   │   │   │   │   ├── libFoundationNetworking.so + │   │   │   │   │   ├── libFoundation.so + │   │   │   │   │   ├── libFoundationXML.so + │   │   │   │   │   ├── libswiftAndroid.so + │   │   │   │   │   ├── libswift_Builtin_float.so + │   │   │   │   │   ├── libswift_Concurrency.so + │   │   │   │   │   ├── libswiftCore.so + │   │   │   │   │   ├── libswiftCxx.a + │   │   │   │   │   ├── libswiftCxxStdlib.a + │   │   │   │   │   ├── libswift_Differentiation.so + │   │   │   │   │   ├── libswiftDispatch.so + │   │   │   │   │   ├── libswiftDistributed.so + │   │   │   │   │   ├── libswift_math.so + │   │   │   │   │   ├── libswiftObservation.so + │   │   │   │   │   ├── libswiftRegexBuilder.so + │   │   │   │   │   ├── libswift_RegexParser.so + │   │   │   │   │   ├── libswiftRemoteMirror.so + │   │   │   │   │   ├── libswift_StringProcessing.so + │   │   │   │   │   ├── libswiftSwiftOnoneSupport.so + │   │   │   │   │   ├── libswiftSynchronization.so + │   │   │   │   │   ├── libswift_Volatile.so + │   │   │   │   │   ├── libXCTest.so + │   │   │   │   │   ├── _math.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Observation.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── RegexBuilder.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── _RegexParser.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── _StringProcessing.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── SwiftOnoneSupport.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Swift.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   ├── Synchronization.swiftmodule + │   │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   │   └── _Volatile.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.abi.json + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── apinotes + │   │   │   │   │   ├── posix_filesystem.apinotes + │   │   │   │   │   └── std.apinotes + │   │   │   │   ├── Block + │   │   │   │   │   └── Block.h + │   │   │   │   ├── clang + │   │   │   │   │   ├── bin + │   │   │   │   │   │   └── hwasan_symbolize + │   │   │   │   │   ├── include + │   │   │   │   │   │   ├── adcintrin.h + │   │   │   │   │   │   ├── adxintrin.h + │   │   │   │   │   │   ├── altivec.h + │   │   │   │   │   │   ├── ammintrin.h + │   │   │   │   │   │   ├── amxcomplexintrin.h + │   │   │   │   │   │   ├── amxfp16intrin.h + │   │   │   │   │   │   ├── amxintrin.h + │   │   │   │   │   │   ├── arm64intr.h + │   │   │   │   │   │   ├── arm_acle.h + │   │   │   │   │   │   ├── arm_bf16.h + │   │   │   │   │   │   ├── arm_cde.h + │   │   │   │   │   │   ├── arm_cmse.h + │   │   │   │   │   │   ├── arm_fp16.h + │   │   │   │   │   │   ├── armintr.h + │   │   │   │   │   │   ├── arm_mve.h + │   │   │   │   │   │   ├── arm_neon.h + │   │   │   │   │   │   ├── arm_neon_sve_bridge.h + │   │   │   │   │   │   ├── arm_sme.h + │   │   │   │   │   │   ├── arm_sve.h + │   │   │   │   │   │   ├── arm_vector_types.h + │   │   │   │   │   │   ├── avx2intrin.h + │   │   │   │   │   │   ├── avx512bf16intrin.h + │   │   │   │   │   │   ├── avx512bitalgintrin.h + │   │   │   │   │   │   ├── avx512bwintrin.h + │   │   │   │   │   │   ├── avx512cdintrin.h + │   │   │   │   │   │   ├── avx512dqintrin.h + │   │   │   │   │   │   ├── avx512fintrin.h + │   │   │   │   │   │   ├── avx512fp16intrin.h + │   │   │   │   │   │   ├── avx512ifmaintrin.h + │   │   │   │   │   │   ├── avx512ifmavlintrin.h + │   │   │   │   │   │   ├── avx512vbmi2intrin.h + │   │   │   │   │   │   ├── avx512vbmiintrin.h + │   │   │   │   │   │   ├── avx512vbmivlintrin.h + │   │   │   │   │   │   ├── avx512vlbf16intrin.h + │   │   │   │   │   │   ├── avx512vlbitalgintrin.h + │   │   │   │   │   │   ├── avx512vlbwintrin.h + │   │   │   │   │   │   ├── avx512vlcdintrin.h + │   │   │   │   │   │   ├── avx512vldqintrin.h + │   │   │   │   │   │   ├── avx512vlfp16intrin.h + │   │   │   │   │   │   ├── avx512vlintrin.h + │   │   │   │   │   │   ├── avx512vlvbmi2intrin.h + │   │   │   │   │   │   ├── avx512vlvnniintrin.h + │   │   │   │   │   │   ├── avx512vlvp2intersectintrin.h + │   │   │   │   │   │   ├── avx512vnniintrin.h + │   │   │   │   │   │   ├── avx512vp2intersectintrin.h + │   │   │   │   │   │   ├── avx512vpopcntdqintrin.h + │   │   │   │   │   │   ├── avx512vpopcntdqvlintrin.h + │   │   │   │   │   │   ├── avxifmaintrin.h + │   │   │   │   │   │   ├── avxintrin.h + │   │   │   │   │   │   ├── avxneconvertintrin.h + │   │   │   │   │   │   ├── avxvnniint16intrin.h + │   │   │   │   │   │   ├── avxvnniint8intrin.h + │   │   │   │   │   │   ├── avxvnniintrin.h + │   │   │   │   │   │   ├── bmi2intrin.h + │   │   │   │   │   │   ├── bmiintrin.h + │   │   │   │   │   │   ├── builtins.h + │   │   │   │   │   │   ├── cet.h + │   │   │   │   │   │   ├── cetintrin.h + │   │   │   │   │   │   ├── __clang_cuda_builtin_vars.h + │   │   │   │   │   │   ├── __clang_cuda_cmath.h + │   │   │   │   │   │   ├── __clang_cuda_complex_builtins.h + │   │   │   │   │   │   ├── __clang_cuda_device_functions.h + │   │   │   │   │   │   ├── __clang_cuda_intrinsics.h + │   │   │   │   │   │   ├── __clang_cuda_libdevice_declares.h + │   │   │   │   │   │   ├── __clang_cuda_math_forward_declares.h + │   │   │   │   │   │   ├── __clang_cuda_math.h + │   │   │   │   │   │   ├── __clang_cuda_runtime_wrapper.h + │   │   │   │   │   │   ├── __clang_cuda_texture_intrinsics.h + │   │   │   │   │   │   ├── __clang_hip_cmath.h + │   │   │   │   │   │   ├── __clang_hip_libdevice_declares.h + │   │   │   │   │   │   ├── __clang_hip_math.h + │   │   │   │   │   │   ├── __clang_hip_runtime_wrapper.h + │   │   │   │   │   │   ├── __clang_hip_stdlib.h + │   │   │   │   │   │   ├── cldemoteintrin.h + │   │   │   │   │   │   ├── clflushoptintrin.h + │   │   │   │   │   │   ├── clwbintrin.h + │   │   │   │   │   │   ├── clzerointrin.h + │   │   │   │   │   │   ├── cmpccxaddintrin.h + │   │   │   │   │   │   ├── cpuid.h + │   │   │   │   │   │   ├── crc32intrin.h + │   │   │   │   │   │   ├── cuda_wrappers + │   │   │   │   │   │   │   ├── algorithm + │   │   │   │   │   │   │   ├── bits + │   │   │   │   │   │   │   │   ├── basic_string.h + │   │   │   │   │   │   │   │   ├── basic_string.tcc + │   │   │   │   │   │   │   │   └── shared_ptr_base.h + │   │   │   │   │   │   │   ├── cmath + │   │   │   │   │   │   │   ├── complex + │   │   │   │   │   │   │   └── new + │   │   │   │   │   │   ├── emmintrin.h + │   │   │   │   │   │   ├── enqcmdintrin.h + │   │   │   │   │   │   ├── f16cintrin.h + │   │   │   │   │   │   ├── float.h + │   │   │   │   │   │   ├── fma4intrin.h + │   │   │   │   │   │   ├── fmaintrin.h + │   │   │   │   │   │   ├── fuzzer + │   │   │   │   │   │   │   └── FuzzedDataProvider.h + │   │   │   │   │   │   ├── fxsrintrin.h + │   │   │   │   │   │   ├── gfniintrin.h + │   │   │   │   │   │   ├── hexagon_circ_brev_intrinsics.h + │   │   │   │   │   │   ├── hexagon_protos.h + │   │   │   │   │   │   ├── hexagon_types.h + │   │   │   │   │   │   ├── hresetintrin.h + │   │   │   │   │   │   ├── htmintrin.h + │   │   │   │   │   │   ├── htmxlintrin.h + │   │   │   │   │   │   ├── hvx_hexagon_protos.h + │   │   │   │   │   │   ├── ia32intrin.h + │   │   │   │   │   │   ├── immintrin.h + │   │   │   │   │   │   ├── intrin0.h + │   │   │   │   │   │   ├── intrin.h + │   │   │   │   │   │   ├── inttypes.h + │   │   │   │   │   │   ├── invpcidintrin.h + │   │   │   │   │   │   ├── iso646.h + │   │   │   │   │   │   ├── keylockerintrin.h + │   │   │   │   │   │   ├── larchintrin.h + │   │   │   │   │   │   ├── lasxintrin.h + │   │   │   │   │   │   ├── limits.h + │   │   │   │   │   │   ├── llvm_libc_wrappers + │   │   │   │   │   │   │   ├── assert.h + │   │   │   │   │   │   │   ├── ctype.h + │   │   │   │   │   │   │   ├── inttypes.h + │   │   │   │   │   │   │   ├── stdio.h + │   │   │   │   │   │   │   ├── stdlib.h + │   │   │   │   │   │   │   ├── string.h + │   │   │   │   │   │   │   └── time.h + │   │   │   │   │   │   ├── lsxintrin.h + │   │   │   │   │   │   ├── lwpintrin.h + │   │   │   │   │   │   ├── lzcntintrin.h + │   │   │   │   │   │   ├── mm3dnow.h + │   │   │   │   │   │   ├── mmintrin.h + │   │   │   │   │   │   ├── mm_malloc.h + │   │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   │   ├── movdirintrin.h + │   │   │   │   │   │   ├── msa.h + │   │   │   │   │   │   ├── mwaitxintrin.h + │   │   │   │   │   │   ├── nmmintrin.h + │   │   │   │   │   │   ├── opencl-c-base.h + │   │   │   │   │   │   ├── opencl-c.h + │   │   │   │   │   │   ├── openmp_wrappers + │   │   │   │   │   │   │   ├── __clang_openmp_device_functions.h + │   │   │   │   │   │   │   ├── cmath + │   │   │   │   │   │   │   ├── complex + │   │   │   │   │   │   │   ├── complex_cmath.h + │   │   │   │   │   │   │   ├── complex.h + │   │   │   │   │   │   │   ├── math.h + │   │   │   │   │   │   │   └── new + │   │   │   │   │   │   ├── orc + │   │   │   │   │   │   │   └── c_api.h + │   │   │   │   │   │   ├── pconfigintrin.h + │   │   │   │   │   │   ├── pkuintrin.h + │   │   │   │   │   │   ├── pmmintrin.h + │   │   │   │   │   │   ├── popcntintrin.h + │   │   │   │   │   │   ├── ppc_wrappers + │   │   │   │   │   │   │   ├── bmi2intrin.h + │   │   │   │   │   │   │   ├── bmiintrin.h + │   │   │   │   │   │   │   ├── emmintrin.h + │   │   │   │   │   │   │   ├── immintrin.h + │   │   │   │   │   │   │   ├── mmintrin.h + │   │   │   │   │   │   │   ├── mm_malloc.h + │   │   │   │   │   │   │   ├── nmmintrin.h + │   │   │   │   │   │   │   ├── pmmintrin.h + │   │   │   │   │   │   │   ├── smmintrin.h + │   │   │   │   │   │   │   ├── tmmintrin.h + │   │   │   │   │   │   │   ├── x86gprintrin.h + │   │   │   │   │   │   │   ├── x86intrin.h + │   │   │   │   │   │   │   └── xmmintrin.h + │   │   │   │   │   │   ├── prfchiintrin.h + │   │   │   │   │   │   ├── prfchwintrin.h + │   │   │   │   │   │   ├── profile + │   │   │   │   │   │   │   ├── InstrProfData.inc + │   │   │   │   │   │   │   └── instr_prof_interface.h + │   │   │   │   │   │   ├── ptrauth.h + │   │   │   │   │   │   ├── ptwriteintrin.h + │   │   │   │   │   │   ├── raointintrin.h + │   │   │   │   │   │   ├── rdpruintrin.h + │   │   │   │   │   │   ├── rdseedintrin.h + │   │   │   │   │   │   ├── riscv_bitmanip.h + │   │   │   │   │   │   ├── riscv_crypto.h + │   │   │   │   │   │   ├── riscv_ntlh.h + │   │   │   │   │   │   ├── riscv_vector.h + │   │   │   │   │   │   ├── rtmintrin.h + │   │   │   │   │   │   ├── s390intrin.h + │   │   │   │   │   │   ├── sanitizer + │   │   │   │   │   │   │   ├── allocator_interface.h + │   │   │   │   │   │   │   ├── asan_interface.h + │   │   │   │   │   │   │   ├── common_interface_defs.h + │   │   │   │   │   │   │   ├── coverage_interface.h + │   │   │   │   │   │   │   ├── dfsan_interface.h + │   │   │   │   │   │   │   ├── hwasan_interface.h + │   │   │   │   │   │   │   ├── linux_syscall_hooks.h + │   │   │   │   │   │   │   ├── lsan_interface.h + │   │   │   │   │   │   │   ├── memprof_interface.h + │   │   │   │   │   │   │   ├── msan_interface.h + │   │   │   │   │   │   │   ├── netbsd_syscall_hooks.h + │   │   │   │   │   │   │   ├── scudo_interface.h + │   │   │   │   │   │   │   ├── tsan_interface_atomic.h + │   │   │   │   │   │   │   ├── tsan_interface.h + │   │   │   │   │   │   │   └── ubsan_interface.h + │   │   │   │   │   │   ├── serializeintrin.h + │   │   │   │   │   │   ├── sgxintrin.h + │   │   │   │   │   │   ├── sha512intrin.h + │   │   │   │   │   │   ├── shaintrin.h + │   │   │   │   │   │   ├── sifive_vector.h + │   │   │   │   │   │   ├── sm3intrin.h + │   │   │   │   │   │   ├── sm4intrin.h + │   │   │   │   │   │   ├── smmintrin.h + │   │   │   │   │   │   ├── stdalign.h + │   │   │   │   │   │   ├── __stdarg___gnuc_va_list.h + │   │   │   │   │   │   ├── stdarg.h + │   │   │   │   │   │   ├── __stdarg_header_macro.h + │   │   │   │   │   │   ├── __stdarg_va_arg.h + │   │   │   │   │   │   ├── __stdarg___va_copy.h + │   │   │   │   │   │   ├── __stdarg_va_copy.h + │   │   │   │   │   │   ├── __stdarg_va_list.h + │   │   │   │   │   │   ├── stdatomic.h + │   │   │   │   │   │   ├── stdbool.h + │   │   │   │   │   │   ├── stdckdint.h + │   │   │   │   │   │   ├── stddef.h + │   │   │   │   │   │   ├── __stddef_header_macro.h + │   │   │   │   │   │   ├── __stddef_max_align_t.h + │   │   │   │   │   │   ├── __stddef_null.h + │   │   │   │   │   │   ├── __stddef_nullptr_t.h + │   │   │   │   │   │   ├── __stddef_offsetof.h + │   │   │   │   │   │   ├── __stddef_ptrdiff_t.h + │   │   │   │   │   │   ├── __stddef_rsize_t.h + │   │   │   │   │   │   ├── __stddef_size_t.h + │   │   │   │   │   │   ├── __stddef_unreachable.h + │   │   │   │   │   │   ├── __stddef_wchar_t.h + │   │   │   │   │   │   ├── __stddef_wint_t.h + │   │   │   │   │   │   ├── stdint.h + │   │   │   │   │   │   ├── stdnoreturn.h + │   │   │   │   │   │   ├── tbmintrin.h + │   │   │   │   │   │   ├── tgmath.h + │   │   │   │   │   │   ├── tmmintrin.h + │   │   │   │   │   │   ├── tsxldtrkintrin.h + │   │   │   │   │   │   ├── uintrintrin.h + │   │   │   │   │   │   ├── unwind.h + │   │   │   │   │   │   ├── usermsrintrin.h + │   │   │   │   │   │   ├── vadefs.h + │   │   │   │   │   │   ├── vaesintrin.h + │   │   │   │   │   │   ├── varargs.h + │   │   │   │   │   │   ├── vecintrin.h + │   │   │   │   │   │   ├── velintrin_approx.h + │   │   │   │   │   │   ├── velintrin_gen.h + │   │   │   │   │   │   ├── velintrin.h + │   │   │   │   │   │   ├── vpclmulqdqintrin.h + │   │   │   │   │   │   ├── waitpkgintrin.h + │   │   │   │   │   │   ├── wasm_simd128.h + │   │   │   │   │   │   ├── wbnoinvdintrin.h + │   │   │   │   │   │   ├── __wmmintrin_aes.h + │   │   │   │   │   │   ├── wmmintrin.h + │   │   │   │   │   │   ├── __wmmintrin_pclmul.h + │   │   │   │   │   │   ├── x86gprintrin.h + │   │   │   │   │   │   ├── x86intrin.h + │   │   │   │   │   │   ├── xmmintrin.h + │   │   │   │   │   │   ├── xopintrin.h + │   │   │   │   │   │   ├── xray + │   │   │   │   │   │   │   ├── xray_interface.h + │   │   │   │   │   │   │   ├── xray_log_interface.h + │   │   │   │   │   │   │   └── xray_records.h + │   │   │   │   │   │   ├── xsavecintrin.h + │   │   │   │   │   │   ├── xsaveintrin.h + │   │   │   │   │   │   ├── xsaveoptintrin.h + │   │   │   │   │   │   ├── xsavesintrin.h + │   │   │   │   │   │   ├── xtestintrin.h + │   │   │   │   │   │   ├── yvals_core.h + │   │   │   │   │   │   └── zos_wrappers + │   │   │   │   │   │   └── builtins.h + │   │   │   │   │   ├── lib + │   │   │   │   │   │   └── linux + │   │   │   │   │   │   ├── clang_rt.crtbegin-x86_64.o + │   │   │   │   │   │   ├── clang_rt.crtend-x86_64.o + │   │   │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.asan-preinit-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.asan_static-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.asan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.asan-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.asan-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.builtins-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.cfi_diag-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.cfi-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.ctx_profile-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.dd-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.dfsan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.dfsan-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.dyndd-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.fuzzer_interceptors-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.fuzzer_no_main-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.fuzzer-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.gwp_asan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.hwasan-preinit-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.lsan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.memprof-preinit-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.memprof-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.memprof-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.memprof-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.msan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.msan-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.nsan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.nsan-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.profile-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.rtsan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.safestack-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.scudo_standalone_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.stats_client-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.stats-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.tsan-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.tsan-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.tsan-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a.syms + │   │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.so + │   │   │   │   │   │   ├── libclang_rt.xray-basic-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.xray-fdr-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.xray-profiling-x86_64.a + │   │   │   │   │   │   ├── libclang_rt.xray-x86_64.a + │   │   │   │   │   │   └── liborc_rt-x86_64.a + │   │   │   │   │   └── share + │   │   │   │   │   ├── asan_ignorelist.txt + │   │   │   │   │   ├── cfi_ignorelist.txt + │   │   │   │   │   ├── dfsan_abilist.txt + │   │   │   │   │   ├── hwasan_ignorelist.txt + │   │   │   │   │   └── msan_ignorelist.txt + │   │   │   │   ├── CoreFoundation + │   │   │   │   │   ├── CFArray.h + │   │   │   │   │   ├── CFAttributedString.h + │   │   │   │   │   ├── CFAttributedStringPriv.h + │   │   │   │   │   ├── CFAvailability.h + │   │   │   │   │   ├── CFBag.h + │   │   │   │   │   ├── CFBase.h + │   │   │   │   │   ├── CFBigNumber.h + │   │   │   │   │   ├── CFBinaryHeap.h + │   │   │   │   │   ├── CFBitVector.h + │   │   │   │   │   ├── CFBundle_BinaryTypes.h + │   │   │   │   │   ├── CFBundle.h + │   │   │   │   │   ├── CFBundlePriv.h + │   │   │   │   │   ├── CFBurstTrie.h + │   │   │   │   │   ├── CFByteOrder.h + │   │   │   │   │   ├── CFCalendar.h + │   │   │   │   │   ├── CFCalendarPriv.h + │   │   │   │   │   ├── CFCharacterSet.h + │   │   │   │   │   ├── CFCharacterSetPriv.h + │   │   │   │   │   ├── CFConstantKeys.h + │   │   │   │   │   ├── CFData.h + │   │   │   │   │   ├── CFDateComponents.h + │   │   │   │   │   ├── CFDateFormatter.h + │   │   │   │   │   ├── CFDateFormatter_Private.h + │   │   │   │   │   ├── CFDate.h + │   │   │   │   │   ├── CFDateIntervalFormatter.h + │   │   │   │   │   ├── CFDateInterval.h + │   │   │   │   │   ├── CFDictionary.h + │   │   │   │   │   ├── CFError.h + │   │   │   │   │   ├── CFError_Private.h + │   │   │   │   │   ├── CFKnownLocations.h + │   │   │   │   │   ├── CFListFormatter.h + │   │   │   │   │   ├── CFLocale.h + │   │   │   │   │   ├── CFLocale_Private.h + │   │   │   │   │   ├── CFLocking.h + │   │   │   │   │   ├── CFLogUtilities.h + │   │   │   │   │   ├── CFMachPort.h + │   │   │   │   │   ├── CFMessagePort.h + │   │   │   │   │   ├── CFNotificationCenter.h + │   │   │   │   │   ├── CFNumberFormatter.h + │   │   │   │   │   ├── CFNumber.h + │   │   │   │   │   ├── CFNumber_Private.h + │   │   │   │   │   ├── CFOverflow.h + │   │   │   │   │   ├── CFPlugInCOM.h + │   │   │   │   │   ├── CFPlugIn.h + │   │   │   │   │   ├── CFPreferences.h + │   │   │   │   │   ├── CFPriv.h + │   │   │   │   │   ├── CFPropertyList.h + │   │   │   │   │   ├── CFPropertyList_Private.h + │   │   │   │   │   ├── CFRegularExpression.h + │   │   │   │   │   ├── CFRelativeDateTimeFormatter.h + │   │   │   │   │   ├── CFRunArray.h + │   │   │   │   │   ├── CFRunLoop.h + │   │   │   │   │   ├── CFRuntime.h + │   │   │   │   │   ├── CFSet.h + │   │   │   │   │   ├── CFSocket.h + │   │   │   │   │   ├── CFStorage.h + │   │   │   │   │   ├── CFStreamAbstract.h + │   │   │   │   │   ├── CFStream.h + │   │   │   │   │   ├── CFStreamPriv.h + │   │   │   │   │   ├── CFStringDefaultEncoding.h + │   │   │   │   │   ├── CFStringEncodingConverterExt.h + │   │   │   │   │   ├── CFStringEncodingConverter.h + │   │   │   │   │   ├── CFStringEncodingConverterPriv.h + │   │   │   │   │   ├── CFStringEncodingDatabase.h + │   │   │   │   │   ├── CFStringEncodingExt.h + │   │   │   │   │   ├── CFString.h + │   │   │   │   │   ├── CFString_Private.h + │   │   │   │   │   ├── CFTargetConditionals.h + │   │   │   │   │   ├── CFTimeZone.h + │   │   │   │   │   ├── CFTree.h + │   │   │   │   │   ├── CFUniChar.h + │   │   │   │   │   ├── CFUnicodeDecomposition.h + │   │   │   │   │   ├── CFUnicodePrecomposition.h + │   │   │   │   │   ├── CFURLAccess.h + │   │   │   │   │   ├── CFURLComponents.h + │   │   │   │   │   ├── CFURL.h + │   │   │   │   │   ├── CFURLPriv.h + │   │   │   │   │   ├── CFUserNotification.h + │   │   │   │   │   ├── CFUtilities.h + │   │   │   │   │   ├── CFUUID.h + │   │   │   │   │   ├── CoreFoundation.h + │   │   │   │   │   ├── ForFoundationOnly.h + │   │   │   │   │   ├── ForSwiftFoundationOnly.h + │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   └── static-module.map + │   │   │   │   ├── dispatch + │   │   │   │   │   ├── base.h + │   │   │   │   │   ├── block.h + │   │   │   │   │   ├── data.h + │   │   │   │   │   ├── dispatch.h + │   │   │   │   │   ├── group.h + │   │   │   │   │   ├── introspection.h + │   │   │   │   │   ├── io.h + │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   ├── object.h + │   │   │   │   │   ├── once.h + │   │   │   │   │   ├── queue.h + │   │   │   │   │   ├── semaphore.h + │   │   │   │   │   ├── source.h + │   │   │   │   │   └── time.h + │   │   │   │   ├── _FoundationCShims + │   │   │   │   │   ├── bplist_shims.h + │   │   │   │   │   ├── CFUniCharBitmapData.h + │   │   │   │   │   ├── CFUniCharBitmapData.inc.h + │   │   │   │   │   ├── _CShimsMacros.h + │   │   │   │   │   ├── _CShimsTargetConditionals.h + │   │   │   │   │   ├── _CStdlib.h + │   │   │   │   │   ├── filemanager_shims.h + │   │   │   │   │   ├── _FoundationCShims.h + │   │   │   │   │   ├── io_shims.h + │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   ├── platform_shims.h + │   │   │   │   │   ├── string_shims.h + │   │   │   │   │   └── uuid.h + │   │   │   │   ├── _foundation_unicode + │   │   │   │   │   ├── alphaindex.h + │   │   │   │   │   ├── appendable.h + │   │   │   │   │   ├── basictz.h + │   │   │   │   │   ├── brkiter.h + │   │   │   │   │   ├── bytestream.h + │   │   │   │   │   ├── bytestriebuilder.h + │   │   │   │   │   ├── bytestrie.h + │   │   │   │   │   ├── calendar.h + │   │   │   │   │   ├── caniter.h + │   │   │   │   │   ├── casemap.h + │   │   │   │   │   ├── char16ptr.h + │   │   │   │   │   ├── chariter.h + │   │   │   │   │   ├── choicfmt.h + │   │   │   │   │   ├── coleitr.h + │   │   │   │   │   ├── coll.h + │   │   │   │   │   ├── compactdecimalformat.h + │   │   │   │   │   ├── curramt.h + │   │   │   │   │   ├── currpinf.h + │   │   │   │   │   ├── currunit.h + │   │   │   │   │   ├── datefmt.h + │   │   │   │   │   ├── dbbi.h + │   │   │   │   │   ├── dcfmtsym.h + │   │   │   │   │   ├── decimfmt.h + │   │   │   │   │   ├── displayoptions.h + │   │   │   │   │   ├── docmain.h + │   │   │   │   │   ├── dtfmtsym.h + │   │   │   │   │   ├── dtintrv.h + │   │   │   │   │   ├── dtitvfmt.h + │   │   │   │   │   ├── dtitvinf.h + │   │   │   │   │   ├── dtptngen.h + │   │   │   │   │   ├── dtrule.h + │   │   │   │   │   ├── edits.h + │   │   │   │   │   ├── enumset.h + │   │   │   │   │   ├── errorcode.h + │   │   │   │   │   ├── fieldpos.h + │   │   │   │   │   ├── filteredbrk.h + │   │   │   │   │   ├── fmtable.h + │   │   │   │   │   ├── format.h + │   │   │   │   │   ├── formattednumber.h + │   │   │   │   │   ├── formattedvalue.h + │   │   │   │   │   ├── fpositer.h + │   │   │   │   │   ├── gender.h + │   │   │   │   │   ├── gregocal.h + │   │   │   │   │   ├── icudataver.h + │   │   │   │   │   ├── icuplug.h + │   │   │   │   │   ├── idna.h + │   │   │   │   │   ├── listformatter.h + │   │   │   │   │   ├── localebuilder.h + │   │   │   │   │   ├── localematcher.h + │   │   │   │   │   ├── localpointer.h + │   │   │   │   │   ├── locdspnm.h + │   │   │   │   │   ├── locid.h + │   │   │   │   │   ├── measfmt.h + │   │   │   │   │   ├── measunit.h + │   │   │   │   │   ├── measure.h + │   │   │   │   │   ├── messagepattern.h + │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   ├── msgfmt.h + │   │   │   │   │   ├── normalizer2.h + │   │   │   │   │   ├── normlzr.h + │   │   │   │   │   ├── nounit.h + │   │   │   │   │   ├── numberformatter.h + │   │   │   │   │   ├── numberrangeformatter.h + │   │   │   │   │   ├── numfmt.h + │   │   │   │   │   ├── numsys.h + │   │   │   │   │   ├── parseerr.h + │   │   │   │   │   ├── parsepos.h + │   │   │   │   │   ├── platform.h + │   │   │   │   │   ├── plurfmt.h + │   │   │   │   │   ├── plurrule.h + │   │   │   │   │   ├── ptypes.h + │   │   │   │   │   ├── putil.h + │   │   │   │   │   ├── rbbi.h + │   │   │   │   │   ├── rbnf.h + │   │   │   │   │   ├── rbtz.h + │   │   │   │   │   ├── regex.h + │   │   │   │   │   ├── region.h + │   │   │   │   │   ├── reldatefmt.h + │   │   │   │   │   ├── rep.h + │   │   │   │   │   ├── resbund.h + │   │   │   │   │   ├── schriter.h + │   │   │   │   │   ├── scientificnumberformatter.h + │   │   │   │   │   ├── search.h + │   │   │   │   │   ├── selfmt.h + │   │   │   │   │   ├── simpleformatter.h + │   │   │   │   │   ├── simplenumberformatter.h + │   │   │   │   │   ├── simpletz.h + │   │   │   │   │   ├── smpdtfmt.h + │   │   │   │   │   ├── sortkey.h + │   │   │   │   │   ├── std_string.h + │   │   │   │   │   ├── strenum.h + │   │   │   │   │   ├── stringoptions.h + │   │   │   │   │   ├── stringpiece.h + │   │   │   │   │   ├── stringtriebuilder.h + │   │   │   │   │   ├── stsearch.h + │   │   │   │   │   ├── symtable.h + │   │   │   │   │   ├── tblcoll.h + │   │   │   │   │   ├── timezone.h + │   │   │   │   │   ├── tmunit.h + │   │   │   │   │   ├── tmutamt.h + │   │   │   │   │   ├── tmutfmt.h + │   │   │   │   │   ├── translit.h + │   │   │   │   │   ├── tzfmt.h + │   │   │   │   │   ├── tznames.h + │   │   │   │   │   ├── tzrule.h + │   │   │   │   │   ├── tztrans.h + │   │   │   │   │   ├── ualoc.h + │   │   │   │   │   ├── uameasureformat.h + │   │   │   │   │   ├── uameasureunit.h + │   │   │   │   │   ├── uatimeunitformat.h + │   │   │   │   │   ├── ubidi.h + │   │   │   │   │   ├── ubiditransform.h + │   │   │   │   │   ├── ubrk.h + │   │   │   │   │   ├── ucal.h + │   │   │   │   │   ├── ucasemap.h + │   │   │   │   │   ├── ucat.h + │   │   │   │   │   ├── uchar.h + │   │   │   │   │   ├── ucharstriebuilder.h + │   │   │   │   │   ├── ucharstrie.h + │   │   │   │   │   ├── uchriter.h + │   │   │   │   │   ├── uclean.h + │   │   │   │   │   ├── ucnv_cb.h + │   │   │   │   │   ├── ucnv_err.h + │   │   │   │   │   ├── ucnv.h + │   │   │   │   │   ├── ucnvsel.h + │   │   │   │   │   ├── ucoleitr.h + │   │   │   │   │   ├── ucol.h + │   │   │   │   │   ├── uconfig.h + │   │   │   │   │   ├── ucpmap.h + │   │   │   │   │   ├── ucptrie.h + │   │   │   │   │   ├── ucsdet.h + │   │   │   │   │   ├── ucurr.h + │   │   │   │   │   ├── udata.h + │   │   │   │   │   ├── udateintervalformat.h + │   │   │   │   │   ├── udat.h + │   │   │   │   │   ├── udatintv.h + │   │   │   │   │   ├── udatpg.h + │   │   │   │   │   ├── udisplaycontext.h + │   │   │   │   │   ├── udisplayoptions.h + │   │   │   │   │   ├── uenum.h + │   │   │   │   │   ├── ufieldpositer.h + │   │   │   │   │   ├── uformattable.h + │   │   │   │   │   ├── uformattednumber.h + │   │   │   │   │   ├── uformattedvalue.h + │   │   │   │   │   ├── ugender.h + │   │   │   │   │   ├── uidna.h + │   │   │   │   │   ├── uiter.h + │   │   │   │   │   ├── uldnames.h + │   │   │   │   │   ├── ulistformatter.h + │   │   │   │   │   ├── ulocale.h + │   │   │   │   │   ├── ulocbuilder.h + │   │   │   │   │   ├── ulocdata.h + │   │   │   │   │   ├── uloc.h + │   │   │   │   │   ├── umachine.h + │   │   │   │   │   ├── umisc.h + │   │   │   │   │   ├── umsg.h + │   │   │   │   │   ├── umutablecptrie.h + │   │   │   │   │   ├── unifilt.h + │   │   │   │   │   ├── unifunct.h + │   │   │   │   │   ├── unimatch.h + │   │   │   │   │   ├── unirepl.h + │   │   │   │   │   ├── uniset.h + │   │   │   │   │   ├── unistr.h + │   │   │   │   │   ├── unorm2.h + │   │   │   │   │   ├── unorm.h + │   │   │   │   │   ├── unumberformatter.h + │   │   │   │   │   ├── unumberoptions.h + │   │   │   │   │   ├── unumberrangeformatter.h + │   │   │   │   │   ├── unum.h + │   │   │   │   │   ├── unumsys.h + │   │   │   │   │   ├── uobject.h + │   │   │   │   │   ├── uplrule.h + │   │   │   │   │   ├── upluralrules.h + │   │   │   │   │   ├── urbtok.h + │   │   │   │   │   ├── uregex.h + │   │   │   │   │   ├── uregion.h + │   │   │   │   │   ├── ureldatefmt.h + │   │   │   │   │   ├── urename.h + │   │   │   │   │   ├── urep.h + │   │   │   │   │   ├── ures.h + │   │   │   │   │   ├── uscript.h + │   │   │   │   │   ├── usearch.h + │   │   │   │   │   ├── uset.h + │   │   │   │   │   ├── usetiter.h + │   │   │   │   │   ├── ushape.h + │   │   │   │   │   ├── usimplenumberformatter.h + │   │   │   │   │   ├── uspoof.h + │   │   │   │   │   ├── usprep.h + │   │   │   │   │   ├── ustdio.h + │   │   │   │   │   ├── ustream.h + │   │   │   │   │   ├── ustring.h + │   │   │   │   │   ├── ustringtrie.h + │   │   │   │   │   ├── utext.h + │   │   │   │   │   ├── utf16.h + │   │   │   │   │   ├── utf32.h + │   │   │   │   │   ├── utf8.h + │   │   │   │   │   ├── utf.h + │   │   │   │   │   ├── utf_old.h + │   │   │   │   │   ├── utmscale.h + │   │   │   │   │   ├── utrace.h + │   │   │   │   │   ├── utrans.h + │   │   │   │   │   ├── utypes.h + │   │   │   │   │   ├── uvernum.h + │   │   │   │   │   ├── uversion.h + │   │   │   │   │   └── vtzone.h + │   │   │   │   ├── FrameworkABIBaseline + │   │   │   │   │   ├── _Concurrency + │   │   │   │   │   │   └── ABI + │   │   │   │   │   │   └── macos.json + │   │   │   │   │   ├── nil.json + │   │   │   │   │   ├── README + │   │   │   │   │   └── Swift + │   │   │   │   │   ├── ABI + │   │   │   │   │   │   └── macos.json + │   │   │   │   │   └── API + │   │   │   │   │   └── macos.json + │   │   │   │   ├── os + │   │   │   │   │   ├── generic_base.h + │   │   │   │   │   ├── generic_unix_base.h + │   │   │   │   │   ├── generic_win_base.h + │   │   │   │   │   └── object.h + │   │   │   │   └── shims + │   │   │   │   ├── AssertionReporting.h + │   │   │   │   ├── CoreFoundationShims.h + │   │   │   │   ├── EmbeddedShims.h + │   │   │   │   ├── FoundationShims.h + │   │   │   │   ├── GlobalObjects.h + │   │   │   │   ├── HeapObject.h + │   │   │   │   ├── KeyPath.h + │   │   │   │   ├── LibcOverlayShims.h + │   │   │   │   ├── LibcShims.h + │   │   │   │   ├── MetadataSections.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── Random.h + │   │   │   │   ├── RefCount.h + │   │   │   │   ├── Reflection.h + │   │   │   │   ├── RuntimeShims.h + │   │   │   │   ├── RuntimeStubs.h + │   │   │   │   ├── _SwiftConcurrency.h + │   │   │   │   ├── _SwiftDistributed.h + │   │   │   │   ├── SwiftStdbool.h + │   │   │   │   ├── SwiftStddef.h + │   │   │   │   ├── SwiftStdint.h + │   │   │   │   ├── _SynchronizationShims.h + │   │   │   │   ├── System.h + │   │   │   │   ├── Target.h + │   │   │   │   ├── ThreadLocalStorage.h + │   │   │   │   ├── UnicodeData.h + │   │   │   │   └── Visibility.h + │   │   │   └── swift_static + │   │   │   ├── android + │   │   │   │   ├── Android.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── armv7 + │   │   │   │   │   ├── android.modulemap + │   │   │   │   │   ├── Dispatch.swiftdoc + │   │   │   │   │   ├── Dispatch.swiftmodule + │   │   │   │   │   ├── SwiftAndroidNDK.h + │   │   │   │   │   ├── SwiftBionic.h + │   │   │   │   │   └── swiftrt.o + │   │   │   │   ├── _Builtin_float.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── _Concurrency.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── CxxStdlib.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── Cxx.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── _Differentiation.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── Distributed.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── _FoundationCollections.swiftmodule + │   │   │   │   │   ├── armv7.swiftdoc + │   │   │   │   │   └── armv7.swiftmodule + │   │   │   │   ├── FoundationEssentials.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── FoundationInternationalization.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── FoundationNetworking.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── Foundation.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── FoundationXML.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── libBlocksRuntime.a + │   │   │   │   ├── lib_CFURLSessionInterface.a + │   │   │   │   ├── lib_CFXMLInterface.a + │   │   │   │   ├── libCoreFoundation.a + │   │   │   │   ├── libcxxshim.h + │   │   │   │   ├── libcxxshim.modulemap + │   │   │   │   ├── libcxxstdlibshim.h + │   │   │   │   ├── libdispatch.a + │   │   │   │   ├── libDispatchStubs.a + │   │   │   │   ├── libFoundation.a + │   │   │   │   ├── lib_FoundationCollections.a + │   │   │   │   ├── lib_FoundationCShims.a + │   │   │   │   ├── libFoundationEssentials.a + │   │   │   │   ├── lib_FoundationICU.a + │   │   │   │   ├── libFoundationInternationalization.a + │   │   │   │   ├── libFoundationNetworking.a + │   │   │   │   ├── libFoundationXML.a + │   │   │   │   ├── libswiftAndroid.a + │   │   │   │   ├── libswift_Builtin_float.a + │   │   │   │   ├── libswift_Concurrency.a + │   │   │   │   ├── libswiftCore.a + │   │   │   │   ├── libswift_Differentiation.a + │   │   │   │   ├── libswiftDispatch.a + │   │   │   │   ├── libswiftDistributed.a + │   │   │   │   ├── libswift_math.a + │   │   │   │   ├── libswiftObservation.a + │   │   │   │   ├── libswiftRegexBuilder.a + │   │   │   │   ├── libswift_RegexParser.a + │   │   │   │   ├── libswift_StringProcessing.a + │   │   │   │   ├── libswiftSwiftOnoneSupport.a + │   │   │   │   ├── libswiftSynchronization.a + │   │   │   │   ├── libswift_Volatile.a + │   │   │   │   ├── _math.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── Observation.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── RegexBuilder.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── _RegexParser.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── static-stdlib-args.lnk + │   │   │   │   ├── _StringProcessing.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── SwiftOnoneSupport.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── Swift.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   ├── Synchronization.swiftmodule + │   │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   │   └── _Volatile.swiftmodule + │   │   │   │   ├── armv7-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── armv7-unknown-linux-android.swiftdoc + │   │   │   │   ├── armv7-unknown-linux-android.swiftinterface + │   │   │   │   └── armv7-unknown-linux-android.swiftmodule + │   │   │   ├── Block + │   │   │   │   └── Block.h + │   │   │   ├── clang + │   │   │   │   ├── bin + │   │   │   │   │   └── hwasan_symbolize + │   │   │   │   ├── include + │   │   │   │   │   ├── adcintrin.h + │   │   │   │   │   ├── adxintrin.h + │   │   │   │   │   ├── altivec.h + │   │   │   │   │   ├── ammintrin.h + │   │   │   │   │   ├── amxcomplexintrin.h + │   │   │   │   │   ├── amxfp16intrin.h + │   │   │   │   │   ├── amxintrin.h + │   │   │   │   │   ├── arm64intr.h + │   │   │   │   │   ├── arm_acle.h + │   │   │   │   │   ├── arm_bf16.h + │   │   │   │   │   ├── arm_cde.h + │   │   │   │   │   ├── arm_cmse.h + │   │   │   │   │   ├── arm_fp16.h + │   │   │   │   │   ├── armintr.h + │   │   │   │   │   ├── arm_mve.h + │   │   │   │   │   ├── arm_neon.h + │   │   │   │   │   ├── arm_neon_sve_bridge.h + │   │   │   │   │   ├── arm_sme.h + │   │   │   │   │   ├── arm_sve.h + │   │   │   │   │   ├── arm_vector_types.h + │   │   │   │   │   ├── avx2intrin.h + │   │   │   │   │   ├── avx512bf16intrin.h + │   │   │   │   │   ├── avx512bitalgintrin.h + │   │   │   │   │   ├── avx512bwintrin.h + │   │   │   │   │   ├── avx512cdintrin.h + │   │   │   │   │   ├── avx512dqintrin.h + │   │   │   │   │   ├── avx512fintrin.h + │   │   │   │   │   ├── avx512fp16intrin.h + │   │   │   │   │   ├── avx512ifmaintrin.h + │   │   │   │   │   ├── avx512ifmavlintrin.h + │   │   │   │   │   ├── avx512vbmi2intrin.h + │   │   │   │   │   ├── avx512vbmiintrin.h + │   │   │   │   │   ├── avx512vbmivlintrin.h + │   │   │   │   │   ├── avx512vlbf16intrin.h + │   │   │   │   │   ├── avx512vlbitalgintrin.h + │   │   │   │   │   ├── avx512vlbwintrin.h + │   │   │   │   │   ├── avx512vlcdintrin.h + │   │   │   │   │   ├── avx512vldqintrin.h + │   │   │   │   │   ├── avx512vlfp16intrin.h + │   │   │   │   │   ├── avx512vlintrin.h + │   │   │   │   │   ├── avx512vlvbmi2intrin.h + │   │   │   │   │   ├── avx512vlvnniintrin.h + │   │   │   │   │   ├── avx512vlvp2intersectintrin.h + │   │   │   │   │   ├── avx512vnniintrin.h + │   │   │   │   │   ├── avx512vp2intersectintrin.h + │   │   │   │   │   ├── avx512vpopcntdqintrin.h + │   │   │   │   │   ├── avx512vpopcntdqvlintrin.h + │   │   │   │   │   ├── avxifmaintrin.h + │   │   │   │   │   ├── avxintrin.h + │   │   │   │   │   ├── avxneconvertintrin.h + │   │   │   │   │   ├── avxvnniint16intrin.h + │   │   │   │   │   ├── avxvnniint8intrin.h + │   │   │   │   │   ├── avxvnniintrin.h + │   │   │   │   │   ├── bmi2intrin.h + │   │   │   │   │   ├── bmiintrin.h + │   │   │   │   │   ├── builtins.h + │   │   │   │   │   ├── cet.h + │   │   │   │   │   ├── cetintrin.h + │   │   │   │   │   ├── __clang_cuda_builtin_vars.h + │   │   │   │   │   ├── __clang_cuda_cmath.h + │   │   │   │   │   ├── __clang_cuda_complex_builtins.h + │   │   │   │   │   ├── __clang_cuda_device_functions.h + │   │   │   │   │   ├── __clang_cuda_intrinsics.h + │   │   │   │   │   ├── __clang_cuda_libdevice_declares.h + │   │   │   │   │   ├── __clang_cuda_math_forward_declares.h + │   │   │   │   │   ├── __clang_cuda_math.h + │   │   │   │   │   ├── __clang_cuda_runtime_wrapper.h + │   │   │   │   │   ├── __clang_cuda_texture_intrinsics.h + │   │   │   │   │   ├── __clang_hip_cmath.h + │   │   │   │   │   ├── __clang_hip_libdevice_declares.h + │   │   │   │   │   ├── __clang_hip_math.h + │   │   │   │   │   ├── __clang_hip_runtime_wrapper.h + │   │   │   │   │   ├── __clang_hip_stdlib.h + │   │   │   │   │   ├── cldemoteintrin.h + │   │   │   │   │   ├── clflushoptintrin.h + │   │   │   │   │   ├── clwbintrin.h + │   │   │   │   │   ├── clzerointrin.h + │   │   │   │   │   ├── cmpccxaddintrin.h + │   │   │   │   │   ├── cpuid.h + │   │   │   │   │   ├── crc32intrin.h + │   │   │   │   │   ├── cuda_wrappers + │   │   │   │   │   │   ├── algorithm + │   │   │   │   │   │   ├── bits + │   │   │   │   │   │   │   ├── basic_string.h + │   │   │   │   │   │   │   ├── basic_string.tcc + │   │   │   │   │   │   │   └── shared_ptr_base.h + │   │   │   │   │   │   ├── cmath + │   │   │   │   │   │   ├── complex + │   │   │   │   │   │   └── new + │   │   │   │   │   ├── emmintrin.h + │   │   │   │   │   ├── enqcmdintrin.h + │   │   │   │   │   ├── f16cintrin.h + │   │   │   │   │   ├── float.h + │   │   │   │   │   ├── fma4intrin.h + │   │   │   │   │   ├── fmaintrin.h + │   │   │   │   │   ├── fuzzer + │   │   │   │   │   │   └── FuzzedDataProvider.h + │   │   │   │   │   ├── fxsrintrin.h + │   │   │   │   │   ├── gfniintrin.h + │   │   │   │   │   ├── hexagon_circ_brev_intrinsics.h + │   │   │   │   │   ├── hexagon_protos.h + │   │   │   │   │   ├── hexagon_types.h + │   │   │   │   │   ├── hresetintrin.h + │   │   │   │   │   ├── htmintrin.h + │   │   │   │   │   ├── htmxlintrin.h + │   │   │   │   │   ├── hvx_hexagon_protos.h + │   │   │   │   │   ├── ia32intrin.h + │   │   │   │   │   ├── immintrin.h + │   │   │   │   │   ├── intrin0.h + │   │   │   │   │   ├── intrin.h + │   │   │   │   │   ├── inttypes.h + │   │   │   │   │   ├── invpcidintrin.h + │   │   │   │   │   ├── iso646.h + │   │   │   │   │   ├── keylockerintrin.h + │   │   │   │   │   ├── larchintrin.h + │   │   │   │   │   ├── lasxintrin.h + │   │   │   │   │   ├── limits.h + │   │   │   │   │   ├── llvm_libc_wrappers + │   │   │   │   │   │   ├── assert.h + │   │   │   │   │   │   ├── ctype.h + │   │   │   │   │   │   ├── inttypes.h + │   │   │   │   │   │   ├── stdio.h + │   │   │   │   │   │   ├── stdlib.h + │   │   │   │   │   │   ├── string.h + │   │   │   │   │   │   └── time.h + │   │   │   │   │   ├── lsxintrin.h + │   │   │   │   │   ├── lwpintrin.h + │   │   │   │   │   ├── lzcntintrin.h + │   │   │   │   │   ├── mm3dnow.h + │   │   │   │   │   ├── mmintrin.h + │   │   │   │   │   ├── mm_malloc.h + │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   ├── movdirintrin.h + │   │   │   │   │   ├── msa.h + │   │   │   │   │   ├── mwaitxintrin.h + │   │   │   │   │   ├── nmmintrin.h + │   │   │   │   │   ├── opencl-c-base.h + │   │   │   │   │   ├── opencl-c.h + │   │   │   │   │   ├── openmp_wrappers + │   │   │   │   │   │   ├── __clang_openmp_device_functions.h + │   │   │   │   │   │   ├── cmath + │   │   │   │   │   │   ├── complex + │   │   │   │   │   │   ├── complex_cmath.h + │   │   │   │   │   │   ├── complex.h + │   │   │   │   │   │   ├── math.h + │   │   │   │   │   │   └── new + │   │   │   │   │   ├── orc + │   │   │   │   │   │   └── c_api.h + │   │   │   │   │   ├── pconfigintrin.h + │   │   │   │   │   ├── pkuintrin.h + │   │   │   │   │   ├── pmmintrin.h + │   │   │   │   │   ├── popcntintrin.h + │   │   │   │   │   ├── ppc_wrappers + │   │   │   │   │   │   ├── bmi2intrin.h + │   │   │   │   │   │   ├── bmiintrin.h + │   │   │   │   │   │   ├── emmintrin.h + │   │   │   │   │   │   ├── immintrin.h + │   │   │   │   │   │   ├── mmintrin.h + │   │   │   │   │   │   ├── mm_malloc.h + │   │   │   │   │   │   ├── nmmintrin.h + │   │   │   │   │   │   ├── pmmintrin.h + │   │   │   │   │   │   ├── smmintrin.h + │   │   │   │   │   │   ├── tmmintrin.h + │   │   │   │   │   │   ├── x86gprintrin.h + │   │   │   │   │   │   ├── x86intrin.h + │   │   │   │   │   │   └── xmmintrin.h + │   │   │   │   │   ├── prfchiintrin.h + │   │   │   │   │   ├── prfchwintrin.h + │   │   │   │   │   ├── profile + │   │   │   │   │   │   ├── InstrProfData.inc + │   │   │   │   │   │   └── instr_prof_interface.h + │   │   │   │   │   ├── ptrauth.h + │   │   │   │   │   ├── ptwriteintrin.h + │   │   │   │   │   ├── raointintrin.h + │   │   │   │   │   ├── rdpruintrin.h + │   │   │   │   │   ├── rdseedintrin.h + │   │   │   │   │   ├── riscv_bitmanip.h + │   │   │   │   │   ├── riscv_crypto.h + │   │   │   │   │   ├── riscv_ntlh.h + │   │   │   │   │   ├── riscv_vector.h + │   │   │   │   │   ├── rtmintrin.h + │   │   │   │   │   ├── s390intrin.h + │   │   │   │   │   ├── sanitizer + │   │   │   │   │   │   ├── allocator_interface.h + │   │   │   │   │   │   ├── asan_interface.h + │   │   │   │   │   │   ├── common_interface_defs.h + │   │   │   │   │   │   ├── coverage_interface.h + │   │   │   │   │   │   ├── dfsan_interface.h + │   │   │   │   │   │   ├── hwasan_interface.h + │   │   │   │   │   │   ├── linux_syscall_hooks.h + │   │   │   │   │   │   ├── lsan_interface.h + │   │   │   │   │   │   ├── memprof_interface.h + │   │   │   │   │   │   ├── msan_interface.h + │   │   │   │   │   │   ├── netbsd_syscall_hooks.h + │   │   │   │   │   │   ├── scudo_interface.h + │   │   │   │   │   │   ├── tsan_interface_atomic.h + │   │   │   │   │   │   ├── tsan_interface.h + │   │   │   │   │   │   └── ubsan_interface.h + │   │   │   │   │   ├── serializeintrin.h + │   │   │   │   │   ├── sgxintrin.h + │   │   │   │   │   ├── sha512intrin.h + │   │   │   │   │   ├── shaintrin.h + │   │   │   │   │   ├── sifive_vector.h + │   │   │   │   │   ├── sm3intrin.h + │   │   │   │   │   ├── sm4intrin.h + │   │   │   │   │   ├── smmintrin.h + │   │   │   │   │   ├── stdalign.h + │   │   │   │   │   ├── __stdarg___gnuc_va_list.h + │   │   │   │   │   ├── stdarg.h + │   │   │   │   │   ├── __stdarg_header_macro.h + │   │   │   │   │   ├── __stdarg_va_arg.h + │   │   │   │   │   ├── __stdarg___va_copy.h + │   │   │   │   │   ├── __stdarg_va_copy.h + │   │   │   │   │   ├── __stdarg_va_list.h + │   │   │   │   │   ├── stdatomic.h + │   │   │   │   │   ├── stdbool.h + │   │   │   │   │   ├── stdckdint.h + │   │   │   │   │   ├── stddef.h + │   │   │   │   │   ├── __stddef_header_macro.h + │   │   │   │   │   ├── __stddef_max_align_t.h + │   │   │   │   │   ├── __stddef_null.h + │   │   │   │   │   ├── __stddef_nullptr_t.h + │   │   │   │   │   ├── __stddef_offsetof.h + │   │   │   │   │   ├── __stddef_ptrdiff_t.h + │   │   │   │   │   ├── __stddef_rsize_t.h + │   │   │   │   │   ├── __stddef_size_t.h + │   │   │   │   │   ├── __stddef_unreachable.h + │   │   │   │   │   ├── __stddef_wchar_t.h + │   │   │   │   │   ├── __stddef_wint_t.h + │   │   │   │   │   ├── stdint.h + │   │   │   │   │   ├── stdnoreturn.h + │   │   │   │   │   ├── tbmintrin.h + │   │   │   │   │   ├── tgmath.h + │   │   │   │   │   ├── tmmintrin.h + │   │   │   │   │   ├── tsxldtrkintrin.h + │   │   │   │   │   ├── uintrintrin.h + │   │   │   │   │   ├── unwind.h + │   │   │   │   │   ├── usermsrintrin.h + │   │   │   │   │   ├── vadefs.h + │   │   │   │   │   ├── vaesintrin.h + │   │   │   │   │   ├── varargs.h + │   │   │   │   │   ├── vecintrin.h + │   │   │   │   │   ├── velintrin_approx.h + │   │   │   │   │   ├── velintrin_gen.h + │   │   │   │   │   ├── velintrin.h + │   │   │   │   │   ├── vpclmulqdqintrin.h + │   │   │   │   │   ├── waitpkgintrin.h + │   │   │   │   │   ├── wasm_simd128.h + │   │   │   │   │   ├── wbnoinvdintrin.h + │   │   │   │   │   ├── __wmmintrin_aes.h + │   │   │   │   │   ├── wmmintrin.h + │   │   │   │   │   ├── __wmmintrin_pclmul.h + │   │   │   │   │   ├── x86gprintrin.h + │   │   │   │   │   ├── x86intrin.h + │   │   │   │   │   ├── xmmintrin.h + │   │   │   │   │   ├── xopintrin.h + │   │   │   │   │   ├── xray + │   │   │   │   │   │   ├── xray_interface.h + │   │   │   │   │   │   ├── xray_log_interface.h + │   │   │   │   │   │   └── xray_records.h + │   │   │   │   │   ├── xsavecintrin.h + │   │   │   │   │   ├── xsaveintrin.h + │   │   │   │   │   ├── xsaveoptintrin.h + │   │   │   │   │   ├── xsavesintrin.h + │   │   │   │   │   ├── xtestintrin.h + │   │   │   │   │   ├── yvals_core.h + │   │   │   │   │   └── zos_wrappers + │   │   │   │   │   └── builtins.h + │   │   │   │   ├── lib + │   │   │   │   │   └── linux + │   │   │   │   │   ├── clang_rt.crtbegin-x86_64.o + │   │   │   │   │   ├── clang_rt.crtend-x86_64.o + │   │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.asan-preinit-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan_static-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.asan-x86_64.so + │   │   │   │   │   ├── libclang_rt.builtins-x86_64.a + │   │   │   │   │   ├── libclang_rt.cfi_diag-x86_64.a + │   │   │   │   │   ├── libclang_rt.cfi-x86_64.a + │   │   │   │   │   ├── libclang_rt.ctx_profile-x86_64.a + │   │   │   │   │   ├── libclang_rt.dd-x86_64.a + │   │   │   │   │   ├── libclang_rt.dfsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.dfsan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.dyndd-x86_64.so + │   │   │   │   │   ├── libclang_rt.fuzzer_interceptors-x86_64.a + │   │   │   │   │   ├── libclang_rt.fuzzer_no_main-x86_64.a + │   │   │   │   │   ├── libclang_rt.fuzzer-x86_64.a + │   │   │   │   │   ├── libclang_rt.gwp_asan-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.so + │   │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan-preinit-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.so + │   │   │   │   │   ├── libclang_rt.lsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.memprof-preinit-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.memprof-x86_64.so + │   │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.msan-x86_64.a + │   │   │   │   │   ├── libclang_rt.msan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.nsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.nsan-x86_64.so + │   │   │   │   │   ├── libclang_rt.profile-x86_64.a + │   │   │   │   │   ├── libclang_rt.rtsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.safestack-x86_64.a + │   │   │   │   │   ├── libclang_rt.scudo_standalone_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.a + │   │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.so + │   │   │   │   │   ├── libclang_rt.stats_client-x86_64.a + │   │   │   │   │   ├── libclang_rt.stats-x86_64.a + │   │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.tsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.tsan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.tsan-x86_64.so + │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a + │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.so + │   │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a + │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.so + │   │   │   │   │   ├── libclang_rt.xray-basic-x86_64.a + │   │   │   │   │   ├── libclang_rt.xray-fdr-x86_64.a + │   │   │   │   │   ├── libclang_rt.xray-profiling-x86_64.a + │   │   │   │   │   ├── libclang_rt.xray-x86_64.a + │   │   │   │   │   └── liborc_rt-x86_64.a + │   │   │   │   └── share + │   │   │   │   ├── asan_ignorelist.txt + │   │   │   │   ├── cfi_ignorelist.txt + │   │   │   │   ├── dfsan_abilist.txt + │   │   │   │   ├── hwasan_ignorelist.txt + │   │   │   │   └── msan_ignorelist.txt + │   │   │   ├── CoreFoundation + │   │   │   │   ├── CFArray.h + │   │   │   │   ├── CFAttributedString.h + │   │   │   │   ├── CFAttributedStringPriv.h + │   │   │   │   ├── CFAvailability.h + │   │   │   │   ├── CFBag.h + │   │   │   │   ├── CFBase.h + │   │   │   │   ├── CFBigNumber.h + │   │   │   │   ├── CFBinaryHeap.h + │   │   │   │   ├── CFBitVector.h + │   │   │   │   ├── CFBundle_BinaryTypes.h + │   │   │   │   ├── CFBundle.h + │   │   │   │   ├── CFBundlePriv.h + │   │   │   │   ├── CFBurstTrie.h + │   │   │   │   ├── CFByteOrder.h + │   │   │   │   ├── CFCalendar.h + │   │   │   │   ├── CFCalendarPriv.h + │   │   │   │   ├── CFCharacterSet.h + │   │   │   │   ├── CFCharacterSetPriv.h + │   │   │   │   ├── CFConstantKeys.h + │   │   │   │   ├── CFData.h + │   │   │   │   ├── CFDateComponents.h + │   │   │   │   ├── CFDateFormatter.h + │   │   │   │   ├── CFDateFormatter_Private.h + │   │   │   │   ├── CFDate.h + │   │   │   │   ├── CFDateIntervalFormatter.h + │   │   │   │   ├── CFDateInterval.h + │   │   │   │   ├── CFDictionary.h + │   │   │   │   ├── CFError.h + │   │   │   │   ├── CFError_Private.h + │   │   │   │   ├── CFKnownLocations.h + │   │   │   │   ├── CFListFormatter.h + │   │   │   │   ├── CFLocale.h + │   │   │   │   ├── CFLocale_Private.h + │   │   │   │   ├── CFLocking.h + │   │   │   │   ├── CFLogUtilities.h + │   │   │   │   ├── CFMachPort.h + │   │   │   │   ├── CFMessagePort.h + │   │   │   │   ├── CFNotificationCenter.h + │   │   │   │   ├── CFNumberFormatter.h + │   │   │   │   ├── CFNumber.h + │   │   │   │   ├── CFNumber_Private.h + │   │   │   │   ├── CFOverflow.h + │   │   │   │   ├── CFPlugInCOM.h + │   │   │   │   ├── CFPlugIn.h + │   │   │   │   ├── CFPreferences.h + │   │   │   │   ├── CFPriv.h + │   │   │   │   ├── CFPropertyList.h + │   │   │   │   ├── CFPropertyList_Private.h + │   │   │   │   ├── CFRegularExpression.h + │   │   │   │   ├── CFRelativeDateTimeFormatter.h + │   │   │   │   ├── CFRunArray.h + │   │   │   │   ├── CFRunLoop.h + │   │   │   │   ├── CFRuntime.h + │   │   │   │   ├── CFSet.h + │   │   │   │   ├── CFSocket.h + │   │   │   │   ├── CFStorage.h + │   │   │   │   ├── CFStreamAbstract.h + │   │   │   │   ├── CFStream.h + │   │   │   │   ├── CFStreamPriv.h + │   │   │   │   ├── CFStringDefaultEncoding.h + │   │   │   │   ├── CFStringEncodingConverterExt.h + │   │   │   │   ├── CFStringEncodingConverter.h + │   │   │   │   ├── CFStringEncodingConverterPriv.h + │   │   │   │   ├── CFStringEncodingDatabase.h + │   │   │   │   ├── CFStringEncodingExt.h + │   │   │   │   ├── CFString.h + │   │   │   │   ├── CFString_Private.h + │   │   │   │   ├── CFTargetConditionals.h + │   │   │   │   ├── CFTimeZone.h + │   │   │   │   ├── CFTree.h + │   │   │   │   ├── CFUniChar.h + │   │   │   │   ├── CFUnicodeDecomposition.h + │   │   │   │   ├── CFUnicodePrecomposition.h + │   │   │   │   ├── CFURLAccess.h + │   │   │   │   ├── CFURLComponents.h + │   │   │   │   ├── CFURL.h + │   │   │   │   ├── CFURLPriv.h + │   │   │   │   ├── CFUserNotification.h + │   │   │   │   ├── CFUtilities.h + │   │   │   │   ├── CFUUID.h + │   │   │   │   ├── CoreFoundation.h + │   │   │   │   ├── ForFoundationOnly.h + │   │   │   │   ├── ForSwiftFoundationOnly.h + │   │   │   │   ├── module.modulemap + │   │   │   │   └── static-module.map + │   │   │   ├── dispatch + │   │   │   │   ├── base.h + │   │   │   │   ├── block.h + │   │   │   │   ├── data.h + │   │   │   │   ├── dispatch.h + │   │   │   │   ├── group.h + │   │   │   │   ├── introspection.h + │   │   │   │   ├── io.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── object.h + │   │   │   │   ├── once.h + │   │   │   │   ├── queue.h + │   │   │   │   ├── semaphore.h + │   │   │   │   ├── source.h + │   │   │   │   └── time.h + │   │   │   ├── _FoundationCShims + │   │   │   │   ├── bplist_shims.h + │   │   │   │   ├── CFUniCharBitmapData.h + │   │   │   │   ├── CFUniCharBitmapData.inc.h + │   │   │   │   ├── _CShimsMacros.h + │   │   │   │   ├── _CShimsTargetConditionals.h + │   │   │   │   ├── _CStdlib.h + │   │   │   │   ├── filemanager_shims.h + │   │   │   │   ├── _FoundationCShims.h + │   │   │   │   ├── io_shims.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── platform_shims.h + │   │   │   │   ├── string_shims.h + │   │   │   │   └── uuid.h + │   │   │   ├── _foundation_unicode + │   │   │   │   ├── alphaindex.h + │   │   │   │   ├── appendable.h + │   │   │   │   ├── basictz.h + │   │   │   │   ├── brkiter.h + │   │   │   │   ├── bytestream.h + │   │   │   │   ├── bytestriebuilder.h + │   │   │   │   ├── bytestrie.h + │   │   │   │   ├── calendar.h + │   │   │   │   ├── caniter.h + │   │   │   │   ├── casemap.h + │   │   │   │   ├── char16ptr.h + │   │   │   │   ├── chariter.h + │   │   │   │   ├── choicfmt.h + │   │   │   │   ├── coleitr.h + │   │   │   │   ├── coll.h + │   │   │   │   ├── compactdecimalformat.h + │   │   │   │   ├── curramt.h + │   │   │   │   ├── currpinf.h + │   │   │   │   ├── currunit.h + │   │   │   │   ├── datefmt.h + │   │   │   │   ├── dbbi.h + │   │   │   │   ├── dcfmtsym.h + │   │   │   │   ├── decimfmt.h + │   │   │   │   ├── displayoptions.h + │   │   │   │   ├── docmain.h + │   │   │   │   ├── dtfmtsym.h + │   │   │   │   ├── dtintrv.h + │   │   │   │   ├── dtitvfmt.h + │   │   │   │   ├── dtitvinf.h + │   │   │   │   ├── dtptngen.h + │   │   │   │   ├── dtrule.h + │   │   │   │   ├── edits.h + │   │   │   │   ├── enumset.h + │   │   │   │   ├── errorcode.h + │   │   │   │   ├── fieldpos.h + │   │   │   │   ├── filteredbrk.h + │   │   │   │   ├── fmtable.h + │   │   │   │   ├── format.h + │   │   │   │   ├── formattednumber.h + │   │   │   │   ├── formattedvalue.h + │   │   │   │   ├── fpositer.h + │   │   │   │   ├── gender.h + │   │   │   │   ├── gregocal.h + │   │   │   │   ├── icudataver.h + │   │   │   │   ├── icuplug.h + │   │   │   │   ├── idna.h + │   │   │   │   ├── listformatter.h + │   │   │   │   ├── localebuilder.h + │   │   │   │   ├── localematcher.h + │   │   │   │   ├── localpointer.h + │   │   │   │   ├── locdspnm.h + │   │   │   │   ├── locid.h + │   │   │   │   ├── measfmt.h + │   │   │   │   ├── measunit.h + │   │   │   │   ├── measure.h + │   │   │   │   ├── messagepattern.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── msgfmt.h + │   │   │   │   ├── normalizer2.h + │   │   │   │   ├── normlzr.h + │   │   │   │   ├── nounit.h + │   │   │   │   ├── numberformatter.h + │   │   │   │   ├── numberrangeformatter.h + │   │   │   │   ├── numfmt.h + │   │   │   │   ├── numsys.h + │   │   │   │   ├── parseerr.h + │   │   │   │   ├── parsepos.h + │   │   │   │   ├── platform.h + │   │   │   │   ├── plurfmt.h + │   │   │   │   ├── plurrule.h + │   │   │   │   ├── ptypes.h + │   │   │   │   ├── putil.h + │   │   │   │   ├── rbbi.h + │   │   │   │   ├── rbnf.h + │   │   │   │   ├── rbtz.h + │   │   │   │   ├── regex.h + │   │   │   │   ├── region.h + │   │   │   │   ├── reldatefmt.h + │   │   │   │   ├── rep.h + │   │   │   │   ├── resbund.h + │   │   │   │   ├── schriter.h + │   │   │   │   ├── scientificnumberformatter.h + │   │   │   │   ├── search.h + │   │   │   │   ├── selfmt.h + │   │   │   │   ├── simpleformatter.h + │   │   │   │   ├── simplenumberformatter.h + │   │   │   │   ├── simpletz.h + │   │   │   │   ├── smpdtfmt.h + │   │   │   │   ├── sortkey.h + │   │   │   │   ├── std_string.h + │   │   │   │   ├── strenum.h + │   │   │   │   ├── stringoptions.h + │   │   │   │   ├── stringpiece.h + │   │   │   │   ├── stringtriebuilder.h + │   │   │   │   ├── stsearch.h + │   │   │   │   ├── symtable.h + │   │   │   │   ├── tblcoll.h + │   │   │   │   ├── timezone.h + │   │   │   │   ├── tmunit.h + │   │   │   │   ├── tmutamt.h + │   │   │   │   ├── tmutfmt.h + │   │   │   │   ├── translit.h + │   │   │   │   ├── tzfmt.h + │   │   │   │   ├── tznames.h + │   │   │   │   ├── tzrule.h + │   │   │   │   ├── tztrans.h + │   │   │   │   ├── ualoc.h + │   │   │   │   ├── uameasureformat.h + │   │   │   │   ├── uameasureunit.h + │   │   │   │   ├── uatimeunitformat.h + │   │   │   │   ├── ubidi.h + │   │   │   │   ├── ubiditransform.h + │   │   │   │   ├── ubrk.h + │   │   │   │   ├── ucal.h + │   │   │   │   ├── ucasemap.h + │   │   │   │   ├── ucat.h + │   │   │   │   ├── uchar.h + │   │   │   │   ├── ucharstriebuilder.h + │   │   │   │   ├── ucharstrie.h + │   │   │   │   ├── uchriter.h + │   │   │   │   ├── uclean.h + │   │   │   │   ├── ucnv_cb.h + │   │   │   │   ├── ucnv_err.h + │   │   │   │   ├── ucnv.h + │   │   │   │   ├── ucnvsel.h + │   │   │   │   ├── ucoleitr.h + │   │   │   │   ├── ucol.h + │   │   │   │   ├── uconfig.h + │   │   │   │   ├── ucpmap.h + │   │   │   │   ├── ucptrie.h + │   │   │   │   ├── ucsdet.h + │   │   │   │   ├── ucurr.h + │   │   │   │   ├── udata.h + │   │   │   │   ├── udateintervalformat.h + │   │   │   │   ├── udat.h + │   │   │   │   ├── udatintv.h + │   │   │   │   ├── udatpg.h + │   │   │   │   ├── udisplaycontext.h + │   │   │   │   ├── udisplayoptions.h + │   │   │   │   ├── uenum.h + │   │   │   │   ├── ufieldpositer.h + │   │   │   │   ├── uformattable.h + │   │   │   │   ├── uformattednumber.h + │   │   │   │   ├── uformattedvalue.h + │   │   │   │   ├── ugender.h + │   │   │   │   ├── uidna.h + │   │   │   │   ├── uiter.h + │   │   │   │   ├── uldnames.h + │   │   │   │   ├── ulistformatter.h + │   │   │   │   ├── ulocale.h + │   │   │   │   ├── ulocbuilder.h + │   │   │   │   ├── ulocdata.h + │   │   │   │   ├── uloc.h + │   │   │   │   ├── umachine.h + │   │   │   │   ├── umisc.h + │   │   │   │   ├── umsg.h + │   │   │   │   ├── umutablecptrie.h + │   │   │   │   ├── unifilt.h + │   │   │   │   ├── unifunct.h + │   │   │   │   ├── unimatch.h + │   │   │   │   ├── unirepl.h + │   │   │   │   ├── uniset.h + │   │   │   │   ├── unistr.h + │   │   │   │   ├── unorm2.h + │   │   │   │   ├── unorm.h + │   │   │   │   ├── unumberformatter.h + │   │   │   │   ├── unumberoptions.h + │   │   │   │   ├── unumberrangeformatter.h + │   │   │   │   ├── unum.h + │   │   │   │   ├── unumsys.h + │   │   │   │   ├── uobject.h + │   │   │   │   ├── uplrule.h + │   │   │   │   ├── upluralrules.h + │   │   │   │   ├── urbtok.h + │   │   │   │   ├── uregex.h + │   │   │   │   ├── uregion.h + │   │   │   │   ├── ureldatefmt.h + │   │   │   │   ├── urename.h + │   │   │   │   ├── urep.h + │   │   │   │   ├── ures.h + │   │   │   │   ├── uscript.h + │   │   │   │   ├── usearch.h + │   │   │   │   ├── uset.h + │   │   │   │   ├── usetiter.h + │   │   │   │   ├── ushape.h + │   │   │   │   ├── usimplenumberformatter.h + │   │   │   │   ├── uspoof.h + │   │   │   │   ├── usprep.h + │   │   │   │   ├── ustdio.h + │   │   │   │   ├── ustream.h + │   │   │   │   ├── ustring.h + │   │   │   │   ├── ustringtrie.h + │   │   │   │   ├── utext.h + │   │   │   │   ├── utf16.h + │   │   │   │   ├── utf32.h + │   │   │   │   ├── utf8.h + │   │   │   │   ├── utf.h + │   │   │   │   ├── utf_old.h + │   │   │   │   ├── utmscale.h + │   │   │   │   ├── utrace.h + │   │   │   │   ├── utrans.h + │   │   │   │   ├── utypes.h + │   │   │   │   ├── uvernum.h + │   │   │   │   ├── uversion.h + │   │   │   │   └── vtzone.h + │   │   │   ├── os + │   │   │   │   ├── generic_base.h + │   │   │   │   ├── generic_unix_base.h + │   │   │   │   ├── generic_win_base.h + │   │   │   │   └── object.h + │   │   │   └── shims + │   │   │   ├── AssertionReporting.h + │   │   │   ├── CoreFoundationShims.h + │   │   │   ├── EmbeddedShims.h + │   │   │   ├── FoundationShims.h + │   │   │   ├── GlobalObjects.h + │   │   │   ├── HeapObject.h + │   │   │   ├── KeyPath.h + │   │   │   ├── LibcOverlayShims.h + │   │   │   ├── LibcShims.h + │   │   │   ├── MetadataSections.h + │   │   │   ├── module.modulemap + │   │   │   ├── Random.h + │   │   │   ├── RefCount.h + │   │   │   ├── Reflection.h + │   │   │   ├── RuntimeShims.h + │   │   │   ├── RuntimeStubs.h + │   │   │   ├── _SwiftConcurrency.h + │   │   │   ├── _SwiftDistributed.h + │   │   │   ├── SwiftStdbool.h + │   │   │   ├── SwiftStddef.h + │   │   │   ├── SwiftStdint.h + │   │   │   ├── _SynchronizationShims.h + │   │   │   ├── System.h + │   │   │   ├── Target.h + │   │   │   ├── ThreadLocalStorage.h + │   │   │   ├── UnicodeData.h + │   │   │   └── Visibility.h + │   │   └── share + │   │   ├── aclocal + │   │   │   └── libxml.m4 + │   │   ├── doc + │   │   │   ├── libxml2 + │   │   │   │   ├── devhelp + │   │   │   │   │   ├── general.html + │   │   │   │   │   ├── home.png + │   │   │   │   │   ├── index.html + │   │   │   │   │   ├── left.png + │   │   │   │   │   ├── libxml2-c14n.html + │   │   │   │   │   ├── libxml2-catalog.html + │   │   │   │   │   ├── libxml2-chvalid.html + │   │   │   │   │   ├── libxml2-debugXML.html + │   │   │   │   │   ├── libxml2.devhelp2 + │   │   │   │   │   ├── libxml2-dict.html + │   │   │   │   │   ├── libxml2-encoding.html + │   │   │   │   │   ├── libxml2-entities.html + │   │   │   │   │   ├── libxml2-globals.html + │   │   │   │   │   ├── libxml2-hash.html + │   │   │   │   │   ├── libxml2-HTMLparser.html + │   │   │   │   │   ├── libxml2-HTMLtree.html + │   │   │   │   │   ├── libxml2-list.html + │   │   │   │   │   ├── libxml2-nanoftp.html + │   │   │   │   │   ├── libxml2-nanohttp.html + │   │   │   │   │   ├── libxml2-parser.html + │   │   │   │   │   ├── libxml2-parserInternals.html + │   │   │   │   │   ├── libxml2-pattern.html + │   │   │   │   │   ├── libxml2-relaxng.html + │   │   │   │   │   ├── libxml2-SAX2.html + │   │   │   │   │   ├── libxml2-SAX.html + │   │   │   │   │   ├── libxml2-schemasInternals.html + │   │   │   │   │   ├── libxml2-schematron.html + │   │   │   │   │   ├── libxml2-threads.html + │   │   │   │   │   ├── libxml2-tree.html + │   │   │   │   │   ├── libxml2-uri.html + │   │   │   │   │   ├── libxml2-valid.html + │   │   │   │   │   ├── libxml2-xinclude.html + │   │   │   │   │   ├── libxml2-xlink.html + │   │   │   │   │   ├── libxml2-xmlautomata.html + │   │   │   │   │   ├── libxml2-xmlerror.html + │   │   │   │   │   ├── libxml2-xmlexports.html + │   │   │   │   │   ├── libxml2-xmlIO.html + │   │   │   │   │   ├── libxml2-xmlmemory.html + │   │   │   │   │   ├── libxml2-xmlmodule.html + │   │   │   │   │   ├── libxml2-xmlreader.html + │   │   │   │   │   ├── libxml2-xmlregexp.html + │   │   │   │   │   ├── libxml2-xmlsave.html + │   │   │   │   │   ├── libxml2-xmlschemas.html + │   │   │   │   │   ├── libxml2-xmlschemastypes.html + │   │   │   │   │   ├── libxml2-xmlstring.html + │   │   │   │   │   ├── libxml2-xmlunicode.html + │   │   │   │   │   ├── libxml2-xmlversion.html + │   │   │   │   │   ├── libxml2-xmlwriter.html + │   │   │   │   │   ├── libxml2-xpath.html + │   │   │   │   │   ├── libxml2-xpathInternals.html + │   │   │   │   │   ├── libxml2-xpointer.html + │   │   │   │   │   ├── libxml2-xzlib.html + │   │   │   │   │   ├── right.png + │   │   │   │   │   ├── style.css + │   │   │   │   │   └── up.png + │   │   │   │   ├── examples + │   │   │   │   │   ├── index.html + │   │   │   │   │   ├── io1.c + │   │   │   │   │   ├── io2.c + │   │   │   │   │   ├── parse1.c + │   │   │   │   │   ├── parse2.c + │   │   │   │   │   ├── parse3.c + │   │   │   │   │   ├── parse4.c + │   │   │   │   │   ├── reader1.c + │   │   │   │   │   ├── reader2.c + │   │   │   │   │   ├── reader3.c + │   │   │   │   │   ├── reader4.c + │   │   │   │   │   ├── testWriter.c + │   │   │   │   │   ├── tree1.c + │   │   │   │   │   ├── tree2.c + │   │   │   │   │   ├── xpath1.c + │   │   │   │   │   └── xpath2.c + │   │   │   │   ├── tutorial + │   │   │   │   │   ├── apa.html + │   │   │   │   │   ├── apb.html + │   │   │   │   │   ├── apc.html + │   │   │   │   │   ├── apd.html + │   │   │   │   │   ├── ape.html + │   │   │   │   │   ├── apf.html + │   │   │   │   │   ├── apg.html + │   │   │   │   │   ├── aph.html + │   │   │   │   │   ├── api.html + │   │   │   │   │   ├── ar01s02.html + │   │   │   │   │   ├── ar01s03.html + │   │   │   │   │   ├── ar01s04.html + │   │   │   │   │   ├── ar01s05.html + │   │   │   │   │   ├── ar01s06.html + │   │   │   │   │   ├── ar01s07.html + │   │   │   │   │   ├── ar01s08.html + │   │   │   │   │   ├── ar01s09.html + │   │   │   │   │   ├── images + │   │   │   │   │   │   ├── blank.png + │   │   │   │   │   │   ├── callouts + │   │   │   │   │   │   │   ├── 10.png + │   │   │   │   │   │   │   ├── 1.png + │   │   │   │   │   │   │   ├── 2.png + │   │   │   │   │   │   │   ├── 3.png + │   │   │   │   │   │   │   ├── 4.png + │   │   │   │   │   │   │   ├── 5.png + │   │   │   │   │   │   │   ├── 6.png + │   │   │   │   │   │   │   ├── 7.png + │   │   │   │   │   │   │   ├── 8.png + │   │   │   │   │   │   │   └── 9.png + │   │   │   │   │   │   ├── caution.png + │   │   │   │   │   │   ├── draft.png + │   │   │   │   │   │   ├── home.png + │   │   │   │   │   │   ├── important.png + │   │   │   │   │   │   ├── next.png + │   │   │   │   │   │   ├── note.png + │   │   │   │   │   │   ├── prev.png + │   │   │   │   │   │   ├── tip.png + │   │   │   │   │   │   ├── toc-blank.png + │   │   │   │   │   │   ├── toc-minus.png + │   │   │   │   │   │   ├── toc-plus.png + │   │   │   │   │   │   ├── up.png + │   │   │   │   │   │   └── warning.png + │   │   │   │   │   ├── includeaddattribute.c + │   │   │   │   │   ├── includeaddkeyword.c + │   │   │   │   │   ├── includeconvert.c + │   │   │   │   │   ├── includegetattribute.c + │   │   │   │   │   ├── includekeyword.c + │   │   │   │   │   ├── includexpath.c + │   │   │   │   │   ├── index.html + │   │   │   │   │   └── ix01.html + │   │   │   │   ├── xmlcatalog.html + │   │   │   │   └── xmllint.html + │   │   │   └── swift + │   │   │   └── diagnostics + │   │   │   ├── complex-closure-inference.md + │   │   │   ├── dynamic-callable-requirements.md + │   │   │   ├── error-in-future-swift-version.md + │   │   │   ├── existential-member-access-limitations.md + │   │   │   ├── multiple-inheritance.md + │   │   │   ├── nominal-types.md + │   │   │   ├── opaque-type-inference.md + │   │   │   ├── property-wrapper-requirements.md + │   │   │   ├── protocol-type-non-conformance.md + │   │   │   ├── result-builder-methods.md + │   │   │   ├── string-interpolation-conformance.md + │   │   │   ├── temporary-pointers.md + │   │   │   └── trailing-closure-matching.md + │   │   ├── emacs + │   │   │   └── site-lisp + │   │   │   └── swift-mode.el + │   │   ├── man + │   │   │   ├── man1 + │   │   │   │   ├── swift.1 + │   │   │   │   ├── xml2-config.1 + │   │   │   │   ├── xmlcatalog.1 + │   │   │   │   └── xmllint.1 + │   │   │   └── man3 + │   │   │   ├── curl_easy_cleanup.3 + │   │   │   ├── curl_easy_duphandle.3 + │   │   │   ├── curl_easy_escape.3 + │   │   │   ├── curl_easy_getinfo.3 + │   │   │   ├── curl_easy_header.3 + │   │   │   ├── curl_easy_init.3 + │   │   │   ├── curl_easy_nextheader.3 + │   │   │   ├── curl_easy_option_by_id.3 + │   │   │   ├── curl_easy_option_by_name.3 + │   │   │   ├── curl_easy_option_next.3 + │   │   │   ├── curl_easy_pause.3 + │   │   │   ├── curl_easy_perform.3 + │   │   │   ├── curl_easy_recv.3 + │   │   │   ├── curl_easy_reset.3 + │   │   │   ├── curl_easy_send.3 + │   │   │   ├── curl_easy_setopt.3 + │   │   │   ├── curl_easy_strerror.3 + │   │   │   ├── curl_easy_unescape.3 + │   │   │   ├── curl_easy_upkeep.3 + │   │   │   ├── curl_escape.3 + │   │   │   ├── curl_formadd.3 + │   │   │   ├── curl_formfree.3 + │   │   │   ├── curl_formget.3 + │   │   │   ├── curl_free.3 + │   │   │   ├── curl_getdate.3 + │   │   │   ├── curl_getenv.3 + │   │   │   ├── curl_global_cleanup.3 + │   │   │   ├── curl_global_init.3 + │   │   │   ├── curl_global_init_mem.3 + │   │   │   ├── curl_global_sslset.3 + │   │   │   ├── curl_global_trace.3 + │   │   │   ├── CURLINFO_ACTIVESOCKET.3 + │   │   │   ├── CURLINFO_APPCONNECT_TIME.3 + │   │   │   ├── CURLINFO_APPCONNECT_TIME_T.3 + │   │   │   ├── CURLINFO_CAINFO.3 + │   │   │   ├── CURLINFO_CAPATH.3 + │   │   │   ├── CURLINFO_CERTINFO.3 + │   │   │   ├── CURLINFO_CONDITION_UNMET.3 + │   │   │   ├── CURLINFO_CONNECT_TIME.3 + │   │   │   ├── CURLINFO_CONNECT_TIME_T.3 + │   │   │   ├── CURLINFO_CONN_ID.3 + │   │   │   ├── CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 + │   │   │   ├── CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 + │   │   │   ├── CURLINFO_CONTENT_LENGTH_UPLOAD.3 + │   │   │   ├── CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 + │   │   │   ├── CURLINFO_CONTENT_TYPE.3 + │   │   │   ├── CURLINFO_COOKIELIST.3 + │   │   │   ├── CURLINFO_EFFECTIVE_METHOD.3 + │   │   │   ├── CURLINFO_EFFECTIVE_URL.3 + │   │   │   ├── CURLINFO_FILETIME.3 + │   │   │   ├── CURLINFO_FILETIME_T.3 + │   │   │   ├── CURLINFO_FTP_ENTRY_PATH.3 + │   │   │   ├── CURLINFO_HEADER_SIZE.3 + │   │   │   ├── CURLINFO_HTTPAUTH_AVAIL.3 + │   │   │   ├── CURLINFO_HTTP_CONNECTCODE.3 + │   │   │   ├── CURLINFO_HTTP_VERSION.3 + │   │   │   ├── CURLINFO_LASTSOCKET.3 + │   │   │   ├── CURLINFO_LOCAL_IP.3 + │   │   │   ├── CURLINFO_LOCAL_PORT.3 + │   │   │   ├── CURLINFO_NAMELOOKUP_TIME.3 + │   │   │   ├── CURLINFO_NAMELOOKUP_TIME_T.3 + │   │   │   ├── CURLINFO_NUM_CONNECTS.3 + │   │   │   ├── CURLINFO_OS_ERRNO.3 + │   │   │   ├── CURLINFO_PRETRANSFER_TIME.3 + │   │   │   ├── CURLINFO_PRETRANSFER_TIME_T.3 + │   │   │   ├── CURLINFO_PRIMARY_IP.3 + │   │   │   ├── CURLINFO_PRIMARY_PORT.3 + │   │   │   ├── CURLINFO_PRIVATE.3 + │   │   │   ├── CURLINFO_PROTOCOL.3 + │   │   │   ├── CURLINFO_PROXYAUTH_AVAIL.3 + │   │   │   ├── CURLINFO_PROXY_ERROR.3 + │   │   │   ├── CURLINFO_PROXY_SSL_VERIFYRESULT.3 + │   │   │   ├── CURLINFO_QUEUE_TIME_T.3 + │   │   │   ├── CURLINFO_REDIRECT_COUNT.3 + │   │   │   ├── CURLINFO_REDIRECT_TIME.3 + │   │   │   ├── CURLINFO_REDIRECT_TIME_T.3 + │   │   │   ├── CURLINFO_REDIRECT_URL.3 + │   │   │   ├── CURLINFO_REFERER.3 + │   │   │   ├── CURLINFO_REQUEST_SIZE.3 + │   │   │   ├── CURLINFO_RESPONSE_CODE.3 + │   │   │   ├── CURLINFO_RETRY_AFTER.3 + │   │   │   ├── CURLINFO_RTSP_CLIENT_CSEQ.3 + │   │   │   ├── CURLINFO_RTSP_CSEQ_RECV.3 + │   │   │   ├── CURLINFO_RTSP_SERVER_CSEQ.3 + │   │   │   ├── CURLINFO_RTSP_SESSION_ID.3 + │   │   │   ├── CURLINFO_SCHEME.3 + │   │   │   ├── CURLINFO_SIZE_DOWNLOAD.3 + │   │   │   ├── CURLINFO_SIZE_DOWNLOAD_T.3 + │   │   │   ├── CURLINFO_SIZE_UPLOAD.3 + │   │   │   ├── CURLINFO_SIZE_UPLOAD_T.3 + │   │   │   ├── CURLINFO_SPEED_DOWNLOAD.3 + │   │   │   ├── CURLINFO_SPEED_DOWNLOAD_T.3 + │   │   │   ├── CURLINFO_SPEED_UPLOAD.3 + │   │   │   ├── CURLINFO_SPEED_UPLOAD_T.3 + │   │   │   ├── CURLINFO_SSL_ENGINES.3 + │   │   │   ├── CURLINFO_SSL_VERIFYRESULT.3 + │   │   │   ├── CURLINFO_STARTTRANSFER_TIME.3 + │   │   │   ├── CURLINFO_STARTTRANSFER_TIME_T.3 + │   │   │   ├── CURLINFO_TLS_SESSION.3 + │   │   │   ├── CURLINFO_TLS_SSL_PTR.3 + │   │   │   ├── CURLINFO_TOTAL_TIME.3 + │   │   │   ├── CURLINFO_TOTAL_TIME_T.3 + │   │   │   ├── CURLINFO_USED_PROXY.3 + │   │   │   ├── CURLINFO_XFER_ID.3 + │   │   │   ├── curl_mime_addpart.3 + │   │   │   ├── curl_mime_data.3 + │   │   │   ├── curl_mime_data_cb.3 + │   │   │   ├── curl_mime_encoder.3 + │   │   │   ├── curl_mime_filedata.3 + │   │   │   ├── curl_mime_filename.3 + │   │   │   ├── curl_mime_free.3 + │   │   │   ├── curl_mime_headers.3 + │   │   │   ├── curl_mime_init.3 + │   │   │   ├── curl_mime_name.3 + │   │   │   ├── curl_mime_subparts.3 + │   │   │   ├── curl_mime_type.3 + │   │   │   ├── CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 + │   │   │   ├── CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 + │   │   │   ├── CURLMOPT_MAX_CONCURRENT_STREAMS.3 + │   │   │   ├── CURLMOPT_MAXCONNECTS.3 + │   │   │   ├── CURLMOPT_MAX_HOST_CONNECTIONS.3 + │   │   │   ├── CURLMOPT_MAX_PIPELINE_LENGTH.3 + │   │   │   ├── CURLMOPT_MAX_TOTAL_CONNECTIONS.3 + │   │   │   ├── CURLMOPT_PIPELINING.3 + │   │   │   ├── CURLMOPT_PIPELINING_SERVER_BL.3 + │   │   │   ├── CURLMOPT_PIPELINING_SITE_BL.3 + │   │   │   ├── CURLMOPT_PUSHDATA.3 + │   │   │   ├── CURLMOPT_PUSHFUNCTION.3 + │   │   │   ├── CURLMOPT_SOCKETDATA.3 + │   │   │   ├── CURLMOPT_SOCKETFUNCTION.3 + │   │   │   ├── CURLMOPT_TIMERDATA.3 + │   │   │   ├── CURLMOPT_TIMERFUNCTION.3 + │   │   │   ├── curl_mprintf.3 + │   │   │   ├── curl_multi_add_handle.3 + │   │   │   ├── curl_multi_assign.3 + │   │   │   ├── curl_multi_cleanup.3 + │   │   │   ├── curl_multi_fdset.3 + │   │   │   ├── curl_multi_get_handles.3 + │   │   │   ├── curl_multi_info_read.3 + │   │   │   ├── curl_multi_init.3 + │   │   │   ├── curl_multi_perform.3 + │   │   │   ├── curl_multi_poll.3 + │   │   │   ├── curl_multi_remove_handle.3 + │   │   │   ├── curl_multi_setopt.3 + │   │   │   ├── curl_multi_socket.3 + │   │   │   ├── curl_multi_socket_action.3 + │   │   │   ├── curl_multi_socket_all.3 + │   │   │   ├── curl_multi_strerror.3 + │   │   │   ├── curl_multi_timeout.3 + │   │   │   ├── curl_multi_wait.3 + │   │   │   ├── curl_multi_wakeup.3 + │   │   │   ├── CURLOPT_ABSTRACT_UNIX_SOCKET.3 + │   │   │   ├── CURLOPT_ACCEPT_ENCODING.3 + │   │   │   ├── CURLOPT_ACCEPTTIMEOUT_MS.3 + │   │   │   ├── CURLOPT_ADDRESS_SCOPE.3 + │   │   │   ├── CURLOPT_ALTSVC.3 + │   │   │   ├── CURLOPT_ALTSVC_CTRL.3 + │   │   │   ├── CURLOPT_APPEND.3 + │   │   │   ├── CURLOPT_AUTOREFERER.3 + │   │   │   ├── CURLOPT_AWS_SIGV4.3 + │   │   │   ├── CURLOPT_BUFFERSIZE.3 + │   │   │   ├── CURLOPT_CA_CACHE_TIMEOUT.3 + │   │   │   ├── CURLOPT_CAINFO.3 + │   │   │   ├── CURLOPT_CAINFO_BLOB.3 + │   │   │   ├── CURLOPT_CAPATH.3 + │   │   │   ├── CURLOPT_CERTINFO.3 + │   │   │   ├── CURLOPT_CHUNK_BGN_FUNCTION.3 + │   │   │   ├── CURLOPT_CHUNK_DATA.3 + │   │   │   ├── CURLOPT_CHUNK_END_FUNCTION.3 + │   │   │   ├── CURLOPT_CLOSESOCKETDATA.3 + │   │   │   ├── CURLOPT_CLOSESOCKETFUNCTION.3 + │   │   │   ├── CURLOPT_CONNECT_ONLY.3 + │   │   │   ├── CURLOPT_CONNECTTIMEOUT.3 + │   │   │   ├── CURLOPT_CONNECTTIMEOUT_MS.3 + │   │   │   ├── CURLOPT_CONNECT_TO.3 + │   │   │   ├── CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 + │   │   │   ├── CURLOPT_CONV_FROM_UTF8_FUNCTION.3 + │   │   │   ├── CURLOPT_CONV_TO_NETWORK_FUNCTION.3 + │   │   │   ├── CURLOPT_COOKIE.3 + │   │   │   ├── CURLOPT_COOKIEFILE.3 + │   │   │   ├── CURLOPT_COOKIEJAR.3 + │   │   │   ├── CURLOPT_COOKIELIST.3 + │   │   │   ├── CURLOPT_COOKIESESSION.3 + │   │   │   ├── CURLOPT_COPYPOSTFIELDS.3 + │   │   │   ├── CURLOPT_CRLF.3 + │   │   │   ├── CURLOPT_CRLFILE.3 + │   │   │   ├── CURLOPT_CURLU.3 + │   │   │   ├── CURLOPT_CUSTOMREQUEST.3 + │   │   │   ├── CURLOPT_DEBUGDATA.3 + │   │   │   ├── CURLOPT_DEBUGFUNCTION.3 + │   │   │   ├── CURLOPT_DEFAULT_PROTOCOL.3 + │   │   │   ├── CURLOPT_DIRLISTONLY.3 + │   │   │   ├── CURLOPT_DISALLOW_USERNAME_IN_URL.3 + │   │   │   ├── CURLOPT_DNS_CACHE_TIMEOUT.3 + │   │   │   ├── CURLOPT_DNS_INTERFACE.3 + │   │   │   ├── CURLOPT_DNS_LOCAL_IP4.3 + │   │   │   ├── CURLOPT_DNS_LOCAL_IP6.3 + │   │   │   ├── CURLOPT_DNS_SERVERS.3 + │   │   │   ├── CURLOPT_DNS_SHUFFLE_ADDRESSES.3 + │   │   │   ├── CURLOPT_DNS_USE_GLOBAL_CACHE.3 + │   │   │   ├── CURLOPT_DOH_SSL_VERIFYHOST.3 + │   │   │   ├── CURLOPT_DOH_SSL_VERIFYPEER.3 + │   │   │   ├── CURLOPT_DOH_SSL_VERIFYSTATUS.3 + │   │   │   ├── CURLOPT_DOH_URL.3 + │   │   │   ├── CURLOPT_EGDSOCKET.3 + │   │   │   ├── CURLOPT_ERRORBUFFER.3 + │   │   │   ├── CURLOPT_EXPECT_100_TIMEOUT_MS.3 + │   │   │   ├── CURLOPT_FAILONERROR.3 + │   │   │   ├── CURLOPT_FILETIME.3 + │   │   │   ├── CURLOPT_FNMATCH_DATA.3 + │   │   │   ├── CURLOPT_FNMATCH_FUNCTION.3 + │   │   │   ├── CURLOPT_FOLLOWLOCATION.3 + │   │   │   ├── CURLOPT_FORBID_REUSE.3 + │   │   │   ├── CURLOPT_FRESH_CONNECT.3 + │   │   │   ├── CURLOPT_FTP_ACCOUNT.3 + │   │   │   ├── CURLOPT_FTP_ALTERNATIVE_TO_USER.3 + │   │   │   ├── CURLOPT_FTP_CREATE_MISSING_DIRS.3 + │   │   │   ├── CURLOPT_FTP_FILEMETHOD.3 + │   │   │   ├── CURLOPT_FTPPORT.3 + │   │   │   ├── CURLOPT_FTP_SKIP_PASV_IP.3 + │   │   │   ├── CURLOPT_FTPSSLAUTH.3 + │   │   │   ├── CURLOPT_FTP_SSL_CCC.3 + │   │   │   ├── CURLOPT_FTP_USE_EPRT.3 + │   │   │   ├── CURLOPT_FTP_USE_EPSV.3 + │   │   │   ├── CURLOPT_FTP_USE_PRET.3 + │   │   │   ├── CURLOPT_GSSAPI_DELEGATION.3 + │   │   │   ├── CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 + │   │   │   ├── CURLOPT_HAPROXY_CLIENT_IP.3 + │   │   │   ├── CURLOPT_HAPROXYPROTOCOL.3 + │   │   │   ├── CURLOPT_HEADER.3 + │   │   │   ├── CURLOPT_HEADERDATA.3 + │   │   │   ├── CURLOPT_HEADERFUNCTION.3 + │   │   │   ├── CURLOPT_HEADEROPT.3 + │   │   │   ├── CURLOPT_HSTS.3 + │   │   │   ├── CURLOPT_HSTS_CTRL.3 + │   │   │   ├── CURLOPT_HSTSREADDATA.3 + │   │   │   ├── CURLOPT_HSTSREADFUNCTION.3 + │   │   │   ├── CURLOPT_HSTSWRITEDATA.3 + │   │   │   ├── CURLOPT_HSTSWRITEFUNCTION.3 + │   │   │   ├── CURLOPT_HTTP09_ALLOWED.3 + │   │   │   ├── CURLOPT_HTTP200ALIASES.3 + │   │   │   ├── CURLOPT_HTTPAUTH.3 + │   │   │   ├── CURLOPT_HTTP_CONTENT_DECODING.3 + │   │   │   ├── CURLOPT_HTTPGET.3 + │   │   │   ├── CURLOPT_HTTPHEADER.3 + │   │   │   ├── CURLOPT_HTTPPOST.3 + │   │   │   ├── CURLOPT_HTTPPROXYTUNNEL.3 + │   │   │   ├── CURLOPT_HTTP_TRANSFER_DECODING.3 + │   │   │   ├── CURLOPT_HTTP_VERSION.3 + │   │   │   ├── CURLOPT_IGNORE_CONTENT_LENGTH.3 + │   │   │   ├── CURLOPT_INFILESIZE.3 + │   │   │   ├── CURLOPT_INFILESIZE_LARGE.3 + │   │   │   ├── CURLOPT_INTERFACE.3 + │   │   │   ├── CURLOPT_INTERLEAVEDATA.3 + │   │   │   ├── CURLOPT_INTERLEAVEFUNCTION.3 + │   │   │   ├── CURLOPT_IOCTLDATA.3 + │   │   │   ├── CURLOPT_IOCTLFUNCTION.3 + │   │   │   ├── CURLOPT_IPRESOLVE.3 + │   │   │   ├── CURLOPT_ISSUERCERT.3 + │   │   │   ├── CURLOPT_ISSUERCERT_BLOB.3 + │   │   │   ├── CURLOPT_KEEP_SENDING_ON_ERROR.3 + │   │   │   ├── CURLOPT_KEYPASSWD.3 + │   │   │   ├── CURLOPT_KRBLEVEL.3 + │   │   │   ├── CURLOPT_LOCALPORT.3 + │   │   │   ├── CURLOPT_LOCALPORTRANGE.3 + │   │   │   ├── CURLOPT_LOGIN_OPTIONS.3 + │   │   │   ├── CURLOPT_LOW_SPEED_LIMIT.3 + │   │   │   ├── CURLOPT_LOW_SPEED_TIME.3 + │   │   │   ├── CURLOPT_MAIL_AUTH.3 + │   │   │   ├── CURLOPT_MAIL_FROM.3 + │   │   │   ├── CURLOPT_MAIL_RCPT.3 + │   │   │   ├── CURLOPT_MAIL_RCPT_ALLOWFAILS.3 + │   │   │   ├── CURLOPT_MAXAGE_CONN.3 + │   │   │   ├── CURLOPT_MAXCONNECTS.3 + │   │   │   ├── CURLOPT_MAXFILESIZE.3 + │   │   │   ├── CURLOPT_MAXFILESIZE_LARGE.3 + │   │   │   ├── CURLOPT_MAXLIFETIME_CONN.3 + │   │   │   ├── CURLOPT_MAX_RECV_SPEED_LARGE.3 + │   │   │   ├── CURLOPT_MAXREDIRS.3 + │   │   │   ├── CURLOPT_MAX_SEND_SPEED_LARGE.3 + │   │   │   ├── CURLOPT_MIME_OPTIONS.3 + │   │   │   ├── CURLOPT_MIMEPOST.3 + │   │   │   ├── CURLOPT_NETRC.3 + │   │   │   ├── CURLOPT_NETRC_FILE.3 + │   │   │   ├── CURLOPT_NEW_DIRECTORY_PERMS.3 + │   │   │   ├── CURLOPT_NEW_FILE_PERMS.3 + │   │   │   ├── CURLOPT_NOBODY.3 + │   │   │   ├── CURLOPT_NOPROGRESS.3 + │   │   │   ├── CURLOPT_NOPROXY.3 + │   │   │   ├── CURLOPT_NOSIGNAL.3 + │   │   │   ├── CURLOPT_OPENSOCKETDATA.3 + │   │   │   ├── CURLOPT_OPENSOCKETFUNCTION.3 + │   │   │   ├── CURLOPT_PASSWORD.3 + │   │   │   ├── CURLOPT_PATH_AS_IS.3 + │   │   │   ├── CURLOPT_PINNEDPUBLICKEY.3 + │   │   │   ├── CURLOPT_PIPEWAIT.3 + │   │   │   ├── CURLOPT_PORT.3 + │   │   │   ├── CURLOPT_POST.3 + │   │   │   ├── CURLOPT_POSTFIELDS.3 + │   │   │   ├── CURLOPT_POSTFIELDSIZE.3 + │   │   │   ├── CURLOPT_POSTFIELDSIZE_LARGE.3 + │   │   │   ├── CURLOPT_POSTQUOTE.3 + │   │   │   ├── CURLOPT_POSTREDIR.3 + │   │   │   ├── CURLOPT_PRE_PROXY.3 + │   │   │   ├── CURLOPT_PREQUOTE.3 + │   │   │   ├── CURLOPT_PREREQDATA.3 + │   │   │   ├── CURLOPT_PREREQFUNCTION.3 + │   │   │   ├── CURLOPT_PRIVATE.3 + │   │   │   ├── CURLOPT_PROGRESSDATA.3 + │   │   │   ├── CURLOPT_PROGRESSFUNCTION.3 + │   │   │   ├── CURLOPT_PROTOCOLS.3 + │   │   │   ├── CURLOPT_PROTOCOLS_STR.3 + │   │   │   ├── CURLOPT_PROXY.3 + │   │   │   ├── CURLOPT_PROXYAUTH.3 + │   │   │   ├── CURLOPT_PROXY_CAINFO.3 + │   │   │   ├── CURLOPT_PROXY_CAINFO_BLOB.3 + │   │   │   ├── CURLOPT_PROXY_CAPATH.3 + │   │   │   ├── CURLOPT_PROXY_CRLFILE.3 + │   │   │   ├── CURLOPT_PROXYHEADER.3 + │   │   │   ├── CURLOPT_PROXY_ISSUERCERT.3 + │   │   │   ├── CURLOPT_PROXY_ISSUERCERT_BLOB.3 + │   │   │   ├── CURLOPT_PROXY_KEYPASSWD.3 + │   │   │   ├── CURLOPT_PROXYPASSWORD.3 + │   │   │   ├── CURLOPT_PROXY_PINNEDPUBLICKEY.3 + │   │   │   ├── CURLOPT_PROXYPORT.3 + │   │   │   ├── CURLOPT_PROXY_SERVICE_NAME.3 + │   │   │   ├── CURLOPT_PROXY_SSLCERT.3 + │   │   │   ├── CURLOPT_PROXY_SSLCERT_BLOB.3 + │   │   │   ├── CURLOPT_PROXY_SSLCERTTYPE.3 + │   │   │   ├── CURLOPT_PROXY_SSL_CIPHER_LIST.3 + │   │   │   ├── CURLOPT_PROXY_SSLKEY.3 + │   │   │   ├── CURLOPT_PROXY_SSLKEY_BLOB.3 + │   │   │   ├── CURLOPT_PROXY_SSLKEYTYPE.3 + │   │   │   ├── CURLOPT_PROXY_SSL_OPTIONS.3 + │   │   │   ├── CURLOPT_PROXY_SSL_VERIFYHOST.3 + │   │   │   ├── CURLOPT_PROXY_SSL_VERIFYPEER.3 + │   │   │   ├── CURLOPT_PROXY_SSLVERSION.3 + │   │   │   ├── CURLOPT_PROXY_TLS13_CIPHERS.3 + │   │   │   ├── CURLOPT_PROXY_TLSAUTH_PASSWORD.3 + │   │   │   ├── CURLOPT_PROXY_TLSAUTH_TYPE.3 + │   │   │   ├── CURLOPT_PROXY_TLSAUTH_USERNAME.3 + │   │   │   ├── CURLOPT_PROXY_TRANSFER_MODE.3 + │   │   │   ├── CURLOPT_PROXYTYPE.3 + │   │   │   ├── CURLOPT_PROXYUSERNAME.3 + │   │   │   ├── CURLOPT_PROXYUSERPWD.3 + │   │   │   ├── CURLOPT_PUT.3 + │   │   │   ├── CURLOPT_QUICK_EXIT.3 + │   │   │   ├── CURLOPT_QUOTE.3 + │   │   │   ├── CURLOPT_RANDOM_FILE.3 + │   │   │   ├── CURLOPT_RANGE.3 + │   │   │   ├── CURLOPT_READDATA.3 + │   │   │   ├── CURLOPT_READFUNCTION.3 + │   │   │   ├── CURLOPT_REDIR_PROTOCOLS.3 + │   │   │   ├── CURLOPT_REDIR_PROTOCOLS_STR.3 + │   │   │   ├── CURLOPT_REFERER.3 + │   │   │   ├── CURLOPT_REQUEST_TARGET.3 + │   │   │   ├── CURLOPT_RESOLVE.3 + │   │   │   ├── CURLOPT_RESOLVER_START_DATA.3 + │   │   │   ├── CURLOPT_RESOLVER_START_FUNCTION.3 + │   │   │   ├── CURLOPT_RESUME_FROM.3 + │   │   │   ├── CURLOPT_RESUME_FROM_LARGE.3 + │   │   │   ├── CURLOPT_RTSP_CLIENT_CSEQ.3 + │   │   │   ├── CURLOPT_RTSP_REQUEST.3 + │   │   │   ├── CURLOPT_RTSP_SERVER_CSEQ.3 + │   │   │   ├── CURLOPT_RTSP_SESSION_ID.3 + │   │   │   ├── CURLOPT_RTSP_STREAM_URI.3 + │   │   │   ├── CURLOPT_RTSP_TRANSPORT.3 + │   │   │   ├── CURLOPT_SASL_AUTHZID.3 + │   │   │   ├── CURLOPT_SASL_IR.3 + │   │   │   ├── CURLOPT_SEEKDATA.3 + │   │   │   ├── CURLOPT_SEEKFUNCTION.3 + │   │   │   ├── CURLOPT_SERVER_RESPONSE_TIMEOUT.3 + │   │   │   ├── CURLOPT_SERVER_RESPONSE_TIMEOUT_MS.3 + │   │   │   ├── CURLOPT_SERVICE_NAME.3 + │   │   │   ├── CURLOPT_SHARE.3 + │   │   │   ├── CURLOPT_SOCKOPTDATA.3 + │   │   │   ├── CURLOPT_SOCKOPTFUNCTION.3 + │   │   │   ├── CURLOPT_SOCKS5_AUTH.3 + │   │   │   ├── CURLOPT_SOCKS5_GSSAPI_NEC.3 + │   │   │   ├── CURLOPT_SOCKS5_GSSAPI_SERVICE.3 + │   │   │   ├── CURLOPT_SSH_AUTH_TYPES.3 + │   │   │   ├── CURLOPT_SSH_COMPRESSION.3 + │   │   │   ├── CURLOPT_SSH_HOSTKEYDATA.3 + │   │   │   ├── CURLOPT_SSH_HOSTKEYFUNCTION.3 + │   │   │   ├── CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 + │   │   │   ├── CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 + │   │   │   ├── CURLOPT_SSH_KEYDATA.3 + │   │   │   ├── CURLOPT_SSH_KEYFUNCTION.3 + │   │   │   ├── CURLOPT_SSH_KNOWNHOSTS.3 + │   │   │   ├── CURLOPT_SSH_PRIVATE_KEYFILE.3 + │   │   │   ├── CURLOPT_SSH_PUBLIC_KEYFILE.3 + │   │   │   ├── CURLOPT_SSLCERT.3 + │   │   │   ├── CURLOPT_SSLCERT_BLOB.3 + │   │   │   ├── CURLOPT_SSLCERTTYPE.3 + │   │   │   ├── CURLOPT_SSL_CIPHER_LIST.3 + │   │   │   ├── CURLOPT_SSL_CTX_DATA.3 + │   │   │   ├── CURLOPT_SSL_CTX_FUNCTION.3 + │   │   │   ├── CURLOPT_SSL_EC_CURVES.3 + │   │   │   ├── CURLOPT_SSL_ENABLE_ALPN.3 + │   │   │   ├── CURLOPT_SSL_ENABLE_NPN.3 + │   │   │   ├── CURLOPT_SSLENGINE.3 + │   │   │   ├── CURLOPT_SSLENGINE_DEFAULT.3 + │   │   │   ├── CURLOPT_SSL_FALSESTART.3 + │   │   │   ├── CURLOPT_SSLKEY.3 + │   │   │   ├── CURLOPT_SSLKEY_BLOB.3 + │   │   │   ├── CURLOPT_SSLKEYTYPE.3 + │   │   │   ├── CURLOPT_SSL_OPTIONS.3 + │   │   │   ├── CURLOPT_SSL_SESSIONID_CACHE.3 + │   │   │   ├── CURLOPT_SSL_VERIFYHOST.3 + │   │   │   ├── CURLOPT_SSL_VERIFYPEER.3 + │   │   │   ├── CURLOPT_SSL_VERIFYSTATUS.3 + │   │   │   ├── CURLOPT_SSLVERSION.3 + │   │   │   ├── CURLOPT_STDERR.3 + │   │   │   ├── CURLOPT_STREAM_DEPENDS.3 + │   │   │   ├── CURLOPT_STREAM_DEPENDS_E.3 + │   │   │   ├── CURLOPT_STREAM_WEIGHT.3 + │   │   │   ├── CURLOPT_SUPPRESS_CONNECT_HEADERS.3 + │   │   │   ├── CURLOPT_TCP_FASTOPEN.3 + │   │   │   ├── CURLOPT_TCP_KEEPALIVE.3 + │   │   │   ├── CURLOPT_TCP_KEEPIDLE.3 + │   │   │   ├── CURLOPT_TCP_KEEPINTVL.3 + │   │   │   ├── CURLOPT_TCP_NODELAY.3 + │   │   │   ├── CURLOPT_TELNETOPTIONS.3 + │   │   │   ├── CURLOPT_TFTP_BLKSIZE.3 + │   │   │   ├── CURLOPT_TFTP_NO_OPTIONS.3 + │   │   │   ├── CURLOPT_TIMECONDITION.3 + │   │   │   ├── CURLOPT_TIMEOUT.3 + │   │   │   ├── CURLOPT_TIMEOUT_MS.3 + │   │   │   ├── CURLOPT_TIMEVALUE.3 + │   │   │   ├── CURLOPT_TIMEVALUE_LARGE.3 + │   │   │   ├── CURLOPT_TLS13_CIPHERS.3 + │   │   │   ├── CURLOPT_TLSAUTH_PASSWORD.3 + │   │   │   ├── CURLOPT_TLSAUTH_TYPE.3 + │   │   │   ├── CURLOPT_TLSAUTH_USERNAME.3 + │   │   │   ├── CURLOPT_TRAILERDATA.3 + │   │   │   ├── CURLOPT_TRAILERFUNCTION.3 + │   │   │   ├── CURLOPT_TRANSFER_ENCODING.3 + │   │   │   ├── CURLOPT_TRANSFERTEXT.3 + │   │   │   ├── CURLOPT_UNIX_SOCKET_PATH.3 + │   │   │   ├── CURLOPT_UNRESTRICTED_AUTH.3 + │   │   │   ├── CURLOPT_UPKEEP_INTERVAL_MS.3 + │   │   │   ├── CURLOPT_UPLOAD.3 + │   │   │   ├── CURLOPT_UPLOAD_BUFFERSIZE.3 + │   │   │   ├── CURLOPT_URL.3 + │   │   │   ├── CURLOPT_USERAGENT.3 + │   │   │   ├── CURLOPT_USERNAME.3 + │   │   │   ├── CURLOPT_USERPWD.3 + │   │   │   ├── CURLOPT_USE_SSL.3 + │   │   │   ├── CURLOPT_VERBOSE.3 + │   │   │   ├── CURLOPT_WILDCARDMATCH.3 + │   │   │   ├── CURLOPT_WRITEDATA.3 + │   │   │   ├── CURLOPT_WRITEFUNCTION.3 + │   │   │   ├── CURLOPT_WS_OPTIONS.3 + │   │   │   ├── CURLOPT_XFERINFODATA.3 + │   │   │   ├── CURLOPT_XFERINFOFUNCTION.3 + │   │   │   ├── CURLOPT_XOAUTH2_BEARER.3 + │   │   │   ├── curl_pushheader_byname.3 + │   │   │   ├── curl_pushheader_bynum.3 + │   │   │   ├── curl_share_cleanup.3 + │   │   │   ├── curl_share_init.3 + │   │   │   ├── curl_share_setopt.3 + │   │   │   ├── curl_share_strerror.3 + │   │   │   ├── CURLSHOPT_LOCKFUNC.3 + │   │   │   ├── CURLSHOPT_SHARE.3 + │   │   │   ├── CURLSHOPT_UNLOCKFUNC.3 + │   │   │   ├── CURLSHOPT_UNSHARE.3 + │   │   │   ├── CURLSHOPT_USERDATA.3 + │   │   │   ├── curl_slist_append.3 + │   │   │   ├── curl_slist_free_all.3 + │   │   │   ├── curl_strequal.3 + │   │   │   ├── curl_strnequal.3 + │   │   │   ├── curl_unescape.3 + │   │   │   ├── curl_url.3 + │   │   │   ├── curl_url_cleanup.3 + │   │   │   ├── curl_url_dup.3 + │   │   │   ├── curl_url_get.3 + │   │   │   ├── curl_url_set.3 + │   │   │   ├── curl_url_strerror.3 + │   │   │   ├── curl_version.3 + │   │   │   ├── curl_version_info.3 + │   │   │   ├── curl_ws_meta.3 + │   │   │   ├── curl_ws_recv.3 + │   │   │   ├── curl_ws_send.3 + │   │   │   ├── libcurl.3 + │   │   │   ├── libcurl-easy.3 + │   │   │   ├── libcurl-env.3 + │   │   │   ├── libcurl-env-dbg.3 + │   │   │   ├── libcurl-errors.3 + │   │   │   ├── libcurl-multi.3 + │   │   │   ├── libcurl-security.3 + │   │   │   ├── libcurl-share.3 + │   │   │   ├── libcurl-symbols.3 + │   │   │   ├── libcurl-thread.3 + │   │   │   ├── libcurl-tutorial.3 + │   │   │   ├── libcurl-url.3 + │   │   │   └── libcurl-ws.3 + │   │   ├── swift + │   │   │   └── LICENSE.txt + │   │   └── vim + │   │   └── vim73 + │   │   ├── ftdetect + │   │   │   ├── sil.vim + │   │   │   ├── swiftgyb.vim + │   │   │   └── swift.vim + │   │   └── syntax + │   │   ├── sil.vim + │   │   ├── swiftgyb.vim + │   │   └── swift.vim + │   └── x86_64 + │   └── usr + │   ├── bin + │   │   ├── bssl + │   │   ├── curl-config + │   │   ├── plutil + │   │   ├── sdk-module-lists + │   │   │   ├── create-module-lists.sh + │   │   │   ├── fixed-clang-modules-appletvos.txt + │   │   │   ├── fixed-clang-modules-common.txt + │   │   │   ├── fixed-clang-modules-iosmac.txt + │   │   │   ├── fixed-clang-modules-iphoneos.txt + │   │   │   ├── fixed-clang-modules-macosx.txt + │   │   │   ├── fixed-clang-modules-watchos.txt + │   │   │   ├── fixed-swift-modules-appletvos.txt + │   │   │   ├── fixed-swift-modules-common.txt + │   │   │   ├── fixed-swift-modules-iosmac.txt + │   │   │   ├── fixed-swift-modules-iphoneos.txt + │   │   │   ├── fixed-swift-modules-macosx.txt + │   │   │   ├── fixed-swift-modules-watchos.txt + │   │   │   └── infer-imports.py + │   │   ├── swift-api-checker.py + │   │   ├── swift-api-dump.py + │   │   ├── xml2-config + │   │   ├── xmlcatalog + │   │   └── xmllint + │   ├── include + │   │   ├── curl + │   │   │   ├── curl.h + │   │   │   ├── curlver.h + │   │   │   ├── easy.h + │   │   │   ├── header.h + │   │   │   ├── mprintf.h + │   │   │   ├── multi.h + │   │   │   ├── options.h + │   │   │   ├── stdcheaders.h + │   │   │   ├── system.h + │   │   │   ├── typecheck-gcc.h + │   │   │   ├── urlapi.h + │   │   │   └── websockets.h + │   │   ├── libxml2 + │   │   │   └── libxml + │   │   │   ├── c14n.h + │   │   │   ├── catalog.h + │   │   │   ├── chvalid.h + │   │   │   ├── debugXML.h + │   │   │   ├── dict.h + │   │   │   ├── encoding.h + │   │   │   ├── entities.h + │   │   │   ├── globals.h + │   │   │   ├── hash.h + │   │   │   ├── HTMLparser.h + │   │   │   ├── HTMLtree.h + │   │   │   ├── list.h + │   │   │   ├── nanoftp.h + │   │   │   ├── nanohttp.h + │   │   │   ├── parser.h + │   │   │   ├── parserInternals.h + │   │   │   ├── pattern.h + │   │   │   ├── relaxng.h + │   │   │   ├── SAX2.h + │   │   │   ├── SAX.h + │   │   │   ├── schemasInternals.h + │   │   │   ├── schematron.h + │   │   │   ├── threads.h + │   │   │   ├── tree.h + │   │   │   ├── uri.h + │   │   │   ├── valid.h + │   │   │   ├── xinclude.h + │   │   │   ├── xlink.h + │   │   │   ├── xmlautomata.h + │   │   │   ├── xmlerror.h + │   │   │   ├── xmlexports.h + │   │   │   ├── xmlIO.h + │   │   │   ├── xmlmemory.h + │   │   │   ├── xmlmodule.h + │   │   │   ├── xmlreader.h + │   │   │   ├── xmlregexp.h + │   │   │   ├── xmlsave.h + │   │   │   ├── xmlschemas.h + │   │   │   ├── xmlschemastypes.h + │   │   │   ├── xmlstring.h + │   │   │   ├── xmlunicode.h + │   │   │   ├── xmlversion.h + │   │   │   ├── xmlwriter.h + │   │   │   ├── xpath.h + │   │   │   ├── xpathInternals.h + │   │   │   └── xpointer.h + │   │   ├── openssl + │   │   │   ├── aead.h + │   │   │   ├── aes.h + │   │   │   ├── arm_arch.h + │   │   │   ├── asn1.h + │   │   │   ├── asn1_mac.h + │   │   │   ├── asn1t.h + │   │   │   ├── base64.h + │   │   │   ├── base.h + │   │   │   ├── bio.h + │   │   │   ├── blake2.h + │   │   │   ├── blowfish.h + │   │   │   ├── bn.h + │   │   │   ├── buffer.h + │   │   │   ├── buf.h + │   │   │   ├── bytestring.h + │   │   │   ├── cast.h + │   │   │   ├── chacha.h + │   │   │   ├── cipher.h + │   │   │   ├── cmac.h + │   │   │   ├── conf.h + │   │   │   ├── cpu.h + │   │   │   ├── crypto.h + │   │   │   ├── ctrdrbg.h + │   │   │   ├── curve25519.h + │   │   │   ├── des.h + │   │   │   ├── dh.h + │   │   │   ├── digest.h + │   │   │   ├── dsa.h + │   │   │   ├── dtls1.h + │   │   │   ├── ecdh.h + │   │   │   ├── ecdsa.h + │   │   │   ├── ec.h + │   │   │   ├── ec_key.h + │   │   │   ├── engine.h + │   │   │   ├── e_os2.h + │   │   │   ├── err.h + │   │   │   ├── evp_errors.h + │   │   │   ├── evp.h + │   │   │   ├── ex_data.h + │   │   │   ├── hkdf.h + │   │   │   ├── hmac.h + │   │   │   ├── hpke.h + │   │   │   ├── hrss.h + │   │   │   ├── is_boringssl.h + │   │   │   ├── lhash.h + │   │   │   ├── md4.h + │   │   │   ├── md5.h + │   │   │   ├── mem.h + │   │   │   ├── nid.h + │   │   │   ├── objects.h + │   │   │   ├── obj.h + │   │   │   ├── obj_mac.h + │   │   │   ├── opensslconf.h + │   │   │   ├── opensslv.h + │   │   │   ├── ossl_typ.h + │   │   │   ├── pem.h + │   │   │   ├── pkcs12.h + │   │   │   ├── pkcs7.h + │   │   │   ├── pkcs8.h + │   │   │   ├── poly1305.h + │   │   │   ├── pool.h + │   │   │   ├── rand.h + │   │   │   ├── rc4.h + │   │   │   ├── ripemd.h + │   │   │   ├── rsa.h + │   │   │   ├── safestack.h + │   │   │   ├── service_indicator.h + │   │   │   ├── sha.h + │   │   │   ├── siphash.h + │   │   │   ├── span.h + │   │   │   ├── srtp.h + │   │   │   ├── ssl3.h + │   │   │   ├── ssl.h + │   │   │   ├── stack.h + │   │   │   ├── thread.h + │   │   │   ├── tls1.h + │   │   │   ├── trust_token.h + │   │   │   ├── type_check.h + │   │   │   ├── x509.h + │   │   │   ├── x509v3.h + │   │   │   └── x509_vfy.h + │   │   └── swift + │   │   ├── Runtime + │   │   │   └── CMakeConfig.h + │   │   └── SwiftRemoteMirror + │   │   ├── MemoryReaderInterface.h + │   │   ├── module.modulemap + │   │   ├── Platform.h + │   │   ├── SwiftRemoteMirror.h + │   │   └── SwiftRemoteMirrorTypes.h + │   ├── lib + │   │   ├── cmake + │   │   │   ├── CURL + │   │   │   │   ├── CURLConfig.cmake + │   │   │   │   ├── CURLConfigVersion.cmake + │   │   │   │   ├── CURLTargets.cmake + │   │   │   │   └── CURLTargets-release.cmake + │   │   │   ├── libxml2-2.12.7 + │   │   │   │   ├── libxml2-config.cmake + │   │   │   │   ├── libxml2-config-version.cmake + │   │   │   │   ├── libxml2-export.cmake + │   │   │   │   └── libxml2-export-release.cmake + │   │   │   └── OpenSSL + │   │   │   ├── OpenSSLConfig.cmake + │   │   │   ├── OpenSSLTargets.cmake + │   │   │   └── OpenSSLTargets-release.cmake + │   │   ├── libcrypto.a + │   │   ├── libcurl.a + │   │   ├── libssl.a + │   │   ├── libxml2.a + │   │   ├── pkgconfig + │   │   │   ├── libcurl.pc + │   │   │   └── libxml-2.0.pc + │   │   ├── swift + │   │   │   ├── android + │   │   │   │   ├── Android.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _Builtin_float.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _Concurrency.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── CxxStdlib.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Cxx.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _Differentiation.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Distributed.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _FoundationCollections.swiftmodule + │   │   │   │   │   ├── x86_64.swiftdoc + │   │   │   │   │   └── x86_64.swiftmodule + │   │   │   │   ├── FoundationEssentials.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── FoundationInternationalization.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── FoundationNetworking.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Foundation.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── FoundationXML.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── libBlocksRuntime.so + │   │   │   │   ├── libcxxshim.h + │   │   │   │   ├── libcxxshim.modulemap + │   │   │   │   ├── libcxxstdlibshim.h + │   │   │   │   ├── libdispatch.so + │   │   │   │   ├── libFoundationEssentials.so + │   │   │   │   ├── lib_FoundationICU.so + │   │   │   │   ├── libFoundationInternationalization.so + │   │   │   │   ├── libFoundationNetworking.so + │   │   │   │   ├── libFoundation.so + │   │   │   │   ├── libFoundationXML.so + │   │   │   │   ├── libswiftAndroid.so + │   │   │   │   ├── libswift_Builtin_float.so + │   │   │   │   ├── libswift_Concurrency.so + │   │   │   │   ├── libswiftCore.so + │   │   │   │   ├── libswiftCxx.a + │   │   │   │   ├── libswiftCxxStdlib.a + │   │   │   │   ├── libswift_Differentiation.so + │   │   │   │   ├── libswiftDispatch.so + │   │   │   │   ├── libswiftDistributed.so + │   │   │   │   ├── libswift_math.so + │   │   │   │   ├── libswiftObservation.so + │   │   │   │   ├── libswiftRegexBuilder.so + │   │   │   │   ├── libswift_RegexParser.so + │   │   │   │   ├── libswiftRemoteMirror.so + │   │   │   │   ├── libswift_StringProcessing.so + │   │   │   │   ├── libswiftSwiftOnoneSupport.so + │   │   │   │   ├── libswiftSynchronization.so + │   │   │   │   ├── libswift_Volatile.so + │   │   │   │   ├── libXCTest.so + │   │   │   │   ├── _math.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Observation.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── RegexBuilder.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _RegexParser.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _StringProcessing.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── SwiftOnoneSupport.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Swift.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── Synchronization.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   ├── _Volatile.swiftmodule + │   │   │   │   │   ├── x86_64-unknown-linux-android.abi.json + │   │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   │   └── x86_64 + │   │   │   │   ├── android.modulemap + │   │   │   │   ├── Dispatch.swiftdoc + │   │   │   │   ├── Dispatch.swiftmodule + │   │   │   │   ├── SwiftAndroidNDK.h + │   │   │   │   ├── SwiftBionic.h + │   │   │   │   ├── swiftrt.o + │   │   │   │   ├── XCTest.swiftdoc + │   │   │   │   └── XCTest.swiftmodule + │   │   │   ├── apinotes + │   │   │   │   ├── posix_filesystem.apinotes + │   │   │   │   └── std.apinotes + │   │   │   ├── Block + │   │   │   │   └── Block.h + │   │   │   ├── clang + │   │   │   │   ├── bin + │   │   │   │   │   └── hwasan_symbolize + │   │   │   │   ├── include + │   │   │   │   │   ├── adcintrin.h + │   │   │   │   │   ├── adxintrin.h + │   │   │   │   │   ├── altivec.h + │   │   │   │   │   ├── ammintrin.h + │   │   │   │   │   ├── amxcomplexintrin.h + │   │   │   │   │   ├── amxfp16intrin.h + │   │   │   │   │   ├── amxintrin.h + │   │   │   │   │   ├── arm64intr.h + │   │   │   │   │   ├── arm_acle.h + │   │   │   │   │   ├── arm_bf16.h + │   │   │   │   │   ├── arm_cde.h + │   │   │   │   │   ├── arm_cmse.h + │   │   │   │   │   ├── arm_fp16.h + │   │   │   │   │   ├── armintr.h + │   │   │   │   │   ├── arm_mve.h + │   │   │   │   │   ├── arm_neon.h + │   │   │   │   │   ├── arm_neon_sve_bridge.h + │   │   │   │   │   ├── arm_sme.h + │   │   │   │   │   ├── arm_sve.h + │   │   │   │   │   ├── arm_vector_types.h + │   │   │   │   │   ├── avx2intrin.h + │   │   │   │   │   ├── avx512bf16intrin.h + │   │   │   │   │   ├── avx512bitalgintrin.h + │   │   │   │   │   ├── avx512bwintrin.h + │   │   │   │   │   ├── avx512cdintrin.h + │   │   │   │   │   ├── avx512dqintrin.h + │   │   │   │   │   ├── avx512fintrin.h + │   │   │   │   │   ├── avx512fp16intrin.h + │   │   │   │   │   ├── avx512ifmaintrin.h + │   │   │   │   │   ├── avx512ifmavlintrin.h + │   │   │   │   │   ├── avx512vbmi2intrin.h + │   │   │   │   │   ├── avx512vbmiintrin.h + │   │   │   │   │   ├── avx512vbmivlintrin.h + │   │   │   │   │   ├── avx512vlbf16intrin.h + │   │   │   │   │   ├── avx512vlbitalgintrin.h + │   │   │   │   │   ├── avx512vlbwintrin.h + │   │   │   │   │   ├── avx512vlcdintrin.h + │   │   │   │   │   ├── avx512vldqintrin.h + │   │   │   │   │   ├── avx512vlfp16intrin.h + │   │   │   │   │   ├── avx512vlintrin.h + │   │   │   │   │   ├── avx512vlvbmi2intrin.h + │   │   │   │   │   ├── avx512vlvnniintrin.h + │   │   │   │   │   ├── avx512vlvp2intersectintrin.h + │   │   │   │   │   ├── avx512vnniintrin.h + │   │   │   │   │   ├── avx512vp2intersectintrin.h + │   │   │   │   │   ├── avx512vpopcntdqintrin.h + │   │   │   │   │   ├── avx512vpopcntdqvlintrin.h + │   │   │   │   │   ├── avxifmaintrin.h + │   │   │   │   │   ├── avxintrin.h + │   │   │   │   │   ├── avxneconvertintrin.h + │   │   │   │   │   ├── avxvnniint16intrin.h + │   │   │   │   │   ├── avxvnniint8intrin.h + │   │   │   │   │   ├── avxvnniintrin.h + │   │   │   │   │   ├── bmi2intrin.h + │   │   │   │   │   ├── bmiintrin.h + │   │   │   │   │   ├── builtins.h + │   │   │   │   │   ├── cet.h + │   │   │   │   │   ├── cetintrin.h + │   │   │   │   │   ├── __clang_cuda_builtin_vars.h + │   │   │   │   │   ├── __clang_cuda_cmath.h + │   │   │   │   │   ├── __clang_cuda_complex_builtins.h + │   │   │   │   │   ├── __clang_cuda_device_functions.h + │   │   │   │   │   ├── __clang_cuda_intrinsics.h + │   │   │   │   │   ├── __clang_cuda_libdevice_declares.h + │   │   │   │   │   ├── __clang_cuda_math_forward_declares.h + │   │   │   │   │   ├── __clang_cuda_math.h + │   │   │   │   │   ├── __clang_cuda_runtime_wrapper.h + │   │   │   │   │   ├── __clang_cuda_texture_intrinsics.h + │   │   │   │   │   ├── __clang_hip_cmath.h + │   │   │   │   │   ├── __clang_hip_libdevice_declares.h + │   │   │   │   │   ├── __clang_hip_math.h + │   │   │   │   │   ├── __clang_hip_runtime_wrapper.h + │   │   │   │   │   ├── __clang_hip_stdlib.h + │   │   │   │   │   ├── cldemoteintrin.h + │   │   │   │   │   ├── clflushoptintrin.h + │   │   │   │   │   ├── clwbintrin.h + │   │   │   │   │   ├── clzerointrin.h + │   │   │   │   │   ├── cmpccxaddintrin.h + │   │   │   │   │   ├── cpuid.h + │   │   │   │   │   ├── crc32intrin.h + │   │   │   │   │   ├── cuda_wrappers + │   │   │   │   │   │   ├── algorithm + │   │   │   │   │   │   ├── bits + │   │   │   │   │   │   │   ├── basic_string.h + │   │   │   │   │   │   │   ├── basic_string.tcc + │   │   │   │   │   │   │   └── shared_ptr_base.h + │   │   │   │   │   │   ├── cmath + │   │   │   │   │   │   ├── complex + │   │   │   │   │   │   └── new + │   │   │   │   │   ├── emmintrin.h + │   │   │   │   │   ├── enqcmdintrin.h + │   │   │   │   │   ├── f16cintrin.h + │   │   │   │   │   ├── float.h + │   │   │   │   │   ├── fma4intrin.h + │   │   │   │   │   ├── fmaintrin.h + │   │   │   │   │   ├── fuzzer + │   │   │   │   │   │   └── FuzzedDataProvider.h + │   │   │   │   │   ├── fxsrintrin.h + │   │   │   │   │   ├── gfniintrin.h + │   │   │   │   │   ├── hexagon_circ_brev_intrinsics.h + │   │   │   │   │   ├── hexagon_protos.h + │   │   │   │   │   ├── hexagon_types.h + │   │   │   │   │   ├── hresetintrin.h + │   │   │   │   │   ├── htmintrin.h + │   │   │   │   │   ├── htmxlintrin.h + │   │   │   │   │   ├── hvx_hexagon_protos.h + │   │   │   │   │   ├── ia32intrin.h + │   │   │   │   │   ├── immintrin.h + │   │   │   │   │   ├── intrin0.h + │   │   │   │   │   ├── intrin.h + │   │   │   │   │   ├── inttypes.h + │   │   │   │   │   ├── invpcidintrin.h + │   │   │   │   │   ├── iso646.h + │   │   │   │   │   ├── keylockerintrin.h + │   │   │   │   │   ├── larchintrin.h + │   │   │   │   │   ├── lasxintrin.h + │   │   │   │   │   ├── limits.h + │   │   │   │   │   ├── llvm_libc_wrappers + │   │   │   │   │   │   ├── assert.h + │   │   │   │   │   │   ├── ctype.h + │   │   │   │   │   │   ├── inttypes.h + │   │   │   │   │   │   ├── stdio.h + │   │   │   │   │   │   ├── stdlib.h + │   │   │   │   │   │   ├── string.h + │   │   │   │   │   │   └── time.h + │   │   │   │   │   ├── lsxintrin.h + │   │   │   │   │   ├── lwpintrin.h + │   │   │   │   │   ├── lzcntintrin.h + │   │   │   │   │   ├── mm3dnow.h + │   │   │   │   │   ├── mmintrin.h + │   │   │   │   │   ├── mm_malloc.h + │   │   │   │   │   ├── module.modulemap + │   │   │   │   │   ├── movdirintrin.h + │   │   │   │   │   ├── msa.h + │   │   │   │   │   ├── mwaitxintrin.h + │   │   │   │   │   ├── nmmintrin.h + │   │   │   │   │   ├── opencl-c-base.h + │   │   │   │   │   ├── opencl-c.h + │   │   │   │   │   ├── openmp_wrappers + │   │   │   │   │   │   ├── __clang_openmp_device_functions.h + │   │   │   │   │   │   ├── cmath + │   │   │   │   │   │   ├── complex + │   │   │   │   │   │   ├── complex_cmath.h + │   │   │   │   │   │   ├── complex.h + │   │   │   │   │   │   ├── math.h + │   │   │   │   │   │   └── new + │   │   │   │   │   ├── orc + │   │   │   │   │   │   └── c_api.h + │   │   │   │   │   ├── pconfigintrin.h + │   │   │   │   │   ├── pkuintrin.h + │   │   │   │   │   ├── pmmintrin.h + │   │   │   │   │   ├── popcntintrin.h + │   │   │   │   │   ├── ppc_wrappers + │   │   │   │   │   │   ├── bmi2intrin.h + │   │   │   │   │   │   ├── bmiintrin.h + │   │   │   │   │   │   ├── emmintrin.h + │   │   │   │   │   │   ├── immintrin.h + │   │   │   │   │   │   ├── mmintrin.h + │   │   │   │   │   │   ├── mm_malloc.h + │   │   │   │   │   │   ├── nmmintrin.h + │   │   │   │   │   │   ├── pmmintrin.h + │   │   │   │   │   │   ├── smmintrin.h + │   │   │   │   │   │   ├── tmmintrin.h + │   │   │   │   │   │   ├── x86gprintrin.h + │   │   │   │   │   │   ├── x86intrin.h + │   │   │   │   │   │   └── xmmintrin.h + │   │   │   │   │   ├── prfchiintrin.h + │   │   │   │   │   ├── prfchwintrin.h + │   │   │   │   │   ├── profile + │   │   │   │   │   │   ├── InstrProfData.inc + │   │   │   │   │   │   └── instr_prof_interface.h + │   │   │   │   │   ├── ptrauth.h + │   │   │   │   │   ├── ptwriteintrin.h + │   │   │   │   │   ├── raointintrin.h + │   │   │   │   │   ├── rdpruintrin.h + │   │   │   │   │   ├── rdseedintrin.h + │   │   │   │   │   ├── riscv_bitmanip.h + │   │   │   │   │   ├── riscv_crypto.h + │   │   │   │   │   ├── riscv_ntlh.h + │   │   │   │   │   ├── riscv_vector.h + │   │   │   │   │   ├── rtmintrin.h + │   │   │   │   │   ├── s390intrin.h + │   │   │   │   │   ├── sanitizer + │   │   │   │   │   │   ├── allocator_interface.h + │   │   │   │   │   │   ├── asan_interface.h + │   │   │   │   │   │   ├── common_interface_defs.h + │   │   │   │   │   │   ├── coverage_interface.h + │   │   │   │   │   │   ├── dfsan_interface.h + │   │   │   │   │   │   ├── hwasan_interface.h + │   │   │   │   │   │   ├── linux_syscall_hooks.h + │   │   │   │   │   │   ├── lsan_interface.h + │   │   │   │   │   │   ├── memprof_interface.h + │   │   │   │   │   │   ├── msan_interface.h + │   │   │   │   │   │   ├── netbsd_syscall_hooks.h + │   │   │   │   │   │   ├── scudo_interface.h + │   │   │   │   │   │   ├── tsan_interface_atomic.h + │   │   │   │   │   │   ├── tsan_interface.h + │   │   │   │   │   │   └── ubsan_interface.h + │   │   │   │   │   ├── serializeintrin.h + │   │   │   │   │   ├── sgxintrin.h + │   │   │   │   │   ├── sha512intrin.h + │   │   │   │   │   ├── shaintrin.h + │   │   │   │   │   ├── sifive_vector.h + │   │   │   │   │   ├── sm3intrin.h + │   │   │   │   │   ├── sm4intrin.h + │   │   │   │   │   ├── smmintrin.h + │   │   │   │   │   ├── stdalign.h + │   │   │   │   │   ├── __stdarg___gnuc_va_list.h + │   │   │   │   │   ├── stdarg.h + │   │   │   │   │   ├── __stdarg_header_macro.h + │   │   │   │   │   ├── __stdarg_va_arg.h + │   │   │   │   │   ├── __stdarg___va_copy.h + │   │   │   │   │   ├── __stdarg_va_copy.h + │   │   │   │   │   ├── __stdarg_va_list.h + │   │   │   │   │   ├── stdatomic.h + │   │   │   │   │   ├── stdbool.h + │   │   │   │   │   ├── stdckdint.h + │   │   │   │   │   ├── stddef.h + │   │   │   │   │   ├── __stddef_header_macro.h + │   │   │   │   │   ├── __stddef_max_align_t.h + │   │   │   │   │   ├── __stddef_null.h + │   │   │   │   │   ├── __stddef_nullptr_t.h + │   │   │   │   │   ├── __stddef_offsetof.h + │   │   │   │   │   ├── __stddef_ptrdiff_t.h + │   │   │   │   │   ├── __stddef_rsize_t.h + │   │   │   │   │   ├── __stddef_size_t.h + │   │   │   │   │   ├── __stddef_unreachable.h + │   │   │   │   │   ├── __stddef_wchar_t.h + │   │   │   │   │   ├── __stddef_wint_t.h + │   │   │   │   │   ├── stdint.h + │   │   │   │   │   ├── stdnoreturn.h + │   │   │   │   │   ├── tbmintrin.h + │   │   │   │   │   ├── tgmath.h + │   │   │   │   │   ├── tmmintrin.h + │   │   │   │   │   ├── tsxldtrkintrin.h + │   │   │   │   │   ├── uintrintrin.h + │   │   │   │   │   ├── unwind.h + │   │   │   │   │   ├── usermsrintrin.h + │   │   │   │   │   ├── vadefs.h + │   │   │   │   │   ├── vaesintrin.h + │   │   │   │   │   ├── varargs.h + │   │   │   │   │   ├── vecintrin.h + │   │   │   │   │   ├── velintrin_approx.h + │   │   │   │   │   ├── velintrin_gen.h + │   │   │   │   │   ├── velintrin.h + │   │   │   │   │   ├── vpclmulqdqintrin.h + │   │   │   │   │   ├── waitpkgintrin.h + │   │   │   │   │   ├── wasm_simd128.h + │   │   │   │   │   ├── wbnoinvdintrin.h + │   │   │   │   │   ├── __wmmintrin_aes.h + │   │   │   │   │   ├── wmmintrin.h + │   │   │   │   │   ├── __wmmintrin_pclmul.h + │   │   │   │   │   ├── x86gprintrin.h + │   │   │   │   │   ├── x86intrin.h + │   │   │   │   │   ├── xmmintrin.h + │   │   │   │   │   ├── xopintrin.h + │   │   │   │   │   ├── xray + │   │   │   │   │   │   ├── xray_interface.h + │   │   │   │   │   │   ├── xray_log_interface.h + │   │   │   │   │   │   └── xray_records.h + │   │   │   │   │   ├── xsavecintrin.h + │   │   │   │   │   ├── xsaveintrin.h + │   │   │   │   │   ├── xsaveoptintrin.h + │   │   │   │   │   ├── xsavesintrin.h + │   │   │   │   │   ├── xtestintrin.h + │   │   │   │   │   ├── yvals_core.h + │   │   │   │   │   └── zos_wrappers + │   │   │   │   │   └── builtins.h + │   │   │   │   ├── lib + │   │   │   │   │   └── linux + │   │   │   │   │   ├── clang_rt.crtbegin-x86_64.o + │   │   │   │   │   ├── clang_rt.crtend-x86_64.o + │   │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.asan-preinit-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan_static-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan-x86_64.a + │   │   │   │   │   ├── libclang_rt.asan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.asan-x86_64.so + │   │   │   │   │   ├── libclang_rt.builtins-x86_64.a + │   │   │   │   │   ├── libclang_rt.cfi_diag-x86_64.a + │   │   │   │   │   ├── libclang_rt.cfi-x86_64.a + │   │   │   │   │   ├── libclang_rt.ctx_profile-x86_64.a + │   │   │   │   │   ├── libclang_rt.dd-x86_64.a + │   │   │   │   │   ├── libclang_rt.dfsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.dfsan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.dyndd-x86_64.so + │   │   │   │   │   ├── libclang_rt.fuzzer_interceptors-x86_64.a + │   │   │   │   │   ├── libclang_rt.fuzzer_no_main-x86_64.a + │   │   │   │   │   ├── libclang_rt.fuzzer-x86_64.a + │   │   │   │   │   ├── libclang_rt.gwp_asan-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.so + │   │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan-preinit-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.a + │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.hwasan-x86_64.so + │   │   │   │   │   ├── libclang_rt.lsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.memprof-preinit-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof-x86_64.a + │   │   │   │   │   ├── libclang_rt.memprof-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.memprof-x86_64.so + │   │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.msan-x86_64.a + │   │   │   │   │   ├── libclang_rt.msan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.nsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.nsan-x86_64.so + │   │   │   │   │   ├── libclang_rt.profile-x86_64.a + │   │   │   │   │   ├── libclang_rt.rtsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.safestack-x86_64.a + │   │   │   │   │   ├── libclang_rt.scudo_standalone_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.a + │   │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.so + │   │   │   │   │   ├── libclang_rt.stats_client-x86_64.a + │   │   │   │   │   ├── libclang_rt.stats-x86_64.a + │   │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.tsan-x86_64.a + │   │   │   │   │   ├── libclang_rt.tsan-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.tsan-x86_64.so + │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a + │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.so + │   │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a + │   │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a + │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a.syms + │   │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.so + │   │   │   │   │   ├── libclang_rt.xray-basic-x86_64.a + │   │   │   │   │   ├── libclang_rt.xray-fdr-x86_64.a + │   │   │   │   │   ├── libclang_rt.xray-profiling-x86_64.a + │   │   │   │   │   ├── libclang_rt.xray-x86_64.a + │   │   │   │   │   └── liborc_rt-x86_64.a + │   │   │   │   └── share + │   │   │   │   ├── asan_ignorelist.txt + │   │   │   │   ├── cfi_ignorelist.txt + │   │   │   │   ├── dfsan_abilist.txt + │   │   │   │   ├── hwasan_ignorelist.txt + │   │   │   │   └── msan_ignorelist.txt + │   │   │   ├── CoreFoundation + │   │   │   │   ├── CFArray.h + │   │   │   │   ├── CFAttributedString.h + │   │   │   │   ├── CFAttributedStringPriv.h + │   │   │   │   ├── CFAvailability.h + │   │   │   │   ├── CFBag.h + │   │   │   │   ├── CFBase.h + │   │   │   │   ├── CFBigNumber.h + │   │   │   │   ├── CFBinaryHeap.h + │   │   │   │   ├── CFBitVector.h + │   │   │   │   ├── CFBundle_BinaryTypes.h + │   │   │   │   ├── CFBundle.h + │   │   │   │   ├── CFBundlePriv.h + │   │   │   │   ├── CFBurstTrie.h + │   │   │   │   ├── CFByteOrder.h + │   │   │   │   ├── CFCalendar.h + │   │   │   │   ├── CFCalendarPriv.h + │   │   │   │   ├── CFCharacterSet.h + │   │   │   │   ├── CFCharacterSetPriv.h + │   │   │   │   ├── CFConstantKeys.h + │   │   │   │   ├── CFData.h + │   │   │   │   ├── CFDateComponents.h + │   │   │   │   ├── CFDateFormatter.h + │   │   │   │   ├── CFDateFormatter_Private.h + │   │   │   │   ├── CFDate.h + │   │   │   │   ├── CFDateIntervalFormatter.h + │   │   │   │   ├── CFDateInterval.h + │   │   │   │   ├── CFDictionary.h + │   │   │   │   ├── CFError.h + │   │   │   │   ├── CFError_Private.h + │   │   │   │   ├── CFKnownLocations.h + │   │   │   │   ├── CFListFormatter.h + │   │   │   │   ├── CFLocale.h + │   │   │   │   ├── CFLocale_Private.h + │   │   │   │   ├── CFLocking.h + │   │   │   │   ├── CFLogUtilities.h + │   │   │   │   ├── CFMachPort.h + │   │   │   │   ├── CFMessagePort.h + │   │   │   │   ├── CFNotificationCenter.h + │   │   │   │   ├── CFNumberFormatter.h + │   │   │   │   ├── CFNumber.h + │   │   │   │   ├── CFNumber_Private.h + │   │   │   │   ├── CFOverflow.h + │   │   │   │   ├── CFPlugInCOM.h + │   │   │   │   ├── CFPlugIn.h + │   │   │   │   ├── CFPreferences.h + │   │   │   │   ├── CFPriv.h + │   │   │   │   ├── CFPropertyList.h + │   │   │   │   ├── CFPropertyList_Private.h + │   │   │   │   ├── CFRegularExpression.h + │   │   │   │   ├── CFRelativeDateTimeFormatter.h + │   │   │   │   ├── CFRunArray.h + │   │   │   │   ├── CFRunLoop.h + │   │   │   │   ├── CFRuntime.h + │   │   │   │   ├── CFSet.h + │   │   │   │   ├── CFSocket.h + │   │   │   │   ├── CFStorage.h + │   │   │   │   ├── CFStreamAbstract.h + │   │   │   │   ├── CFStream.h + │   │   │   │   ├── CFStreamPriv.h + │   │   │   │   ├── CFStringDefaultEncoding.h + │   │   │   │   ├── CFStringEncodingConverterExt.h + │   │   │   │   ├── CFStringEncodingConverter.h + │   │   │   │   ├── CFStringEncodingConverterPriv.h + │   │   │   │   ├── CFStringEncodingDatabase.h + │   │   │   │   ├── CFStringEncodingExt.h + │   │   │   │   ├── CFString.h + │   │   │   │   ├── CFString_Private.h + │   │   │   │   ├── CFTargetConditionals.h + │   │   │   │   ├── CFTimeZone.h + │   │   │   │   ├── CFTree.h + │   │   │   │   ├── CFUniChar.h + │   │   │   │   ├── CFUnicodeDecomposition.h + │   │   │   │   ├── CFUnicodePrecomposition.h + │   │   │   │   ├── CFURLAccess.h + │   │   │   │   ├── CFURLComponents.h + │   │   │   │   ├── CFURL.h + │   │   │   │   ├── CFURLPriv.h + │   │   │   │   ├── CFUserNotification.h + │   │   │   │   ├── CFUtilities.h + │   │   │   │   ├── CFUUID.h + │   │   │   │   ├── CoreFoundation.h + │   │   │   │   ├── ForFoundationOnly.h + │   │   │   │   ├── ForSwiftFoundationOnly.h + │   │   │   │   ├── module.modulemap + │   │   │   │   └── static-module.map + │   │   │   ├── dispatch + │   │   │   │   ├── base.h + │   │   │   │   ├── block.h + │   │   │   │   ├── data.h + │   │   │   │   ├── dispatch.h + │   │   │   │   ├── group.h + │   │   │   │   ├── introspection.h + │   │   │   │   ├── io.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── object.h + │   │   │   │   ├── once.h + │   │   │   │   ├── queue.h + │   │   │   │   ├── semaphore.h + │   │   │   │   ├── source.h + │   │   │   │   └── time.h + │   │   │   ├── _FoundationCShims + │   │   │   │   ├── bplist_shims.h + │   │   │   │   ├── CFUniCharBitmapData.h + │   │   │   │   ├── CFUniCharBitmapData.inc.h + │   │   │   │   ├── _CShimsMacros.h + │   │   │   │   ├── _CShimsTargetConditionals.h + │   │   │   │   ├── _CStdlib.h + │   │   │   │   ├── filemanager_shims.h + │   │   │   │   ├── _FoundationCShims.h + │   │   │   │   ├── io_shims.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── platform_shims.h + │   │   │   │   ├── string_shims.h + │   │   │   │   └── uuid.h + │   │   │   ├── _foundation_unicode + │   │   │   │   ├── alphaindex.h + │   │   │   │   ├── appendable.h + │   │   │   │   ├── basictz.h + │   │   │   │   ├── brkiter.h + │   │   │   │   ├── bytestream.h + │   │   │   │   ├── bytestriebuilder.h + │   │   │   │   ├── bytestrie.h + │   │   │   │   ├── calendar.h + │   │   │   │   ├── caniter.h + │   │   │   │   ├── casemap.h + │   │   │   │   ├── char16ptr.h + │   │   │   │   ├── chariter.h + │   │   │   │   ├── choicfmt.h + │   │   │   │   ├── coleitr.h + │   │   │   │   ├── coll.h + │   │   │   │   ├── compactdecimalformat.h + │   │   │   │   ├── curramt.h + │   │   │   │   ├── currpinf.h + │   │   │   │   ├── currunit.h + │   │   │   │   ├── datefmt.h + │   │   │   │   ├── dbbi.h + │   │   │   │   ├── dcfmtsym.h + │   │   │   │   ├── decimfmt.h + │   │   │   │   ├── displayoptions.h + │   │   │   │   ├── docmain.h + │   │   │   │   ├── dtfmtsym.h + │   │   │   │   ├── dtintrv.h + │   │   │   │   ├── dtitvfmt.h + │   │   │   │   ├── dtitvinf.h + │   │   │   │   ├── dtptngen.h + │   │   │   │   ├── dtrule.h + │   │   │   │   ├── edits.h + │   │   │   │   ├── enumset.h + │   │   │   │   ├── errorcode.h + │   │   │   │   ├── fieldpos.h + │   │   │   │   ├── filteredbrk.h + │   │   │   │   ├── fmtable.h + │   │   │   │   ├── format.h + │   │   │   │   ├── formattednumber.h + │   │   │   │   ├── formattedvalue.h + │   │   │   │   ├── fpositer.h + │   │   │   │   ├── gender.h + │   │   │   │   ├── gregocal.h + │   │   │   │   ├── icudataver.h + │   │   │   │   ├── icuplug.h + │   │   │   │   ├── idna.h + │   │   │   │   ├── listformatter.h + │   │   │   │   ├── localebuilder.h + │   │   │   │   ├── localematcher.h + │   │   │   │   ├── localpointer.h + │   │   │   │   ├── locdspnm.h + │   │   │   │   ├── locid.h + │   │   │   │   ├── measfmt.h + │   │   │   │   ├── measunit.h + │   │   │   │   ├── measure.h + │   │   │   │   ├── messagepattern.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── msgfmt.h + │   │   │   │   ├── normalizer2.h + │   │   │   │   ├── normlzr.h + │   │   │   │   ├── nounit.h + │   │   │   │   ├── numberformatter.h + │   │   │   │   ├── numberrangeformatter.h + │   │   │   │   ├── numfmt.h + │   │   │   │   ├── numsys.h + │   │   │   │   ├── parseerr.h + │   │   │   │   ├── parsepos.h + │   │   │   │   ├── platform.h + │   │   │   │   ├── plurfmt.h + │   │   │   │   ├── plurrule.h + │   │   │   │   ├── ptypes.h + │   │   │   │   ├── putil.h + │   │   │   │   ├── rbbi.h + │   │   │   │   ├── rbnf.h + │   │   │   │   ├── rbtz.h + │   │   │   │   ├── regex.h + │   │   │   │   ├── region.h + │   │   │   │   ├── reldatefmt.h + │   │   │   │   ├── rep.h + │   │   │   │   ├── resbund.h + │   │   │   │   ├── schriter.h + │   │   │   │   ├── scientificnumberformatter.h + │   │   │   │   ├── search.h + │   │   │   │   ├── selfmt.h + │   │   │   │   ├── simpleformatter.h + │   │   │   │   ├── simplenumberformatter.h + │   │   │   │   ├── simpletz.h + │   │   │   │   ├── smpdtfmt.h + │   │   │   │   ├── sortkey.h + │   │   │   │   ├── std_string.h + │   │   │   │   ├── strenum.h + │   │   │   │   ├── stringoptions.h + │   │   │   │   ├── stringpiece.h + │   │   │   │   ├── stringtriebuilder.h + │   │   │   │   ├── stsearch.h + │   │   │   │   ├── symtable.h + │   │   │   │   ├── tblcoll.h + │   │   │   │   ├── timezone.h + │   │   │   │   ├── tmunit.h + │   │   │   │   ├── tmutamt.h + │   │   │   │   ├── tmutfmt.h + │   │   │   │   ├── translit.h + │   │   │   │   ├── tzfmt.h + │   │   │   │   ├── tznames.h + │   │   │   │   ├── tzrule.h + │   │   │   │   ├── tztrans.h + │   │   │   │   ├── ualoc.h + │   │   │   │   ├── uameasureformat.h + │   │   │   │   ├── uameasureunit.h + │   │   │   │   ├── uatimeunitformat.h + │   │   │   │   ├── ubidi.h + │   │   │   │   ├── ubiditransform.h + │   │   │   │   ├── ubrk.h + │   │   │   │   ├── ucal.h + │   │   │   │   ├── ucasemap.h + │   │   │   │   ├── ucat.h + │   │   │   │   ├── uchar.h + │   │   │   │   ├── ucharstriebuilder.h + │   │   │   │   ├── ucharstrie.h + │   │   │   │   ├── uchriter.h + │   │   │   │   ├── uclean.h + │   │   │   │   ├── ucnv_cb.h + │   │   │   │   ├── ucnv_err.h + │   │   │   │   ├── ucnv.h + │   │   │   │   ├── ucnvsel.h + │   │   │   │   ├── ucoleitr.h + │   │   │   │   ├── ucol.h + │   │   │   │   ├── uconfig.h + │   │   │   │   ├── ucpmap.h + │   │   │   │   ├── ucptrie.h + │   │   │   │   ├── ucsdet.h + │   │   │   │   ├── ucurr.h + │   │   │   │   ├── udata.h + │   │   │   │   ├── udateintervalformat.h + │   │   │   │   ├── udat.h + │   │   │   │   ├── udatintv.h + │   │   │   │   ├── udatpg.h + │   │   │   │   ├── udisplaycontext.h + │   │   │   │   ├── udisplayoptions.h + │   │   │   │   ├── uenum.h + │   │   │   │   ├── ufieldpositer.h + │   │   │   │   ├── uformattable.h + │   │   │   │   ├── uformattednumber.h + │   │   │   │   ├── uformattedvalue.h + │   │   │   │   ├── ugender.h + │   │   │   │   ├── uidna.h + │   │   │   │   ├── uiter.h + │   │   │   │   ├── uldnames.h + │   │   │   │   ├── ulistformatter.h + │   │   │   │   ├── ulocale.h + │   │   │   │   ├── ulocbuilder.h + │   │   │   │   ├── ulocdata.h + │   │   │   │   ├── uloc.h + │   │   │   │   ├── umachine.h + │   │   │   │   ├── umisc.h + │   │   │   │   ├── umsg.h + │   │   │   │   ├── umutablecptrie.h + │   │   │   │   ├── unifilt.h + │   │   │   │   ├── unifunct.h + │   │   │   │   ├── unimatch.h + │   │   │   │   ├── unirepl.h + │   │   │   │   ├── uniset.h + │   │   │   │   ├── unistr.h + │   │   │   │   ├── unorm2.h + │   │   │   │   ├── unorm.h + │   │   │   │   ├── unumberformatter.h + │   │   │   │   ├── unumberoptions.h + │   │   │   │   ├── unumberrangeformatter.h + │   │   │   │   ├── unum.h + │   │   │   │   ├── unumsys.h + │   │   │   │   ├── uobject.h + │   │   │   │   ├── uplrule.h + │   │   │   │   ├── upluralrules.h + │   │   │   │   ├── urbtok.h + │   │   │   │   ├── uregex.h + │   │   │   │   ├── uregion.h + │   │   │   │   ├── ureldatefmt.h + │   │   │   │   ├── urename.h + │   │   │   │   ├── urep.h + │   │   │   │   ├── ures.h + │   │   │   │   ├── uscript.h + │   │   │   │   ├── usearch.h + │   │   │   │   ├── uset.h + │   │   │   │   ├── usetiter.h + │   │   │   │   ├── ushape.h + │   │   │   │   ├── usimplenumberformatter.h + │   │   │   │   ├── uspoof.h + │   │   │   │   ├── usprep.h + │   │   │   │   ├── ustdio.h + │   │   │   │   ├── ustream.h + │   │   │   │   ├── ustring.h + │   │   │   │   ├── ustringtrie.h + │   │   │   │   ├── utext.h + │   │   │   │   ├── utf16.h + │   │   │   │   ├── utf32.h + │   │   │   │   ├── utf8.h + │   │   │   │   ├── utf.h + │   │   │   │   ├── utf_old.h + │   │   │   │   ├── utmscale.h + │   │   │   │   ├── utrace.h + │   │   │   │   ├── utrans.h + │   │   │   │   ├── utypes.h + │   │   │   │   ├── uvernum.h + │   │   │   │   ├── uversion.h + │   │   │   │   └── vtzone.h + │   │   │   ├── FrameworkABIBaseline + │   │   │   │   ├── _Concurrency + │   │   │   │   │   └── ABI + │   │   │   │   │   └── macos.json + │   │   │   │   ├── nil.json + │   │   │   │   ├── README + │   │   │   │   └── Swift + │   │   │   │   ├── ABI + │   │   │   │   │   └── macos.json + │   │   │   │   └── API + │   │   │   │   └── macos.json + │   │   │   ├── os + │   │   │   │   ├── generic_base.h + │   │   │   │   ├── generic_unix_base.h + │   │   │   │   ├── generic_win_base.h + │   │   │   │   └── object.h + │   │   │   └── shims + │   │   │   ├── AssertionReporting.h + │   │   │   ├── CoreFoundationShims.h + │   │   │   ├── EmbeddedShims.h + │   │   │   ├── FoundationShims.h + │   │   │   ├── GlobalObjects.h + │   │   │   ├── HeapObject.h + │   │   │   ├── KeyPath.h + │   │   │   ├── LibcOverlayShims.h + │   │   │   ├── LibcShims.h + │   │   │   ├── MetadataSections.h + │   │   │   ├── module.modulemap + │   │   │   ├── Random.h + │   │   │   ├── RefCount.h + │   │   │   ├── Reflection.h + │   │   │   ├── RuntimeShims.h + │   │   │   ├── RuntimeStubs.h + │   │   │   ├── _SwiftConcurrency.h + │   │   │   ├── _SwiftDistributed.h + │   │   │   ├── SwiftStdbool.h + │   │   │   ├── SwiftStddef.h + │   │   │   ├── SwiftStdint.h + │   │   │   ├── _SynchronizationShims.h + │   │   │   ├── System.h + │   │   │   ├── Target.h + │   │   │   ├── ThreadLocalStorage.h + │   │   │   ├── UnicodeData.h + │   │   │   └── Visibility.h + │   │   └── swift_static + │   │   ├── android + │   │   │   ├── Android.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── _Builtin_float.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── _Concurrency.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── CxxStdlib.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── Cxx.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── _Differentiation.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── Distributed.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── _FoundationCollections.swiftmodule + │   │   │   │   ├── x86_64.swiftdoc + │   │   │   │   └── x86_64.swiftmodule + │   │   │   ├── FoundationEssentials.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── FoundationInternationalization.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── FoundationNetworking.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── Foundation.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── FoundationXML.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── libBlocksRuntime.a + │   │   │   ├── lib_CFURLSessionInterface.a + │   │   │   ├── lib_CFXMLInterface.a + │   │   │   ├── libCoreFoundation.a + │   │   │   ├── libcxxshim.h + │   │   │   ├── libcxxshim.modulemap + │   │   │   ├── libcxxstdlibshim.h + │   │   │   ├── libdispatch.a + │   │   │   ├── libDispatchStubs.a + │   │   │   ├── libFoundation.a + │   │   │   ├── lib_FoundationCollections.a + │   │   │   ├── lib_FoundationCShims.a + │   │   │   ├── libFoundationEssentials.a + │   │   │   ├── lib_FoundationICU.a + │   │   │   ├── libFoundationInternationalization.a + │   │   │   ├── libFoundationNetworking.a + │   │   │   ├── libFoundationXML.a + │   │   │   ├── libswiftAndroid.a + │   │   │   ├── libswift_Builtin_float.a + │   │   │   ├── libswift_Concurrency.a + │   │   │   ├── libswiftCore.a + │   │   │   ├── libswift_Differentiation.a + │   │   │   ├── libswiftDispatch.a + │   │   │   ├── libswiftDistributed.a + │   │   │   ├── libswift_math.a + │   │   │   ├── libswiftObservation.a + │   │   │   ├── libswiftRegexBuilder.a + │   │   │   ├── libswift_RegexParser.a + │   │   │   ├── libswift_StringProcessing.a + │   │   │   ├── libswiftSwiftOnoneSupport.a + │   │   │   ├── libswiftSynchronization.a + │   │   │   ├── libswift_Volatile.a + │   │   │   ├── _math.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── Observation.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── RegexBuilder.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── _RegexParser.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── static-stdlib-args.lnk + │   │   │   ├── _StringProcessing.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── SwiftOnoneSupport.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── Swift.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── Synchronization.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   ├── _Volatile.swiftmodule + │   │   │   │   ├── x86_64-unknown-linux-android.private.swiftinterface + │   │   │   │   ├── x86_64-unknown-linux-android.swiftdoc + │   │   │   │   ├── x86_64-unknown-linux-android.swiftinterface + │   │   │   │   └── x86_64-unknown-linux-android.swiftmodule + │   │   │   └── x86_64 + │   │   │   ├── android.modulemap + │   │   │   ├── Dispatch.swiftdoc + │   │   │   ├── Dispatch.swiftmodule + │   │   │   ├── SwiftAndroidNDK.h + │   │   │   ├── SwiftBionic.h + │   │   │   └── swiftrt.o + │   │   ├── Block + │   │   │   └── Block.h + │   │   ├── clang + │   │   │   ├── bin + │   │   │   │   └── hwasan_symbolize + │   │   │   ├── include + │   │   │   │   ├── adcintrin.h + │   │   │   │   ├── adxintrin.h + │   │   │   │   ├── altivec.h + │   │   │   │   ├── ammintrin.h + │   │   │   │   ├── amxcomplexintrin.h + │   │   │   │   ├── amxfp16intrin.h + │   │   │   │   ├── amxintrin.h + │   │   │   │   ├── arm64intr.h + │   │   │   │   ├── arm_acle.h + │   │   │   │   ├── arm_bf16.h + │   │   │   │   ├── arm_cde.h + │   │   │   │   ├── arm_cmse.h + │   │   │   │   ├── arm_fp16.h + │   │   │   │   ├── armintr.h + │   │   │   │   ├── arm_mve.h + │   │   │   │   ├── arm_neon.h + │   │   │   │   ├── arm_neon_sve_bridge.h + │   │   │   │   ├── arm_sme.h + │   │   │   │   ├── arm_sve.h + │   │   │   │   ├── arm_vector_types.h + │   │   │   │   ├── avx2intrin.h + │   │   │   │   ├── avx512bf16intrin.h + │   │   │   │   ├── avx512bitalgintrin.h + │   │   │   │   ├── avx512bwintrin.h + │   │   │   │   ├── avx512cdintrin.h + │   │   │   │   ├── avx512dqintrin.h + │   │   │   │   ├── avx512fintrin.h + │   │   │   │   ├── avx512fp16intrin.h + │   │   │   │   ├── avx512ifmaintrin.h + │   │   │   │   ├── avx512ifmavlintrin.h + │   │   │   │   ├── avx512vbmi2intrin.h + │   │   │   │   ├── avx512vbmiintrin.h + │   │   │   │   ├── avx512vbmivlintrin.h + │   │   │   │   ├── avx512vlbf16intrin.h + │   │   │   │   ├── avx512vlbitalgintrin.h + │   │   │   │   ├── avx512vlbwintrin.h + │   │   │   │   ├── avx512vlcdintrin.h + │   │   │   │   ├── avx512vldqintrin.h + │   │   │   │   ├── avx512vlfp16intrin.h + │   │   │   │   ├── avx512vlintrin.h + │   │   │   │   ├── avx512vlvbmi2intrin.h + │   │   │   │   ├── avx512vlvnniintrin.h + │   │   │   │   ├── avx512vlvp2intersectintrin.h + │   │   │   │   ├── avx512vnniintrin.h + │   │   │   │   ├── avx512vp2intersectintrin.h + │   │   │   │   ├── avx512vpopcntdqintrin.h + │   │   │   │   ├── avx512vpopcntdqvlintrin.h + │   │   │   │   ├── avxifmaintrin.h + │   │   │   │   ├── avxintrin.h + │   │   │   │   ├── avxneconvertintrin.h + │   │   │   │   ├── avxvnniint16intrin.h + │   │   │   │   ├── avxvnniint8intrin.h + │   │   │   │   ├── avxvnniintrin.h + │   │   │   │   ├── bmi2intrin.h + │   │   │   │   ├── bmiintrin.h + │   │   │   │   ├── builtins.h + │   │   │   │   ├── cet.h + │   │   │   │   ├── cetintrin.h + │   │   │   │   ├── __clang_cuda_builtin_vars.h + │   │   │   │   ├── __clang_cuda_cmath.h + │   │   │   │   ├── __clang_cuda_complex_builtins.h + │   │   │   │   ├── __clang_cuda_device_functions.h + │   │   │   │   ├── __clang_cuda_intrinsics.h + │   │   │   │   ├── __clang_cuda_libdevice_declares.h + │   │   │   │   ├── __clang_cuda_math_forward_declares.h + │   │   │   │   ├── __clang_cuda_math.h + │   │   │   │   ├── __clang_cuda_runtime_wrapper.h + │   │   │   │   ├── __clang_cuda_texture_intrinsics.h + │   │   │   │   ├── __clang_hip_cmath.h + │   │   │   │   ├── __clang_hip_libdevice_declares.h + │   │   │   │   ├── __clang_hip_math.h + │   │   │   │   ├── __clang_hip_runtime_wrapper.h + │   │   │   │   ├── __clang_hip_stdlib.h + │   │   │   │   ├── cldemoteintrin.h + │   │   │   │   ├── clflushoptintrin.h + │   │   │   │   ├── clwbintrin.h + │   │   │   │   ├── clzerointrin.h + │   │   │   │   ├── cmpccxaddintrin.h + │   │   │   │   ├── cpuid.h + │   │   │   │   ├── crc32intrin.h + │   │   │   │   ├── cuda_wrappers + │   │   │   │   │   ├── algorithm + │   │   │   │   │   ├── bits + │   │   │   │   │   │   ├── basic_string.h + │   │   │   │   │   │   ├── basic_string.tcc + │   │   │   │   │   │   └── shared_ptr_base.h + │   │   │   │   │   ├── cmath + │   │   │   │   │   ├── complex + │   │   │   │   │   └── new + │   │   │   │   ├── emmintrin.h + │   │   │   │   ├── enqcmdintrin.h + │   │   │   │   ├── f16cintrin.h + │   │   │   │   ├── float.h + │   │   │   │   ├── fma4intrin.h + │   │   │   │   ├── fmaintrin.h + │   │   │   │   ├── fuzzer + │   │   │   │   │   └── FuzzedDataProvider.h + │   │   │   │   ├── fxsrintrin.h + │   │   │   │   ├── gfniintrin.h + │   │   │   │   ├── hexagon_circ_brev_intrinsics.h + │   │   │   │   ├── hexagon_protos.h + │   │   │   │   ├── hexagon_types.h + │   │   │   │   ├── hresetintrin.h + │   │   │   │   ├── htmintrin.h + │   │   │   │   ├── htmxlintrin.h + │   │   │   │   ├── hvx_hexagon_protos.h + │   │   │   │   ├── ia32intrin.h + │   │   │   │   ├── immintrin.h + │   │   │   │   ├── intrin0.h + │   │   │   │   ├── intrin.h + │   │   │   │   ├── inttypes.h + │   │   │   │   ├── invpcidintrin.h + │   │   │   │   ├── iso646.h + │   │   │   │   ├── keylockerintrin.h + │   │   │   │   ├── larchintrin.h + │   │   │   │   ├── lasxintrin.h + │   │   │   │   ├── limits.h + │   │   │   │   ├── llvm_libc_wrappers + │   │   │   │   │   ├── assert.h + │   │   │   │   │   ├── ctype.h + │   │   │   │   │   ├── inttypes.h + │   │   │   │   │   ├── stdio.h + │   │   │   │   │   ├── stdlib.h + │   │   │   │   │   ├── string.h + │   │   │   │   │   └── time.h + │   │   │   │   ├── lsxintrin.h + │   │   │   │   ├── lwpintrin.h + │   │   │   │   ├── lzcntintrin.h + │   │   │   │   ├── mm3dnow.h + │   │   │   │   ├── mmintrin.h + │   │   │   │   ├── mm_malloc.h + │   │   │   │   ├── module.modulemap + │   │   │   │   ├── movdirintrin.h + │   │   │   │   ├── msa.h + │   │   │   │   ├── mwaitxintrin.h + │   │   │   │   ├── nmmintrin.h + │   │   │   │   ├── opencl-c-base.h + │   │   │   │   ├── opencl-c.h + │   │   │   │   ├── openmp_wrappers + │   │   │   │   │   ├── __clang_openmp_device_functions.h + │   │   │   │   │   ├── cmath + │   │   │   │   │   ├── complex + │   │   │   │   │   ├── complex_cmath.h + │   │   │   │   │   ├── complex.h + │   │   │   │   │   ├── math.h + │   │   │   │   │   └── new + │   │   │   │   ├── orc + │   │   │   │   │   └── c_api.h + │   │   │   │   ├── pconfigintrin.h + │   │   │   │   ├── pkuintrin.h + │   │   │   │   ├── pmmintrin.h + │   │   │   │   ├── popcntintrin.h + │   │   │   │   ├── ppc_wrappers + │   │   │   │   │   ├── bmi2intrin.h + │   │   │   │   │   ├── bmiintrin.h + │   │   │   │   │   ├── emmintrin.h + │   │   │   │   │   ├── immintrin.h + │   │   │   │   │   ├── mmintrin.h + │   │   │   │   │   ├── mm_malloc.h + │   │   │   │   │   ├── nmmintrin.h + │   │   │   │   │   ├── pmmintrin.h + │   │   │   │   │   ├── smmintrin.h + │   │   │   │   │   ├── tmmintrin.h + │   │   │   │   │   ├── x86gprintrin.h + │   │   │   │   │   ├── x86intrin.h + │   │   │   │   │   └── xmmintrin.h + │   │   │   │   ├── prfchiintrin.h + │   │   │   │   ├── prfchwintrin.h + │   │   │   │   ├── profile + │   │   │   │   │   ├── InstrProfData.inc + │   │   │   │   │   └── instr_prof_interface.h + │   │   │   │   ├── ptrauth.h + │   │   │   │   ├── ptwriteintrin.h + │   │   │   │   ├── raointintrin.h + │   │   │   │   ├── rdpruintrin.h + │   │   │   │   ├── rdseedintrin.h + │   │   │   │   ├── riscv_bitmanip.h + │   │   │   │   ├── riscv_crypto.h + │   │   │   │   ├── riscv_ntlh.h + │   │   │   │   ├── riscv_vector.h + │   │   │   │   ├── rtmintrin.h + │   │   │   │   ├── s390intrin.h + │   │   │   │   ├── sanitizer + │   │   │   │   │   ├── allocator_interface.h + │   │   │   │   │   ├── asan_interface.h + │   │   │   │   │   ├── common_interface_defs.h + │   │   │   │   │   ├── coverage_interface.h + │   │   │   │   │   ├── dfsan_interface.h + │   │   │   │   │   ├── hwasan_interface.h + │   │   │   │   │   ├── linux_syscall_hooks.h + │   │   │   │   │   ├── lsan_interface.h + │   │   │   │   │   ├── memprof_interface.h + │   │   │   │   │   ├── msan_interface.h + │   │   │   │   │   ├── netbsd_syscall_hooks.h + │   │   │   │   │   ├── scudo_interface.h + │   │   │   │   │   ├── tsan_interface_atomic.h + │   │   │   │   │   ├── tsan_interface.h + │   │   │   │   │   └── ubsan_interface.h + │   │   │   │   ├── serializeintrin.h + │   │   │   │   ├── sgxintrin.h + │   │   │   │   ├── sha512intrin.h + │   │   │   │   ├── shaintrin.h + │   │   │   │   ├── sifive_vector.h + │   │   │   │   ├── sm3intrin.h + │   │   │   │   ├── sm4intrin.h + │   │   │   │   ├── smmintrin.h + │   │   │   │   ├── stdalign.h + │   │   │   │   ├── __stdarg___gnuc_va_list.h + │   │   │   │   ├── stdarg.h + │   │   │   │   ├── __stdarg_header_macro.h + │   │   │   │   ├── __stdarg_va_arg.h + │   │   │   │   ├── __stdarg___va_copy.h + │   │   │   │   ├── __stdarg_va_copy.h + │   │   │   │   ├── __stdarg_va_list.h + │   │   │   │   ├── stdatomic.h + │   │   │   │   ├── stdbool.h + │   │   │   │   ├── stdckdint.h + │   │   │   │   ├── stddef.h + │   │   │   │   ├── __stddef_header_macro.h + │   │   │   │   ├── __stddef_max_align_t.h + │   │   │   │   ├── __stddef_null.h + │   │   │   │   ├── __stddef_nullptr_t.h + │   │   │   │   ├── __stddef_offsetof.h + │   │   │   │   ├── __stddef_ptrdiff_t.h + │   │   │   │   ├── __stddef_rsize_t.h + │   │   │   │   ├── __stddef_size_t.h + │   │   │   │   ├── __stddef_unreachable.h + │   │   │   │   ├── __stddef_wchar_t.h + │   │   │   │   ├── __stddef_wint_t.h + │   │   │   │   ├── stdint.h + │   │   │   │   ├── stdnoreturn.h + │   │   │   │   ├── tbmintrin.h + │   │   │   │   ├── tgmath.h + │   │   │   │   ├── tmmintrin.h + │   │   │   │   ├── tsxldtrkintrin.h + │   │   │   │   ├── uintrintrin.h + │   │   │   │   ├── unwind.h + │   │   │   │   ├── usermsrintrin.h + │   │   │   │   ├── vadefs.h + │   │   │   │   ├── vaesintrin.h + │   │   │   │   ├── varargs.h + │   │   │   │   ├── vecintrin.h + │   │   │   │   ├── velintrin_approx.h + │   │   │   │   ├── velintrin_gen.h + │   │   │   │   ├── velintrin.h + │   │   │   │   ├── vpclmulqdqintrin.h + │   │   │   │   ├── waitpkgintrin.h + │   │   │   │   ├── wasm_simd128.h + │   │   │   │   ├── wbnoinvdintrin.h + │   │   │   │   ├── __wmmintrin_aes.h + │   │   │   │   ├── wmmintrin.h + │   │   │   │   ├── __wmmintrin_pclmul.h + │   │   │   │   ├── x86gprintrin.h + │   │   │   │   ├── x86intrin.h + │   │   │   │   ├── xmmintrin.h + │   │   │   │   ├── xopintrin.h + │   │   │   │   ├── xray + │   │   │   │   │   ├── xray_interface.h + │   │   │   │   │   ├── xray_log_interface.h + │   │   │   │   │   └── xray_records.h + │   │   │   │   ├── xsavecintrin.h + │   │   │   │   ├── xsaveintrin.h + │   │   │   │   ├── xsaveoptintrin.h + │   │   │   │   ├── xsavesintrin.h + │   │   │   │   ├── xtestintrin.h + │   │   │   │   ├── yvals_core.h + │   │   │   │   └── zos_wrappers + │   │   │   │   └── builtins.h + │   │   │   ├── lib + │   │   │   │   └── linux + │   │   │   │   ├── clang_rt.crtbegin-x86_64.o + │   │   │   │   ├── clang_rt.crtend-x86_64.o + │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a + │   │   │   │   ├── libclang_rt.asan_cxx-x86_64.a.syms + │   │   │   │   ├── libclang_rt.asan-preinit-x86_64.a + │   │   │   │   ├── libclang_rt.asan_static-x86_64.a + │   │   │   │   ├── libclang_rt.asan-x86_64.a + │   │   │   │   ├── libclang_rt.asan-x86_64.a.syms + │   │   │   │   ├── libclang_rt.asan-x86_64.so + │   │   │   │   ├── libclang_rt.builtins-x86_64.a + │   │   │   │   ├── libclang_rt.cfi_diag-x86_64.a + │   │   │   │   ├── libclang_rt.cfi-x86_64.a + │   │   │   │   ├── libclang_rt.ctx_profile-x86_64.a + │   │   │   │   ├── libclang_rt.dd-x86_64.a + │   │   │   │   ├── libclang_rt.dfsan-x86_64.a + │   │   │   │   ├── libclang_rt.dfsan-x86_64.a.syms + │   │   │   │   ├── libclang_rt.dyndd-x86_64.so + │   │   │   │   ├── libclang_rt.fuzzer_interceptors-x86_64.a + │   │   │   │   ├── libclang_rt.fuzzer_no_main-x86_64.a + │   │   │   │   ├── libclang_rt.fuzzer-x86_64.a + │   │   │   │   ├── libclang_rt.gwp_asan-x86_64.a + │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a + │   │   │   │   ├── libclang_rt.hwasan_aliases_cxx-x86_64.a.syms + │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a + │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.a.syms + │   │   │   │   ├── libclang_rt.hwasan_aliases-x86_64.so + │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a + │   │   │   │   ├── libclang_rt.hwasan_cxx-x86_64.a.syms + │   │   │   │   ├── libclang_rt.hwasan-preinit-x86_64.a + │   │   │   │   ├── libclang_rt.hwasan-x86_64.a + │   │   │   │   ├── libclang_rt.hwasan-x86_64.a.syms + │   │   │   │   ├── libclang_rt.hwasan-x86_64.so + │   │   │   │   ├── libclang_rt.lsan-x86_64.a + │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a + │   │   │   │   ├── libclang_rt.memprof_cxx-x86_64.a.syms + │   │   │   │   ├── libclang_rt.memprof-preinit-x86_64.a + │   │   │   │   ├── libclang_rt.memprof-x86_64.a + │   │   │   │   ├── libclang_rt.memprof-x86_64.a.syms + │   │   │   │   ├── libclang_rt.memprof-x86_64.so + │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a + │   │   │   │   ├── libclang_rt.msan_cxx-x86_64.a.syms + │   │   │   │   ├── libclang_rt.msan-x86_64.a + │   │   │   │   ├── libclang_rt.msan-x86_64.a.syms + │   │   │   │   ├── libclang_rt.nsan-x86_64.a + │   │   │   │   ├── libclang_rt.nsan-x86_64.so + │   │   │   │   ├── libclang_rt.profile-x86_64.a + │   │   │   │   ├── libclang_rt.rtsan-x86_64.a + │   │   │   │   ├── libclang_rt.safestack-x86_64.a + │   │   │   │   ├── libclang_rt.scudo_standalone_cxx-x86_64.a + │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.a + │   │   │   │   ├── libclang_rt.scudo_standalone-x86_64.so + │   │   │   │   ├── libclang_rt.stats_client-x86_64.a + │   │   │   │   ├── libclang_rt.stats-x86_64.a + │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a + │   │   │   │   ├── libclang_rt.tsan_cxx-x86_64.a.syms + │   │   │   │   ├── libclang_rt.tsan-x86_64.a + │   │   │   │   ├── libclang_rt.tsan-x86_64.a.syms + │   │   │   │   ├── libclang_rt.tsan-x86_64.so + │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a + │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.a.syms + │   │   │   │   ├── libclang_rt.ubsan_minimal-x86_64.so + │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a + │   │   │   │   ├── libclang_rt.ubsan_standalone_cxx-x86_64.a.syms + │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a + │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.a.syms + │   │   │   │   ├── libclang_rt.ubsan_standalone-x86_64.so + │   │   │   │   ├── libclang_rt.xray-basic-x86_64.a + │   │   │   │   ├── libclang_rt.xray-fdr-x86_64.a + │   │   │   │   ├── libclang_rt.xray-profiling-x86_64.a + │   │   │   │   ├── libclang_rt.xray-x86_64.a + │   │   │   │   └── liborc_rt-x86_64.a + │   │   │   └── share + │   │   │   ├── asan_ignorelist.txt + │   │   │   ├── cfi_ignorelist.txt + │   │   │   ├── dfsan_abilist.txt + │   │   │   ├── hwasan_ignorelist.txt + │   │   │   └── msan_ignorelist.txt + │   │   ├── CoreFoundation + │   │   │   ├── CFArray.h + │   │   │   ├── CFAttributedString.h + │   │   │   ├── CFAttributedStringPriv.h + │   │   │   ├── CFAvailability.h + │   │   │   ├── CFBag.h + │   │   │   ├── CFBase.h + │   │   │   ├── CFBigNumber.h + │   │   │   ├── CFBinaryHeap.h + │   │   │   ├── CFBitVector.h + │   │   │   ├── CFBundle_BinaryTypes.h + │   │   │   ├── CFBundle.h + │   │   │   ├── CFBundlePriv.h + │   │   │   ├── CFBurstTrie.h + │   │   │   ├── CFByteOrder.h + │   │   │   ├── CFCalendar.h + │   │   │   ├── CFCalendarPriv.h + │   │   │   ├── CFCharacterSet.h + │   │   │   ├── CFCharacterSetPriv.h + │   │   │   ├── CFConstantKeys.h + │   │   │   ├── CFData.h + │   │   │   ├── CFDateComponents.h + │   │   │   ├── CFDateFormatter.h + │   │   │   ├── CFDateFormatter_Private.h + │   │   │   ├── CFDate.h + │   │   │   ├── CFDateIntervalFormatter.h + │   │   │   ├── CFDateInterval.h + │   │   │   ├── CFDictionary.h + │   │   │   ├── CFError.h + │   │   │   ├── CFError_Private.h + │   │   │   ├── CFKnownLocations.h + │   │   │   ├── CFListFormatter.h + │   │   │   ├── CFLocale.h + │   │   │   ├── CFLocale_Private.h + │   │   │   ├── CFLocking.h + │   │   │   ├── CFLogUtilities.h + │   │   │   ├── CFMachPort.h + │   │   │   ├── CFMessagePort.h + │   │   │   ├── CFNotificationCenter.h + │   │   │   ├── CFNumberFormatter.h + │   │   │   ├── CFNumber.h + │   │   │   ├── CFNumber_Private.h + │   │   │   ├── CFOverflow.h + │   │   │   ├── CFPlugInCOM.h + │   │   │   ├── CFPlugIn.h + │   │   │   ├── CFPreferences.h + │   │   │   ├── CFPriv.h + │   │   │   ├── CFPropertyList.h + │   │   │   ├── CFPropertyList_Private.h + │   │   │   ├── CFRegularExpression.h + │   │   │   ├── CFRelativeDateTimeFormatter.h + │   │   │   ├── CFRunArray.h + │   │   │   ├── CFRunLoop.h + │   │   │   ├── CFRuntime.h + │   │   │   ├── CFSet.h + │   │   │   ├── CFSocket.h + │   │   │   ├── CFStorage.h + │   │   │   ├── CFStreamAbstract.h + │   │   │   ├── CFStream.h + │   │   │   ├── CFStreamPriv.h + │   │   │   ├── CFStringDefaultEncoding.h + │   │   │   ├── CFStringEncodingConverterExt.h + │   │   │   ├── CFStringEncodingConverter.h + │   │   │   ├── CFStringEncodingConverterPriv.h + │   │   │   ├── CFStringEncodingDatabase.h + │   │   │   ├── CFStringEncodingExt.h + │   │   │   ├── CFString.h + │   │   │   ├── CFString_Private.h + │   │   │   ├── CFTargetConditionals.h + │   │   │   ├── CFTimeZone.h + │   │   │   ├── CFTree.h + │   │   │   ├── CFUniChar.h + │   │   │   ├── CFUnicodeDecomposition.h + │   │   │   ├── CFUnicodePrecomposition.h + │   │   │   ├── CFURLAccess.h + │   │   │   ├── CFURLComponents.h + │   │   │   ├── CFURL.h + │   │   │   ├── CFURLPriv.h + │   │   │   ├── CFUserNotification.h + │   │   │   ├── CFUtilities.h + │   │   │   ├── CFUUID.h + │   │   │   ├── CoreFoundation.h + │   │   │   ├── ForFoundationOnly.h + │   │   │   ├── ForSwiftFoundationOnly.h + │   │   │   ├── module.modulemap + │   │   │   └── static-module.map + │   │   ├── dispatch + │   │   │   ├── base.h + │   │   │   ├── block.h + │   │   │   ├── data.h + │   │   │   ├── dispatch.h + │   │   │   ├── group.h + │   │   │   ├── introspection.h + │   │   │   ├── io.h + │   │   │   ├── module.modulemap + │   │   │   ├── object.h + │   │   │   ├── once.h + │   │   │   ├── queue.h + │   │   │   ├── semaphore.h + │   │   │   ├── source.h + │   │   │   └── time.h + │   │   ├── _FoundationCShims + │   │   │   ├── bplist_shims.h + │   │   │   ├── CFUniCharBitmapData.h + │   │   │   ├── CFUniCharBitmapData.inc.h + │   │   │   ├── _CShimsMacros.h + │   │   │   ├── _CShimsTargetConditionals.h + │   │   │   ├── _CStdlib.h + │   │   │   ├── filemanager_shims.h + │   │   │   ├── _FoundationCShims.h + │   │   │   ├── io_shims.h + │   │   │   ├── module.modulemap + │   │   │   ├── platform_shims.h + │   │   │   ├── string_shims.h + │   │   │   └── uuid.h + │   │   ├── _foundation_unicode + │   │   │   ├── alphaindex.h + │   │   │   ├── appendable.h + │   │   │   ├── basictz.h + │   │   │   ├── brkiter.h + │   │   │   ├── bytestream.h + │   │   │   ├── bytestriebuilder.h + │   │   │   ├── bytestrie.h + │   │   │   ├── calendar.h + │   │   │   ├── caniter.h + │   │   │   ├── casemap.h + │   │   │   ├── char16ptr.h + │   │   │   ├── chariter.h + │   │   │   ├── choicfmt.h + │   │   │   ├── coleitr.h + │   │   │   ├── coll.h + │   │   │   ├── compactdecimalformat.h + │   │   │   ├── curramt.h + │   │   │   ├── currpinf.h + │   │   │   ├── currunit.h + │   │   │   ├── datefmt.h + │   │   │   ├── dbbi.h + │   │   │   ├── dcfmtsym.h + │   │   │   ├── decimfmt.h + │   │   │   ├── displayoptions.h + │   │   │   ├── docmain.h + │   │   │   ├── dtfmtsym.h + │   │   │   ├── dtintrv.h + │   │   │   ├── dtitvfmt.h + │   │   │   ├── dtitvinf.h + │   │   │   ├── dtptngen.h + │   │   │   ├── dtrule.h + │   │   │   ├── edits.h + │   │   │   ├── enumset.h + │   │   │   ├── errorcode.h + │   │   │   ├── fieldpos.h + │   │   │   ├── filteredbrk.h + │   │   │   ├── fmtable.h + │   │   │   ├── format.h + │   │   │   ├── formattednumber.h + │   │   │   ├── formattedvalue.h + │   │   │   ├── fpositer.h + │   │   │   ├── gender.h + │   │   │   ├── gregocal.h + │   │   │   ├── icudataver.h + │   │   │   ├── icuplug.h + │   │   │   ├── idna.h + │   │   │   ├── listformatter.h + │   │   │   ├── localebuilder.h + │   │   │   ├── localematcher.h + │   │   │   ├── localpointer.h + │   │   │   ├── locdspnm.h + │   │   │   ├── locid.h + │   │   │   ├── measfmt.h + │   │   │   ├── measunit.h + │   │   │   ├── measure.h + │   │   │   ├── messagepattern.h + │   │   │   ├── module.modulemap + │   │   │   ├── msgfmt.h + │   │   │   ├── normalizer2.h + │   │   │   ├── normlzr.h + │   │   │   ├── nounit.h + │   │   │   ├── numberformatter.h + │   │   │   ├── numberrangeformatter.h + │   │   │   ├── numfmt.h + │   │   │   ├── numsys.h + │   │   │   ├── parseerr.h + │   │   │   ├── parsepos.h + │   │   │   ├── platform.h + │   │   │   ├── plurfmt.h + │   │   │   ├── plurrule.h + │   │   │   ├── ptypes.h + │   │   │   ├── putil.h + │   │   │   ├── rbbi.h + │   │   │   ├── rbnf.h + │   │   │   ├── rbtz.h + │   │   │   ├── regex.h + │   │   │   ├── region.h + │   │   │   ├── reldatefmt.h + │   │   │   ├── rep.h + │   │   │   ├── resbund.h + │   │   │   ├── schriter.h + │   │   │   ├── scientificnumberformatter.h + │   │   │   ├── search.h + │   │   │   ├── selfmt.h + │   │   │   ├── simpleformatter.h + │   │   │   ├── simplenumberformatter.h + │   │   │   ├── simpletz.h + │   │   │   ├── smpdtfmt.h + │   │   │   ├── sortkey.h + │   │   │   ├── std_string.h + │   │   │   ├── strenum.h + │   │   │   ├── stringoptions.h + │   │   │   ├── stringpiece.h + │   │   │   ├── stringtriebuilder.h + │   │   │   ├── stsearch.h + │   │   │   ├── symtable.h + │   │   │   ├── tblcoll.h + │   │   │   ├── timezone.h + │   │   │   ├── tmunit.h + │   │   │   ├── tmutamt.h + │   │   │   ├── tmutfmt.h + │   │   │   ├── translit.h + │   │   │   ├── tzfmt.h + │   │   │   ├── tznames.h + │   │   │   ├── tzrule.h + │   │   │   ├── tztrans.h + │   │   │   ├── ualoc.h + │   │   │   ├── uameasureformat.h + │   │   │   ├── uameasureunit.h + │   │   │   ├── uatimeunitformat.h + │   │   │   ├── ubidi.h + │   │   │   ├── ubiditransform.h + │   │   │   ├── ubrk.h + │   │   │   ├── ucal.h + │   │   │   ├── ucasemap.h + │   │   │   ├── ucat.h + │   │   │   ├── uchar.h + │   │   │   ├── ucharstriebuilder.h + │   │   │   ├── ucharstrie.h + │   │   │   ├── uchriter.h + │   │   │   ├── uclean.h + │   │   │   ├── ucnv_cb.h + │   │   │   ├── ucnv_err.h + │   │   │   ├── ucnv.h + │   │   │   ├── ucnvsel.h + │   │   │   ├── ucoleitr.h + │   │   │   ├── ucol.h + │   │   │   ├── uconfig.h + │   │   │   ├── ucpmap.h + │   │   │   ├── ucptrie.h + │   │   │   ├── ucsdet.h + │   │   │   ├── ucurr.h + │   │   │   ├── udata.h + │   │   │   ├── udateintervalformat.h + │   │   │   ├── udat.h + │   │   │   ├── udatintv.h + │   │   │   ├── udatpg.h + │   │   │   ├── udisplaycontext.h + │   │   │   ├── udisplayoptions.h + │   │   │   ├── uenum.h + │   │   │   ├── ufieldpositer.h + │   │   │   ├── uformattable.h + │   │   │   ├── uformattednumber.h + │   │   │   ├── uformattedvalue.h + │   │   │   ├── ugender.h + │   │   │   ├── uidna.h + │   │   │   ├── uiter.h + │   │   │   ├── uldnames.h + │   │   │   ├── ulistformatter.h + │   │   │   ├── ulocale.h + │   │   │   ├── ulocbuilder.h + │   │   │   ├── ulocdata.h + │   │   │   ├── uloc.h + │   │   │   ├── umachine.h + │   │   │   ├── umisc.h + │   │   │   ├── umsg.h + │   │   │   ├── umutablecptrie.h + │   │   │   ├── unifilt.h + │   │   │   ├── unifunct.h + │   │   │   ├── unimatch.h + │   │   │   ├── unirepl.h + │   │   │   ├── uniset.h + │   │   │   ├── unistr.h + │   │   │   ├── unorm2.h + │   │   │   ├── unorm.h + │   │   │   ├── unumberformatter.h + │   │   │   ├── unumberoptions.h + │   │   │   ├── unumberrangeformatter.h + │   │   │   ├── unum.h + │   │   │   ├── unumsys.h + │   │   │   ├── uobject.h + │   │   │   ├── uplrule.h + │   │   │   ├── upluralrules.h + │   │   │   ├── urbtok.h + │   │   │   ├── uregex.h + │   │   │   ├── uregion.h + │   │   │   ├── ureldatefmt.h + │   │   │   ├── urename.h + │   │   │   ├── urep.h + │   │   │   ├── ures.h + │   │   │   ├── uscript.h + │   │   │   ├── usearch.h + │   │   │   ├── uset.h + │   │   │   ├── usetiter.h + │   │   │   ├── ushape.h + │   │   │   ├── usimplenumberformatter.h + │   │   │   ├── uspoof.h + │   │   │   ├── usprep.h + │   │   │   ├── ustdio.h + │   │   │   ├── ustream.h + │   │   │   ├── ustring.h + │   │   │   ├── ustringtrie.h + │   │   │   ├── utext.h + │   │   │   ├── utf16.h + │   │   │   ├── utf32.h + │   │   │   ├── utf8.h + │   │   │   ├── utf.h + │   │   │   ├── utf_old.h + │   │   │   ├── utmscale.h + │   │   │   ├── utrace.h + │   │   │   ├── utrans.h + │   │   │   ├── utypes.h + │   │   │   ├── uvernum.h + │   │   │   ├── uversion.h + │   │   │   └── vtzone.h + │   │   ├── os + │   │   │   ├── generic_base.h + │   │   │   ├── generic_unix_base.h + │   │   │   ├── generic_win_base.h + │   │   │   └── object.h + │   │   └── shims + │   │   ├── AssertionReporting.h + │   │   ├── CoreFoundationShims.h + │   │   ├── EmbeddedShims.h + │   │   ├── FoundationShims.h + │   │   ├── GlobalObjects.h + │   │   ├── HeapObject.h + │   │   ├── KeyPath.h + │   │   ├── LibcOverlayShims.h + │   │   ├── LibcShims.h + │   │   ├── MetadataSections.h + │   │   ├── module.modulemap + │   │   ├── Random.h + │   │   ├── RefCount.h + │   │   ├── Reflection.h + │   │   ├── RuntimeShims.h + │   │   ├── RuntimeStubs.h + │   │   ├── _SwiftConcurrency.h + │   │   ├── _SwiftDistributed.h + │   │   ├── SwiftStdbool.h + │   │   ├── SwiftStddef.h + │   │   ├── SwiftStdint.h + │   │   ├── _SynchronizationShims.h + │   │   ├── System.h + │   │   ├── Target.h + │   │   ├── ThreadLocalStorage.h + │   │   ├── UnicodeData.h + │   │   └── Visibility.h + │   └── share + │   ├── aclocal + │   │   └── libxml.m4 + │   ├── doc + │   │   ├── libxml2 + │   │   │   ├── devhelp + │   │   │   │   ├── general.html + │   │   │   │   ├── home.png + │   │   │   │   ├── index.html + │   │   │   │   ├── left.png + │   │   │   │   ├── libxml2-c14n.html + │   │   │   │   ├── libxml2-catalog.html + │   │   │   │   ├── libxml2-chvalid.html + │   │   │   │   ├── libxml2-debugXML.html + │   │   │   │   ├── libxml2.devhelp2 + │   │   │   │   ├── libxml2-dict.html + │   │   │   │   ├── libxml2-encoding.html + │   │   │   │   ├── libxml2-entities.html + │   │   │   │   ├── libxml2-globals.html + │   │   │   │   ├── libxml2-hash.html + │   │   │   │   ├── libxml2-HTMLparser.html + │   │   │   │   ├── libxml2-HTMLtree.html + │   │   │   │   ├── libxml2-list.html + │   │   │   │   ├── libxml2-nanoftp.html + │   │   │   │   ├── libxml2-nanohttp.html + │   │   │   │   ├── libxml2-parser.html + │   │   │   │   ├── libxml2-parserInternals.html + │   │   │   │   ├── libxml2-pattern.html + │   │   │   │   ├── libxml2-relaxng.html + │   │   │   │   ├── libxml2-SAX2.html + │   │   │   │   ├── libxml2-SAX.html + │   │   │   │   ├── libxml2-schemasInternals.html + │   │   │   │   ├── libxml2-schematron.html + │   │   │   │   ├── libxml2-threads.html + │   │   │   │   ├── libxml2-tree.html + │   │   │   │   ├── libxml2-uri.html + │   │   │   │   ├── libxml2-valid.html + │   │   │   │   ├── libxml2-xinclude.html + │   │   │   │   ├── libxml2-xlink.html + │   │   │   │   ├── libxml2-xmlautomata.html + │   │   │   │   ├── libxml2-xmlerror.html + │   │   │   │   ├── libxml2-xmlexports.html + │   │   │   │   ├── libxml2-xmlIO.html + │   │   │   │   ├── libxml2-xmlmemory.html + │   │   │   │   ├── libxml2-xmlmodule.html + │   │   │   │   ├── libxml2-xmlreader.html + │   │   │   │   ├── libxml2-xmlregexp.html + │   │   │   │   ├── libxml2-xmlsave.html + │   │   │   │   ├── libxml2-xmlschemas.html + │   │   │   │   ├── libxml2-xmlschemastypes.html + │   │   │   │   ├── libxml2-xmlstring.html + │   │   │   │   ├── libxml2-xmlunicode.html + │   │   │   │   ├── libxml2-xmlversion.html + │   │   │   │   ├── libxml2-xmlwriter.html + │   │   │   │   ├── libxml2-xpath.html + │   │   │   │   ├── libxml2-xpathInternals.html + │   │   │   │   ├── libxml2-xpointer.html + │   │   │   │   ├── libxml2-xzlib.html + │   │   │   │   ├── right.png + │   │   │   │   ├── style.css + │   │   │   │   └── up.png + │   │   │   ├── examples + │   │   │   │   ├── index.html + │   │   │   │   ├── io1.c + │   │   │   │   ├── io2.c + │   │   │   │   ├── parse1.c + │   │   │   │   ├── parse2.c + │   │   │   │   ├── parse3.c + │   │   │   │   ├── parse4.c + │   │   │   │   ├── reader1.c + │   │   │   │   ├── reader2.c + │   │   │   │   ├── reader3.c + │   │   │   │   ├── reader4.c + │   │   │   │   ├── testWriter.c + │   │   │   │   ├── tree1.c + │   │   │   │   ├── tree2.c + │   │   │   │   ├── xpath1.c + │   │   │   │   └── xpath2.c + │   │   │   ├── tutorial + │   │   │   │   ├── apa.html + │   │   │   │   ├── apb.html + │   │   │   │   ├── apc.html + │   │   │   │   ├── apd.html + │   │   │   │   ├── ape.html + │   │   │   │   ├── apf.html + │   │   │   │   ├── apg.html + │   │   │   │   ├── aph.html + │   │   │   │   ├── api.html + │   │   │   │   ├── ar01s02.html + │   │   │   │   ├── ar01s03.html + │   │   │   │   ├── ar01s04.html + │   │   │   │   ├── ar01s05.html + │   │   │   │   ├── ar01s06.html + │   │   │   │   ├── ar01s07.html + │   │   │   │   ├── ar01s08.html + │   │   │   │   ├── ar01s09.html + │   │   │   │   ├── images + │   │   │   │   │   ├── blank.png + │   │   │   │   │   ├── callouts + │   │   │   │   │   │   ├── 10.png + │   │   │   │   │   │   ├── 1.png + │   │   │   │   │   │   ├── 2.png + │   │   │   │   │   │   ├── 3.png + │   │   │   │   │   │   ├── 4.png + │   │   │   │   │   │   ├── 5.png + │   │   │   │   │   │   ├── 6.png + │   │   │   │   │   │   ├── 7.png + │   │   │   │   │   │   ├── 8.png + │   │   │   │   │   │   └── 9.png + │   │   │   │   │   ├── caution.png + │   │   │   │   │   ├── draft.png + │   │   │   │   │   ├── home.png + │   │   │   │   │   ├── important.png + │   │   │   │   │   ├── next.png + │   │   │   │   │   ├── note.png + │   │   │   │   │   ├── prev.png + │   │   │   │   │   ├── tip.png + │   │   │   │   │   ├── toc-blank.png + │   │   │   │   │   ├── toc-minus.png + │   │   │   │   │   ├── toc-plus.png + │   │   │   │   │   ├── up.png + │   │   │   │   │   └── warning.png + │   │   │   │   ├── includeaddattribute.c + │   │   │   │   ├── includeaddkeyword.c + │   │   │   │   ├── includeconvert.c + │   │   │   │   ├── includegetattribute.c + │   │   │   │   ├── includekeyword.c + │   │   │   │   ├── includexpath.c + │   │   │   │   ├── index.html + │   │   │   │   └── ix01.html + │   │   │   ├── xmlcatalog.html + │   │   │   └── xmllint.html + │   │   └── swift + │   │   └── diagnostics + │   │   ├── complex-closure-inference.md + │   │   ├── dynamic-callable-requirements.md + │   │   ├── error-in-future-swift-version.md + │   │   ├── existential-member-access-limitations.md + │   │   ├── multiple-inheritance.md + │   │   ├── nominal-types.md + │   │   ├── opaque-type-inference.md + │   │   ├── property-wrapper-requirements.md + │   │   ├── protocol-type-non-conformance.md + │   │   ├── result-builder-methods.md + │   │   ├── string-interpolation-conformance.md + │   │   ├── temporary-pointers.md + │   │   └── trailing-closure-matching.md + │   ├── emacs + │   │   └── site-lisp + │   │   └── swift-mode.el + │   ├── man + │   │   ├── man1 + │   │   │   ├── swift.1 + │   │   │   ├── xml2-config.1 + │   │   │   ├── xmlcatalog.1 + │   │   │   └── xmllint.1 + │   │   └── man3 + │   │   ├── curl_easy_cleanup.3 + │   │   ├── curl_easy_duphandle.3 + │   │   ├── curl_easy_escape.3 + │   │   ├── curl_easy_getinfo.3 + │   │   ├── curl_easy_header.3 + │   │   ├── curl_easy_init.3 + │   │   ├── curl_easy_nextheader.3 + │   │   ├── curl_easy_option_by_id.3 + │   │   ├── curl_easy_option_by_name.3 + │   │   ├── curl_easy_option_next.3 + │   │   ├── curl_easy_pause.3 + │   │   ├── curl_easy_perform.3 + │   │   ├── curl_easy_recv.3 + │   │   ├── curl_easy_reset.3 + │   │   ├── curl_easy_send.3 + │   │   ├── curl_easy_setopt.3 + │   │   ├── curl_easy_strerror.3 + │   │   ├── curl_easy_unescape.3 + │   │   ├── curl_easy_upkeep.3 + │   │   ├── curl_escape.3 + │   │   ├── curl_formadd.3 + │   │   ├── curl_formfree.3 + │   │   ├── curl_formget.3 + │   │   ├── curl_free.3 + │   │   ├── curl_getdate.3 + │   │   ├── curl_getenv.3 + │   │   ├── curl_global_cleanup.3 + │   │   ├── curl_global_init.3 + │   │   ├── curl_global_init_mem.3 + │   │   ├── curl_global_sslset.3 + │   │   ├── curl_global_trace.3 + │   │   ├── CURLINFO_ACTIVESOCKET.3 + │   │   ├── CURLINFO_APPCONNECT_TIME.3 + │   │   ├── CURLINFO_APPCONNECT_TIME_T.3 + │   │   ├── CURLINFO_CAINFO.3 + │   │   ├── CURLINFO_CAPATH.3 + │   │   ├── CURLINFO_CERTINFO.3 + │   │   ├── CURLINFO_CONDITION_UNMET.3 + │   │   ├── CURLINFO_CONNECT_TIME.3 + │   │   ├── CURLINFO_CONNECT_TIME_T.3 + │   │   ├── CURLINFO_CONN_ID.3 + │   │   ├── CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 + │   │   ├── CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 + │   │   ├── CURLINFO_CONTENT_LENGTH_UPLOAD.3 + │   │   ├── CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 + │   │   ├── CURLINFO_CONTENT_TYPE.3 + │   │   ├── CURLINFO_COOKIELIST.3 + │   │   ├── CURLINFO_EFFECTIVE_METHOD.3 + │   │   ├── CURLINFO_EFFECTIVE_URL.3 + │   │   ├── CURLINFO_FILETIME.3 + │   │   ├── CURLINFO_FILETIME_T.3 + │   │   ├── CURLINFO_FTP_ENTRY_PATH.3 + │   │   ├── CURLINFO_HEADER_SIZE.3 + │   │   ├── CURLINFO_HTTPAUTH_AVAIL.3 + │   │   ├── CURLINFO_HTTP_CONNECTCODE.3 + │   │   ├── CURLINFO_HTTP_VERSION.3 + │   │   ├── CURLINFO_LASTSOCKET.3 + │   │   ├── CURLINFO_LOCAL_IP.3 + │   │   ├── CURLINFO_LOCAL_PORT.3 + │   │   ├── CURLINFO_NAMELOOKUP_TIME.3 + │   │   ├── CURLINFO_NAMELOOKUP_TIME_T.3 + │   │   ├── CURLINFO_NUM_CONNECTS.3 + │   │   ├── CURLINFO_OS_ERRNO.3 + │   │   ├── CURLINFO_PRETRANSFER_TIME.3 + │   │   ├── CURLINFO_PRETRANSFER_TIME_T.3 + │   │   ├── CURLINFO_PRIMARY_IP.3 + │   │   ├── CURLINFO_PRIMARY_PORT.3 + │   │   ├── CURLINFO_PRIVATE.3 + │   │   ├── CURLINFO_PROTOCOL.3 + │   │   ├── CURLINFO_PROXYAUTH_AVAIL.3 + │   │   ├── CURLINFO_PROXY_ERROR.3 + │   │   ├── CURLINFO_PROXY_SSL_VERIFYRESULT.3 + │   │   ├── CURLINFO_QUEUE_TIME_T.3 + │   │   ├── CURLINFO_REDIRECT_COUNT.3 + │   │   ├── CURLINFO_REDIRECT_TIME.3 + │   │   ├── CURLINFO_REDIRECT_TIME_T.3 + │   │   ├── CURLINFO_REDIRECT_URL.3 + │   │   ├── CURLINFO_REFERER.3 + │   │   ├── CURLINFO_REQUEST_SIZE.3 + │   │   ├── CURLINFO_RESPONSE_CODE.3 + │   │   ├── CURLINFO_RETRY_AFTER.3 + │   │   ├── CURLINFO_RTSP_CLIENT_CSEQ.3 + │   │   ├── CURLINFO_RTSP_CSEQ_RECV.3 + │   │   ├── CURLINFO_RTSP_SERVER_CSEQ.3 + │   │   ├── CURLINFO_RTSP_SESSION_ID.3 + │   │   ├── CURLINFO_SCHEME.3 + │   │   ├── CURLINFO_SIZE_DOWNLOAD.3 + │   │   ├── CURLINFO_SIZE_DOWNLOAD_T.3 + │   │   ├── CURLINFO_SIZE_UPLOAD.3 + │   │   ├── CURLINFO_SIZE_UPLOAD_T.3 + │   │   ├── CURLINFO_SPEED_DOWNLOAD.3 + │   │   ├── CURLINFO_SPEED_DOWNLOAD_T.3 + │   │   ├── CURLINFO_SPEED_UPLOAD.3 + │   │   ├── CURLINFO_SPEED_UPLOAD_T.3 + │   │   ├── CURLINFO_SSL_ENGINES.3 + │   │   ├── CURLINFO_SSL_VERIFYRESULT.3 + │   │   ├── CURLINFO_STARTTRANSFER_TIME.3 + │   │   ├── CURLINFO_STARTTRANSFER_TIME_T.3 + │   │   ├── CURLINFO_TLS_SESSION.3 + │   │   ├── CURLINFO_TLS_SSL_PTR.3 + │   │   ├── CURLINFO_TOTAL_TIME.3 + │   │   ├── CURLINFO_TOTAL_TIME_T.3 + │   │   ├── CURLINFO_USED_PROXY.3 + │   │   ├── CURLINFO_XFER_ID.3 + │   │   ├── curl_mime_addpart.3 + │   │   ├── curl_mime_data.3 + │   │   ├── curl_mime_data_cb.3 + │   │   ├── curl_mime_encoder.3 + │   │   ├── curl_mime_filedata.3 + │   │   ├── curl_mime_filename.3 + │   │   ├── curl_mime_free.3 + │   │   ├── curl_mime_headers.3 + │   │   ├── curl_mime_init.3 + │   │   ├── curl_mime_name.3 + │   │   ├── curl_mime_subparts.3 + │   │   ├── curl_mime_type.3 + │   │   ├── CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 + │   │   ├── CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 + │   │   ├── CURLMOPT_MAX_CONCURRENT_STREAMS.3 + │   │   ├── CURLMOPT_MAXCONNECTS.3 + │   │   ├── CURLMOPT_MAX_HOST_CONNECTIONS.3 + │   │   ├── CURLMOPT_MAX_PIPELINE_LENGTH.3 + │   │   ├── CURLMOPT_MAX_TOTAL_CONNECTIONS.3 + │   │   ├── CURLMOPT_PIPELINING.3 + │   │   ├── CURLMOPT_PIPELINING_SERVER_BL.3 + │   │   ├── CURLMOPT_PIPELINING_SITE_BL.3 + │   │   ├── CURLMOPT_PUSHDATA.3 + │   │   ├── CURLMOPT_PUSHFUNCTION.3 + │   │   ├── CURLMOPT_SOCKETDATA.3 + │   │   ├── CURLMOPT_SOCKETFUNCTION.3 + │   │   ├── CURLMOPT_TIMERDATA.3 + │   │   ├── CURLMOPT_TIMERFUNCTION.3 + │   │   ├── curl_mprintf.3 + │   │   ├── curl_multi_add_handle.3 + │   │   ├── curl_multi_assign.3 + │   │   ├── curl_multi_cleanup.3 + │   │   ├── curl_multi_fdset.3 + │   │   ├── curl_multi_get_handles.3 + │   │   ├── curl_multi_info_read.3 + │   │   ├── curl_multi_init.3 + │   │   ├── curl_multi_perform.3 + │   │   ├── curl_multi_poll.3 + │   │   ├── curl_multi_remove_handle.3 + │   │   ├── curl_multi_setopt.3 + │   │   ├── curl_multi_socket.3 + │   │   ├── curl_multi_socket_action.3 + │   │   ├── curl_multi_socket_all.3 + │   │   ├── curl_multi_strerror.3 + │   │   ├── curl_multi_timeout.3 + │   │   ├── curl_multi_wait.3 + │   │   ├── curl_multi_wakeup.3 + │   │   ├── CURLOPT_ABSTRACT_UNIX_SOCKET.3 + │   │   ├── CURLOPT_ACCEPT_ENCODING.3 + │   │   ├── CURLOPT_ACCEPTTIMEOUT_MS.3 + │   │   ├── CURLOPT_ADDRESS_SCOPE.3 + │   │   ├── CURLOPT_ALTSVC.3 + │   │   ├── CURLOPT_ALTSVC_CTRL.3 + │   │   ├── CURLOPT_APPEND.3 + │   │   ├── CURLOPT_AUTOREFERER.3 + │   │   ├── CURLOPT_AWS_SIGV4.3 + │   │   ├── CURLOPT_BUFFERSIZE.3 + │   │   ├── CURLOPT_CA_CACHE_TIMEOUT.3 + │   │   ├── CURLOPT_CAINFO.3 + │   │   ├── CURLOPT_CAINFO_BLOB.3 + │   │   ├── CURLOPT_CAPATH.3 + │   │   ├── CURLOPT_CERTINFO.3 + │   │   ├── CURLOPT_CHUNK_BGN_FUNCTION.3 + │   │   ├── CURLOPT_CHUNK_DATA.3 + │   │   ├── CURLOPT_CHUNK_END_FUNCTION.3 + │   │   ├── CURLOPT_CLOSESOCKETDATA.3 + │   │   ├── CURLOPT_CLOSESOCKETFUNCTION.3 + │   │   ├── CURLOPT_CONNECT_ONLY.3 + │   │   ├── CURLOPT_CONNECTTIMEOUT.3 + │   │   ├── CURLOPT_CONNECTTIMEOUT_MS.3 + │   │   ├── CURLOPT_CONNECT_TO.3 + │   │   ├── CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 + │   │   ├── CURLOPT_CONV_FROM_UTF8_FUNCTION.3 + │   │   ├── CURLOPT_CONV_TO_NETWORK_FUNCTION.3 + │   │   ├── CURLOPT_COOKIE.3 + │   │   ├── CURLOPT_COOKIEFILE.3 + │   │   ├── CURLOPT_COOKIEJAR.3 + │   │   ├── CURLOPT_COOKIELIST.3 + │   │   ├── CURLOPT_COOKIESESSION.3 + │   │   ├── CURLOPT_COPYPOSTFIELDS.3 + │   │   ├── CURLOPT_CRLF.3 + │   │   ├── CURLOPT_CRLFILE.3 + │   │   ├── CURLOPT_CURLU.3 + │   │   ├── CURLOPT_CUSTOMREQUEST.3 + │   │   ├── CURLOPT_DEBUGDATA.3 + │   │   ├── CURLOPT_DEBUGFUNCTION.3 + │   │   ├── CURLOPT_DEFAULT_PROTOCOL.3 + │   │   ├── CURLOPT_DIRLISTONLY.3 + │   │   ├── CURLOPT_DISALLOW_USERNAME_IN_URL.3 + │   │   ├── CURLOPT_DNS_CACHE_TIMEOUT.3 + │   │   ├── CURLOPT_DNS_INTERFACE.3 + │   │   ├── CURLOPT_DNS_LOCAL_IP4.3 + │   │   ├── CURLOPT_DNS_LOCAL_IP6.3 + │   │   ├── CURLOPT_DNS_SERVERS.3 + │   │   ├── CURLOPT_DNS_SHUFFLE_ADDRESSES.3 + │   │   ├── CURLOPT_DNS_USE_GLOBAL_CACHE.3 + │   │   ├── CURLOPT_DOH_SSL_VERIFYHOST.3 + │   │   ├── CURLOPT_DOH_SSL_VERIFYPEER.3 + │   │   ├── CURLOPT_DOH_SSL_VERIFYSTATUS.3 + │   │   ├── CURLOPT_DOH_URL.3 + │   │   ├── CURLOPT_EGDSOCKET.3 + │   │   ├── CURLOPT_ERRORBUFFER.3 + │   │   ├── CURLOPT_EXPECT_100_TIMEOUT_MS.3 + │   │   ├── CURLOPT_FAILONERROR.3 + │   │   ├── CURLOPT_FILETIME.3 + │   │   ├── CURLOPT_FNMATCH_DATA.3 + │   │   ├── CURLOPT_FNMATCH_FUNCTION.3 + │   │   ├── CURLOPT_FOLLOWLOCATION.3 + │   │   ├── CURLOPT_FORBID_REUSE.3 + │   │   ├── CURLOPT_FRESH_CONNECT.3 + │   │   ├── CURLOPT_FTP_ACCOUNT.3 + │   │   ├── CURLOPT_FTP_ALTERNATIVE_TO_USER.3 + │   │   ├── CURLOPT_FTP_CREATE_MISSING_DIRS.3 + │   │   ├── CURLOPT_FTP_FILEMETHOD.3 + │   │   ├── CURLOPT_FTPPORT.3 + │   │   ├── CURLOPT_FTP_SKIP_PASV_IP.3 + │   │   ├── CURLOPT_FTPSSLAUTH.3 + │   │   ├── CURLOPT_FTP_SSL_CCC.3 + │   │   ├── CURLOPT_FTP_USE_EPRT.3 + │   │   ├── CURLOPT_FTP_USE_EPSV.3 + │   │   ├── CURLOPT_FTP_USE_PRET.3 + │   │   ├── CURLOPT_GSSAPI_DELEGATION.3 + │   │   ├── CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 + │   │   ├── CURLOPT_HAPROXY_CLIENT_IP.3 + │   │   ├── CURLOPT_HAPROXYPROTOCOL.3 + │   │   ├── CURLOPT_HEADER.3 + │   │   ├── CURLOPT_HEADERDATA.3 + │   │   ├── CURLOPT_HEADERFUNCTION.3 + │   │   ├── CURLOPT_HEADEROPT.3 + │   │   ├── CURLOPT_HSTS.3 + │   │   ├── CURLOPT_HSTS_CTRL.3 + │   │   ├── CURLOPT_HSTSREADDATA.3 + │   │   ├── CURLOPT_HSTSREADFUNCTION.3 + │   │   ├── CURLOPT_HSTSWRITEDATA.3 + │   │   ├── CURLOPT_HSTSWRITEFUNCTION.3 + │   │   ├── CURLOPT_HTTP09_ALLOWED.3 + │   │   ├── CURLOPT_HTTP200ALIASES.3 + │   │   ├── CURLOPT_HTTPAUTH.3 + │   │   ├── CURLOPT_HTTP_CONTENT_DECODING.3 + │   │   ├── CURLOPT_HTTPGET.3 + │   │   ├── CURLOPT_HTTPHEADER.3 + │   │   ├── CURLOPT_HTTPPOST.3 + │   │   ├── CURLOPT_HTTPPROXYTUNNEL.3 + │   │   ├── CURLOPT_HTTP_TRANSFER_DECODING.3 + │   │   ├── CURLOPT_HTTP_VERSION.3 + │   │   ├── CURLOPT_IGNORE_CONTENT_LENGTH.3 + │   │   ├── CURLOPT_INFILESIZE.3 + │   │   ├── CURLOPT_INFILESIZE_LARGE.3 + │   │   ├── CURLOPT_INTERFACE.3 + │   │   ├── CURLOPT_INTERLEAVEDATA.3 + │   │   ├── CURLOPT_INTERLEAVEFUNCTION.3 + │   │   ├── CURLOPT_IOCTLDATA.3 + │   │   ├── CURLOPT_IOCTLFUNCTION.3 + │   │   ├── CURLOPT_IPRESOLVE.3 + │   │   ├── CURLOPT_ISSUERCERT.3 + │   │   ├── CURLOPT_ISSUERCERT_BLOB.3 + │   │   ├── CURLOPT_KEEP_SENDING_ON_ERROR.3 + │   │   ├── CURLOPT_KEYPASSWD.3 + │   │   ├── CURLOPT_KRBLEVEL.3 + │   │   ├── CURLOPT_LOCALPORT.3 + │   │   ├── CURLOPT_LOCALPORTRANGE.3 + │   │   ├── CURLOPT_LOGIN_OPTIONS.3 + │   │   ├── CURLOPT_LOW_SPEED_LIMIT.3 + │   │   ├── CURLOPT_LOW_SPEED_TIME.3 + │   │   ├── CURLOPT_MAIL_AUTH.3 + │   │   ├── CURLOPT_MAIL_FROM.3 + │   │   ├── CURLOPT_MAIL_RCPT.3 + │   │   ├── CURLOPT_MAIL_RCPT_ALLOWFAILS.3 + │   │   ├── CURLOPT_MAXAGE_CONN.3 + │   │   ├── CURLOPT_MAXCONNECTS.3 + │   │   ├── CURLOPT_MAXFILESIZE.3 + │   │   ├── CURLOPT_MAXFILESIZE_LARGE.3 + │   │   ├── CURLOPT_MAXLIFETIME_CONN.3 + │   │   ├── CURLOPT_MAX_RECV_SPEED_LARGE.3 + │   │   ├── CURLOPT_MAXREDIRS.3 + │   │   ├── CURLOPT_MAX_SEND_SPEED_LARGE.3 + │   │   ├── CURLOPT_MIME_OPTIONS.3 + │   │   ├── CURLOPT_MIMEPOST.3 + │   │   ├── CURLOPT_NETRC.3 + │   │   ├── CURLOPT_NETRC_FILE.3 + │   │   ├── CURLOPT_NEW_DIRECTORY_PERMS.3 + │   │   ├── CURLOPT_NEW_FILE_PERMS.3 + │   │   ├── CURLOPT_NOBODY.3 + │   │   ├── CURLOPT_NOPROGRESS.3 + │   │   ├── CURLOPT_NOPROXY.3 + │   │   ├── CURLOPT_NOSIGNAL.3 + │   │   ├── CURLOPT_OPENSOCKETDATA.3 + │   │   ├── CURLOPT_OPENSOCKETFUNCTION.3 + │   │   ├── CURLOPT_PASSWORD.3 + │   │   ├── CURLOPT_PATH_AS_IS.3 + │   │   ├── CURLOPT_PINNEDPUBLICKEY.3 + │   │   ├── CURLOPT_PIPEWAIT.3 + │   │   ├── CURLOPT_PORT.3 + │   │   ├── CURLOPT_POST.3 + │   │   ├── CURLOPT_POSTFIELDS.3 + │   │   ├── CURLOPT_POSTFIELDSIZE.3 + │   │   ├── CURLOPT_POSTFIELDSIZE_LARGE.3 + │   │   ├── CURLOPT_POSTQUOTE.3 + │   │   ├── CURLOPT_POSTREDIR.3 + │   │   ├── CURLOPT_PRE_PROXY.3 + │   │   ├── CURLOPT_PREQUOTE.3 + │   │   ├── CURLOPT_PREREQDATA.3 + │   │   ├── CURLOPT_PREREQFUNCTION.3 + │   │   ├── CURLOPT_PRIVATE.3 + │   │   ├── CURLOPT_PROGRESSDATA.3 + │   │   ├── CURLOPT_PROGRESSFUNCTION.3 + │   │   ├── CURLOPT_PROTOCOLS.3 + │   │   ├── CURLOPT_PROTOCOLS_STR.3 + │   │   ├── CURLOPT_PROXY.3 + │   │   ├── CURLOPT_PROXYAUTH.3 + │   │   ├── CURLOPT_PROXY_CAINFO.3 + │   │   ├── CURLOPT_PROXY_CAINFO_BLOB.3 + │   │   ├── CURLOPT_PROXY_CAPATH.3 + │   │   ├── CURLOPT_PROXY_CRLFILE.3 + │   │   ├── CURLOPT_PROXYHEADER.3 + │   │   ├── CURLOPT_PROXY_ISSUERCERT.3 + │   │   ├── CURLOPT_PROXY_ISSUERCERT_BLOB.3 + │   │   ├── CURLOPT_PROXY_KEYPASSWD.3 + │   │   ├── CURLOPT_PROXYPASSWORD.3 + │   │   ├── CURLOPT_PROXY_PINNEDPUBLICKEY.3 + │   │   ├── CURLOPT_PROXYPORT.3 + │   │   ├── CURLOPT_PROXY_SERVICE_NAME.3 + │   │   ├── CURLOPT_PROXY_SSLCERT.3 + │   │   ├── CURLOPT_PROXY_SSLCERT_BLOB.3 + │   │   ├── CURLOPT_PROXY_SSLCERTTYPE.3 + │   │   ├── CURLOPT_PROXY_SSL_CIPHER_LIST.3 + │   │   ├── CURLOPT_PROXY_SSLKEY.3 + │   │   ├── CURLOPT_PROXY_SSLKEY_BLOB.3 + │   │   ├── CURLOPT_PROXY_SSLKEYTYPE.3 + │   │   ├── CURLOPT_PROXY_SSL_OPTIONS.3 + │   │   ├── CURLOPT_PROXY_SSL_VERIFYHOST.3 + │   │   ├── CURLOPT_PROXY_SSL_VERIFYPEER.3 + │   │   ├── CURLOPT_PROXY_SSLVERSION.3 + │   │   ├── CURLOPT_PROXY_TLS13_CIPHERS.3 + │   │   ├── CURLOPT_PROXY_TLSAUTH_PASSWORD.3 + │   │   ├── CURLOPT_PROXY_TLSAUTH_TYPE.3 + │   │   ├── CURLOPT_PROXY_TLSAUTH_USERNAME.3 + │   │   ├── CURLOPT_PROXY_TRANSFER_MODE.3 + │   │   ├── CURLOPT_PROXYTYPE.3 + │   │   ├── CURLOPT_PROXYUSERNAME.3 + │   │   ├── CURLOPT_PROXYUSERPWD.3 + │   │   ├── CURLOPT_PUT.3 + │   │   ├── CURLOPT_QUICK_EXIT.3 + │   │   ├── CURLOPT_QUOTE.3 + │   │   ├── CURLOPT_RANDOM_FILE.3 + │   │   ├── CURLOPT_RANGE.3 + │   │   ├── CURLOPT_READDATA.3 + │   │   ├── CURLOPT_READFUNCTION.3 + │   │   ├── CURLOPT_REDIR_PROTOCOLS.3 + │   │   ├── CURLOPT_REDIR_PROTOCOLS_STR.3 + │   │   ├── CURLOPT_REFERER.3 + │   │   ├── CURLOPT_REQUEST_TARGET.3 + │   │   ├── CURLOPT_RESOLVE.3 + │   │   ├── CURLOPT_RESOLVER_START_DATA.3 + │   │   ├── CURLOPT_RESOLVER_START_FUNCTION.3 + │   │   ├── CURLOPT_RESUME_FROM.3 + │   │   ├── CURLOPT_RESUME_FROM_LARGE.3 + │   │   ├── CURLOPT_RTSP_CLIENT_CSEQ.3 + │   │   ├── CURLOPT_RTSP_REQUEST.3 + │   │   ├── CURLOPT_RTSP_SERVER_CSEQ.3 + │   │   ├── CURLOPT_RTSP_SESSION_ID.3 + │   │   ├── CURLOPT_RTSP_STREAM_URI.3 + │   │   ├── CURLOPT_RTSP_TRANSPORT.3 + │   │   ├── CURLOPT_SASL_AUTHZID.3 + │   │   ├── CURLOPT_SASL_IR.3 + │   │   ├── CURLOPT_SEEKDATA.3 + │   │   ├── CURLOPT_SEEKFUNCTION.3 + │   │   ├── CURLOPT_SERVER_RESPONSE_TIMEOUT.3 + │   │   ├── CURLOPT_SERVER_RESPONSE_TIMEOUT_MS.3 + │   │   ├── CURLOPT_SERVICE_NAME.3 + │   │   ├── CURLOPT_SHARE.3 + │   │   ├── CURLOPT_SOCKOPTDATA.3 + │   │   ├── CURLOPT_SOCKOPTFUNCTION.3 + │   │   ├── CURLOPT_SOCKS5_AUTH.3 + │   │   ├── CURLOPT_SOCKS5_GSSAPI_NEC.3 + │   │   ├── CURLOPT_SOCKS5_GSSAPI_SERVICE.3 + │   │   ├── CURLOPT_SSH_AUTH_TYPES.3 + │   │   ├── CURLOPT_SSH_COMPRESSION.3 + │   │   ├── CURLOPT_SSH_HOSTKEYDATA.3 + │   │   ├── CURLOPT_SSH_HOSTKEYFUNCTION.3 + │   │   ├── CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 + │   │   ├── CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 + │   │   ├── CURLOPT_SSH_KEYDATA.3 + │   │   ├── CURLOPT_SSH_KEYFUNCTION.3 + │   │   ├── CURLOPT_SSH_KNOWNHOSTS.3 + │   │   ├── CURLOPT_SSH_PRIVATE_KEYFILE.3 + │   │   ├── CURLOPT_SSH_PUBLIC_KEYFILE.3 + │   │   ├── CURLOPT_SSLCERT.3 + │   │   ├── CURLOPT_SSLCERT_BLOB.3 + │   │   ├── CURLOPT_SSLCERTTYPE.3 + │   │   ├── CURLOPT_SSL_CIPHER_LIST.3 + │   │   ├── CURLOPT_SSL_CTX_DATA.3 + │   │   ├── CURLOPT_SSL_CTX_FUNCTION.3 + │   │   ├── CURLOPT_SSL_EC_CURVES.3 + │   │   ├── CURLOPT_SSL_ENABLE_ALPN.3 + │   │   ├── CURLOPT_SSL_ENABLE_NPN.3 + │   │   ├── CURLOPT_SSLENGINE.3 + │   │   ├── CURLOPT_SSLENGINE_DEFAULT.3 + │   │   ├── CURLOPT_SSL_FALSESTART.3 + │   │   ├── CURLOPT_SSLKEY.3 + │   │   ├── CURLOPT_SSLKEY_BLOB.3 + │   │   ├── CURLOPT_SSLKEYTYPE.3 + │   │   ├── CURLOPT_SSL_OPTIONS.3 + │   │   ├── CURLOPT_SSL_SESSIONID_CACHE.3 + │   │   ├── CURLOPT_SSL_VERIFYHOST.3 + │   │   ├── CURLOPT_SSL_VERIFYPEER.3 + │   │   ├── CURLOPT_SSL_VERIFYSTATUS.3 + │   │   ├── CURLOPT_SSLVERSION.3 + │   │   ├── CURLOPT_STDERR.3 + │   │   ├── CURLOPT_STREAM_DEPENDS.3 + │   │   ├── CURLOPT_STREAM_DEPENDS_E.3 + │   │   ├── CURLOPT_STREAM_WEIGHT.3 + │   │   ├── CURLOPT_SUPPRESS_CONNECT_HEADERS.3 + │   │   ├── CURLOPT_TCP_FASTOPEN.3 + │   │   ├── CURLOPT_TCP_KEEPALIVE.3 + │   │   ├── CURLOPT_TCP_KEEPIDLE.3 + │   │   ├── CURLOPT_TCP_KEEPINTVL.3 + │   │   ├── CURLOPT_TCP_NODELAY.3 + │   │   ├── CURLOPT_TELNETOPTIONS.3 + │   │   ├── CURLOPT_TFTP_BLKSIZE.3 + │   │   ├── CURLOPT_TFTP_NO_OPTIONS.3 + │   │   ├── CURLOPT_TIMECONDITION.3 + │   │   ├── CURLOPT_TIMEOUT.3 + │   │   ├── CURLOPT_TIMEOUT_MS.3 + │   │   ├── CURLOPT_TIMEVALUE.3 + │   │   ├── CURLOPT_TIMEVALUE_LARGE.3 + │   │   ├── CURLOPT_TLS13_CIPHERS.3 + │   │   ├── CURLOPT_TLSAUTH_PASSWORD.3 + │   │   ├── CURLOPT_TLSAUTH_TYPE.3 + │   │   ├── CURLOPT_TLSAUTH_USERNAME.3 + │   │   ├── CURLOPT_TRAILERDATA.3 + │   │   ├── CURLOPT_TRAILERFUNCTION.3 + │   │   ├── CURLOPT_TRANSFER_ENCODING.3 + │   │   ├── CURLOPT_TRANSFERTEXT.3 + │   │   ├── CURLOPT_UNIX_SOCKET_PATH.3 + │   │   ├── CURLOPT_UNRESTRICTED_AUTH.3 + │   │   ├── CURLOPT_UPKEEP_INTERVAL_MS.3 + │   │   ├── CURLOPT_UPLOAD.3 + │   │   ├── CURLOPT_UPLOAD_BUFFERSIZE.3 + │   │   ├── CURLOPT_URL.3 + │   │   ├── CURLOPT_USERAGENT.3 + │   │   ├── CURLOPT_USERNAME.3 + │   │   ├── CURLOPT_USERPWD.3 + │   │   ├── CURLOPT_USE_SSL.3 + │   │   ├── CURLOPT_VERBOSE.3 + │   │   ├── CURLOPT_WILDCARDMATCH.3 + │   │   ├── CURLOPT_WRITEDATA.3 + │   │   ├── CURLOPT_WRITEFUNCTION.3 + │   │   ├── CURLOPT_WS_OPTIONS.3 + │   │   ├── CURLOPT_XFERINFODATA.3 + │   │   ├── CURLOPT_XFERINFOFUNCTION.3 + │   │   ├── CURLOPT_XOAUTH2_BEARER.3 + │   │   ├── curl_pushheader_byname.3 + │   │   ├── curl_pushheader_bynum.3 + │   │   ├── curl_share_cleanup.3 + │   │   ├── curl_share_init.3 + │   │   ├── curl_share_setopt.3 + │   │   ├── curl_share_strerror.3 + │   │   ├── CURLSHOPT_LOCKFUNC.3 + │   │   ├── CURLSHOPT_SHARE.3 + │   │   ├── CURLSHOPT_UNLOCKFUNC.3 + │   │   ├── CURLSHOPT_UNSHARE.3 + │   │   ├── CURLSHOPT_USERDATA.3 + │   │   ├── curl_slist_append.3 + │   │   ├── curl_slist_free_all.3 + │   │   ├── curl_strequal.3 + │   │   ├── curl_strnequal.3 + │   │   ├── curl_unescape.3 + │   │   ├── curl_url.3 + │   │   ├── curl_url_cleanup.3 + │   │   ├── curl_url_dup.3 + │   │   ├── curl_url_get.3 + │   │   ├── curl_url_set.3 + │   │   ├── curl_url_strerror.3 + │   │   ├── curl_version.3 + │   │   ├── curl_version_info.3 + │   │   ├── curl_ws_meta.3 + │   │   ├── curl_ws_recv.3 + │   │   ├── curl_ws_send.3 + │   │   ├── libcurl.3 + │   │   ├── libcurl-easy.3 + │   │   ├── libcurl-env.3 + │   │   ├── libcurl-env-dbg.3 + │   │   ├── libcurl-errors.3 + │   │   ├── libcurl-multi.3 + │   │   ├── libcurl-security.3 + │   │   ├── libcurl-share.3 + │   │   ├── libcurl-symbols.3 + │   │   ├── libcurl-thread.3 + │   │   ├── libcurl-tutorial.3 + │   │   ├── libcurl-url.3 + │   │   └── libcurl-ws.3 + │   ├── swift + │   │   └── LICENSE.txt + │   └── vim + │   └── vim73 + │   ├── ftdetect + │   │   ├── sil.vim + │   │   ├── swiftgyb.vim + │   │   └── swift.vim + │   └── syntax + │   ├── sil.vim + │   ├── swiftgyb.vim + │   └── swift.vim + ├── swift-sdk.json + └── swift-toolset.json +/tmp/dock-artifactbundle.tree [error opening dir] + +436 directories, 7342 files From 0ea2a35750641019a7125161794d1b1eb89bdcd7 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Sat, 19 Apr 2025 11:02:53 -0400 Subject: [PATCH 51/77] Android SDK build --- swift-ci/sdks/android/scripts/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index c285eb67..d27dd9f5 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -453,7 +453,7 @@ EOF "swift-toolset.json" ], "sdkRootPath": "${sdk_root}/${arch}", - "swiftResourcesPath": "${sdk_root}/${arch}/usr/lib/swift_static", + "swiftResourcesPath": "${sdk_root}/${arch}/usr/lib/swift", "swiftStaticResourcesPath": "${sdk_root}/${arch}/usr/lib/swift_static" EOF done From 2a9eaf7058bbe21ae46a942fb2b4190f49192ebe Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Sat, 19 Apr 2025 21:52:18 -0400 Subject: [PATCH 52/77] Android SDK build --- .github/workflows/pull_request.yml | 18 +- swift-ci/sdks/android/scripts/build.sh | 25 +- swift-ci/sdks/android/tee | 7780 ------------------------ 3 files changed, 30 insertions(+), 7793 deletions(-) delete mode 100644 swift-ci/sdks/android/tee diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index fbde1623..d043821d 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -80,13 +80,27 @@ jobs: cd DemoProject ${{ steps.paths.outputs.swift-path }} --version ${{ steps.paths.outputs.swift-path }} package init - ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-swift-android + echo 'import Foundation' >> Sources/DemoProject/DemoProject.swift + echo 'import FoundationEssentials' >> Sources/DemoProject/DemoProject.swift + echo 'import FoundationXML' >> Sources/DemoProject/DemoProject.swift + echo 'import FoundationNetworking' >> Sources/DemoProject/DemoProject.swift + echo 'import Concurrency' >> Sources/DemoProject/DemoProject.swift + echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift + echo 'import Android' >> Sources/DemoProject/DemoProject.swift + #${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android + ${{ steps.paths.outputs.swift-path }} build --swift-sdk x86_64-unknown-linux-android + - name: Build swift-algorithms + run: | + cd ${{ runner.temp }} + git clone https://github.com/apple/swift-algorithms.git + cd swift-algorithms + ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android - name: Test Swift Package on Android # TODO: need to implement installed-sdk option in swift-android-action if: false uses: skiptools/swift-android-action@main with: package-path: ${{ runner.temp }}/DemoProject - installed-sdk: x86_64-swift-android + installed-sdk: x86_64-unknown-linux-android installed-swift: ${{ steps.paths.outputs.swift-path }} diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index d27dd9f5..5ca4de7b 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -359,11 +359,6 @@ for arch in $archs; do # use an out-of-tree build folder, otherwise subsequent arch builds have conflicts export SWIFT_BUILD_ROOT=${build_dir}/$arch/swift-project - # need to remove symlink that gets created in the NDK to the previous arch's build - # or else we get errors like: - # error: could not find module '_Builtin_float' for target 'x86_64-unknown-linux-android'; found: aarch64-unknown-linux-android, at: /home/runner/work/_temp/swift-android-sdk/ndk/android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/swift/android/_Builtin_float.swiftmodule - rm -f $ndk_toolchain/sysroot/usr/lib/swift - ./swift/utils/build-script \ $build_type_flag \ --reconfigure \ @@ -391,6 +386,12 @@ for arch in $archs; do #--clean-install-destdir \ #--clean \ + + + # need to remove symlink that gets created in the NDK to the previous arch's build + # or else we get errors like: + # error: could not find module '_Builtin_float' for target 'x86_64-unknown-linux-android'; found: aarch64-unknown-linux-android, at: /home/runner/work/_temp/swift-android-sdk/ndk/android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/swift/android/_Builtin_float.swiftmodule + rm -f $ndk_toolchain/sysroot/usr/lib/swift quiet_popd groupend done @@ -400,7 +401,8 @@ groupstart "Bundling SDK" sdk_name=swift-${swift_version}-android-${android_api}-${android_sdk_version} #sdk_base=android-27c-sysroot -sdk_base=swift-android +#sdk_base=swift-unknown-android +sdk_base=unknown-linux-android #sdk_root="${sdk_base}-${android_sdk_version}.sdk" sdk_root="${sdk_base}.sdk" @@ -432,6 +434,8 @@ EOF cd "$sdk_name/$sdk_base" +cp -a ${ndk_toolchain}/sysroot sysroot + cat > swift-sdk.json <> swift-sdk.json < Date: Sat, 19 Apr 2025 22:24:32 -0400 Subject: [PATCH 53/77] Android SDK build --- .github/workflows/pull_request.yml | 8 ++++---- swift-ci/sdks/android/scripts/build.sh | 25 +++++++++++++------------ 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index d043821d..e8ee4f1b 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -87,20 +87,20 @@ jobs: echo 'import Concurrency' >> Sources/DemoProject/DemoProject.swift echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift echo 'import Android' >> Sources/DemoProject/DemoProject.swift - #${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android - ${{ steps.paths.outputs.swift-path }} build --swift-sdk x86_64-unknown-linux-android + #${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-linux-android28 + ${{ steps.paths.outputs.swift-path }} build --swift-sdk x86_64-linux-android28 - name: Build swift-algorithms run: | cd ${{ runner.temp }} git clone https://github.com/apple/swift-algorithms.git cd swift-algorithms - ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android + ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-linux-android28 - name: Test Swift Package on Android # TODO: need to implement installed-sdk option in swift-android-action if: false uses: skiptools/swift-android-action@main with: package-path: ${{ runner.temp }}/DemoProject - installed-sdk: x86_64-unknown-linux-android + installed-sdk: x86_64-linux-android28 installed-swift: ${{ steps.paths.outputs.swift-path }} diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 5ca4de7b..436a5896 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -402,7 +402,7 @@ groupstart "Bundling SDK" sdk_name=swift-${swift_version}-android-${android_api}-${android_sdk_version} #sdk_base=android-27c-sysroot #sdk_base=swift-unknown-android -sdk_base=unknown-linux-android +sdk_base=linux-android #sdk_root="${sdk_base}-${android_sdk_version}.sdk" sdk_root="${sdk_base}.sdk" @@ -434,7 +434,7 @@ EOF cd "$sdk_name/$sdk_base" -cp -a ${ndk_toolchain}/sysroot sysroot +cp -a ${ndk_toolchain}/sysroot ndk-sysroot cat > swift-sdk.json < swift-sdk.json <> swift-sdk.json <> swift-sdk.json <> swift-sdk.json <> swift-sdk.json <> swift-sdk.json < Date: Sat, 19 Apr 2025 23:32:36 -0400 Subject: [PATCH 54/77] Android SDK build --- .github/workflows/pull_request.yml | 21 ++++++++++----------- swift-ci/sdks/android/scripts/build.sh | 5 +++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index e8ee4f1b..2882b216 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -80,27 +80,26 @@ jobs: cd DemoProject ${{ steps.paths.outputs.swift-path }} --version ${{ steps.paths.outputs.swift-path }} package init - echo 'import Foundation' >> Sources/DemoProject/DemoProject.swift - echo 'import FoundationEssentials' >> Sources/DemoProject/DemoProject.swift - echo 'import FoundationXML' >> Sources/DemoProject/DemoProject.swift - echo 'import FoundationNetworking' >> Sources/DemoProject/DemoProject.swift - echo 'import Concurrency' >> Sources/DemoProject/DemoProject.swift - echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift - echo 'import Android' >> Sources/DemoProject/DemoProject.swift - #${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-linux-android28 - ${{ steps.paths.outputs.swift-path }} build --swift-sdk x86_64-linux-android28 + #echo 'import Foundation' >> Sources/DemoProject/DemoProject.swift + #echo 'import FoundationEssentials' >> Sources/DemoProject/DemoProject.swift + #echo 'import FoundationXML' >> Sources/DemoProject/DemoProject.swift + #echo 'import FoundationNetworking' >> Sources/DemoProject/DemoProject.swift + #echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift + #echo 'import Android' >> Sources/DemoProject/DemoProject.swift + #${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 + ${{ steps.paths.outputs.swift-path }} build --swift-sdk x86_64-unknown-linux-android28 - name: Build swift-algorithms run: | cd ${{ runner.temp }} git clone https://github.com/apple/swift-algorithms.git cd swift-algorithms - ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-linux-android28 + ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 - name: Test Swift Package on Android # TODO: need to implement installed-sdk option in swift-android-action if: false uses: skiptools/swift-android-action@main with: package-path: ${{ runner.temp }}/DemoProject - installed-sdk: x86_64-linux-android28 + installed-sdk: x86_64-unknown-linux-android28 installed-swift: ${{ steps.paths.outputs.swift-path }} diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 436a5896..eb5bab55 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -402,7 +402,8 @@ groupstart "Bundling SDK" sdk_name=swift-${swift_version}-android-${android_api}-${android_sdk_version} #sdk_base=android-27c-sysroot #sdk_base=swift-unknown-android -sdk_base=linux-android +#sdk_base=linux-android +sdk_base=swift-android #sdk_root="${sdk_base}-${android_sdk_version}.sdk" sdk_root="${sdk_base}.sdk" @@ -453,7 +454,7 @@ for api in $(eval echo "{$android_api..35}"); do EOF fi cat >> swift-sdk.json < Date: Sun, 20 Apr 2025 08:24:31 -0400 Subject: [PATCH 55/77] Android SDK build --- .github/workflows/pull_request.yml | 10 +++++----- swift-ci/sdks/android/scripts/build.sh | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 2882b216..a93db909 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -72,7 +72,7 @@ jobs: - name: Install SDK run: | ${{ steps.paths.outputs.swift-path }} sdk install ${{ steps.paths.outputs.artifact-path }} - ${{ steps.paths.outputs.swift-path }} sdk configure --show-configuration $(${{ steps.paths.outputs.swift-path }} sdk list | head -n 1) x86_64-swift-android + ${{ steps.paths.outputs.swift-path }} sdk configure --show-configuration $(${{ steps.paths.outputs.swift-path }} sdk list | head -n 1) x86_64-unknown-linux-android - name: Build Demo Project run: | cd ${{ runner.temp }} @@ -86,20 +86,20 @@ jobs: #echo 'import FoundationNetworking' >> Sources/DemoProject/DemoProject.swift #echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift #echo 'import Android' >> Sources/DemoProject/DemoProject.swift - #${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 - ${{ steps.paths.outputs.swift-path }} build --swift-sdk x86_64-unknown-linux-android28 + #${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android + ${{ steps.paths.outputs.swift-path }} build --swift-sdk x86_64-unknown-linux-android - name: Build swift-algorithms run: | cd ${{ runner.temp }} git clone https://github.com/apple/swift-algorithms.git cd swift-algorithms - ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 + ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android - name: Test Swift Package on Android # TODO: need to implement installed-sdk option in swift-android-action if: false uses: skiptools/swift-android-action@main with: package-path: ${{ runner.temp }}/DemoProject - installed-sdk: x86_64-unknown-linux-android28 + installed-sdk: x86_64-unknown-linux-android installed-swift: ${{ steps.paths.outputs.swift-path }} diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index eb5bab55..5b19f4ec 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -444,7 +444,9 @@ cat > swift-sdk.json < Date: Sun, 20 Apr 2025 09:20:48 -0400 Subject: [PATCH 56/77] Android SDK build --- .github/workflows/pull_request.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index a93db909..dae36f75 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -89,6 +89,8 @@ jobs: #${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android ${{ steps.paths.outputs.swift-path }} build --swift-sdk x86_64-unknown-linux-android - name: Build swift-algorithms + # TODO: fix :0: error: missing required module 'SwiftAndroid' + if: false run: | cd ${{ runner.temp }} git clone https://github.com/apple/swift-algorithms.git From 9bd510bfafb4a2615c8cca125aa19230c88c74ce Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 21 Apr 2025 10:20:20 -0400 Subject: [PATCH 57/77] Swift Androd build --- swift-ci/sdks/android/build | 2 +- swift-ci/sdks/android/scripts/build.sh | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 3839f10b..0a4d6ae7 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -52,7 +52,7 @@ mkdir -p ${SDKROOT}/products # Check-out the sources if [[ ! -d ${SDKROOT}/src ]]; then - scripts/fetch-source.sh --source-dir ${SDKROOT}/src + scripts/fetch-source.sh --source-dir ${SDKROOT}/src --swift-tag ${SWIFT_TAG} fi # fetch and apply the patches diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 5b19f4ec..3ac6cc6d 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -437,6 +437,11 @@ cd "$sdk_name/$sdk_base" cp -a ${ndk_toolchain}/sysroot ndk-sysroot +#quiet_pushd ndk-sysroot/usr/lib +# FIXME: need to merge the multiple x86_64 archs +#ln -s ../../../swift-android.sdk/x86_64/usr/lib/swift +#quiet_popd + cat > swift-sdk.json < Date: Mon, 21 Apr 2025 15:39:21 -0400 Subject: [PATCH 58/77] Swift Androd build --- swift-ci/sdks/android/scripts/build.sh | 92 ++++++++++++++++++++++---- 1 file changed, 78 insertions(+), 14 deletions(-) diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 3ac6cc6d..39002cd0 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -384,10 +384,6 @@ for arch in $archs; do --swift-testing --install-swift-testing \ --cross-compile-append-host-target-to-destdir=False - #--clean-install-destdir \ - #--clean \ - - # need to remove symlink that gets created in the NDK to the previous arch's build # or else we get errors like: # error: could not find module '_Builtin_float' for target 'x86_64-unknown-linux-android'; found: aarch64-unknown-linux-android, at: /home/runner/work/_temp/swift-android-sdk/ndk/android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/swift/android/_Builtin_float.swiftmodule @@ -432,16 +428,89 @@ cat > info.json < $ndk_sysroot_path/SDKSettings.json < swift-sdk.json <> swift-sdk.json <> swift-sdk.json < swift-toolset.json < Date: Mon, 21 Apr 2025 15:50:20 -0400 Subject: [PATCH 59/77] Swift Androd build --- .github/workflows/pull_request.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index dae36f75..f54e994c 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -80,17 +80,14 @@ jobs: cd DemoProject ${{ steps.paths.outputs.swift-path }} --version ${{ steps.paths.outputs.swift-path }} package init - #echo 'import Foundation' >> Sources/DemoProject/DemoProject.swift - #echo 'import FoundationEssentials' >> Sources/DemoProject/DemoProject.swift - #echo 'import FoundationXML' >> Sources/DemoProject/DemoProject.swift - #echo 'import FoundationNetworking' >> Sources/DemoProject/DemoProject.swift - #echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift - #echo 'import Android' >> Sources/DemoProject/DemoProject.swift - #${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android - ${{ steps.paths.outputs.swift-path }} build --swift-sdk x86_64-unknown-linux-android + echo 'import Foundation' >> Sources/DemoProject/DemoProject.swift + echo 'import FoundationEssentials' >> Sources/DemoProject/DemoProject.swift + echo 'import FoundationXML' >> Sources/DemoProject/DemoProject.swift + echo 'import FoundationNetworking' >> Sources/DemoProject/DemoProject.swift + echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift + echo 'import Android' >> Sources/DemoProject/DemoProject.swift + ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android - name: Build swift-algorithms - # TODO: fix :0: error: missing required module 'SwiftAndroid' - if: false run: | cd ${{ runner.temp }} git clone https://github.com/apple/swift-algorithms.git From 417e48335ca32d4ac9505c216bfda1a7ec7b1e42 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 21 Apr 2025 17:05:38 -0400 Subject: [PATCH 60/77] Swift Androd build --- .github/workflows/pull_request.yml | 32 ++++++++++---------- swift-ci/sdks/android/scripts/build.sh | 41 +++++++++----------------- 2 files changed, 30 insertions(+), 43 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index f54e994c..6005a561 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -48,7 +48,7 @@ jobs: - name: Build Android SDK working-directory: swift-ci/sdks/android run: | - sudo apt install -q ninja-build + sudo apt install -q ninja-build patchelf # build all architectures #./build @@ -60,6 +60,7 @@ jobs: - name: Get artifact info id: paths run: | + echo "swift-root=$(dirname ${{ runner.temp }}/swift-android-sdk/host-toolchain/*/usr)" >> $GITHUB_OUTPUT echo "swift-path=$(ls ${{ runner.temp }}/swift-android-sdk/host-toolchain/*/usr/bin/swift)" >> $GITHUB_OUTPUT echo "artifact-name=$(basename ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz)" >> $GITHUB_OUTPUT echo "artifact-path=$(realpath ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz)" >> $GITHUB_OUTPUT @@ -73,7 +74,21 @@ jobs: run: | ${{ steps.paths.outputs.swift-path }} sdk install ${{ steps.paths.outputs.artifact-path }} ${{ steps.paths.outputs.swift-path }} sdk configure --show-configuration $(${{ steps.paths.outputs.swift-path }} sdk list | head -n 1) x86_64-unknown-linux-android + - name: Build swift-algorithms + run: | + cd ${{ runner.temp }} + git clone https://github.com/apple/swift-algorithms.git + cd swift-algorithms + ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android + - name: Test swift-algorithms on Android + uses: skiptools/swift-android-action@main + with: + #package-path: ${{ runner.temp }}/DemoProject + package-path: ${{ runner.temp }}/swift-algorithms + installed-sdk: x86_64-unknown-linux-android + installed-swift: ${{ steps.paths.outputs.swift-root }} - name: Build Demo Project + if: false run: | cd ${{ runner.temp }} mkdir DemoProject @@ -87,18 +102,3 @@ jobs: echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift echo 'import Android' >> Sources/DemoProject/DemoProject.swift ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android - - name: Build swift-algorithms - run: | - cd ${{ runner.temp }} - git clone https://github.com/apple/swift-algorithms.git - cd swift-algorithms - ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android - - name: Test Swift Package on Android - # TODO: need to implement installed-sdk option in swift-android-action - if: false - uses: skiptools/swift-android-action@main - with: - package-path: ${{ runner.temp }}/DemoProject - installed-sdk: x86_64-unknown-linux-android - installed-swift: ${{ steps.paths.outputs.swift-path }} - diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 39002cd0..41b59115 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -444,23 +444,10 @@ cat > $ndk_sysroot_path/SDKSettings.json < swift-sdk.json < Date: Mon, 21 Apr 2025 17:16:02 -0400 Subject: [PATCH 61/77] Swift Androd build --- .github/workflows/pull_request.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 6005a561..b45c2b10 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -50,10 +50,10 @@ jobs: run: | sudo apt install -q ninja-build patchelf # build all architectures - #./build + ./build # just build x86_64 for testing - TARGET_ARCHS=x86_64 ./build + #TARGET_ARCHS=x86_64 ./build # build arch specified by the matrix #TARGET_ARCHS=${{ matrix.arch }} ./build From 73ebe28914532bd3f7cf7c07a7312d8043a72424 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 21 Apr 2025 19:02:04 -0400 Subject: [PATCH 62/77] Swift Androd build --- .github/workflows/pull_request.yml | 18 ++++---- swift-ci/sdks/android/scripts/build.sh | 57 ++++++++++++-------------- 2 files changed, 36 insertions(+), 39 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index b45c2b10..3b1a7f7d 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -35,12 +35,12 @@ jobs: run: ./build android-build: - #name: Build Android ${{ matrix.arch }} SDK - #strategy: - #fail-fast: false - #matrix: - # arch: [armv7,aarch64,x86_64] - name: Build Android SDK + name: Build Android ${{ matrix.arch }} SDK + strategy: + fail-fast: false + matrix: + arch: ['x86_64', 'armv7,aarch64,x86_64'] + #name: Build Android SDK runs-on: ubuntu-24.04 steps: - name: Checkout repository @@ -79,13 +79,13 @@ jobs: cd ${{ runner.temp }} git clone https://github.com/apple/swift-algorithms.git cd swift-algorithms - ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android + ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 - name: Test swift-algorithms on Android uses: skiptools/swift-android-action@main with: #package-path: ${{ runner.temp }}/DemoProject package-path: ${{ runner.temp }}/swift-algorithms - installed-sdk: x86_64-unknown-linux-android + installed-sdk: x86_64-unknown-linux-android28 installed-swift: ${{ steps.paths.outputs.swift-root }} - name: Build Demo Project if: false @@ -101,4 +101,4 @@ jobs: echo 'import FoundationNetworking' >> Sources/DemoProject/DemoProject.swift echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift echo 'import Android' >> Sources/DemoProject/DemoProject.swift - ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android + ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 41b59115..e334c03b 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -395,19 +395,13 @@ done # Now generate the bundle groupstart "Bundling SDK" -sdk_name=swift-${swift_version}-android-${android_api}-${android_sdk_version} -#sdk_base=android-27c-sysroot -#sdk_base=swift-unknown-android -#sdk_base=linux-android sdk_base=swift-android -#sdk_root="${sdk_base}-${android_sdk_version}.sdk" -sdk_root="${sdk_base}.sdk" +sdk_staging="sdk_staging" bundle="${sdk_name}.artifactbundle" -rm -rf "${build_dir}/$bundle" -mkdir -p "${build_dir}/$bundle/$sdk_name/$sdk_base" - +rm -rf ${build_dir}/$bundle +mkdir -p ${build_dir}/$bundle quiet_pushd ${build_dir}/$bundle # First the info.json, for SwiftPM @@ -418,7 +412,7 @@ cat > info.json < info.json < $ndk_sysroot_path/SDKSettings.json < $sysroot_path/SDKSettings.json < $ndk_sysroot_path/SDKSettings.json <> swift-sdk.json < Date: Mon, 21 Apr 2025 19:45:47 -0400 Subject: [PATCH 63/77] Swift Androd build --- .github/workflows/pull_request.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 3b1a7f7d..b44a57a0 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -50,13 +50,13 @@ jobs: run: | sudo apt install -q ninja-build patchelf # build all architectures - ./build + #./build # just build x86_64 for testing #TARGET_ARCHS=x86_64 ./build # build arch specified by the matrix - #TARGET_ARCHS=${{ matrix.arch }} ./build + TARGET_ARCHS=${{ matrix.arch }} ./build - name: Get artifact info id: paths run: | @@ -70,6 +70,10 @@ jobs: compression-level: 0 name: ${{ steps.paths.outputs.artifact-name }} path: ${{ steps.paths.outputs.artifact-path }} + - name: Cleanup + run: | + # need to free up some space or else when installing we get: No space left on device + rm -rf ${{ runner.temp }}/swift-android-sdk/{build,src} - name: Install SDK run: | ${{ steps.paths.outputs.swift-path }} sdk install ${{ steps.paths.outputs.artifact-path }} From 1149f52c346a1b679596f534df9fa94246c63c13 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 21 Apr 2025 21:16:10 -0400 Subject: [PATCH 64/77] Swift Androd build --- .github/workflows/pull_request.yml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index b44a57a0..424531d5 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -39,7 +39,7 @@ jobs: strategy: fail-fast: false matrix: - arch: ['x86_64', 'armv7,aarch64,x86_64'] + arch: ['x86_64', ''] #name: Build Android SDK runs-on: ubuntu-24.04 steps: @@ -62,8 +62,16 @@ jobs: run: | echo "swift-root=$(dirname ${{ runner.temp }}/swift-android-sdk/host-toolchain/*/usr)" >> $GITHUB_OUTPUT echo "swift-path=$(ls ${{ runner.temp }}/swift-android-sdk/host-toolchain/*/usr/bin/swift)" >> $GITHUB_OUTPUT - echo "artifact-name=$(basename ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz)" >> $GITHUB_OUTPUT - echo "artifact-path=$(realpath ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz)" >> $GITHUB_OUTPUT + + ARTIFACT_PATH=$(realpath ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz) + echo "artifact-path=${ARTIFACT_PATH}" >> $GITHUB_OUTPUT + + # artifacts need a unique name so we suffix with the matrix arch(s) + ARTIFACT_SUFFIX="" + if [[ ! -z "${{ matrix.arch }}" ]]; then + ARTIFACT_SUFFIX="-${{ matrix.arch }}" + fi + echo "artifact-name=$(basename ${ARTIFACT_PATH} .tar.gz)${ARTIFACT_SUFFIX}.tar.gz" >> $GITHUB_OUTPUT - name: Upload SDK artifactbundle uses: actions/upload-artifact@v4 with: From b154b33576a81cf36fbff7abfd00e045ed4dfc80 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 21 Apr 2025 21:39:47 -0400 Subject: [PATCH 65/77] Swift Androd build --- .github/workflows/pull_request.yml | 7 ++++--- swift-ci/sdks/android/scripts/build.sh | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 424531d5..0f673f91 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -60,8 +60,9 @@ jobs: - name: Get artifact info id: paths run: | - echo "swift-root=$(dirname ${{ runner.temp }}/swift-android-sdk/host-toolchain/*/usr)" >> $GITHUB_OUTPUT - echo "swift-path=$(ls ${{ runner.temp }}/swift-android-sdk/host-toolchain/*/usr/bin/swift)" >> $GITHUB_OUTPUT + SWIFT_ROOT=$(dirname ${{ runner.temp }}/swift-android-sdk/host-toolchain/*/usr) + echo "swift-root=${SWIFT_ROOT}" >> $GITHUB_OUTPUT + echo "swift-path=${SWIFT_ROOT}/usr/bin/swift" >> $GITHUB_OUTPUT ARTIFACT_PATH=$(realpath ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz) echo "artifact-path=${ARTIFACT_PATH}" >> $GITHUB_OUTPUT @@ -85,7 +86,7 @@ jobs: - name: Install SDK run: | ${{ steps.paths.outputs.swift-path }} sdk install ${{ steps.paths.outputs.artifact-path }} - ${{ steps.paths.outputs.swift-path }} sdk configure --show-configuration $(${{ steps.paths.outputs.swift-path }} sdk list | head -n 1) x86_64-unknown-linux-android + ${{ steps.paths.outputs.swift-path }} sdk configure --show-configuration $(${{ steps.paths.outputs.swift-path }} sdk list | head -n 1) x86_64-unknown-linux-android28 - name: Build swift-algorithms run: | cd ${{ runner.temp }} diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index e334c03b..5bf94f51 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -474,6 +474,7 @@ done rm -r ${sysroot_path}/usr/share/{doc,man} rm -r ${sysroot_path}/usr/{include,lib}/{i686,riscv64}-linux-android +rm -r ${sysroot_path}/usr/lib/swift/clang/lib/linux/*{i[36]86,riscv64}* rm -r ${sdk_staging} # validate that some expected paths exist From 63d9b7fcfe49c00f512a486d2141c9d90f529c51 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 21 Apr 2025 22:00:16 -0400 Subject: [PATCH 66/77] Swift Androd build --- .github/workflows/pull_request.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 0f673f91..adfd07ec 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -87,6 +87,9 @@ jobs: run: | ${{ steps.paths.outputs.swift-path }} sdk install ${{ steps.paths.outputs.artifact-path }} ${{ steps.paths.outputs.swift-path }} sdk configure --show-configuration $(${{ steps.paths.outputs.swift-path }} sdk list | head -n 1) x86_64-unknown-linux-android28 + # recent releases require that ANDROID_NDK_ROOT *not* be set + # see https://github.com/finagolfin/swift-android-sdk/issues/207 + echo "ANDROID_NDK_ROOT=" >> $GITHUB_ENV - name: Build swift-algorithms run: | cd ${{ runner.temp }} From 9562903fc50d72dbf05c64d98648b336a0df50a8 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 21 Apr 2025 22:42:27 -0400 Subject: [PATCH 67/77] Swift Androd build --- swift-ci/sdks/android/scripts/build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 5bf94f51..2443ffed 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -551,3 +551,4 @@ fi groupend + From 30d839eb25ef926a69dcab3c2b34bf375e222afd Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Tue, 22 Apr 2025 10:13:48 -0400 Subject: [PATCH 68/77] Swift Androd build --- .github/workflows/pull_request.yml | 42 ++++++++++++++++++------------ 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index adfd07ec..5ee6437f 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -67,12 +67,21 @@ jobs: ARTIFACT_PATH=$(realpath ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz) echo "artifact-path=${ARTIFACT_PATH}" >> $GITHUB_OUTPUT + ARTIFACT_EXT=".artifactbundle.tar.gz" + ARTIFACT_NAME=$(basename ${ARTIFACT_PATH} ${ARTIFACT_EXT})" # artifacts need a unique name so we suffix with the matrix arch(s) - ARTIFACT_SUFFIX="" if [[ ! -z "${{ matrix.arch }}" ]]; then - ARTIFACT_SUFFIX="-${{ matrix.arch }}" + ARTIFACT_NAME="${ARTIFACT_NAME}-$(echo ${{ matrix.arch }} | tr ',' '-')" fi - echo "artifact-name=$(basename ${ARTIFACT_PATH} .tar.gz)${ARTIFACT_SUFFIX}.tar.gz" >> $GITHUB_OUTPUT + ARTIFACT_NAME="${ARTIFACT_NAME}${ARTIFACT_EXT}" + + # There is no way to prevent even a single-file artifact from being zipped: + # https://github.com/actions/upload-artifact?tab=readme-ov-file#zip-archives + # so we tack ".zip" on to the end of the name + ARTIFACT_NAME="${ARTIFACT_NAME}.zip" + + # e.g.: swift-6.1-RELEASE_android-0.1-x86_64.artifactbundle.tar.gz + echo "artifact-name=${ARTIFACT_NAME}" >> $GITHUB_OUTPUT - name: Upload SDK artifactbundle uses: actions/upload-artifact@v4 with: @@ -90,21 +99,7 @@ jobs: # recent releases require that ANDROID_NDK_ROOT *not* be set # see https://github.com/finagolfin/swift-android-sdk/issues/207 echo "ANDROID_NDK_ROOT=" >> $GITHUB_ENV - - name: Build swift-algorithms - run: | - cd ${{ runner.temp }} - git clone https://github.com/apple/swift-algorithms.git - cd swift-algorithms - ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 - - name: Test swift-algorithms on Android - uses: skiptools/swift-android-action@main - with: - #package-path: ${{ runner.temp }}/DemoProject - package-path: ${{ runner.temp }}/swift-algorithms - installed-sdk: x86_64-unknown-linux-android28 - installed-swift: ${{ steps.paths.outputs.swift-root }} - name: Build Demo Project - if: false run: | cd ${{ runner.temp }} mkdir DemoProject @@ -118,3 +113,16 @@ jobs: echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift echo 'import Android' >> Sources/DemoProject/DemoProject.swift ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 + - name: Build swift-algorithms + run: | + cd ${{ runner.temp }} + git clone https://github.com/apple/swift-algorithms.git + cd swift-algorithms + ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 + - name: Test swift-algorithms on Android + uses: skiptools/swift-android-action@main + with: + #package-path: ${{ runner.temp }}/DemoProject + package-path: ${{ runner.temp }}/swift-algorithms + installed-sdk: x86_64-unknown-linux-android28 + installed-swift: ${{ steps.paths.outputs.swift-root }} From e2efeaf50a5b16b9057e9a702f3074ab9456f531 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Tue, 22 Apr 2025 10:25:37 -0400 Subject: [PATCH 69/77] Swift Androd build --- swift-ci/sdks/android/build | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 0a4d6ae7..891b15bf 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -64,6 +64,8 @@ fi # Apply patches # TODO: need to selectively apply patches based on release or not release pushd ${SDKROOT}/src/swift-project + echo "Applying patches" + # patch the patch, which seems to only be needed for an API less than 28 # https://github.com/finagolfin/swift-android-sdk/blob/main/swift-android.patch#L110 perl -pi -e 's/#if os\(Windows\)/#if os\(Android\)/g' $PATCHDIR/swift-android.patch @@ -76,16 +78,16 @@ pushd ${SDKROOT}/src/swift-project # fix for Process.swift:953:57: error: value of optional type 'posix_spawnattr_t?' (aka 'Optional') must be unwrapped to a value of type 'posix_spawnattr_t' (aka 'OpaquePointer') #perl -pi -e 's%canImport\(Darwin\) \|\| os\(Android\) \|\| os\(OpenBSD\)%canImport\(Darwin\) || os\(AndroidXXX\) || os\(OpenBSD\)%g' swift-corelibs-foundation/Sources/Foundation/Process.swift - git apply $PATCHDIR/swift-android.patch || true + git apply -v $PATCHDIR/swift-android.patch # swift-android-ci.patch is not needed, since it is only used for llbuild, etc. - #git apply -C1 $PATCHDIR/swift-android-ci.patch || true + git apply -C1 $PATCHDIR/swift-android-ci.patch # need to un-apply libandroid-spawn since we don't need it for API28+ perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt perl -pi -e 's/ STREQUAL Android\)/ STREQUAL AndroidDISABLED\)/g' swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt - git apply $PATCHDIR/swift-android-ci-release.patch || true - git apply $PATCHDIR/swift-android-testing-release.patch || true + git apply -v $PATCHDIR/swift-android-ci-release.patch + git apply -v $PATCHDIR/swift-android-testing-release.patch perl -pi -e 's%String\(cString: getpass%\"fake\" //%' swiftpm/Sources/PackageRegistryCommand/PackageRegistryCommand+Auth.swift popd From 3bf4a6a5ac788076cbd3059a01af75001f06cfe8 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Tue, 22 Apr 2025 10:32:25 -0400 Subject: [PATCH 70/77] Swift Androd build --- swift-ci/sdks/android/build | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index 891b15bf..b6271af3 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -70,26 +70,22 @@ pushd ${SDKROOT}/src/swift-project # https://github.com/finagolfin/swift-android-sdk/blob/main/swift-android.patch#L110 perl -pi -e 's/#if os\(Windows\)/#if os\(Android\)/g' $PATCHDIR/swift-android.patch - # disable backtrace() for Android (needs either API33+ or libandroid-execinfo, or to manually add in backtrace backport) - perl -pi -e 's/os\(Android\)/os\(AndroidDISABLED\)/g' swift-testing/Sources/Testing/SourceAttribution/Backtrace.swift # remove the need to link in android-execinfo perl -pi -e 's/dispatch android-execinfo/dispatch/g' $PATCHDIR/swift-android.patch - # fix for Process.swift:953:57: error: value of optional type 'posix_spawnattr_t?' (aka 'Optional') must be unwrapped to a value of type 'posix_spawnattr_t' (aka 'OpaquePointer') - #perl -pi -e 's%canImport\(Darwin\) \|\| os\(Android\) \|\| os\(OpenBSD\)%canImport\(Darwin\) || os\(AndroidXXX\) || os\(OpenBSD\)%g' swift-corelibs-foundation/Sources/Foundation/Process.swift - git apply -v $PATCHDIR/swift-android.patch # swift-android-ci.patch is not needed, since it is only used for llbuild, etc. - git apply -C1 $PATCHDIR/swift-android-ci.patch - - # need to un-apply libandroid-spawn since we don't need it for API28+ - perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt - perl -pi -e 's/ STREQUAL Android\)/ STREQUAL AndroidDISABLED\)/g' swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt - + #git apply -C1 $PATCHDIR/swift-android-ci.patch git apply -v $PATCHDIR/swift-android-ci-release.patch git apply -v $PATCHDIR/swift-android-testing-release.patch perl -pi -e 's%String\(cString: getpass%\"fake\" //%' swiftpm/Sources/PackageRegistryCommand/PackageRegistryCommand+Auth.swift + # disable backtrace() for Android (needs either API33+ or libandroid-execinfo, or to manually add in backtrace backport) + perl -pi -e 's/os\(Android\)/os\(AndroidDISABLED\)/g' swift-testing/Sources/Testing/SourceAttribution/Backtrace.swift + + # need to un-apply libandroid-spawn since we don't need it for API28+ + perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt + perl -pi -e 's/ STREQUAL Android\)/ STREQUAL AndroidDISABLED\)/g' swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt popd ./scripts/build.sh --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --android-api ${ANDROID_API} --host-toolchain ${HOST_TOOLCHAIN} --archs ${TARGET_ARCHS} From 53d9924395113aea2a61e2d5f31756adb048c800 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Tue, 22 Apr 2025 10:39:22 -0400 Subject: [PATCH 71/77] Swift Androd build --- .github/workflows/pull_request.yml | 5 ++-- swift-ci/sdks/android/build | 43 +++++++++++++++--------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 5ee6437f..7215eb6c 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -39,8 +39,9 @@ jobs: strategy: fail-fast: false matrix: - arch: ['x86_64', ''] - #name: Build Android SDK + # build only x86_64 to speed up the validation + arch: ['x86_64'] + #arch: ['x86_64', ''] runs-on: ubuntu-24.04 steps: - name: Checkout repository diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index b6271af3..a5d43478 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -59,34 +59,33 @@ fi PATCHDIR=${SDKROOT}/patches if [[ ! -d ${PATCHDIR} ]]; then git clone https://github.com/finagolfin/swift-android-sdk.git ${PATCHDIR} -fi -# Apply patches -# TODO: need to selectively apply patches based on release or not release -pushd ${SDKROOT}/src/swift-project - echo "Applying patches" + # TODO: need to selectively apply patches based on release or not release + pushd ${SDKROOT}/src/swift-project + echo "Applying patches" - # patch the patch, which seems to only be needed for an API less than 28 - # https://github.com/finagolfin/swift-android-sdk/blob/main/swift-android.patch#L110 - perl -pi -e 's/#if os\(Windows\)/#if os\(Android\)/g' $PATCHDIR/swift-android.patch + # patch the patch, which seems to only be needed for an API less than 28 + # https://github.com/finagolfin/swift-android-sdk/blob/main/swift-android.patch#L110 + perl -pi -e 's/#if os\(Windows\)/#if os\(Android\)/g' $PATCHDIR/swift-android.patch - # remove the need to link in android-execinfo - perl -pi -e 's/dispatch android-execinfo/dispatch/g' $PATCHDIR/swift-android.patch + # remove the need to link in android-execinfo + perl -pi -e 's/dispatch android-execinfo/dispatch/g' $PATCHDIR/swift-android.patch - git apply -v $PATCHDIR/swift-android.patch - # swift-android-ci.patch is not needed, since it is only used for llbuild, etc. - #git apply -C1 $PATCHDIR/swift-android-ci.patch - git apply -v $PATCHDIR/swift-android-ci-release.patch - git apply -v $PATCHDIR/swift-android-testing-release.patch + git apply -v $PATCHDIR/swift-android.patch + # swift-android-ci.patch is not needed, since it is only used for llbuild, etc. + #git apply -C1 $PATCHDIR/swift-android-ci.patch + git apply -v $PATCHDIR/swift-android-ci-release.patch + git apply -v $PATCHDIR/swift-android-testing-release.patch - perl -pi -e 's%String\(cString: getpass%\"fake\" //%' swiftpm/Sources/PackageRegistryCommand/PackageRegistryCommand+Auth.swift - # disable backtrace() for Android (needs either API33+ or libandroid-execinfo, or to manually add in backtrace backport) - perl -pi -e 's/os\(Android\)/os\(AndroidDISABLED\)/g' swift-testing/Sources/Testing/SourceAttribution/Backtrace.swift + perl -pi -e 's%String\(cString: getpass%\"fake\" //%' swiftpm/Sources/PackageRegistryCommand/PackageRegistryCommand+Auth.swift + # disable backtrace() for Android (needs either API33+ or libandroid-execinfo, or to manually add in backtrace backport) + perl -pi -e 's/os\(Android\)/os\(AndroidDISABLED\)/g' swift-testing/Sources/Testing/SourceAttribution/Backtrace.swift - # need to un-apply libandroid-spawn since we don't need it for API28+ - perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt - perl -pi -e 's/ STREQUAL Android\)/ STREQUAL AndroidDISABLED\)/g' swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt -popd + # need to un-apply libandroid-spawn since we don't need it for API28+ + perl -pi -e 's/MATCHES "Android"/MATCHES "AndroidDISABLED"/g' llbuild/lib/llvm/Support/CMakeLists.txt + perl -pi -e 's/ STREQUAL Android\)/ STREQUAL AndroidDISABLED\)/g' swift-corelibs-foundation/Sources/Foundation/CMakeLists.txt + popd +fi ./scripts/build.sh --products-dir ${SDKROOT}/products --source-dir ${SDKROOT}/src --build-dir ${SDKROOT}/build --ndk-home ${ANDROID_NDK_HOME} --android-api ${ANDROID_API} --host-toolchain ${HOST_TOOLCHAIN} --archs ${TARGET_ARCHS} From af6ff72563bff051098a3b435c8efc1e0b7ae023 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Tue, 22 Apr 2025 10:45:16 -0400 Subject: [PATCH 72/77] Swift Androd build --- swift-ci/sdks/android/build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift-ci/sdks/android/build b/swift-ci/sdks/android/build index a5d43478..e35bd431 100755 --- a/swift-ci/sdks/android/build +++ b/swift-ci/sdks/android/build @@ -74,7 +74,7 @@ if [[ ! -d ${PATCHDIR} ]]; then git apply -v $PATCHDIR/swift-android.patch # swift-android-ci.patch is not needed, since it is only used for llbuild, etc. #git apply -C1 $PATCHDIR/swift-android-ci.patch - git apply -v $PATCHDIR/swift-android-ci-release.patch + #git apply -v $PATCHDIR/swift-android-ci-release.patch git apply -v $PATCHDIR/swift-android-testing-release.patch perl -pi -e 's%String\(cString: getpass%\"fake\" //%' swiftpm/Sources/PackageRegistryCommand/PackageRegistryCommand+Auth.swift From 8a8b68b3127fbaac593d827a28323af60e68f582 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Tue, 22 Apr 2025 11:35:04 -0400 Subject: [PATCH 73/77] Swift Androd build --- .github/workflows/pull_request.yml | 47 ++++++++++++++++++++------ swift-ci/sdks/android/scripts/build.sh | 10 ++++-- 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 7215eb6c..260f4c55 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -46,17 +46,12 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + - name: Install Dependencies + run: | + sudo apt install -q ninja-build patchelf - name: Build Android SDK working-directory: swift-ci/sdks/android run: | - sudo apt install -q ninja-build patchelf - # build all architectures - #./build - - # just build x86_64 for testing - #TARGET_ARCHS=x86_64 ./build - - # build arch specified by the matrix TARGET_ARCHS=${{ matrix.arch }} ./build - name: Get artifact info id: paths @@ -69,7 +64,7 @@ jobs: echo "artifact-path=${ARTIFACT_PATH}" >> $GITHUB_OUTPUT ARTIFACT_EXT=".artifactbundle.tar.gz" - ARTIFACT_NAME=$(basename ${ARTIFACT_PATH} ${ARTIFACT_EXT})" + ARTIFACT_NAME="$(basename ${ARTIFACT_PATH} ${ARTIFACT_EXT})" # artifacts need a unique name so we suffix with the matrix arch(s) if [[ ! -z "${{ matrix.arch }}" ]]; then ARTIFACT_NAME="${ARTIFACT_NAME}-$(echo ${{ matrix.arch }} | tr ',' '-')" @@ -93,13 +88,39 @@ jobs: run: | # need to free up some space or else when installing we get: No space left on device rm -rf ${{ runner.temp }}/swift-android-sdk/{build,src} - - name: Install SDK + - name: Install artifactbundle + shell: bash run: | + set -ex ${{ steps.paths.outputs.swift-path }} sdk install ${{ steps.paths.outputs.artifact-path }} ${{ steps.paths.outputs.swift-path }} sdk configure --show-configuration $(${{ steps.paths.outputs.swift-path }} sdk list | head -n 1) x86_64-unknown-linux-android28 # recent releases require that ANDROID_NDK_ROOT *not* be set # see https://github.com/finagolfin/swift-android-sdk/issues/207 echo "ANDROID_NDK_ROOT=" >> $GITHUB_ENV + + # validate some required paths in the artifactbundle + cd ${HOME}/.config/swiftpm/swift-sdks/*.artifactbundle/*/*/usr + pwd + + ls lib/swift/android + ls lib/swift/android/* + ls lib/swift/android/*/swiftrt.o + ls lib/*-linux-android/*/crtbegin_dynamic.o + + ls lib/swift_static-* + ls lib/swift_static-*/android + ls lib/swift_static-*/android/libFoundationEssentials.a + + ls lib/*-linux-android/libFoundationEssentials.so + ls lib/*-linux-android/libFoundationNetworking.so + ls lib/*-linux-android/libFoundationInternationalization.so + ls lib/*-linux-android/lib_FoundationICU.so + ls lib/*-linux-android/libFoundationXML.so + ls lib/*-linux-android/libTesting.so + + ls lib/swift/clang/lib + ls lib/swift/clang/lib/linux + ls lib/swift/clang/lib/linux/*/libunwind.a - name: Build Demo Project run: | cd ${{ runner.temp }} @@ -114,6 +135,12 @@ jobs: echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift echo 'import Android' >> Sources/DemoProject/DemoProject.swift ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 + - name: Test Demo Project on Android + uses: skiptools/swift-android-action@main + with: + package-path: ${{ runner.temp }}/DemoProject + installed-sdk: x86_64-unknown-linux-android28 + installed-swift: ${{ steps.paths.outputs.swift-root }} - name: Build swift-algorithms run: | cd ${{ runner.temp }} diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 2443ffed..78b3c2d8 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -487,6 +487,13 @@ quiet_pushd ${sysroot_path}/usr ls lib/swift_static-*/android ls lib/swift_static-*/android/libFoundationEssentials.a + ls lib/*-linux-android/libFoundationEssentials.so + ls lib/*-linux-android/libFoundationNetworking.so + ls lib/*-linux-android/libFoundationInternationalization.so + ls lib/*-linux-android/lib_FoundationICU.so + ls lib/*-linux-android/libFoundationXML.so + ls lib/*-linux-android/libTesting.so + ls lib/swift/clang/lib ls lib/swift/clang/lib/linux ls lib/swift/clang/lib/linux/* @@ -545,10 +552,9 @@ if [[ -z "$SWIFT_ANDROID_ARCHIVEONLY" ]]; then quiet_pushd "${build_dir}" mkdir -p "${products_dir}" - tar cvzf "${products_dir}/${bundle}.tar.gz" "${bundle}" + tar czf "${products_dir}/${bundle}.tar.gz" "${bundle}" quiet_popd fi groupend - From 5e8011e375904da2cad5627957738b36ac725952 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Tue, 22 Apr 2025 11:45:42 -0400 Subject: [PATCH 74/77] Swift Android build --- .github/workflows/pull_request.yml | 81 ++++++++++++++++-------------- 1 file changed, 42 insertions(+), 39 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 260f4c55..e3b46fd7 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -40,8 +40,8 @@ jobs: fail-fast: false matrix: # build only x86_64 to speed up the validation - arch: ['x86_64'] - #arch: ['x86_64', ''] + #arch: ['x86_64'] + arch: ['x86_64', ''] runs-on: ubuntu-24.04 steps: - name: Checkout repository @@ -54,14 +54,18 @@ jobs: run: | TARGET_ARCHS=${{ matrix.arch }} ./build - name: Get artifact info - id: paths + id: info + shell: bash run: | + set -ex SWIFT_ROOT=$(dirname ${{ runner.temp }}/swift-android-sdk/host-toolchain/*/usr) echo "swift-root=${SWIFT_ROOT}" >> $GITHUB_OUTPUT echo "swift-path=${SWIFT_ROOT}/usr/bin/swift" >> $GITHUB_OUTPUT + ARTIFACT_BUILD=$(realpath ${{ runner.temp }}/swift-android-sdk/build/*.artifactbundle) ARTIFACT_PATH=$(realpath ${{ runner.temp }}/swift-android-sdk/products/*.artifactbundle.tar.gz) echo "artifact-path=${ARTIFACT_PATH}" >> $GITHUB_OUTPUT + echo "sdk-id=x86_64-unknown-linux-android28" >> $GITHUB_OUTPUT ARTIFACT_EXT=".artifactbundle.tar.gz" ARTIFACT_NAME="$(basename ${ARTIFACT_PATH} ${ARTIFACT_EXT})" @@ -78,12 +82,35 @@ jobs: # e.g.: swift-6.1-RELEASE_android-0.1-x86_64.artifactbundle.tar.gz echo "artifact-name=${ARTIFACT_NAME}" >> $GITHUB_OUTPUT + + # validate some required paths in the artifactbundle + pushd ${ARTIFACT_BUILD}/*/*/usr + ls lib/swift/android + ls lib/swift/android/* + ls lib/swift/android/*/swiftrt.o + ls lib/*-linux-android/*/crtbegin_dynamic.o + + ls lib/swift_static-* + ls lib/swift_static-*/android + ls lib/swift_static-*/android/libFoundationEssentials.a + + ls lib/*-linux-android/libFoundationEssentials.so + ls lib/*-linux-android/libFoundationNetworking.so + ls lib/*-linux-android/libFoundationInternationalization.so + ls lib/*-linux-android/lib_FoundationICU.so + ls lib/*-linux-android/libFoundationXML.so + ls lib/*-linux-android/libTesting.so + + ls lib/swift/clang/lib + ls lib/swift/clang/lib/linux + ls lib/swift/clang/lib/linux/*/libunwind.a + popd - name: Upload SDK artifactbundle uses: actions/upload-artifact@v4 with: compression-level: 0 - name: ${{ steps.paths.outputs.artifact-name }} - path: ${{ steps.paths.outputs.artifact-path }} + name: ${{ steps.info.outputs.artifact-name }} + path: ${{ steps.info.outputs.artifact-path }} - name: Cleanup run: | # need to free up some space or else when installing we get: No space left on device @@ -92,65 +119,41 @@ jobs: shell: bash run: | set -ex - ${{ steps.paths.outputs.swift-path }} sdk install ${{ steps.paths.outputs.artifact-path }} - ${{ steps.paths.outputs.swift-path }} sdk configure --show-configuration $(${{ steps.paths.outputs.swift-path }} sdk list | head -n 1) x86_64-unknown-linux-android28 + ${{ steps.info.outputs.swift-path }} sdk install ${{ steps.info.outputs.artifact-path }} + ${{ steps.info.outputs.swift-path }} sdk configure --show-configuration $(${{ steps.info.outputs.swift-path }} sdk list | head -n 1) ${{ steps.info.outputs.sdk-id }} # recent releases require that ANDROID_NDK_ROOT *not* be set # see https://github.com/finagolfin/swift-android-sdk/issues/207 echo "ANDROID_NDK_ROOT=" >> $GITHUB_ENV - - # validate some required paths in the artifactbundle - cd ${HOME}/.config/swiftpm/swift-sdks/*.artifactbundle/*/*/usr - pwd - - ls lib/swift/android - ls lib/swift/android/* - ls lib/swift/android/*/swiftrt.o - ls lib/*-linux-android/*/crtbegin_dynamic.o - - ls lib/swift_static-* - ls lib/swift_static-*/android - ls lib/swift_static-*/android/libFoundationEssentials.a - - ls lib/*-linux-android/libFoundationEssentials.so - ls lib/*-linux-android/libFoundationNetworking.so - ls lib/*-linux-android/libFoundationInternationalization.so - ls lib/*-linux-android/lib_FoundationICU.so - ls lib/*-linux-android/libFoundationXML.so - ls lib/*-linux-android/libTesting.so - - ls lib/swift/clang/lib - ls lib/swift/clang/lib/linux - ls lib/swift/clang/lib/linux/*/libunwind.a - name: Build Demo Project run: | cd ${{ runner.temp }} mkdir DemoProject cd DemoProject - ${{ steps.paths.outputs.swift-path }} --version - ${{ steps.paths.outputs.swift-path }} package init + ${{ steps.info.outputs.swift-path }} --version + ${{ steps.info.outputs.swift-path }} package init echo 'import Foundation' >> Sources/DemoProject/DemoProject.swift echo 'import FoundationEssentials' >> Sources/DemoProject/DemoProject.swift echo 'import FoundationXML' >> Sources/DemoProject/DemoProject.swift echo 'import FoundationNetworking' >> Sources/DemoProject/DemoProject.swift echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift echo 'import Android' >> Sources/DemoProject/DemoProject.swift - ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 + ${{ steps.info.outputs.swift-path }} build --build-tests --swift-sdk ${{ steps.info.outputs.sdk-id }} - name: Test Demo Project on Android uses: skiptools/swift-android-action@main with: package-path: ${{ runner.temp }}/DemoProject - installed-sdk: x86_64-unknown-linux-android28 - installed-swift: ${{ steps.paths.outputs.swift-root }} + installed-sdk: ${{ steps.info.outputs.sdk-id }} + installed-swift: ${{ steps.info.outputs.swift-root }} - name: Build swift-algorithms run: | cd ${{ runner.temp }} git clone https://github.com/apple/swift-algorithms.git cd swift-algorithms - ${{ steps.paths.outputs.swift-path }} build --build-tests --swift-sdk x86_64-unknown-linux-android28 + ${{ steps.info.outputs.swift-path }} build --build-tests --swift-sdk ${{ steps.info.outputs.sdk-id }} - name: Test swift-algorithms on Android uses: skiptools/swift-android-action@main with: #package-path: ${{ runner.temp }}/DemoProject package-path: ${{ runner.temp }}/swift-algorithms - installed-sdk: x86_64-unknown-linux-android28 - installed-swift: ${{ steps.paths.outputs.swift-root }} + installed-sdk: ${{ steps.info.outputs.sdk-id }} + installed-swift: ${{ steps.info.outputs.swift-root }} From 85b678fdd6de52479050e89e7872c287e11664ef Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Tue, 22 Apr 2025 12:22:06 -0400 Subject: [PATCH 75/77] Swift Android build --- .github/workflows/pull_request.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index e3b46fd7..296602c5 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -9,7 +9,6 @@ jobs: build: name: Build Docker images runs-on: ubuntu-latest - if: false steps: - name: Checkout repository uses: actions/checkout@v4 @@ -26,7 +25,6 @@ jobs: static-linux-build: name: Build Static Linux image runs-on: ubuntu-latest - if: false steps: - name: Checkout repository uses: actions/checkout@v4 @@ -39,9 +37,11 @@ jobs: strategy: fail-fast: false matrix: - # build only x86_64 to speed up the validation + # blank arch builds all (aarch64,x86_64,armv7) + arch: [''] + # builds only x86_64 to speed up the validation #arch: ['x86_64'] - arch: ['x86_64', ''] + #arch: ['x86_64', ''] runs-on: ubuntu-24.04 steps: - name: Checkout repository @@ -77,10 +77,8 @@ jobs: # There is no way to prevent even a single-file artifact from being zipped: # https://github.com/actions/upload-artifact?tab=readme-ov-file#zip-archives - # so we tack ".zip" on to the end of the name - ARTIFACT_NAME="${ARTIFACT_NAME}.zip" - - # e.g.: swift-6.1-RELEASE_android-0.1-x86_64.artifactbundle.tar.gz + # so the actual artifact download will look like: + # swift-6.1-RELEASE_android-0.1-x86_64.artifactbundle.tar.gz.zip echo "artifact-name=${ARTIFACT_NAME}" >> $GITHUB_OUTPUT # validate some required paths in the artifactbundle @@ -157,3 +155,4 @@ jobs: package-path: ${{ runner.temp }}/swift-algorithms installed-sdk: ${{ steps.info.outputs.sdk-id }} installed-swift: ${{ steps.info.outputs.swift-root }} + From 0633a3264a1da7328fd8332f2ff86798323a269b Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Tue, 22 Apr 2025 12:49:20 -0400 Subject: [PATCH 76/77] Swift Android build --- .github/workflows/pull_request.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 296602c5..58e40560 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -38,10 +38,11 @@ jobs: fail-fast: false matrix: # blank arch builds all (aarch64,x86_64,armv7) - arch: [''] + #arch: [''] # builds only x86_64 to speed up the validation #arch: ['x86_64'] - #arch: ['x86_64', ''] + # build both the quick (x86_64) and complete (aarch64,x86_64,armv7) SDKs + arch: ['x86_64', ''] runs-on: ubuntu-24.04 steps: - name: Checkout repository @@ -137,6 +138,8 @@ jobs: echo 'import Android' >> Sources/DemoProject/DemoProject.swift ${{ steps.info.outputs.swift-path }} build --build-tests --swift-sdk ${{ steps.info.outputs.sdk-id }} - name: Test Demo Project on Android + # only test for the complete arch SDK build to speed up CI + if: ${{ matrix.arch == '' }} uses: skiptools/swift-android-action@main with: package-path: ${{ runner.temp }}/DemoProject @@ -149,6 +152,8 @@ jobs: cd swift-algorithms ${{ steps.info.outputs.swift-path }} build --build-tests --swift-sdk ${{ steps.info.outputs.sdk-id }} - name: Test swift-algorithms on Android + # only test for the complete arch SDK build to speed up CI + if: ${{ matrix.arch == '' }} uses: skiptools/swift-android-action@main with: #package-path: ${{ runner.temp }}/DemoProject From 8d2a2c418d11f5693b55b37987602427ac341361 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Tue, 22 Apr 2025 16:20:37 -0400 Subject: [PATCH 77/77] Swift Android build --- .github/workflows/pull_request.yml | 32 +++++++++---------- swift-ci/sdks/android/README.md | 43 ++++++++++++++++++++++++++ swift-ci/sdks/android/scripts/build.sh | 24 -------------- 3 files changed, 58 insertions(+), 41 deletions(-) create mode 100644 swift-ci/sdks/android/README.md diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 58e40560..ed578bc6 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -123,7 +123,8 @@ jobs: # recent releases require that ANDROID_NDK_ROOT *not* be set # see https://github.com/finagolfin/swift-android-sdk/issues/207 echo "ANDROID_NDK_ROOT=" >> $GITHUB_ENV - - name: Build Demo Project + + - name: Create Demo Project run: | cd ${{ runner.temp }} mkdir DemoProject @@ -136,28 +137,25 @@ jobs: echo 'import FoundationNetworking' >> Sources/DemoProject/DemoProject.swift echo 'import Dispatch' >> Sources/DemoProject/DemoProject.swift echo 'import Android' >> Sources/DemoProject/DemoProject.swift - ${{ steps.info.outputs.swift-path }} build --build-tests --swift-sdk ${{ steps.info.outputs.sdk-id }} - name: Test Demo Project on Android - # only test for the complete arch SDK build to speed up CI - if: ${{ matrix.arch == '' }} - uses: skiptools/swift-android-action@main + uses: skiptools/swift-android-action@v2 with: + # only test for the complete arch SDK build to speed up CI + run-tests: ${{ matrix.arch == '' }} package-path: ${{ runner.temp }}/DemoProject installed-sdk: ${{ steps.info.outputs.sdk-id }} installed-swift: ${{ steps.info.outputs.swift-root }} - - name: Build swift-algorithms - run: | - cd ${{ runner.temp }} - git clone https://github.com/apple/swift-algorithms.git - cd swift-algorithms - ${{ steps.info.outputs.swift-path }} build --build-tests --swift-sdk ${{ steps.info.outputs.sdk-id }} - - name: Test swift-algorithms on Android - # only test for the complete arch SDK build to speed up CI - if: ${{ matrix.arch == '' }} - uses: skiptools/swift-android-action@main + + - name: Checkout swift-algorithms + uses: actions/checkout@v4 + with: + repository: apple/swift-algorithms + path: swift-algorithms + - name: Test swift-algorithms + uses: skiptools/swift-android-action@v2 with: - #package-path: ${{ runner.temp }}/DemoProject - package-path: ${{ runner.temp }}/swift-algorithms + run-tests: ${{ matrix.arch == '' }} + package-path: swift-algorithms installed-sdk: ${{ steps.info.outputs.sdk-id }} installed-swift: ${{ steps.info.outputs.swift-root }} diff --git a/swift-ci/sdks/android/README.md b/swift-ci/sdks/android/README.md new file mode 100644 index 00000000..531aa88a --- /dev/null +++ b/swift-ci/sdks/android/README.md @@ -0,0 +1,43 @@ +# Build scripts for Swift Android SDK + +This folder contains scripts to build a Swift Android SDK +in the form of an artifactbundle. + +## Running + +The top-level `./build` script installs a host toolchain and the +Android NDK, and then invokes `scripts/fetch-source.sh` which will +fetch tagged sources for libxml2, curl, boringssl, and swift. + +It then applies some patches and invokes `scripts/build.sh`, +which will build the sources for each of the specified +architectures. Finally, it combines the NDK and the newly built +SDKs into a single artifactbundle. + +## Specifying Architectures + +By default all the supported Android architectures +(`aarch64`, `x86_64`, `aarmv7`) +will be built, but this can be reduced in order to speed +up the build. This can be useful, e.g., as part of a CI that +validates a pull request, as building a single architecture +takes around 30 minutes on a standard ubuntu-24.04 GitHub runner, +whereas building for all the architectures takes over an hour. + +To build an artifactbundle for just the `x86_64` architecture, run: + +``` +TARGET_ARCHS=x86_64 ./build +``` + +## Installing and validating the SDK + +The `.github/workflows/pull_request.yml` workflow +will create and upload an installable SDK named something like: +`swift-6.1-RELEASE_android-0.1.artifactbundle.tar.gz` + +The workflow will also install the SDK locally and use +[swift-android-action](https://github.com/marketplace/actions/swift-android-action) +to build and test various Swift packages in an Android emulator. + + diff --git a/swift-ci/sdks/android/scripts/build.sh b/swift-ci/sdks/android/scripts/build.sh index 78b3c2d8..843ff2db 100755 --- a/swift-ci/sdks/android/scripts/build.sh +++ b/swift-ci/sdks/android/scripts/build.sh @@ -477,30 +477,6 @@ rm -r ${sysroot_path}/usr/{include,lib}/{i686,riscv64}-linux-android rm -r ${sysroot_path}/usr/lib/swift/clang/lib/linux/*{i[36]86,riscv64}* rm -r ${sdk_staging} -# validate that some expected paths exist -quiet_pushd ${sysroot_path}/usr - ls lib/swift/android - ls lib/swift/android/* - ls lib/swift/android/*/swiftrt.o - - ls lib/swift_static-* - ls lib/swift_static-*/android - ls lib/swift_static-*/android/libFoundationEssentials.a - - ls lib/*-linux-android/libFoundationEssentials.so - ls lib/*-linux-android/libFoundationNetworking.so - ls lib/*-linux-android/libFoundationInternationalization.so - ls lib/*-linux-android/lib_FoundationICU.so - ls lib/*-linux-android/libFoundationXML.so - ls lib/*-linux-android/libTesting.so - - ls lib/swift/clang/lib - ls lib/swift/clang/lib/linux - ls lib/swift/clang/lib/linux/* - ls lib/swift/clang/lib/linux/*/libunwind.a - ls lib/*-linux-android/*/crtbegin_dynamic.o -quiet_popd - cat > swift-sdk.json <