mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-12-06 07:12:28 +01:00
Windows build shell script
This commit is contained in:
parent
42a8f7dadf
commit
c902134c55
|
|
@ -1,141 +0,0 @@
|
||||||
# .ci/build-windows-clang-cl.ps1
|
|
||||||
# Enable strict error handling
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
|
|
||||||
trap {
|
|
||||||
Write-Host "ERROR: $($_.Exception.Message)"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "Starting RPCS3 build (PowerShell script)"
|
|
||||||
|
|
||||||
# Automatically find clang_rt.builtins-x86_64.lib
|
|
||||||
Write-Host "Searching for clang_rt.builtins-x86_64.lib ..."
|
|
||||||
$clangBuiltinsLibPath = Get-ChildItem -Path "C:/Program Files/LLVM/lib/clang" -Recurse -Filter "clang_rt.builtins-x86_64.lib" -ErrorAction SilentlyContinue |
|
|
||||||
Where-Object { $_.FullName -match "windows\\clang_rt\.builtins-x86_64\.lib$" } |
|
|
||||||
Select-Object -First 1
|
|
||||||
|
|
||||||
if (-not $clangBuiltinsLibPath) {
|
|
||||||
Write-Error "Could not find clang_rt.builtins-x86_64.lib in LLVM installation."
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
function Get-ShortPath([string]$path) {
|
|
||||||
$fso = New-Object -ComObject Scripting.FileSystemObject
|
|
||||||
return $fso.GetFolder($path).ShortPath
|
|
||||||
}
|
|
||||||
|
|
||||||
$clangBuiltinsDir = Split-Path -Parent $clangBuiltinsLibPath.FullName
|
|
||||||
$clangBuiltinsDirShort = Get-ShortPath $clangBuiltinsDir
|
|
||||||
$clangBuiltinsLib = Split-Path -Leaf $clangBuiltinsLibPath.FullName
|
|
||||||
$clangPath = "C:\Program Files\LLVM\bin"
|
|
||||||
#$clangPath = Get-ChildItem -Path "D:\a\rpcs3\rpcs3\llvm-*\bin"
|
|
||||||
|
|
||||||
Write-Host "Found Clang builtins library: $clangBuiltinsLib in $clangBuiltinsDir or short $clangBuiltinsDirShort"
|
|
||||||
Write-Host "Found Clang Path: $clangPath"
|
|
||||||
|
|
||||||
# Get Windows Kits root from registry
|
|
||||||
$kitsRoot = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots" -Name "KitsRoot10"
|
|
||||||
$kitsRootPath = $kitsRoot.KitsRoot10
|
|
||||||
|
|
||||||
# Search for mt.exe in x64 SDK bin directories
|
|
||||||
Write-Host "Searching for mt.exe ..."
|
|
||||||
$mtPath = Get-ChildItem -Path "$clangPath" -Recurse -Filter "llvm-mt.exe" -ErrorAction SilentlyContinue |
|
|
||||||
Where-Object { $_.FullName -match "\\llvm-mt\.exe$" } |
|
|
||||||
Sort-Object FullName -Descending |
|
|
||||||
Select-Object -First 1
|
|
||||||
|
|
||||||
if (-not $mtPath) {
|
|
||||||
Write-Error "Could not find mt.exe in Windows Kits directories."
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
$mtExePath = "$mtPath"
|
|
||||||
|
|
||||||
Write-Host "Found mt.exe at: $mtExePath"
|
|
||||||
|
|
||||||
$VcpkgRoot="$(Get-Location)/vcpkg"
|
|
||||||
$VcpkgTriplet=$env:VCPKG_TRIPLET
|
|
||||||
$VcpkgInstall="$VcpkgRoot/installed/$VcpkgTriplet"
|
|
||||||
$VcpkgInclude="$VcpkgInstall/include"
|
|
||||||
$VcpkgLib="$VcpkgInstall/lib"
|
|
||||||
$VcpkgBin="$VcpkgInstall/bin"
|
|
||||||
|
|
||||||
# Configure git safe directory
|
|
||||||
Write-Host "Configuring git safe directory"
|
|
||||||
& git config --global --add safe.directory '*'
|
|
||||||
|
|
||||||
# Initialize submodules except certain ones
|
|
||||||
Write-Host "Initializing submodules"
|
|
||||||
$excludedSubs = @('llvm','opencv','ffmpeg','FAudio','zlib','libpng','feralinteractive')
|
|
||||||
|
|
||||||
# Get submodule paths excluding those in $excludedSubs
|
|
||||||
$submodules = Select-String -Path .gitmodules -Pattern 'path = (.+)' | ForEach-Object {
|
|
||||||
$_.Matches[0].Groups[1].Value
|
|
||||||
} | Where-Object {
|
|
||||||
$path = $_
|
|
||||||
-not ($excludedSubs | Where-Object { $path -like "*$_*" })
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "Updating submodules: $($submodules -join ', ')"
|
|
||||||
& git submodule update --init --quiet $submodules
|
|
||||||
|
|
||||||
# Create and enter build directory
|
|
||||||
Write-Host "Creating build directory"
|
|
||||||
if (!(Test-Path build)) {
|
|
||||||
New-Item -ItemType Directory -Path build | Out-Null
|
|
||||||
}
|
|
||||||
Set-Location build
|
|
||||||
Write-Host "Changed directory to: $(Get-Location)"
|
|
||||||
|
|
||||||
# Run CMake with Ninja generator and required flags
|
|
||||||
Write-Host "Running CMake configuration"
|
|
||||||
& cmake .. `
|
|
||||||
-G Ninja `
|
|
||||||
-DCMAKE_BUILD_TYPE=Release `
|
|
||||||
-DCMAKE_C_COMPILER="$clangPath/clang-cl.exe" `
|
|
||||||
-DCMAKE_CXX_COMPILER="$clangPath/clang-cl.exe" `
|
|
||||||
-DCMAKE_LINKER="$clangPath/lld-link.exe" `
|
|
||||||
-DCMAKE_INSTALL_PREFIX=/usr `
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE="$VcpkgRoot/scripts/buildsystems/vcpkg.cmake" `
|
|
||||||
-DCMAKE_EXE_LINKER_FLAGS="/LIBPATH:$clangBuiltinsDirShort /defaultlib:$clangBuiltinsLib" `
|
|
||||||
-DCMAKE_MT="$clangPath/llvm-mt.exe" `
|
|
||||||
-DUSE_NATIVE_INSTRUCTIONS=OFF `
|
|
||||||
-DUSE_PRECOMPILED_HEADERS=OFF `
|
|
||||||
-DVCPKG_TARGET_TRIPLET="$VcpkgTriplet" `
|
|
||||||
-DFFMPEG_INCLUDE_DIR="$VcpkgInclude" `
|
|
||||||
-DFFMPEG_LIBAVCODEC="$VcpkgLib/avcodec.lib" `
|
|
||||||
-DFFMPEG_LIBAVFORMAT="$VcpkgLib/avformat.lib" `
|
|
||||||
-DFFMPEG_LIBAVUTIL="$VcpkgLib/avutil.lib" `
|
|
||||||
-DFFMPEG_LIBSWSCALE="$VcpkgLib/swscale.lib" `
|
|
||||||
-DFFMPEG_LIBSWRESAMPLE="$VcpkgLib/swresample.lib" `
|
|
||||||
-DUSE_SYSTEM_CURL=OFF `
|
|
||||||
-DUSE_FAUDIO=OFF `
|
|
||||||
-DUSE_SDL=ON `
|
|
||||||
-DUSE_SYSTEM_SDL=OFF `
|
|
||||||
-DUSE_SYSTEM_FFMPEG=ON `
|
|
||||||
-DUSE_SYSTEM_OPENCV=ON `
|
|
||||||
-DUSE_SYSTEM_OPENAL=OFF `
|
|
||||||
-DUSE_SYSTEM_LIBPNG=ON `
|
|
||||||
-DUSE_DISCORD_RPC=ON `
|
|
||||||
-DUSE_SYSTEM_ZSTD=ON `
|
|
||||||
-DWITH_LLVM=ON `
|
|
||||||
-DSTATIC_LINK_LLVM=ON `
|
|
||||||
-DBUILD_RPCS3_TESTS=OFF
|
|
||||||
|
|
||||||
Write-Host "CMake configuration complete"
|
|
||||||
|
|
||||||
# Build with ninja
|
|
||||||
Write-Host "Starting build with Ninja..."
|
|
||||||
& ninja
|
|
||||||
if ($LASTEXITCODE -ne 0) {
|
|
||||||
Write-Host "Build failed with exit code $LASTEXITCODE"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "Build succeeded"
|
|
||||||
|
|
||||||
# Go back to root directory
|
|
||||||
Set-Location ..
|
|
||||||
Write-Host "Returned to root directory: $(Get-Location)"
|
|
||||||
|
|
||||||
99
.ci/build-windows-clang-cl.sh
Executable file
99
.ci/build-windows-clang-cl.sh
Executable file
|
|
@ -0,0 +1,99 @@
|
||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
echo "Starting RPCS3 build (Bash script)"
|
||||||
|
|
||||||
|
# Automatically find clang_rt.builtins-x86_64.lib
|
||||||
|
echo "Searching for clang_rt.builtins-x86_64.lib ..."
|
||||||
|
clangBuiltinsLibPath=$(find "C:\Program Files\LLVM\lib\clang" -name "clang_rt.builtins-x86_64.lib" | sed 's|Program Files|PROGRA~1|g')
|
||||||
|
|
||||||
|
if [ -z "$clangBuiltinsLibPath" ]; then
|
||||||
|
echo "ERROR: Could not find clang_rt.builtins-x86_64.lib in LLVM installation."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
clangBuiltinsDir=$(dirname "$clangBuiltinsLibPath")
|
||||||
|
clangBuiltinsLib=$(basename "$clangBuiltinsLibPath")
|
||||||
|
# shellcheck disable=SC2028
|
||||||
|
clangPath=$(echo "C:\Program Files\LLVM\bin" | sed 's|Program Files|PROGRA~1|g')
|
||||||
|
|
||||||
|
echo "Found Clang builtins library: $clangBuiltinsLib in $clangBuiltinsDir"
|
||||||
|
echo "Found Clang Path: $clangPath"
|
||||||
|
|
||||||
|
# Search for mt.exe in SDK bin directories
|
||||||
|
echo "Searching for llvm-mt.exe ..."
|
||||||
|
mtPath=$(find "$clangPath" -name "llvm-mt.exe")
|
||||||
|
|
||||||
|
if [ -z "$mtPath" ]; then
|
||||||
|
echo "ERROR: Could not find llvm-mt.exe in SDK directories."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Found llvm-mt.exe at: $mtPath"
|
||||||
|
|
||||||
|
VcpkgRoot="$(pwd)/vcpkg"
|
||||||
|
VcpkgTriplet="$VCPKG_TRIPLET"
|
||||||
|
VcpkgInstall="$VcpkgRoot/installed/$VcpkgTriplet"
|
||||||
|
VcpkgInclude="$VcpkgInstall/include"
|
||||||
|
VcpkgLib="$VcpkgInstall/lib"
|
||||||
|
|
||||||
|
# Configure git safe directory
|
||||||
|
echo "Configuring git safe directory"
|
||||||
|
git config --global --add safe.directory '*'
|
||||||
|
|
||||||
|
# Initialize submodules except certain ones
|
||||||
|
echo "Initializing submodules"
|
||||||
|
# shellcheck disable=SC2046
|
||||||
|
git submodule -q update --init $(awk '/path/ && !/llvm/ && !/opencv/ && !/FAudio/ && !/libpng/ && !/zlib/ && !/feralinteractive/ { print $3 }' .gitmodules)
|
||||||
|
|
||||||
|
# Create and enter build directory
|
||||||
|
echo "Creating build directory"
|
||||||
|
mkdir -p build
|
||||||
|
cd build || exit
|
||||||
|
echo "Changed directory to: $(pwd)"
|
||||||
|
|
||||||
|
# Run CMake with Ninja generator and required flags
|
||||||
|
echo "Running CMake configuration"
|
||||||
|
cmake .. \
|
||||||
|
-G Ninja \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER="${clangPath}/clang-cl.exe" \
|
||||||
|
-DCMAKE_CXX_COMPILER="${clangPath}/clang-cl.exe" \
|
||||||
|
-DCMAKE_LINKER="${clangPath}/lld-link.exe" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="$VcpkgRoot/scripts/buildsystems/vcpkg.cmake" \
|
||||||
|
-DCMAKE_EXE_LINKER_FLAGS="/LIBPATH:${clangBuiltinsDir} /defaultlib:${clangBuiltinsLib}" \
|
||||||
|
-DCMAKE_MT="${mtPath}" \
|
||||||
|
-DUSE_NATIVE_INSTRUCTIONS=OFF \
|
||||||
|
-DUSE_PRECOMPILED_HEADERS=OFF \
|
||||||
|
-DVCPKG_TARGET_TRIPLET="$VcpkgTriplet" \
|
||||||
|
-DFFMPEG_INCLUDE_DIR="$VcpkgInclude" \
|
||||||
|
-DFFMPEG_LIBAVCODEC="$VcpkgLib/avcodec.lib" \
|
||||||
|
-DFFMPEG_LIBAVFORMAT="$VcpkgLib/avformat.lib" \
|
||||||
|
-DFFMPEG_LIBAVUTIL="$VcpkgLib/avutil.lib" \
|
||||||
|
-DFFMPEG_LIBSWSCALE="$VcpkgLib/swscale.lib" \
|
||||||
|
-DFFMPEG_LIBSWRESAMPLE="$VcpkgLib/swresample.lib" \
|
||||||
|
-DUSE_SYSTEM_CURL=OFF \
|
||||||
|
-DUSE_FAUDIO=OFF \
|
||||||
|
-DUSE_SDL=ON \
|
||||||
|
-DUSE_SYSTEM_SDL=OFF \
|
||||||
|
-DUSE_SYSTEM_FFMPEG=ON \
|
||||||
|
-DUSE_SYSTEM_OPENCV=ON \
|
||||||
|
-DUSE_SYSTEM_OPENAL=OFF \
|
||||||
|
-DUSE_SYSTEM_LIBPNG=ON \
|
||||||
|
-DUSE_DISCORD_RPC=ON \
|
||||||
|
-DUSE_SYSTEM_ZSTD=ON \
|
||||||
|
-DWITH_LLVM=ON \
|
||||||
|
-DSTATIC_LINK_LLVM=ON \
|
||||||
|
-DBUILD_RPCS3_TESTS=OFF
|
||||||
|
|
||||||
|
echo "CMake configuration complete"
|
||||||
|
|
||||||
|
# Build with ninja
|
||||||
|
echo "Starting build with Ninja..."
|
||||||
|
ninja
|
||||||
|
|
||||||
|
echo "Build succeeded"
|
||||||
|
|
||||||
|
# Go back to root directory
|
||||||
|
cd ..
|
||||||
|
echo "Returned to root directory: $(pwd)"
|
||||||
7
.github/workflows/rpcs3.yml
vendored
7
.github/workflows/rpcs3.yml
vendored
|
|
@ -392,7 +392,6 @@ jobs:
|
||||||
id: restore-vcpkg-cache
|
id: restore-vcpkg-cache
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
vcpkg/vcpkg.exe
|
|
||||||
vcpkg/installed
|
vcpkg/installed
|
||||||
vcpkg/buildtrees
|
vcpkg/buildtrees
|
||||||
key: vcpkg-${{ runner.os }}-${{ matrix.compiler }}-${{ runner.arch }}-${{ hashFiles('**/vcpkg') }}
|
key: vcpkg-${{ runner.os }}-${{ matrix.compiler }}-${{ runner.arch }}-${{ hashFiles('**/vcpkg') }}
|
||||||
|
|
@ -422,7 +421,6 @@ jobs:
|
||||||
uses: actions/cache/save@main
|
uses: actions/cache/save@main
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
vcpkg/vcpkg.exe
|
|
||||||
vcpkg/installed
|
vcpkg/installed
|
||||||
vcpkg/buildtrees
|
vcpkg/buildtrees
|
||||||
key: ${{ steps.restore-vcpkg-cache.outputs.cache-primary-key }}
|
key: ${{ steps.restore-vcpkg-cache.outputs.cache-primary-key }}
|
||||||
|
|
@ -481,13 +479,12 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
mkdir -p "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional" || true
|
mkdir -p "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional" || true
|
||||||
cp -r "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/DIA SDK" "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/DIA SDK"
|
cp -r "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/DIA SDK" "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/DIA SDK"
|
||||||
|
"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
|
||||||
|
|
||||||
- name: Build RPCS3
|
- name: Build RPCS3
|
||||||
if: ${{ matrix.compiler == 'clang-cl' }}
|
if: ${{ matrix.compiler == 'clang-cl' }}
|
||||||
shell: cmd
|
shell: cmd
|
||||||
run: |
|
run: .ci/build-windows-clang-cl.sh
|
||||||
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
|
|
||||||
powershell -ExecutionPolicy Bypass -File .ci/build-windows-clang-cl.ps1
|
|
||||||
|
|
||||||
- name: Save build Ccache
|
- name: Save build Ccache
|
||||||
#if: github.ref == 'refs/heads/master'
|
#if: github.ref == 'refs/heads/master'
|
||||||
|
|
|
||||||
15
3rdparty/zstd/CMakeLists.txt
vendored
15
3rdparty/zstd/CMakeLists.txt
vendored
|
|
@ -1,6 +1,10 @@
|
||||||
# zstd
|
if(USE_SYSTEM_ZSTD)
|
||||||
# Select the version of zstd to use, default is builtin
|
message(STATUS "RPCS3: using shared zstd")
|
||||||
if(NOT USE_SYSTEM_ZSTD)
|
pkg_check_modules(zstd REQUIRED IMPORTED_TARGET libzstd)
|
||||||
|
add_library(3rdparty_zstd INTERFACE)
|
||||||
|
target_link_libraries(3rdparty_zstd INTERFACE PkgConfig::zstd)
|
||||||
|
target_include_directories(3rdparty_zstd INTERFACE PkgConfig::RtMidi)
|
||||||
|
else()
|
||||||
option(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" OFF)
|
option(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" OFF)
|
||||||
option(ZSTD_BUILD_SHARED "BUILD SHARED LIBRARIES" OFF)
|
option(ZSTD_BUILD_SHARED "BUILD SHARED LIBRARIES" OFF)
|
||||||
option(ZSTD_BUILD_STATIC "BUILD STATIC LIBRARIES" ON)
|
option(ZSTD_BUILD_STATIC "BUILD STATIC LIBRARIES" ON)
|
||||||
|
|
@ -8,9 +12,4 @@ if(NOT USE_SYSTEM_ZSTD)
|
||||||
add_subdirectory(zstd/build/cmake EXLUDE_FROM_ALL)
|
add_subdirectory(zstd/build/cmake EXLUDE_FROM_ALL)
|
||||||
add_library(3rdparty_zstd INTERFACE)
|
add_library(3rdparty_zstd INTERFACE)
|
||||||
target_link_libraries(3rdparty_zstd INTERFACE libzstd_static)
|
target_link_libraries(3rdparty_zstd INTERFACE libzstd_static)
|
||||||
else()
|
|
||||||
message(STATUS "RPCS3: using VCPKG zstd")
|
|
||||||
find_package(zstd CONFIG REQUIRED)
|
|
||||||
add_library(3rdparty_zstd INTERFACE)
|
|
||||||
target_link_libraries(3rdparty_zstd INTERFACE zstd::libzstd)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue