@@ -3,77 +3,95 @@ name: Build PhysX
33on :
44 push :
55 tags :
6- - ' v[0-9]+.[0-9]+.[0-9]+'
6+ - ' v[0-9]+.[0-9]+.[0-9]+* '
77 workflow_dispatch :
88
99jobs :
1010 build :
11- name : Build on ${{ matrix.os }} - ${{ matrix.config }}
11+ name : Build ${{ matrix.os }} - ${{ matrix.config }}
1212 runs-on : ${{ matrix.os }}
1313
1414 strategy :
15+ fail-fast : false
1516 matrix :
16- os : [windows-latest]
17+ os : [windows-latest, ubuntu-latest ]
1718 config : [debug, release, profile, checked]
18- platform : [x86_64, aarch64]
1919
2020 steps :
2121 - name : Checkout repository
2222 uses : actions/checkout@v4
2323 with :
2424 repository : NVIDIA-Omniverse/PhysX
2525 ref : 107.0-physx-5.6.0
26- - name : Install dependencies (Linux)
27- if : matrix.os == 'ubuntu-latest'
28- run : |
29- sudo apt update
30- sudo apt install -y ninja-build cmake g++ python3
31- - name : Download file from GitHub
32- run : |
33- curl -L -o vc17win64-cpu-only-md.xml https://raw.githubusercontent.com/Lumengine/PhysXBuild/main/vc17win64-cpu-only-md.xml
34- - name : Copy file into repo
26+
27+ # === WINDOWS ===
28+ - name : Download preset (Windows)
29+ if : matrix.os == 'windows-latest'
3530 run : |
36- cp vc17win64-cpu-only-md.xml ./physx/buildtools/presets/public/
31+ curl -L -o vc17win64-cpu-only-md.xml https://raw.githubusercontent.com/Lumengine/PhysXBuild/main/vc17win64-cpu-only-md.xml
32+ cp vc17win64-cpu-only-md.xml ./physx/buildtools/presets/public/
33+
3734 - name : Generate Projects (Windows)
3835 if : matrix.os == 'windows-latest'
39- run : |
40- ./generate_projects.bat vc17win64-cpu-only-md
36+ run : ./generate_projects.bat vc17win64-cpu-only-md
4137 working-directory : physx
4238
43- - name : Build- Windows
39+ - name : Build ( Windows)
4440 if : matrix.os == 'windows-latest'
45- continue-on-error : true
46- run : cmake --build ./compiler/vc17win64-cpu-only-md --config ${{matrix.config}}
41+ run : cmake --build ./compiler/vc17win64-cpu-only-md --config ${{ matrix.config }}
4742 working-directory : physx
4843
49- - name : Package build output
50- id : build
44+ - name : Package (Windows)
45+ if : matrix.os == 'windows-latest'
46+ id : package-windows
5147 shell : bash
5248 run : |
53- mkdir -p output
54- mkdir -p output/bin
55- mkdir -p output/lib
56- if [[ "${{ runner.os }}" == "Windows" ]]; then
57- binArchiveName="PhysX-5.6.0.win.${{ matrix.platform }}.vc143.md.${{ matrix.config }}.zip"
58- echo "PHYSX_BINARY_ARCHIVE=$binArchiveName" >> "$GITHUB_OUTPUT"
59- cp physx/bin/win.x86_64.vc143.md/${{matrix.config}}/*.dll output/bin/
60- cp physx/bin/win.x86_64.vc143.md/${{matrix.config}}/*.lib output/lib/
61-
62- 7z a "$binArchiveName" ./output/bin/ ./output/lib/ ./physx/include/ ./physx/documentation/
49+ mkdir -p output/bin output/lib
50+ binArchiveName="PhysX-5.6.0.win.x86_64.vc143.md.${{ matrix.config }}.zip"
51+ echo "PHYSX_BINARY_ARCHIVE=$binArchiveName" >> "$GITHUB_OUTPUT"
52+ cp physx/bin/win.x86_64.vc143.md/${{ matrix.config }}/*.dll output/bin/
53+ cp physx/bin/win.x86_64.vc143.md/${{ matrix.config }}/*.lib output/lib/
54+ 7z a "$binArchiveName" ./output/bin/ ./output/lib/ ./physx/include/ ./physx/documentation/
55+
56+ # === LINUX ===
57+ - name : Install dependencies (Linux)
58+ if : matrix.os == 'ubuntu-latest'
59+ run : |
60+ sudo apt update
61+ sudo apt install -y ninja-build cmake clang python3 libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev libgl1-mesa-dev
62+
63+ - name : Generate Projects (Linux)
64+ if : matrix.os == 'ubuntu-latest'
65+ run : |
66+ chmod +x ./generate_projects.sh
67+ ./generate_projects.sh linux-clang-cpu-only
68+ echo "=== Contents of compiler/ ==="
69+ ls -la ./compiler/ || echo "compiler/ does not exist"
70+ working-directory : physx
71+
72+ - name : Build (Linux)
73+ if : matrix.os == 'ubuntu-latest'
74+ run : cmake --build ./compiler/linux-clang-cpu-only --config ${{ matrix.config }}
75+ working-directory : physx
76+
77+ - name : Package (Linux)
78+ if : matrix.os == 'ubuntu-latest'
79+ id : package-linux
80+ run : |
81+ mkdir -p output/lib output/include output/documentation
82+ binArchiveName="PhysX-5.6.0.linux.x86_64.clang.${{ matrix.config }}.tar.gz"
83+ echo "PHYSX_BINARY_ARCHIVE=$binArchiveName" >> "$GITHUB_OUTPUT"
84+ cp physx/bin/linux.clang/${{ matrix.config }}/*.a output/lib/ 2>/dev/null || true
85+ cp -r physx/include/* output/include/
86+ cp -r physx/documentation/* output/documentation/ 2>/dev/null || true
87+ tar -czf "$binArchiveName" -C output .
6388
64- else
65- echo "PHYSX_BINARY_ARCHIVE=PhysX-5.6.0.linux.${{ matrix.platform }}.${{ matrix.config }}.tar.gz" >> "$GITHUB_OUTPUT"
66- # Linux: .so and .a
67- cp physx/bin/*.so output/bin/
68- cp physx/bin/*.a output/lib/
69- cp -r physx/include output/include
70- cp -r physx/documentation output/documentation
71- tar -czf PhysX-5.6.0.linux.${{ matrix.platform }}.${{ matrix.config }}.tar.gz output/*
72- fi
89+ # === PUBLISH ===
7390 - name : Publish
7491 uses : softprops/action-gh-release@v1
7592 with :
7693 files : |
77- ${{ steps.build.outputs.PHYSX_BINARY_ARCHIVE }}
94+ ${{ steps.package-windows.outputs.PHYSX_BINARY_ARCHIVE }}
95+ ${{ steps.package-linux.outputs.PHYSX_BINARY_ARCHIVE }}
7896 env :
7997 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments