From bf2255c90b8284b9b3d9a8fc229cb4229aa4c319 Mon Sep 17 00:00:00 2001 From: 2over12 Date: Thu, 30 Nov 2023 17:05:37 -0500 Subject: [PATCH] Custom llvm for lifting bits (#1038) --- .github/workflows/vcpkg_ci_amd64.yml | 3 +- .github/workflows/vcpkg_ci_mac.yml | 3 +- ports/llvm-17/portfile.cmake | 46 +++++++++++++++++++--------- ports/llvm-17/vcpkg.json | 15 ++++++++- 4 files changed, 50 insertions(+), 17 deletions(-) diff --git a/.github/workflows/vcpkg_ci_amd64.yml b/.github/workflows/vcpkg_ci_amd64.yml index dd681580..187c578a 100644 --- a/.github/workflows/vcpkg_ci_amd64.yml +++ b/.github/workflows/vcpkg_ci_amd64.yml @@ -42,7 +42,8 @@ jobs: - { os: 'ubuntu', name: 'ubuntu-v2', tag: '22.04' } llvm: [ 'llvm-16', - 'llvm-17' + 'llvm-17', + 'llvm-17[liftingbits-llvm]' ] target_arch: [ 'x64', 'arm64' ] diff --git a/.github/workflows/vcpkg_ci_mac.yml b/.github/workflows/vcpkg_ci_mac.yml index 6c70ce9f..a510c43a 100644 --- a/.github/workflows/vcpkg_ci_mac.yml +++ b/.github/workflows/vcpkg_ci_mac.yml @@ -39,7 +39,8 @@ jobs: - { runner: 'macos-13', xcode: '15.0' } llvm: [ 'llvm-16', - 'llvm-17' + 'llvm-17', + 'llvm-17[liftingbits-llvm]' ] target_arch: [ 'x64', 'arm64' ] diff --git a/ports/llvm-17/portfile.cmake b/ports/llvm-17/portfile.cmake index d227413d..61bb22af 100644 --- a/ports/llvm-17/portfile.cmake +++ b/ports/llvm-17/portfile.cmake @@ -1,19 +1,37 @@ vcpkg_check_linkage(ONLY_STATIC_LIBRARY) -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO llvm/llvm-project - REF llvmorg-${VERSION} - SHA512 df68879cb3f23489e19bbec4aac1898d213e837132072f8bbc1a49eb561c8cc7ccdb6ae9202b68b0915c84c8f2b41e536ab690697eb8ab8c9f44d5ae600b575b - HEAD_REF release/17.x - PATCHES - 0001-Fix-install-paths.patch - 0006-Fix-libffi.patch - 0020-fix-FindZ3.cmake.patch - 0021-fix-find_dependency.patch - 0026-fix-prefix-path-calc.patch - 0029-Do-not-attempt-macro-expansion-on-invalid-sourceloc.patch -) + +if("liftingbits-llvm" IN_LIST FEATURES) + vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO trail-of-forks/llvm-project + REF b779442fffcf46f2dfc104217e1413d7d5b538d6 + SHA512 700ddc8c4b39b260a2041385128ef2bbe3bf6c0ff45d933d3d50d15f737892e2c7e817a4a11cda606b91364b99b10c884b76e040b321696effac7ce172720552 + HEAD_REF main + PATCHES + 0001-Fix-install-paths.patch + 0006-Fix-libffi.patch + 0020-fix-FindZ3.cmake.patch + 0021-fix-find_dependency.patch + 0026-fix-prefix-path-calc.patch + 0029-Do-not-attempt-macro-expansion-on-invalid-sourceloc.patch + ) +else() + vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO llvm/llvm-project + REF llvmorg-${VERSION} + SHA512 df68879cb3f23489e19bbec4aac1898d213e837132072f8bbc1a49eb561c8cc7ccdb6ae9202b68b0915c84c8f2b41e536ab690697eb8ab8c9f44d5ae600b575b + HEAD_REF release/17.x + PATCHES + 0001-Fix-install-paths.patch + 0006-Fix-libffi.patch + 0020-fix-FindZ3.cmake.patch + 0021-fix-find_dependency.patch + 0026-fix-prefix-path-calc.patch + 0029-Do-not-attempt-macro-expansion-on-invalid-sourceloc.patch + ) +endif() string(REPLACE "." ";" VERSION_LIST ${VERSION}) list(GET VERSION_LIST 0 LLVM_VERSION_MAJOR) diff --git a/ports/llvm-17/vcpkg.json b/ports/llvm-17/vcpkg.json index 2d6628ac..85e33487 100644 --- a/ports/llvm-17/vcpkg.json +++ b/ports/llvm-17/vcpkg.json @@ -30,6 +30,19 @@ "utils" ], "features": { + "liftingbits-llvm": { + "description": "Custom llvm source tree that allows for custom calling convention registration. These custom calling conventions allow for specifying binary level compatibility.", + "dependencies": [ + { + "name": "llvm-17", + "default-features": false, + "features": [ + "libunwind", + "enable-rtti" + ] + } + ] + }, "bolt": { "description": "BOLT is a post-link optimizer developed to speed up large applications.", "dependencies": [ @@ -439,4 +452,4 @@ "description": "Build LLVM utils." } } -} +} \ No newline at end of file