Open cmcneish opened 9 months ago
build/llvm/LLVM.lua detects the VS version from either cl.exe or msbuild.exe, but build/build.sh specifies (currently) vs=vs2022.
vs=vs2022
If build.sh is run from a VS developer command prompt corresponding to a different version then generate() will fail the following way:
generate()
[~]\CppSharp\build>sh build.sh generate -configuration Release -platform x64 Downloading and unpacking Premake... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 4064k 100 4064k 0 0 4064k 0 0:00:01 --:--:-- 0:00:01 12.6M Archive: premake-5.0.0-beta2-windows.zip inflating: [~]/CppSharp/build/premake/premake5.exe Downloading: https://github.com/mono/CppSharp/releases/download/CppSharp/llvm-6eb36a-windows-vs2019-x64-RelWithDebInfo.7z "C:\Program Files\7-Zip\7z.exe" x llvm-6eb36a-windows-vs2019-x64-RelWithDebInfo.7z -ollvm-6eb36a-windows-vs2019-x64-RelWithDebInfo -y 7-Zip 23.01 (x64) : Copyright (c) 1999-2023 Igor Pavlov : 2023-06-20 Scanning the drive for archives: 1 file, 173727674 bytes (166 MiB) Extracting archive: llvm-6eb36a-windows-vs2019-x64-RelWithDebInfo.7z -- Path = llvm-6eb36a-windows-vs2019-x64-RelWithDebInfo.7z Type = 7z Physical Size = 173727674 Headers Size = 50259 Method = LZMA2:26 Solid = + Blocks = 1 Everything is Ok Folders: 410 Files: 3815 Size: 2164174658 Compressed: 173727674 Error: [~]/CppSharp/build/LLVM.lua:23: Error finding an LLVM build [~]\CppSharp\build>
OS: Windows / OS X / Linux (include version and/or distro)
N/A
Target: MSVC/GCC/Clang
Other settings:
Sample fix (I didn't check if other uses of premake.sh need --vs as well):
[~]\CppSharp\build>git diff -w diff --git a/build/LLVM.lua b/build/LLVM.lua index 9ac89c54..85e1b12b 100644 --- a/build/LLVM.lua +++ b/build/LLVM.lua @@ -20,7 +20,7 @@ function SearchLLVM() elseif os.isdir(LLVMRootDir) then print("Using LLVM build: " .. LLVMRootDir) else - error("Error finding an LLVM build") + error("Error finding an LLVM build. Tried: " .. LLVMRootDirDebug .. " and " .. LLVMRootDirRelease) end end diff --git a/build/build.sh b/build/build.sh index 5cd81557..b9916bce 100755 --- a/build/build.sh +++ b/build/build.sh @@ -129,7 +129,7 @@ download_premake() download_llvm() { - "$builddir/premake.sh" --file="$builddir/llvm/LLVM.lua" download_llvm --os=$os --arch=$platform --configuration=$configuration + "$builddir/premake.sh" --file="$builddir/llvm/LLVM.lua" download_llvm --vs=$vs --os=$os --arch=$platform --configuration=$configuration } clone_llvm() diff --git a/build/llvm/LLVM.lua b/build/llvm/LLVM.lua index 0a08c061..61c47de8 100644 --- a/build/llvm/LLVM.lua +++ b/build/llvm/LLVM.lua @@ -52,6 +52,10 @@ function clone_llvm() end function get_vs_version() + if _OPTIONS["vs"] then + return _OPTIONS["vs"] + end + local function map_msvc_to_vs_version(major, minor) if major == "19" and minor >= "30" then return "vs2022" elseif major == "19" and minor >= "20" then return "vs2019"
Can you send a PR?
Brief Description
build/llvm/LLVM.lua detects the VS version from either cl.exe or msbuild.exe, but build/build.sh specifies (currently)
vs=vs2022
.If build.sh is run from a VS developer command prompt corresponding to a different version then
generate()
will fail the following way:OS: Windows / OS X / Linux (include version and/or distro)
Used headers
N/A
Used settings
Target: MSVC/GCC/Clang
Other settings:
Stack trace or incompilable generated code
N/A
Sample fix (I didn't check if other uses of premake.sh need --vs as well):