From 0486abe3c09ea9448a850f6cc8f12d98d6ff8e87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 09:59:56 -0400 Subject: [PATCH 01/15] Add LLVM 22 and Halide 20 prebuilts --- .github/workflows/halide-prebuilt.yml | 19 ++--- .github/workflows/llvm-prebuilt.yml | 30 +++----- AGENTS.md | 12 ++- README.md | 4 +- .../halide-18-disable-autoschedulers.patch | 27 ------- ...lide-19-allow-llvm-20-point-releases.patch | 25 ++++++ ...-halide-host-tools-dir-cmake-option.patch} | 26 ++++--- ...lide-20-allow-llvm-20-point-releases.patch | 25 ++++++ .../halide-20-disable-autoschedulers.patch | 23 ++++++ ...isable-clang-verbose-build-warnings.patch} | 14 ++-- patches/llvm-18-add-lld-install-targets.patch | 77 ------------------- ...orce-disable-clang-ast-introspection.patch | 30 -------- ...vm-name-prefix-to-llc-lli-opt-tools.patch} | 12 +-- 13 files changed, 131 insertions(+), 193 deletions(-) delete mode 100644 patches/halide-18-disable-autoschedulers.patch create mode 100644 patches/halide-19-allow-llvm-20-point-releases.patch rename patches/{halide-18-add-halide-host-tools-dir-cmake-option.patch => halide-20-add-halide-host-tools-dir-cmake-option.patch} (87%) create mode 100644 patches/halide-20-allow-llvm-20-point-releases.patch create mode 100644 patches/halide-20-disable-autoschedulers.patch rename patches/{halide-18-disable-clang-verbose-build-warnings.patch => halide-20-disable-clang-verbose-build-warnings.patch} (63%) delete mode 100644 patches/llvm-18-add-lld-install-targets.patch delete mode 100644 patches/llvm-18-force-disable-clang-ast-introspection.patch rename patches/{llvm-18-add-llvm-name-prefix-to-llc-lli-opt-tools.patch => llvm-22-add-llvm-name-prefix-to-llc-lli-opt-tools.patch} (74%) diff --git a/.github/workflows/halide-prebuilt.yml b/.github/workflows/halide-prebuilt.yml index 333b437..663f64e 100644 --- a/.github/workflows/halide-prebuilt.yml +++ b/.github/workflows/halide-prebuilt.yml @@ -15,7 +15,7 @@ jobs: matrix: arch: [ x86_64, aarch64 ] os: [ windows, macos, ubuntu-22.04, ubuntu-24.04 ] - version: [ 18.0.0, 19.0.0 ] + version: [ 19.0.0, 20.0.0.dev0 ] include: - os: windows @@ -52,8 +52,7 @@ jobs: run: | brew install ninja # Halide 19+ requires macOS 10.15+ for std::filesystem support - $DeploymentTarget = if ('${{matrix.version}}' -eq '19.0.0') { "10.15" } else { "10.13" } - echo "MACOSX_DEPLOYMENT_TARGET=$DeploymentTarget" >> $Env:GITHUB_ENV + echo "MACOSX_DEPLOYMENT_TARGET=10.15" >> $Env:GITHUB_ENV - name: Configure Linux runner if: runner.os == 'Linux' @@ -67,7 +66,7 @@ jobs: - name: Preflight shell: pwsh run: | - $LlvmVersion = "18.1.8" + $LlvmVersion = "20.1.8" $LlvmRunId = '${{ github.event.inputs.llvm_run_id }}' if ($LlvmRunId -eq 'latest') { $LlvmRunId = $(gh run list -R $Env:GITHUB_REPOSITORY -w 'LLVM prebuilt' --json 'status,databaseId,conclusion') | @@ -166,14 +165,16 @@ jobs: - name: Patch Halide shell: pwsh run: | - if ('${{matrix.version}}' -eq '18.0.0') { - git -C halide apply ../llvm-prebuilt/patches/halide-18-add-halide-host-tools-dir-cmake-option.patch - git -C halide apply ../llvm-prebuilt/patches/halide-18-disable-autoschedulers.patch - git -C halide apply ../llvm-prebuilt/patches/halide-18-disable-clang-verbose-build-warnings.patch - } elseif ('${{matrix.version}}' -eq '19.0.0') { + if ('${{matrix.version}}' -eq '19.0.0') { git -C halide apply ../llvm-prebuilt/patches/halide-19-add-halide-host-tools-dir-cmake-option.patch git -C halide apply ../llvm-prebuilt/patches/halide-19-disable-autoschedulers.patch git -C halide apply ../llvm-prebuilt/patches/halide-19-disable-clang-verbose-build-warnings.patch + git -C halide apply ../llvm-prebuilt/patches/halide-19-allow-llvm-20-point-releases.patch + } elseif ('${{matrix.version}}' -eq '20.0.0.dev0') { + git -C halide apply ../llvm-prebuilt/patches/halide-20-add-halide-host-tools-dir-cmake-option.patch + git -C halide apply ../llvm-prebuilt/patches/halide-20-disable-autoschedulers.patch + git -C halide apply ../llvm-prebuilt/patches/halide-20-disable-clang-verbose-build-warnings.patch + git -C halide apply ../llvm-prebuilt/patches/halide-20-allow-llvm-20-point-releases.patch } - name: Build Halide host tools diff --git a/.github/workflows/llvm-prebuilt.yml b/.github/workflows/llvm-prebuilt.yml index e25c06e..935c624 100644 --- a/.github/workflows/llvm-prebuilt.yml +++ b/.github/workflows/llvm-prebuilt.yml @@ -9,13 +9,13 @@ jobs: matrix: arch: [ x86_64, aarch64 ] os: [ windows, macos, ubuntu-22.04, ubuntu-24.04 ] - version: [ 18.1.8, 20.1.8 ] + version: [ 20.1.8, 22.1.4 ] include: - - version: 18.1.8 - branch: release/18.x - version: 20.1.8 - branch: release/20.x + ref: llvmorg-20.1.8 + - version: 22.1.4 + ref: llvmorg-22.1.4 - os: windows runner: windows-2022 @@ -95,19 +95,17 @@ jobs: uses: actions/checkout@v6 with: repository: llvm/llvm-project - ref: ${{matrix.branch}} + ref: ${{matrix.ref}} path: llvm-project - name: Patch LLVM shell: pwsh run: | - if ('${{matrix.version}}' -eq '18.1.8') { - git -C llvm-project apply ../llvm-prebuilt/patches/llvm-18-add-lld-install-targets.patch - git -C llvm-project apply ../llvm-prebuilt/patches/llvm-18-add-llvm-name-prefix-to-llc-lli-opt-tools.patch - git -C llvm-project apply ../llvm-prebuilt/patches/llvm-18-force-disable-clang-ast-introspection.patch - } elseif ('${{matrix.version}}' -eq '20.1.8') { + if ('${{matrix.version}}' -eq '20.1.8') { git -C llvm-project apply ../llvm-prebuilt/patches/llvm-20-add-lld-install-targets.patch git -C llvm-project apply ../llvm-prebuilt/patches/llvm-20-add-llvm-name-prefix-to-llc-lli-opt-tools.patch + } elseif ('${{matrix.version}}' -eq '22.1.4') { + git -C llvm-project apply ../llvm-prebuilt/patches/llvm-22-add-llvm-name-prefix-to-llc-lli-opt-tools.patch } - name: Enable Windows host environment @@ -127,15 +125,9 @@ jobs: shell: pwsh run: | cmake --build llvm-host --target llvm-tblgen clang-tblgen llvm-config - if ('${{matrix.version}}' -eq '18.1.8') { - cmake --build llvm-host --target clang-tidy-confusable-chars-gen clang-pseudo-gen - # Build host tools needed for cross-compilation - cmake --build llvm-host --target llvm-nm llvm-readobj - } elseif ('${{matrix.version}}' -eq '20.1.8') { - cmake --build llvm-host --target clang-tidy-confusable-chars-gen - # Build host tools needed for cross-compilation in LLVM 20 - cmake --build llvm-host --target llvm-as llvm-link llvm-nm llvm-readobj opt - } + cmake --build llvm-host --target clang-tidy-confusable-chars-gen + # Build host tools needed for cross-compilation + cmake --build llvm-host --target llvm-as llvm-link llvm-nm llvm-readobj opt $HostBinPath = "$Env:GITHUB_WORKSPACE/llvm-host/bin" $ExeExt = if ($IsWindows) { ".exe" } else { "" } echo "LLVM_NATIVE_TOOL_DIR=$HostBinPath" >> $Env:GITHUB_ENV diff --git a/AGENTS.md b/AGENTS.md index 6ce191e..1d4d76f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,8 +8,8 @@ Treat this as a packaging and cross-compilation repository. Keep changes small, - Architectures: `x86_64`, `aarch64` - Platforms: `windows`, `macos`, `ubuntu-22.04`, `ubuntu-24.04` -- LLVM versions currently built by CI: `18.1.8`, `20.1.8` -- Halide versions currently built by CI: `18.0.0`, `19.0.0` +- LLVM versions currently built by CI: `20.1.8`, `22.1.4` +- Halide versions currently built by CI: `19.0.0`, `20.0.0.dev0` ## Repository Layout @@ -47,8 +47,12 @@ Prefer PowerShell-compatible commands because the workflows use `pwsh` heavily a Patch application smoke test: ```powershell +# LLVM 20 checkout git -C llvm-project apply ../llvm-prebuilt/patches/llvm-20-add-lld-install-targets.patch git -C llvm-project apply ../llvm-prebuilt/patches/llvm-20-add-llvm-name-prefix-to-llc-lli-opt-tools.patch + +# LLVM 22 checkout +git -C llvm-project apply ../llvm-prebuilt/patches/llvm-22-add-llvm-name-prefix-to-llc-lli-opt-tools.patch ``` LLVM host tools: @@ -106,8 +110,8 @@ The `llc`, `lli`, and `opt` tools are patched to install as `llvm-llc`, `llvm-ll - Apply patches after checking out upstream `llvm/llvm-project` or `halide/Halide`, before CMake configuration. - Keep LLVM patch conditionals in `.github/workflows/llvm-prebuilt.yml` in sync with files under `patches/llvm-*`. - Keep Halide patch conditionals in `.github/workflows/halide-prebuilt.yml` in sync with files under `patches/halide-*`. -- When updating LLVM, verify all patch categories: lld install targets, LLVM tool name prefixes, and any cross-compilation feature disables still needed for that version. -- When updating Halide, verify all patch categories: host tools directory option, autoscheduler disablement, and verbose warning suppression. +- When updating LLVM, verify all patch categories: lld install targets when still needed by that version, LLVM tool name prefixes, and any cross-compilation feature disables still needed for that version. +- When updating Halide, verify all patch categories: host tools directory option, autoscheduler disablement, verbose warning suppression, and LLVM compatibility range adjustments. ## Linux Dependency Handling diff --git a/README.md b/README.md index 6d1e4e0..9fe0a11 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ You can download published packages from the [GitHub releases page](https://gith The LLVM workflow builds minimal installable Clang/LLVM distributions with Clang, LLD, selected LLVM tools, development headers, CMake exports, zlib, and libxml2 support. -Currently built LLVM versions: `18.1.8`, `20.1.8`. +Currently built LLVM versions: `20.1.8`, `22.1.4`. | Arch | Windows | macOS | Ubuntu 22.04 | Ubuntu 24.04 | |---------|---------|-------|--------------|--------------| @@ -27,7 +27,7 @@ clang+llvm---.tar.xz The Halide workflow builds Halide packages against LLVM artifacts produced by the LLVM workflow. It first installs a host LLVM package, then installs a target LLVM package when cross-compiling for `aarch64`. -Currently built Halide versions: `18.0.0`, `19.0.0`. +Currently built Halide versions: `19.0.0`, `20.0.0.dev0`. | Arch | Windows | macOS | Ubuntu 22.04 | Ubuntu 24.04 | |---------|---------|-------|--------------|--------------| diff --git a/patches/halide-18-disable-autoschedulers.patch b/patches/halide-18-disable-autoschedulers.patch deleted file mode 100644 index 13ce804..0000000 --- a/patches/halide-18-disable-autoschedulers.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 51ed947d7189a52bc0dd0f68b20c7fb201d2821c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= -Date: Sun, 22 Jan 2023 08:01:56 -0500 -Subject: [PATCH 2/3] disable autoschedulers - ---- - src/CMakeLists.txt | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 3a89e132b..222b7335b 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -636,8 +636,8 @@ endif() - ## - - if (BUILD_SHARED_LIBS) -- message(STATUS "Building autoschedulers enabled") -- add_subdirectory(autoschedulers) -+ #message(STATUS "Building autoschedulers enabled") -+ #add_subdirectory(autoschedulers) - else () - message(STATUS "Building autoschedulers disabled (static Halide)") - endif () --- -2.34.1 - diff --git a/patches/halide-19-allow-llvm-20-point-releases.patch b/patches/halide-19-allow-llvm-20-point-releases.patch new file mode 100644 index 0000000..7731993 --- /dev/null +++ b/patches/halide-19-allow-llvm-20-point-releases.patch @@ -0,0 +1,25 @@ +From 0c0df21feb66fdbe1c44f2a0bac58e20667cc2f3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= +Date: Fri, 1 May 2026 09:48:41 -0400 +Subject: [PATCH] allow LLVM 20 point releases + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index bfac7f1..160cc0e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -195,7 +195,7 @@ option(THREADS_PREFER_PTHREAD_FLAG "When enabled, prefer to use the -pthread fla + find_package(Threads REQUIRED) + + ## LLVM +-find_package(Halide_LLVM 17...20 REQUIRED ++find_package(Halide_LLVM 17...<21 REQUIRED + COMPONENTS WebAssembly X86 + OPTIONAL_COMPONENTS AArch64 ARM Hexagon NVPTX PowerPC RISCV) + +-- +2.54.0.windows.1 + diff --git a/patches/halide-18-add-halide-host-tools-dir-cmake-option.patch b/patches/halide-20-add-halide-host-tools-dir-cmake-option.patch similarity index 87% rename from patches/halide-18-add-halide-host-tools-dir-cmake-option.patch rename to patches/halide-20-add-halide-host-tools-dir-cmake-option.patch index 26ce122..1801e7f 100644 --- a/patches/halide-18-add-halide-host-tools-dir-cmake-option.patch +++ b/patches/halide-20-add-halide-host-tools-dir-cmake-option.patch @@ -1,14 +1,14 @@ -From 37576a87da1ae331225231c56c8c36aa389ef383 Mon Sep 17 00:00:00 2001 +From 2e4d1d9e66f96db51b096b46b9bad36de066c71b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= -Date: Sat, 21 Jan 2023 10:15:38 -0500 +Date: Fri, 1 May 2026 09:45:25 -0400 Subject: [PATCH 1/3] add HALIDE_HOST_TOOLS_DIR cmake option --- - tools/CMakeLists.txt | 26 ++++++++++++++++++++------ - 1 file changed, 20 insertions(+), 6 deletions(-) + tools/CMakeLists.txt | 30 ++++++++++++++++++++++-------- + 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt -index 2d66e5271..25336723e 100644 +index 0e338b6..f0fd462 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -2,14 +2,28 @@ @@ -17,19 +17,21 @@ index 2d66e5271..25336723e 100644 -add_executable(build_halide_h build_halide_h.cpp) -target_compile_options(build_halide_h PRIVATE $<$:/wd4996>) +- +-add_executable(binary2cpp binary2cpp.cpp) +-target_compile_options(binary2cpp PRIVATE $<$:/wd4996>) +- +-add_executable(regexp_replace regexp_replace.cpp) +-target_compile_options(regexp_replace PRIVATE $<$:/wd4996>) +if(DEFINED HALIDE_HOST_TOOLS_DIR) + add_executable(build_halide_h IMPORTED GLOBAL) + set_property(TARGET build_halide_h PROPERTY IMPORTED_LOCATION + "${HALIDE_HOST_TOOLS_DIR}/build_halide_h${CMAKE_EXECUTABLE_SUFFIX}") - --add_executable(binary2cpp binary2cpp.cpp) --target_compile_options(binary2cpp PRIVATE $<$:/wd4996>) ++ + add_executable(binary2cpp IMPORTED GLOBAL) + set_property(TARGET binary2cpp PROPERTY IMPORTED_LOCATION + "${HALIDE_HOST_TOOLS_DIR}/binary2cpp${CMAKE_EXECUTABLE_SUFFIX}") - --add_executable(regexp_replace regexp_replace.cpp) --target_compile_options(regexp_replace PRIVATE $<$:/wd4996>) ++ + add_executable(regexp_replace IMPORTED GLOBAL) + set_property(TARGET regexp_replace PROPERTY IMPORTED_LOCATION + "${HALIDE_HOST_TOOLS_DIR}/regexp_replace${CMAKE_EXECUTABLE_SUFFIX}") @@ -47,5 +49,5 @@ index 2d66e5271..25336723e 100644 ## # Interface target for enabling PNG/JPEG support in Halide -- -2.34.1 +2.54.0.windows.1 diff --git a/patches/halide-20-allow-llvm-20-point-releases.patch b/patches/halide-20-allow-llvm-20-point-releases.patch new file mode 100644 index 0000000..2f3f0e9 --- /dev/null +++ b/patches/halide-20-allow-llvm-20-point-releases.patch @@ -0,0 +1,25 @@ +From 04a02a308432f8443d01882b2833728f56ab32c9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= +Date: Fri, 1 May 2026 09:48:19 -0400 +Subject: [PATCH] allow LLVM 20 point releases + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index aaba4c6..c45c44c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -197,7 +197,7 @@ option(THREADS_PREFER_PTHREAD_FLAG "When enabled, prefer to use the -pthread fla + find_package(Threads REQUIRED) + + ## LLVM +-find_package(Halide_LLVM 17...20 REQUIRED ++find_package(Halide_LLVM 17...<21 REQUIRED + COMPONENTS WebAssembly X86 + OPTIONAL_COMPONENTS AArch64 ARM Hexagon NVPTX PowerPC RISCV) + +-- +2.54.0.windows.1 + diff --git a/patches/halide-20-disable-autoschedulers.patch b/patches/halide-20-disable-autoschedulers.patch new file mode 100644 index 0000000..1061b3b --- /dev/null +++ b/patches/halide-20-disable-autoschedulers.patch @@ -0,0 +1,23 @@ +From 08b645b0aa3710753d66f7386e2a7f98d849a9be Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= +Date: Fri, 1 May 2026 09:45:25 -0400 +Subject: [PATCH 2/3] disable autoschedulers + +--- + src/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index f5eb3e6..d2f8ba7 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -705,5 +705,5 @@ endif () + ## + + if (WITH_AUTOSCHEDULERS) +- add_subdirectory(autoschedulers) ++ #add_subdirectory(autoschedulers) # disabled for cross-compilation + endif () +-- +2.54.0.windows.1 + diff --git a/patches/halide-18-disable-clang-verbose-build-warnings.patch b/patches/halide-20-disable-clang-verbose-build-warnings.patch similarity index 63% rename from patches/halide-18-disable-clang-verbose-build-warnings.patch rename to patches/halide-20-disable-clang-verbose-build-warnings.patch index 6cc7911..85e4c81 100644 --- a/patches/halide-18-disable-clang-verbose-build-warnings.patch +++ b/patches/halide-20-disable-clang-verbose-build-warnings.patch @@ -1,6 +1,6 @@ -From 200357d3a6242b6dfed56930be0562f58aff9f9a Mon Sep 17 00:00:00 2001 +From 17e0220421759fd0f8ac71ea9f74105ed5dfc5b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= -Date: Sun, 16 Feb 2025 14:55:46 -0500 +Date: Fri, 1 May 2026 09:45:25 -0400 Subject: [PATCH 3/3] disable clang verbose build warnings --- @@ -8,18 +8,18 @@ Subject: [PATCH 3/3] disable clang verbose build warnings 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt -index 287ec4496..5563f4a69 100644 +index ffb68a0..aaba4c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -151,6 +151,8 @@ function(set_halide_compiler_warnings NAME) +@@ -169,6 +169,8 @@ function(set_halide_compiler_warnings NAME) $<$:-Wno-undefined-func-template> $<$:-Wno-unused-member-function> $<$:-Wno-unused-template> + $<$:-Wno-unknown-warning-option> + $<$:-Wno-unsafe-buffer-usage> - # This warning was removed in Clang 13 - $<$,$,13.0>>:-Wno-return-std-move-in-c++11> + $<$:/W3> + $<$:/wd4018> # 4018: disable "signed/unsigned mismatch" -- -2.34.1 +2.54.0.windows.1 diff --git a/patches/llvm-18-add-lld-install-targets.patch b/patches/llvm-18-add-lld-install-targets.patch deleted file mode 100644 index 337e71b..0000000 --- a/patches/llvm-18-add-lld-install-targets.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 1136224bab481a869138d83f51cbd1c76a51803f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= -Date: Thu, 2 Nov 2023 10:02:08 -0400 -Subject: [PATCH 1/3] add lld install targets - ---- - lld/CMakeLists.txt | 32 ++++++++++++++++++++++++++++++++ - lld/cmake/modules/AddLLD.cmake | 2 +- - 2 files changed, 33 insertions(+), 1 deletion(-) - -diff --git a/lld/CMakeLists.txt b/lld/CMakeLists.txt -index 595c286abd91..7291cdf62baa 100644 ---- a/lld/CMakeLists.txt -+++ b/lld/CMakeLists.txt -@@ -182,9 +182,19 @@ include_directories(BEFORE - if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) - install(DIRECTORY include/ - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" -+ COMPONENT lld-headers - FILES_MATCHING - PATTERN "*.h" - ) -+ -+ add_custom_target(lld-headers) -+ set_target_properties(lld-headers PROPERTIES FOLDER "Misc") -+ -+ if(NOT LLVM_ENABLE_IDE) -+ add_llvm_install_targets(install-lld-headers -+ DEPENDS lld-headers -+ COMPONENT lld-headers) -+ endif() - endif() - - add_subdirectory(Common) -@@ -203,4 +213,26 @@ add_subdirectory(MachO) - add_subdirectory(MinGW) - add_subdirectory(wasm) - -+# Custom target to install all lld libraries. -+add_custom_target(lld-libraries) -+set_target_properties(lld-libraries PROPERTIES FOLDER "Misc") -+ -+if(NOT LLVM_ENABLE_IDE) -+ add_llvm_install_targets(install-lld-libraries -+ DEPENDS lld-libraries -+ COMPONENT lld-libraries) -+endif() -+ -+get_property(LLD_EXPORTS GLOBAL PROPERTY LLD_EXPORTS) -+if(LLD_EXPORTS) -+ list(REMOVE_DUPLICATES LLD_EXPORTS) -+ foreach(lib ${LLD_EXPORTS}) -+ add_dependencies(lld-libraries ${lib}) -+ if(NOT LLVM_ENABLE_IDE) -+ add_dependencies(install-lld-libraries install-${lib}) -+ add_dependencies(install-lld-libraries-stripped install-${lib}-stripped) -+ endif() -+ endforeach() -+endif() -+ - add_subdirectory(cmake/modules) -diff --git a/lld/cmake/modules/AddLLD.cmake b/lld/cmake/modules/AddLLD.cmake -index 2ee066b41535..1ae2f1ce43e1 100644 ---- a/lld/cmake/modules/AddLLD.cmake -+++ b/lld/cmake/modules/AddLLD.cmake -@@ -22,7 +22,7 @@ macro(add_lld_library name) - ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") - -- if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES) -+ if (NOT CMAKE_CONFIGURATION_TYPES) - add_llvm_install_targets(install-${name} - DEPENDS ${name} - COMPONENT ${name}) --- -2.34.1 - diff --git a/patches/llvm-18-force-disable-clang-ast-introspection.patch b/patches/llvm-18-force-disable-clang-ast-introspection.patch deleted file mode 100644 index c464012..0000000 --- a/patches/llvm-18-force-disable-clang-ast-introspection.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 14d0e61cd56ed90a808c768d83b24734fdcd2ebf Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= -Date: Thu, 2 Nov 2023 10:04:13 -0400 -Subject: [PATCH 3/3] force-disable clang ast introspection - ---- - clang/lib/Tooling/CMakeLists.txt | 7 +------ - 1 file changed, 1 insertion(+), 6 deletions(-) - -diff --git a/clang/lib/Tooling/CMakeLists.txt b/clang/lib/Tooling/CMakeLists.txt -index aff39e4de13c..4ea013e71d3f 100644 ---- a/clang/lib/Tooling/CMakeLists.txt -+++ b/clang/lib/Tooling/CMakeLists.txt -@@ -24,12 +24,7 @@ string(SUBSTRING ${CMAKE_CURRENT_BINARY_DIR} 0 ${PATH_LIB_START} PATH_HEAD) - string(SUBSTRING ${CMAKE_CURRENT_BINARY_DIR} ${PATH_LIB_END} -1 PATH_TAIL) - string(CONCAT BINARY_INCLUDE_DIR ${PATH_HEAD} "/include/clang/" ${PATH_TAIL}) - --if (NOT Python3_EXECUTABLE -- OR APPLE -- OR CMAKE_CROSSCOMPILING -- OR GENERATOR_IS_MULTI_CONFIG -- OR NOT LLVM_NATIVE_ARCH IN_LIST LLVM_TARGETS_TO_BUILD -- ) -+if (TRUE) # force-disable clang ast introspection - configure_file( - EmptyNodeIntrospection.inc.in - ${BINARY_INCLUDE_DIR}/NodeIntrospection.inc --- -2.34.1 - diff --git a/patches/llvm-18-add-llvm-name-prefix-to-llc-lli-opt-tools.patch b/patches/llvm-22-add-llvm-name-prefix-to-llc-lli-opt-tools.patch similarity index 74% rename from patches/llvm-18-add-llvm-name-prefix-to-llc-lli-opt-tools.patch rename to patches/llvm-22-add-llvm-name-prefix-to-llc-lli-opt-tools.patch index 8539b0b..a1fa1e5 100644 --- a/patches/llvm-18-add-llvm-name-prefix-to-llc-lli-opt-tools.patch +++ b/patches/llvm-22-add-llvm-name-prefix-to-llc-lli-opt-tools.patch @@ -1,17 +1,17 @@ -From 64587365a9a5e3f2b7004b60d0863211bfc1f112 Mon Sep 17 00:00:00 2001 +From 71ed296a76832517fc695fb42c626eb89b9bfd7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= -Date: Thu, 2 Nov 2023 10:12:14 -0400 -Subject: [PATCH 2/3] add llvm name prefix to llc,lli,opt tools +Date: Fri, 1 May 2026 09:24:29 -0400 +Subject: [PATCH] add llvm name prefix to llc,lli,opt tools --- llvm/tools/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/llvm/tools/CMakeLists.txt b/llvm/tools/CMakeLists.txt -index c6116ac81d12..12c6b9a037ee 100644 +index 729797aa4..aa65698f5 100644 --- a/llvm/tools/CMakeLists.txt +++ b/llvm/tools/CMakeLists.txt -@@ -58,6 +58,10 @@ endforeach(p) +@@ -67,6 +67,10 @@ endforeach(p) set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE) @@ -23,5 +23,5 @@ index c6116ac81d12..12c6b9a037ee 100644 # This is explicitly added at the end _after_ all tool projects so that it can # scrape up tools from other projects into itself. -- -2.34.1 +2.54.0.windows.1 From 1f5e7c048519138082c06732fa6370d807bf82e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 11:25:11 -0400 Subject: [PATCH 02/15] Fix Linux aarch64 LLVM dependency paths --- .github/workflows/llvm-prebuilt.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/llvm-prebuilt.yml b/.github/workflows/llvm-prebuilt.yml index 935c624..5157485 100644 --- a/.github/workflows/llvm-prebuilt.yml +++ b/.github/workflows/llvm-prebuilt.yml @@ -188,6 +188,15 @@ jobs: ) } + if ('${{matrix.os}}' -like 'ubuntu-*' -and '${{matrix.arch}}' -eq 'aarch64') { + $CMakeArgs += @( + "-DZLIB_INCLUDE_DIR=/usr/include", + "-DZLIB_LIBRARY=/usr/lib/aarch64-linux-gnu/libz.so", + "-DLIBXML2_INCLUDE_DIR=/usr/include/libxml2", + "-DLIBXML2_LIBRARY=/usr/lib/aarch64-linux-gnu/libxml2.so" + ) + } + if ('${{matrix.os}}' -eq 'macos') { $AppleArch = @{'x86_64'='x86_64';'aarch64'='arm64'}['${{matrix.arch}}'] $CMakeArgs += @("-DCMAKE_OSX_ARCHITECTURES=$AppleArch") From 3fbfd254c806cda024de260f11681cceee241577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 11:41:23 -0400 Subject: [PATCH 03/15] Use apt for Ubuntu cross packages --- .github/workflows/llvm-prebuilt.yml | 32 ++++---- scripts/Get-UbuntuPackage.ps1 | 109 +++++++++++++++++++--------- 2 files changed, 94 insertions(+), 47 deletions(-) diff --git a/.github/workflows/llvm-prebuilt.yml b/.github/workflows/llvm-prebuilt.yml index 5157485..843fcbd 100644 --- a/.github/workflows/llvm-prebuilt.yml +++ b/.github/workflows/llvm-prebuilt.yml @@ -69,6 +69,10 @@ jobs: if: runner.os == 'Linux' shell: pwsh run: | + if ('${{matrix.arch}}' -eq 'aarch64') { + sudo dpkg --add-architecture arm64 + } + sudo apt update sudo apt install zstd xz-utils sudo apt install ninja-build @@ -77,19 +81,21 @@ jobs: # Install native packages sudo apt install libxml2-dev zlib1g-dev - # Get Ubuntu release for cross-compilation packages - $UbuntuRelease = lsb_release -rs - - # Download and extract arm64 packages using helper script - $ScriptPath = "$Env:GITHUB_WORKSPACE/llvm-prebuilt/scripts/Get-UbuntuPackage.ps1" - - # Extract libxml2-dev for arm64 - $LibXmlPath = & $ScriptPath -PackageName "libxml2-dev" -Release $UbuntuRelease -Architecture "arm64" - sudo cp -R "$LibXmlPath/usr/lib/aarch64-linux-gnu/" /usr/lib/aarch64-linux-gnu/ - - # Extract zlib1g-dev for arm64 - $ZlibPath = & $ScriptPath -PackageName "zlib1g-dev" -Release $UbuntuRelease -Architecture "arm64" - sudo cp -R "$ZlibPath/usr/lib/aarch64-linux-gnu/" /usr/lib/aarch64-linux-gnu/ + if ('${{matrix.arch}}' -eq 'aarch64') { + # Get Ubuntu release for cross-compilation packages + $UbuntuRelease = lsb_release -rs + + # Download and extract arm64 packages using helper script + $ScriptPath = "$Env:GITHUB_WORKSPACE/llvm-prebuilt/scripts/Get-UbuntuPackage.ps1" + + # Extract libxml2-dev for arm64 + $LibXmlPath = & $ScriptPath -PackageName "libxml2-dev" -Release $UbuntuRelease -Architecture "arm64" + sudo cp -R "$LibXmlPath/usr/lib/aarch64-linux-gnu/" /usr/lib/aarch64-linux-gnu/ + + # Extract zlib1g-dev for arm64 + $ZlibPath = & $ScriptPath -PackageName "zlib1g-dev" -Release $UbuntuRelease -Architecture "arm64" + sudo cp -R "$ZlibPath/usr/lib/aarch64-linux-gnu/" /usr/lib/aarch64-linux-gnu/ + } - name: Clone LLVM ${{matrix.version}} uses: actions/checkout@v6 diff --git a/scripts/Get-UbuntuPackage.ps1 b/scripts/Get-UbuntuPackage.ps1 index e62d2af..c8f135e 100755 --- a/scripts/Get-UbuntuPackage.ps1 +++ b/scripts/Get-UbuntuPackage.ps1 @@ -34,6 +34,80 @@ $Codename = if ($ReleaseCodenames.ContainsKey($Release)) { Write-Host "Resolving package: $PackageName for Ubuntu $Codename ($Architecture)" -ForegroundColor Cyan +function Expand-DebPackage { + param( + [Parameter(Mandatory=$true)] + [string]$DebFileName, + + [Parameter(Mandatory=$true)] + [string]$WorkDir + ) + + Push-Location $WorkDir + + try { + Write-Host "Extracting package..." -ForegroundColor Cyan + & ar -x $DebFileName + + $DataArchive = Get-ChildItem -Filter "data.tar.*" | Select-Object -First 1 + + if (-not $DataArchive) { + Write-Error "Could not find data archive in $DebFileName" + exit 1 + } + + Write-Host "Extracting $($DataArchive.Name)..." -ForegroundColor Gray + + if ($DataArchive.Name -match '\.zst$') { + $ZstdCmd = if (Get-Command zstd -ErrorAction SilentlyContinue) { "zstd -d" } else { "unzstd" } + & tar --use-compress-program="$ZstdCmd" -xf $DataArchive.Name + } elseif ($DataArchive.Name -match '\.xz$') { + & tar -xf $DataArchive.Name + } elseif ($DataArchive.Name -match '\.gz$') { + & tar -xzf $DataArchive.Name + } else { + Write-Error "Unknown compression format: $($DataArchive.Name)" + exit 1 + } + } finally { + Pop-Location + } +} + +$WorkDir = Join-Path $ExtractPath "$PackageName-$Architecture" +if (Test-Path $WorkDir) { + Remove-Item -Recurse -Force $WorkDir +} +New-Item -ItemType Directory -Path $WorkDir | Out-Null + +if (Get-Command apt-get -ErrorAction SilentlyContinue) { + Write-Host "Downloading package with apt-get..." -ForegroundColor Cyan + Push-Location $WorkDir + + try { + & apt-get download "$PackageName`:$Architecture" + if ($LASTEXITCODE -ne 0) { + throw "apt-get download failed with exit code $LASTEXITCODE" + } + + $DebPackage = Get-ChildItem -Filter "*.deb" | Select-Object -First 1 + if (-not $DebPackage) { + throw "apt-get download did not produce a .deb file" + } + + Expand-DebPackage -DebFileName $DebPackage.Name -WorkDir $WorkDir + Write-Host "✓ Successfully extracted $PackageName to $WorkDir" -ForegroundColor Green + $WorkDir + exit 0 + } catch { + Write-Host "apt-get download failed: $_" -ForegroundColor Yellow + Write-Host "Falling back to packages.ubuntu.com..." -ForegroundColor Yellow + Get-ChildItem -Force | Remove-Item -Recurse -Force + } finally { + Pop-Location + } +} + # Construct packages.ubuntu.com URL $PackageUrl = "https://packages.ubuntu.com/$Codename/$Architecture/$PackageName/download" @@ -81,12 +155,6 @@ try { Write-Host "Found package: $DebFileName" -ForegroundColor Green Write-Host "Download URL: $DebUrl" -ForegroundColor Gray - # Create working directory - $WorkDir = Join-Path $ExtractPath "$PackageName-$Architecture" - if (Test-Path $WorkDir) { - Remove-Item -Recurse -Force $WorkDir - } - New-Item -ItemType Directory -Path $WorkDir | Out-Null Push-Location $WorkDir try { @@ -94,34 +162,7 @@ try { Write-Host "Downloading $DebFileName..." -ForegroundColor Cyan Invoke-WebRequest -Uri $DebUrl -OutFile $DebFileName -UseBasicParsing - # Extract the .deb archive - Write-Host "Extracting package..." -ForegroundColor Cyan - - # Extract ar archive - & ar -x $DebFileName - - # Find and extract data archive (could be .tar.zst, .tar.xz, or .tar.gz) - $DataArchive = Get-ChildItem -Filter "data.tar.*" | Select-Object -First 1 - - if (-not $DataArchive) { - Write-Error "Could not find data archive in $DebFileName" - exit 1 - } - - Write-Host "Extracting $($DataArchive.Name)..." -ForegroundColor Gray - - if ($DataArchive.Name -match '\.zst$') { - # Try zstd -d first, fall back to unzstd - $ZstdCmd = if (Get-Command zstd -ErrorAction SilentlyContinue) { "zstd -d" } else { "unzstd" } - & tar --use-compress-program="$ZstdCmd" -xf $DataArchive.Name - } elseif ($DataArchive.Name -match '\.xz$') { - & tar -xf $DataArchive.Name - } elseif ($DataArchive.Name -match '\.gz$') { - & tar -xzf $DataArchive.Name - } else { - Write-Error "Unknown compression format: $($DataArchive.Name)" - exit 1 - } + Expand-DebPackage -DebFileName $DebFileName -WorkDir $WorkDir Write-Host "✓ Successfully extracted $PackageName to $WorkDir" -ForegroundColor Green From a23a18b4fe9ccd8be418a62254309f8f02798575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 11:55:45 -0400 Subject: [PATCH 04/15] Fix Ubuntu arm64 apt sources --- .github/workflows/llvm-prebuilt.yml | 46 +++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/.github/workflows/llvm-prebuilt.yml b/.github/workflows/llvm-prebuilt.yml index 843fcbd..3dfea2b 100644 --- a/.github/workflows/llvm-prebuilt.yml +++ b/.github/workflows/llvm-prebuilt.yml @@ -71,15 +71,51 @@ jobs: run: | if ('${{matrix.arch}}' -eq 'aarch64') { sudo dpkg --add-architecture arm64 + + $UbuntuCodename = lsb_release -cs + $UbuntuSources = "/etc/apt/sources.list.d/ubuntu.sources" + + if (Test-Path $UbuntuSources) { + $NativeSources = Get-Content $UbuntuSources -Raw + + if ($NativeSources -notmatch '(?m)^Architectures:') { + $NativeSources = $NativeSources -replace '(?m)^Signed-By:', "Architectures: amd64`nSigned-By:" + $NativeSources | sudo tee $UbuntuSources | Out-Null + } + } + + $LegacySources = "/etc/apt/sources.list" + + if (Test-Path $LegacySources) { + sudo sed -i -E 's/^deb http/deb [arch=amd64] http/' $LegacySources + } + + $Arm64Sources = @( + "Types: deb", + "URIs: http://ports.ubuntu.com/ubuntu-ports", + "Suites: $UbuntuCodename ${UbuntuCodename}-updates ${UbuntuCodename}-backports", + "Components: main restricted universe multiverse", + "Architectures: arm64", + "Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg", + "", + "Types: deb", + "URIs: http://ports.ubuntu.com/ubuntu-ports", + "Suites: ${UbuntuCodename}-security", + "Components: main restricted universe multiverse", + "Architectures: arm64", + "Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg" + ) -join "`n" + + $Arm64Sources | sudo tee /etc/apt/sources.list.d/ubuntu-arm64.sources | Out-Null } - sudo apt update - sudo apt install zstd xz-utils - sudo apt install ninja-build - sudo apt install g++-aarch64-linux-gnu + sudo apt-get update + sudo apt-get install -y zstd xz-utils + sudo apt-get install -y ninja-build + sudo apt-get install -y g++-aarch64-linux-gnu # Install native packages - sudo apt install libxml2-dev zlib1g-dev + sudo apt-get install -y libxml2-dev zlib1g-dev if ('${{matrix.arch}}' -eq 'aarch64') { # Get Ubuntu release for cross-compilation packages From 3ca2f8ee895cf934f251f633c42e04df1f1d390f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 12:04:35 -0400 Subject: [PATCH 05/15] Fix Ubuntu package extraction path --- scripts/Get-UbuntuPackage.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Get-UbuntuPackage.ps1 b/scripts/Get-UbuntuPackage.ps1 index c8f135e..f5662ff 100755 --- a/scripts/Get-UbuntuPackage.ps1 +++ b/scripts/Get-UbuntuPackage.ps1 @@ -74,7 +74,7 @@ function Expand-DebPackage { } } -$WorkDir = Join-Path $ExtractPath "$PackageName-$Architecture" +$WorkDir = [System.IO.Path]::GetFullPath((Join-Path $ExtractPath "$PackageName-$Architecture")) if (Test-Path $WorkDir) { Remove-Item -Recurse -Force $WorkDir } From 669cf22ee52f010c7445c812b0fe81aba8c0dbb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 12:06:13 -0400 Subject: [PATCH 06/15] Keep apt output out of package paths --- scripts/Get-UbuntuPackage.ps1 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/scripts/Get-UbuntuPackage.ps1 b/scripts/Get-UbuntuPackage.ps1 index f5662ff..965d2d7 100755 --- a/scripts/Get-UbuntuPackage.ps1 +++ b/scripts/Get-UbuntuPackage.ps1 @@ -85,9 +85,12 @@ if (Get-Command apt-get -ErrorAction SilentlyContinue) { Push-Location $WorkDir try { - & apt-get download "$PackageName`:$Architecture" - if ($LASTEXITCODE -ne 0) { - throw "apt-get download failed with exit code $LASTEXITCODE" + $AptOutput = & apt-get download "$PackageName`:$Architecture" 2>&1 + $AptExitCode = $LASTEXITCODE + $AptOutput | ForEach-Object { Write-Host $_ } + + if ($AptExitCode -ne 0) { + throw "apt-get download failed with exit code $AptExitCode" } $DebPackage = Get-ChildItem -Filter "*.deb" | Select-Object -First 1 From 71b9c080d463f7e9b8b7bcd60d10067182e761cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 13:27:49 -0400 Subject: [PATCH 07/15] Install Ubuntu arm64 target dependencies with apt --- .github/workflows/llvm-prebuilt.yml | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/.github/workflows/llvm-prebuilt.yml b/.github/workflows/llvm-prebuilt.yml index 3dfea2b..ceb6413 100644 --- a/.github/workflows/llvm-prebuilt.yml +++ b/.github/workflows/llvm-prebuilt.yml @@ -118,19 +118,7 @@ jobs: sudo apt-get install -y libxml2-dev zlib1g-dev if ('${{matrix.arch}}' -eq 'aarch64') { - # Get Ubuntu release for cross-compilation packages - $UbuntuRelease = lsb_release -rs - - # Download and extract arm64 packages using helper script - $ScriptPath = "$Env:GITHUB_WORKSPACE/llvm-prebuilt/scripts/Get-UbuntuPackage.ps1" - - # Extract libxml2-dev for arm64 - $LibXmlPath = & $ScriptPath -PackageName "libxml2-dev" -Release $UbuntuRelease -Architecture "arm64" - sudo cp -R "$LibXmlPath/usr/lib/aarch64-linux-gnu/" /usr/lib/aarch64-linux-gnu/ - - # Extract zlib1g-dev for arm64 - $ZlibPath = & $ScriptPath -PackageName "zlib1g-dev" -Release $UbuntuRelease -Architecture "arm64" - sudo cp -R "$ZlibPath/usr/lib/aarch64-linux-gnu/" /usr/lib/aarch64-linux-gnu/ + sudo apt-get install -y libxml2-dev:arm64 zlib1g-dev:arm64 } - name: Clone LLVM ${{matrix.version}} From 969e8b70d6cc019a47cb1c209567bc6a6f4a5729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 13:29:43 -0400 Subject: [PATCH 08/15] Restrict Jammy native apt sources to amd64 --- .github/workflows/llvm-prebuilt.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/llvm-prebuilt.yml b/.github/workflows/llvm-prebuilt.yml index ceb6413..cfb1600 100644 --- a/.github/workflows/llvm-prebuilt.yml +++ b/.github/workflows/llvm-prebuilt.yml @@ -87,7 +87,7 @@ jobs: $LegacySources = "/etc/apt/sources.list" if (Test-Path $LegacySources) { - sudo sed -i -E 's/^deb http/deb [arch=amd64] http/' $LegacySources + sudo sed -i -E 's/^deb (https?:\/\/)/deb [arch=amd64] \1/' $LegacySources } $Arm64Sources = @( From aceaae5e8dd81035b16b4c165411513da6eea6e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 13:31:29 -0400 Subject: [PATCH 09/15] Handle Jammy apt mirror sources --- .github/workflows/llvm-prebuilt.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/llvm-prebuilt.yml b/.github/workflows/llvm-prebuilt.yml index cfb1600..2324473 100644 --- a/.github/workflows/llvm-prebuilt.yml +++ b/.github/workflows/llvm-prebuilt.yml @@ -87,7 +87,7 @@ jobs: $LegacySources = "/etc/apt/sources.list" if (Test-Path $LegacySources) { - sudo sed -i -E 's/^deb (https?:\/\/)/deb [arch=amd64] \1/' $LegacySources + sudo sed -i -E 's/^deb( \[[^]]+\])? /deb [arch=amd64] /' $LegacySources } $Arm64Sources = @( From db2cfbce991bc0504e7bf6253f53e3a8a5889067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 16:32:42 -0400 Subject: [PATCH 10/15] Fix Windows LLVM static dependency checks --- .github/workflows/llvm-prebuilt.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/llvm-prebuilt.yml b/.github/workflows/llvm-prebuilt.yml index 2324473..4ae72e8 100644 --- a/.github/workflows/llvm-prebuilt.yml +++ b/.github/workflows/llvm-prebuilt.yml @@ -55,7 +55,7 @@ jobs: $VcpkgRootDir = "$PWD" -Replace '\\','/' $VcpkgArch = @{'x86_64'='x64';'aarch64'='arm64'}['${{matrix.arch}}'] .\vcpkg install "zlib:${VcpkgArch}-windows-static-release" - .\vcpkg install "libxml2:${VcpkgArch}-windows-static-release" + .\vcpkg install "libxml2[core]:${VcpkgArch}-windows-static-release" echo "VCPKG_ARCH=$VcpkgArch" >> $Env:GITHUB_ENV echo "VCPKG_ROOT_DIR=$VcpkgRootDir" >> $Env:GITHUB_ENV @@ -205,16 +205,21 @@ jobs: $ZLIB_INCLUDE_DIR="$ZLIB_ROOT_DIR/include" $ZLIB_LIBRARY="$ZLIB_ROOT_DIR/lib/zlib.lib" $CMakeArgs += @( + "-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded", "-DZLIB_INCLUDE_DIR=$ZLIB_INCLUDE_DIR", - "-DZLIB_LIBRARY=$ZLIB_LIBRARY" + "-DZLIB_LIBRARY=$ZLIB_LIBRARY", + "-DZLIB_LIBRARY_RELEASE=$ZLIB_LIBRARY" ) $LIBXML2_ROOT_DIR="${Env:VCPKG_ROOT_DIR}/packages/libxml2_${Env:VCPKG_ARCH}-windows-static" $LIBXML2_INCLUDE_DIR="$LIBXML2_ROOT_DIR/include" $LIBXML2_LIBRARY="$LIBXML2_ROOT_DIR/lib/libxml2.lib" $CMakeArgs += @( + "-DLLVM_USE_STATIC_LIBXML2=ON", "-DLIBXML2_INCLUDE_DIR=$LIBXML2_INCLUDE_DIR", - "-DLIBXML2_LIBRARY=$LIBXML2_LIBRARY" + "-DLIBXML2_LIBRARY=$LIBXML2_LIBRARY", + "-DLIBXML2_STATIC_LIBRARY=$LIBXML2_LIBRARY", + "-DLIBXML2_DEFINITIONS=-DLIBXML_STATIC" ) } From a94d819f3fee8912fbae6b5718e9b22ce3c919eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 21:47:28 -0400 Subject: [PATCH 11/15] Fix Windows vcpkg package paths --- .github/workflows/llvm-prebuilt.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/llvm-prebuilt.yml b/.github/workflows/llvm-prebuilt.yml index 4ae72e8..a7bc4cd 100644 --- a/.github/workflows/llvm-prebuilt.yml +++ b/.github/workflows/llvm-prebuilt.yml @@ -201,7 +201,7 @@ jobs: $CMakeArgs = @() if ('${{matrix.os}}' -eq 'windows') { - $ZLIB_ROOT_DIR="${Env:VCPKG_ROOT_DIR}/packages/zlib_${Env:VCPKG_ARCH}-windows-static" + $ZLIB_ROOT_DIR="${Env:VCPKG_ROOT_DIR}/packages/zlib_${Env:VCPKG_ARCH}-windows-static-release" $ZLIB_INCLUDE_DIR="$ZLIB_ROOT_DIR/include" $ZLIB_LIBRARY="$ZLIB_ROOT_DIR/lib/zlib.lib" $CMakeArgs += @( @@ -211,7 +211,7 @@ jobs: "-DZLIB_LIBRARY_RELEASE=$ZLIB_LIBRARY" ) - $LIBXML2_ROOT_DIR="${Env:VCPKG_ROOT_DIR}/packages/libxml2_${Env:VCPKG_ARCH}-windows-static" + $LIBXML2_ROOT_DIR="${Env:VCPKG_ROOT_DIR}/packages/libxml2_${Env:VCPKG_ARCH}-windows-static-release" $LIBXML2_INCLUDE_DIR="$LIBXML2_ROOT_DIR/include" $LIBXML2_LIBRARY="$LIBXML2_ROOT_DIR/lib/libxml2.lib" $CMakeArgs += @( From ba94cede7d38bd61c1d036b00ffbcb523b38d345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Tue, 5 May 2026 09:45:07 -0400 Subject: [PATCH 12/15] Build Halide 21 prebuilts --- .github/workflows/halide-prebuilt.yml | 11 ++++---- AGENTS.md | 2 +- README.md | 2 +- ...lide-20-allow-llvm-20-point-releases.patch | 25 ------------------- ...-halide-host-tools-dir-cmake-option.patch} | 5 ++-- ...=> halide-21-disable-autoschedulers.patch} | 7 +++--- ...isable-clang-verbose-build-warnings.patch} | 7 +++--- 7 files changed, 15 insertions(+), 44 deletions(-) delete mode 100644 patches/halide-20-allow-llvm-20-point-releases.patch rename patches/{halide-20-add-halide-host-tools-dir-cmake-option.patch => halide-21-add-halide-host-tools-dir-cmake-option.patch} (95%) rename patches/{halide-20-disable-autoschedulers.patch => halide-21-disable-autoschedulers.patch} (80%) rename patches/{halide-20-disable-clang-verbose-build-warnings.patch => halide-21-disable-clang-verbose-build-warnings.patch} (84%) diff --git a/.github/workflows/halide-prebuilt.yml b/.github/workflows/halide-prebuilt.yml index 663f64e..a166c8d 100644 --- a/.github/workflows/halide-prebuilt.yml +++ b/.github/workflows/halide-prebuilt.yml @@ -15,7 +15,7 @@ jobs: matrix: arch: [ x86_64, aarch64 ] os: [ windows, macos, ubuntu-22.04, ubuntu-24.04 ] - version: [ 19.0.0, 20.0.0.dev0 ] + version: [ 19.0.0, 21.0.0 ] include: - os: windows @@ -170,11 +170,10 @@ jobs: git -C halide apply ../llvm-prebuilt/patches/halide-19-disable-autoschedulers.patch git -C halide apply ../llvm-prebuilt/patches/halide-19-disable-clang-verbose-build-warnings.patch git -C halide apply ../llvm-prebuilt/patches/halide-19-allow-llvm-20-point-releases.patch - } elseif ('${{matrix.version}}' -eq '20.0.0.dev0') { - git -C halide apply ../llvm-prebuilt/patches/halide-20-add-halide-host-tools-dir-cmake-option.patch - git -C halide apply ../llvm-prebuilt/patches/halide-20-disable-autoschedulers.patch - git -C halide apply ../llvm-prebuilt/patches/halide-20-disable-clang-verbose-build-warnings.patch - git -C halide apply ../llvm-prebuilt/patches/halide-20-allow-llvm-20-point-releases.patch + } elseif ('${{matrix.version}}' -eq '21.0.0') { + git -C halide apply ../llvm-prebuilt/patches/halide-21-add-halide-host-tools-dir-cmake-option.patch + git -C halide apply ../llvm-prebuilt/patches/halide-21-disable-autoschedulers.patch + git -C halide apply ../llvm-prebuilt/patches/halide-21-disable-clang-verbose-build-warnings.patch } - name: Build Halide host tools diff --git a/AGENTS.md b/AGENTS.md index 1d4d76f..b238e54 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,7 +9,7 @@ Treat this as a packaging and cross-compilation repository. Keep changes small, - Architectures: `x86_64`, `aarch64` - Platforms: `windows`, `macos`, `ubuntu-22.04`, `ubuntu-24.04` - LLVM versions currently built by CI: `20.1.8`, `22.1.4` -- Halide versions currently built by CI: `19.0.0`, `20.0.0.dev0` +- Halide versions currently built by CI: `19.0.0`, `21.0.0` ## Repository Layout diff --git a/README.md b/README.md index 9fe0a11..b0049a9 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ clang+llvm---.tar.xz The Halide workflow builds Halide packages against LLVM artifacts produced by the LLVM workflow. It first installs a host LLVM package, then installs a target LLVM package when cross-compiling for `aarch64`. -Currently built Halide versions: `19.0.0`, `20.0.0.dev0`. +Currently built Halide versions: `19.0.0`, `21.0.0`. | Arch | Windows | macOS | Ubuntu 22.04 | Ubuntu 24.04 | |---------|---------|-------|--------------|--------------| diff --git a/patches/halide-20-allow-llvm-20-point-releases.patch b/patches/halide-20-allow-llvm-20-point-releases.patch deleted file mode 100644 index 2f3f0e9..0000000 --- a/patches/halide-20-allow-llvm-20-point-releases.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 04a02a308432f8443d01882b2833728f56ab32c9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= -Date: Fri, 1 May 2026 09:48:19 -0400 -Subject: [PATCH] allow LLVM 20 point releases - ---- - CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index aaba4c6..c45c44c 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -197,7 +197,7 @@ option(THREADS_PREFER_PTHREAD_FLAG "When enabled, prefer to use the -pthread fla - find_package(Threads REQUIRED) - - ## LLVM --find_package(Halide_LLVM 17...20 REQUIRED -+find_package(Halide_LLVM 17...<21 REQUIRED - COMPONENTS WebAssembly X86 - OPTIONAL_COMPONENTS AArch64 ARM Hexagon NVPTX PowerPC RISCV) - --- -2.54.0.windows.1 - diff --git a/patches/halide-20-add-halide-host-tools-dir-cmake-option.patch b/patches/halide-21-add-halide-host-tools-dir-cmake-option.patch similarity index 95% rename from patches/halide-20-add-halide-host-tools-dir-cmake-option.patch rename to patches/halide-21-add-halide-host-tools-dir-cmake-option.patch index 1801e7f..b8974f2 100644 --- a/patches/halide-20-add-halide-host-tools-dir-cmake-option.patch +++ b/patches/halide-21-add-halide-host-tools-dir-cmake-option.patch @@ -1,4 +1,4 @@ -From 2e4d1d9e66f96db51b096b46b9bad36de066c71b Mon Sep 17 00:00:00 2001 +From 5b474421c7a3a19e86ae569738c9970d98e510bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 09:45:25 -0400 Subject: [PATCH 1/3] add HALIDE_HOST_TOOLS_DIR cmake option @@ -8,7 +8,7 @@ Subject: [PATCH 1/3] add HALIDE_HOST_TOOLS_DIR cmake option 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt -index 0e338b6..f0fd462 100644 +index 2a7ef3c..2df789e 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -2,14 +2,28 @@ @@ -50,4 +50,3 @@ index 0e338b6..f0fd462 100644 # Interface target for enabling PNG/JPEG support in Halide -- 2.54.0.windows.1 - diff --git a/patches/halide-20-disable-autoschedulers.patch b/patches/halide-21-disable-autoschedulers.patch similarity index 80% rename from patches/halide-20-disable-autoschedulers.patch rename to patches/halide-21-disable-autoschedulers.patch index 1061b3b..caac760 100644 --- a/patches/halide-20-disable-autoschedulers.patch +++ b/patches/halide-21-disable-autoschedulers.patch @@ -1,4 +1,4 @@ -From 08b645b0aa3710753d66f7386e2a7f98d849a9be Mon Sep 17 00:00:00 2001 +From 952dcdb6b75e0e914a2ae840fb462b077f8ee6a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 09:45:25 -0400 Subject: [PATCH 2/3] disable autoschedulers @@ -8,10 +8,10 @@ Subject: [PATCH 2/3] disable autoschedulers 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index f5eb3e6..d2f8ba7 100644 +index af41932..5b6c053 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt -@@ -705,5 +705,5 @@ endif () +@@ -698,5 +698,5 @@ endif () ## if (WITH_AUTOSCHEDULERS) @@ -20,4 +20,3 @@ index f5eb3e6..d2f8ba7 100644 endif () -- 2.54.0.windows.1 - diff --git a/patches/halide-20-disable-clang-verbose-build-warnings.patch b/patches/halide-21-disable-clang-verbose-build-warnings.patch similarity index 84% rename from patches/halide-20-disable-clang-verbose-build-warnings.patch rename to patches/halide-21-disable-clang-verbose-build-warnings.patch index 85e4c81..c6e0818 100644 --- a/patches/halide-20-disable-clang-verbose-build-warnings.patch +++ b/patches/halide-21-disable-clang-verbose-build-warnings.patch @@ -1,4 +1,4 @@ -From 17e0220421759fd0f8ac71ea9f74105ed5dfc5b7 Mon Sep 17 00:00:00 2001 +From 56fa79256184e72ebeed4ff8051e158e8de7b9db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 1 May 2026 09:45:25 -0400 Subject: [PATCH 3/3] disable clang verbose build warnings @@ -8,10 +8,10 @@ Subject: [PATCH 3/3] disable clang verbose build warnings 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt -index ffb68a0..aaba4c6 100644 +index 74967e0..60a03aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -169,6 +169,8 @@ function(set_halide_compiler_warnings NAME) +@@ -174,6 +174,8 @@ function(set_halide_compiler_warnings NAME) $<$:-Wno-undefined-func-template> $<$:-Wno-unused-member-function> $<$:-Wno-unused-template> @@ -22,4 +22,3 @@ index ffb68a0..aaba4c6 100644 $<$:/wd4018> # 4018: disable "signed/unsigned mismatch" -- 2.54.0.windows.1 - From fb6ee25f6d9c5448b1f055bd5051739cf0c47739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Tue, 5 May 2026 09:49:16 -0400 Subject: [PATCH 13/15] Fix Windows libxml2 LLVM configure --- .github/workflows/llvm-prebuilt.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/llvm-prebuilt.yml b/.github/workflows/llvm-prebuilt.yml index a7bc4cd..2c25401 100644 --- a/.github/workflows/llvm-prebuilt.yml +++ b/.github/workflows/llvm-prebuilt.yml @@ -212,9 +212,11 @@ jobs: ) $LIBXML2_ROOT_DIR="${Env:VCPKG_ROOT_DIR}/packages/libxml2_${Env:VCPKG_ARCH}-windows-static-release" - $LIBXML2_INCLUDE_DIR="$LIBXML2_ROOT_DIR/include" + $LIBXML2_INCLUDE_DIR="$LIBXML2_ROOT_DIR/include/libxml2" $LIBXML2_LIBRARY="$LIBXML2_ROOT_DIR/lib/libxml2.lib" $CMakeArgs += @( + "-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON", + "-DLibXml2_DIR=$LIBXML2_ROOT_DIR/share/libxml2", "-DLLVM_USE_STATIC_LIBXML2=ON", "-DLIBXML2_INCLUDE_DIR=$LIBXML2_INCLUDE_DIR", "-DLIBXML2_LIBRARY=$LIBXML2_LIBRARY", From 0e745d268fcb01a5cd50096bf4e0cf054b002c37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Tue, 5 May 2026 13:42:51 -0400 Subject: [PATCH 14/15] Fix Halide LLVM package dependencies --- .github/workflows/halide-prebuilt.yml | 137 +++++++++++++++++++++++--- cmake/llvm-package-dependencies.cmake | 2 + 2 files changed, 128 insertions(+), 11 deletions(-) create mode 100644 cmake/llvm-package-dependencies.cmake diff --git a/.github/workflows/halide-prebuilt.yml b/.github/workflows/halide-prebuilt.yml index a166c8d..3a4e15c 100644 --- a/.github/workflows/halide-prebuilt.yml +++ b/.github/workflows/halide-prebuilt.yml @@ -45,6 +45,23 @@ jobs: run: | choco install ninja 7zip wget Install-Module -Name VsDevShell -Force + git clone --depth 1 --branch 2025.10.17 https://github.com/microsoft/vcpkg.git + cd vcpkg + .\bootstrap-vcpkg.bat + $VcpkgRootDir = "$PWD" -Replace '\\','/' + $VcpkgTargetArch = @{'x86_64'='x64';'aarch64'='arm64'}['${{matrix.arch}}'] + + .\vcpkg install "zlib:x64-windows-static-release" + .\vcpkg install "libxml2[core]:x64-windows-static-release" + + if ($VcpkgTargetArch -ne 'x64') { + .\vcpkg install "zlib:${VcpkgTargetArch}-windows-static-release" + .\vcpkg install "libxml2[core]:${VcpkgTargetArch}-windows-static-release" + } + + echo "VCPKG_HOST_ARCH=x64" >> $Env:GITHUB_ENV + echo "VCPKG_TARGET_ARCH=$VcpkgTargetArch" >> $Env:GITHUB_ENV + echo "VCPKG_ROOT_DIR=$VcpkgRootDir" >> $Env:GITHUB_ENV - name: Configure macOS runner if: runner.os == 'macOS' @@ -58,10 +75,55 @@ jobs: if: runner.os == 'Linux' shell: pwsh run: | - sudo apt update - sudo apt install zstd xz-utils - sudo apt install ninja-build - sudo apt install g++-aarch64-linux-gnu + if ('${{matrix.arch}}' -eq 'aarch64') { + sudo dpkg --add-architecture arm64 + + $UbuntuCodename = lsb_release -cs + $UbuntuSources = "/etc/apt/sources.list.d/ubuntu.sources" + + if (Test-Path $UbuntuSources) { + $NativeSources = Get-Content $UbuntuSources -Raw + + if ($NativeSources -notmatch '(?m)^Architectures:') { + $NativeSources = $NativeSources -replace '(?m)^Signed-By:', "Architectures: amd64`nSigned-By:" + $NativeSources | sudo tee $UbuntuSources | Out-Null + } + } + + $LegacySources = "/etc/apt/sources.list" + + if (Test-Path $LegacySources) { + sudo sed -i -E 's/^deb( \[[^]]+\])? /deb [arch=amd64] /' $LegacySources + } + + $Arm64Sources = @( + "Types: deb", + "URIs: http://ports.ubuntu.com/ubuntu-ports", + "Suites: $UbuntuCodename ${UbuntuCodename}-updates ${UbuntuCodename}-backports", + "Components: main restricted universe multiverse", + "Architectures: arm64", + "Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg", + "", + "Types: deb", + "URIs: http://ports.ubuntu.com/ubuntu-ports", + "Suites: ${UbuntuCodename}-security", + "Components: main restricted universe multiverse", + "Architectures: arm64", + "Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg" + ) -join "`n" + + $Arm64Sources | sudo tee /etc/apt/sources.list.d/ubuntu-arm64.sources | Out-Null + } + + sudo apt-get update + sudo apt-get install -y zstd xz-utils + sudo apt-get install -y ninja-build + sudo apt-get install -y g++-aarch64-linux-gnu + sudo apt-get install -y libxml2-dev zlib1g-dev + + if ('${{matrix.arch}}' -eq 'aarch64') { + sudo apt-get install -y libxml2-dev:arm64 zlib1g-dev:arm64 + } - name: Preflight shell: pwsh @@ -179,22 +241,46 @@ jobs: - name: Build Halide host tools shell: pwsh run: | + $CMakeArgs = @( + "-DCMAKE_BUILD_TYPE=Release", + "-DWITH_TESTS=OFF", + "-DWITH_UTILS=OFF", + "-DWITH_PYTHON_BINDINGS=OFF", + "-DWITH_AUTOSCHEDULERS=OFF", + "-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=$Env:GITHUB_WORKSPACE/llvm-prebuilt/cmake/llvm-package-dependencies.cmake", + "-Wno-dev" + ) + if ($IsWindows) { Enter-VsDevShell x64 $CMAKE_MT = (Get-Command -Type Application mt).Source $CMAKE_MT = cmd /c "for %A in (`"$CMAKE_MT`") do @echo %~sA" 2>&1 | Out-String $CMAKE_MT = ($CMAKE_MT -Replace '\r|\n', '' -Replace '\\', '/').Trim() echo "CMAKE_MT=$CMAKE_MT" >> $Env:GITHUB_ENV + + $ZLIB_ROOT_DIR="${Env:VCPKG_ROOT_DIR}/packages/zlib_${Env:VCPKG_HOST_ARCH}-windows-static-release" + $ZLIB_INCLUDE_DIR="$ZLIB_ROOT_DIR/include" + $ZLIB_LIBRARY="$ZLIB_ROOT_DIR/lib/zlib.lib" + + $LIBXML2_ROOT_DIR="${Env:VCPKG_ROOT_DIR}/packages/libxml2_${Env:VCPKG_HOST_ARCH}-windows-static-release" + $LIBXML2_INCLUDE_DIR="$LIBXML2_ROOT_DIR/include/libxml2" + $LIBXML2_LIBRARY="$LIBXML2_ROOT_DIR/lib/libxml2.lib" + + $CMakeArgs += @( + "-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON", + "-DLibXml2_DIR=$LIBXML2_ROOT_DIR/share/libxml2", + "-DZLIB_INCLUDE_DIR=$ZLIB_INCLUDE_DIR", + "-DZLIB_LIBRARY=$ZLIB_LIBRARY", + "-DZLIB_LIBRARY_RELEASE=$ZLIB_LIBRARY", + "-DLIBXML2_INCLUDE_DIR=$LIBXML2_INCLUDE_DIR", + "-DLIBXML2_LIBRARY=$LIBXML2_LIBRARY", + "-DLIBXML2_DEFINITIONS=-DLIBXML_STATIC" + ) } - cmake -G Ninja -S halide -B halide-host ` - -DCMAKE_BUILD_TYPE=Release ` + cmake -G Ninja -S halide -B halide-host $CMakeArgs ` -DLLVM_DIR="$Env:LLVM_HOST_DIR" ` - -DClang_DIR="$Env:CLANG_HOST_DIR" ` - -DWITH_TESTS=OFF -DWITH_UTILS=OFF ` - -DWITH_PYTHON_BINDINGS=OFF ` - -DWITH_AUTOSCHEDULERS=OFF ` - -Wno-dev + -DClang_DIR="$Env:CLANG_HOST_DIR" cmake --build halide-host --target build_halide_h binary2cpp regexp_replace @@ -227,10 +313,39 @@ jobs: $CMakeArgs += @("-DWITH_SERIALIZATION=OFF") $CMakeArgs += @("-DWITH_AUTOSCHEDULERS=OFF") $CMakeArgs += @("-DTARGET_WEBASSEMBLY=ON") + $CMakeArgs += @("-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=$Env:GITHUB_WORKSPACE/llvm-prebuilt/cmake/llvm-package-dependencies.cmake") $CMakeArgs += @("-Wno-dev") if ($IsWindows) { $CMakeArgs += @("-DCMAKE_MT=${Env:CMAKE_MT}") + + $ZLIB_ROOT_DIR="${Env:VCPKG_ROOT_DIR}/packages/zlib_${Env:VCPKG_TARGET_ARCH}-windows-static-release" + $ZLIB_INCLUDE_DIR="$ZLIB_ROOT_DIR/include" + $ZLIB_LIBRARY="$ZLIB_ROOT_DIR/lib/zlib.lib" + + $LIBXML2_ROOT_DIR="${Env:VCPKG_ROOT_DIR}/packages/libxml2_${Env:VCPKG_TARGET_ARCH}-windows-static-release" + $LIBXML2_INCLUDE_DIR="$LIBXML2_ROOT_DIR/include/libxml2" + $LIBXML2_LIBRARY="$LIBXML2_ROOT_DIR/lib/libxml2.lib" + + $CMakeArgs += @( + "-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON", + "-DLibXml2_DIR=$LIBXML2_ROOT_DIR/share/libxml2", + "-DZLIB_INCLUDE_DIR=$ZLIB_INCLUDE_DIR", + "-DZLIB_LIBRARY=$ZLIB_LIBRARY", + "-DZLIB_LIBRARY_RELEASE=$ZLIB_LIBRARY", + "-DLIBXML2_INCLUDE_DIR=$LIBXML2_INCLUDE_DIR", + "-DLIBXML2_LIBRARY=$LIBXML2_LIBRARY", + "-DLIBXML2_DEFINITIONS=-DLIBXML_STATIC" + ) + } + + if ('${{matrix.os}}' -like 'ubuntu-*' -and '${{matrix.arch}}' -eq 'aarch64') { + $CMakeArgs += @( + "-DZLIB_INCLUDE_DIR=/usr/include", + "-DZLIB_LIBRARY=/usr/lib/aarch64-linux-gnu/libz.so", + "-DLIBXML2_INCLUDE_DIR=/usr/include/libxml2", + "-DLIBXML2_LIBRARY=/usr/lib/aarch64-linux-gnu/libxml2.so" + ) } if ('${{matrix.os}}' -eq 'macos') { diff --git a/cmake/llvm-package-dependencies.cmake b/cmake/llvm-package-dependencies.cmake new file mode 100644 index 0000000..5c8db93 --- /dev/null +++ b/cmake/llvm-package-dependencies.cmake @@ -0,0 +1,2 @@ +find_package(ZLIB REQUIRED) +find_package(LibXml2 REQUIRED) \ No newline at end of file From 580058a827a21f86d461ad5b5c30b4d8db98d662 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Tue, 5 May 2026 14:04:38 -0400 Subject: [PATCH 15/15] Fix Halide dependency include timing --- .github/workflows/halide-prebuilt.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/halide-prebuilt.yml b/.github/workflows/halide-prebuilt.yml index 3a4e15c..cfcc74b 100644 --- a/.github/workflows/halide-prebuilt.yml +++ b/.github/workflows/halide-prebuilt.yml @@ -247,7 +247,7 @@ jobs: "-DWITH_UTILS=OFF", "-DWITH_PYTHON_BINDINGS=OFF", "-DWITH_AUTOSCHEDULERS=OFF", - "-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=$Env:GITHUB_WORKSPACE/llvm-prebuilt/cmake/llvm-package-dependencies.cmake", + "-DCMAKE_PROJECT_INCLUDE=$Env:GITHUB_WORKSPACE/llvm-prebuilt/cmake/llvm-package-dependencies.cmake", "-Wno-dev" ) @@ -313,7 +313,7 @@ jobs: $CMakeArgs += @("-DWITH_SERIALIZATION=OFF") $CMakeArgs += @("-DWITH_AUTOSCHEDULERS=OFF") $CMakeArgs += @("-DTARGET_WEBASSEMBLY=ON") - $CMakeArgs += @("-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=$Env:GITHUB_WORKSPACE/llvm-prebuilt/cmake/llvm-package-dependencies.cmake") + $CMakeArgs += @("-DCMAKE_PROJECT_INCLUDE=$Env:GITHUB_WORKSPACE/llvm-prebuilt/cmake/llvm-package-dependencies.cmake") $CMakeArgs += @("-Wno-dev") if ($IsWindows) {