mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-05-10 09:30:48 +08:00
222 lines
8.3 KiB
YAML
222 lines
8.3 KiB
YAML
name: 'Build OCCT'
|
|
description: 'Prepare and build OCCT on a specific platform'
|
|
|
|
inputs:
|
|
platform:
|
|
description: 'Platform (windows, macos, linux)'
|
|
required: true
|
|
compiler:
|
|
description: 'Compiler (msvc, clang, gcc)'
|
|
required: true
|
|
artifact-name:
|
|
description: 'Name of the artifact to store build results'
|
|
required: true
|
|
additional-cmake-flags:
|
|
description: 'Additional CMake flags'
|
|
required: false
|
|
default: ''
|
|
use-vtk:
|
|
description: 'Enable VTK'
|
|
required: false
|
|
default: 'true'
|
|
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Download and extract 3rdparty dependencies (Windows)
|
|
if: ${{ inputs.platform == 'windows' }}
|
|
run: |
|
|
Invoke-WebRequest -Uri https://github.com/Open-Cascade-SAS/OCCT/releases/download/V7_9_0_beta1/3rdparty-vc14-64.zip -OutFile 3rdparty-vc14-64.zip
|
|
Expand-Archive -Path 3rdparty-vc14-64.zip -DestinationPath .
|
|
Remove-Item 3rdparty-vc14-64.zip
|
|
shell: pwsh
|
|
|
|
- name: Download and extract Mesa3D (Windows)
|
|
if: ${{ inputs.platform == 'windows' }}
|
|
run: |
|
|
curl -L -o mesa3d.7z https://github.com/pal1000/mesa-dist-win/releases/download/24.3.2/mesa3d-24.3.2-release-mingw.7z
|
|
7z x mesa3d.7z -omesa3d
|
|
shell: pwsh
|
|
|
|
- name: Run system-wide deployment (Windows)
|
|
if: ${{ inputs.platform == 'windows' }}
|
|
run: |
|
|
cd mesa3d
|
|
.\systemwidedeploy.cmd 1
|
|
.\systemwidedeploy.cmd 5
|
|
shell: cmd
|
|
|
|
- name: Install Ninja (Windows Clang)
|
|
if: ${{ inputs.platform == 'windows' && inputs.compiler == 'clang' }}
|
|
run: |
|
|
choco install ninja -y
|
|
ninja --version
|
|
shell: pwsh
|
|
|
|
- name: Install dependencies (macOS)
|
|
if: ${{ inputs.platform == 'macos' }}
|
|
run: |
|
|
brew update
|
|
brew install tcl-tk tbb gl2ps xerces-c \
|
|
libxmu libxi libxft libxpm \
|
|
glew freeimage draco glfw
|
|
shell: bash
|
|
|
|
- name: Install dependencies (Linux)
|
|
if: ${{ inputs.platform == 'linux' }}
|
|
run: sudo apt-get update && sudo apt-get install -y tcl-dev tk-dev cmake ${{ inputs.compiler == 'clang' && 'clang' || 'gcc g++' }} make libbtbb-dev libx11-dev libglu1-mesa-dev tcllib tcl-thread tcl libvtk9-dev libopenvr-dev libdraco-dev libfreeimage-dev libegl1-mesa-dev libgles2-mesa-dev libfreetype-dev
|
|
shell: bash
|
|
|
|
- name: Install rapidjson (macOS/Linux)
|
|
if: ${{ inputs.platform == 'macos' || inputs.platform == 'linux' }}
|
|
run: |
|
|
wget https://github.com/Tencent/rapidjson/archive/858451e5b7d1c56cf8f6d58f88cf958351837e53.zip -O rapidjson.zip
|
|
unzip rapidjson.zip
|
|
shell: bash
|
|
|
|
- name: Configure OCCT (Windows MSVC)
|
|
if: ${{ inputs.platform == 'windows' && inputs.compiler == 'msvc' }}
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -T host=x64 `
|
|
-D USE_FREETYPE=ON `
|
|
-D USE_TK=OFF `
|
|
-D BUILD_USE_PCH=ON `
|
|
-D BUILD_OPT_PROFILE=Production `
|
|
-D BUILD_INCLUDE_SYMLINK=ON `
|
|
-D CMAKE_BUILD_TYPE=Release `
|
|
-D 3RDPARTY_DIR=${{ github.workspace }}/3rdparty-vc14-64 `
|
|
-D INSTALL_DIR=${{ github.workspace }}/install `
|
|
-D USE_D3D=ON `
|
|
-D USE_DRACO=ON `
|
|
-D USE_FFMPEG=ON `
|
|
-D USE_FREEIMAGE=ON `
|
|
-D USE_GLES2=ON `
|
|
-D USE_OPENVR=ON `
|
|
-D USE_VTK=${{ inputs.use-vtk }} `
|
|
-D USE_TBB=ON `
|
|
-D USE_RAPIDJSON=ON `
|
|
-D USE_OPENGL=ON `
|
|
-D BUILD_GTEST=ON `
|
|
-D BUILD_CPP_STANDARD=C++17 `
|
|
-D INSTALL_GTEST=ON ${{ inputs.additional-cmake-flags }} ..
|
|
shell: pwsh
|
|
|
|
- name: Configure OCCT (Windows Clang)
|
|
if: ${{ inputs.platform == 'windows' && inputs.compiler == 'clang' }}
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -G "Ninja" `
|
|
-D CMAKE_C_COMPILER=clang `
|
|
-D CMAKE_CXX_COMPILER=clang++ `
|
|
-D USE_FREETYPE=ON `
|
|
-D USE_TK=OFF `
|
|
-D BUILD_USE_PCH=ON `
|
|
-D BUILD_OPT_PROFILE=Production `
|
|
-D BUILD_INCLUDE_SYMLINK=ON `
|
|
-D CMAKE_BUILD_TYPE=Release `
|
|
-D 3RDPARTY_DIR=${{ github.workspace }}/3rdparty-vc14-64 `
|
|
-D INSTALL_DIR=${{ github.workspace }}/install `
|
|
-D USE_D3D=ON `
|
|
-D USE_DRACO=ON `
|
|
-D USE_FFMPEG=ON `
|
|
-D USE_FREEIMAGE=ON `
|
|
-D USE_GLES2=ON `
|
|
-D USE_OPENVR=ON `
|
|
-D USE_VTK=${{ inputs.use-vtk }} `
|
|
-D USE_TBB=ON `
|
|
-D USE_RAPIDJSON=ON `
|
|
-D USE_OPENGL=ON `
|
|
-D BUILD_GTEST=ON `
|
|
-D BUILD_CPP_STANDARD=C++17 `
|
|
-D INSTALL_GTEST=ON `
|
|
-D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra -Wno-unknown-warning-option" `
|
|
-D CMAKE_C_FLAGS="-Werror -Wall -Wextra -Wno-unknown-warning-option" ${{ inputs.additional-cmake-flags }} ..
|
|
shell: pwsh
|
|
|
|
- name: Configure OCCT (macOS)
|
|
if: ${{ inputs.platform == 'macos' }}
|
|
run: |
|
|
mkdir -p build
|
|
cd build
|
|
cmake -G "Unix Makefiles" \
|
|
-D CMAKE_C_COMPILER=${{ inputs.compiler == 'clang' && 'clang' || 'gcc' }} \
|
|
-D CMAKE_CXX_COMPILER=${{ inputs.compiler == 'clang' && 'clang++' || 'g++' }} \
|
|
-D BUILD_USE_PCH=ON \
|
|
-D BUILD_INCLUDE_SYMLINK=ON \
|
|
-D CMAKE_BUILD_TYPE=Release \
|
|
-D INSTALL_DIR=${{ github.workspace }}/install \
|
|
-D 3RDPARTY_RAPIDJSON_DIR=${{ github.workspace }}/rapidjson-858451e5b7d1c56cf8f6d58f88cf958351837e53 \
|
|
-D USE_RAPIDJSON=ON \
|
|
-D USE_DRACO=ON \
|
|
-D USE_FREETYPE=ON \
|
|
-D USE_OPENGL=ON \
|
|
-D USE_FREEIMAGE=ON \
|
|
-D BUILD_GTEST=ON \
|
|
-D BUILD_CPP_STANDARD=C++17 \
|
|
-D INSTALL_GTEST=ON \
|
|
-D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \
|
|
-D CMAKE_C_FLAGS="-Werror -Wall -Wextra" ${{ inputs.additional-cmake-flags }} ..
|
|
shell: bash
|
|
|
|
- name: Configure OCCT (Linux)
|
|
if: ${{ inputs.platform == 'linux' }}
|
|
run: |
|
|
mkdir -p build
|
|
cd build
|
|
cmake -G "Unix Makefiles" \
|
|
-D CMAKE_C_COMPILER=${{ inputs.compiler == 'clang' && 'clang' || 'gcc' }} \
|
|
-D CMAKE_CXX_COMPILER=${{ inputs.compiler == 'clang' && 'clang++' || 'g++' }} \
|
|
-D BUILD_USE_PCH=ON \
|
|
-D BUILD_INCLUDE_SYMLINK=ON \
|
|
-D BUILD_OPT_PROFILE=Production \
|
|
-D USE_TK=OFF \
|
|
-D CMAKE_BUILD_TYPE=Release \
|
|
-D INSTALL_DIR=${{ github.workspace }}/install \
|
|
-D 3RDPARTY_RAPIDJSON_DIR=${{ github.workspace }}/rapidjson-858451e5b7d1c56cf8f6d58f88cf958351837e53 \
|
|
-D USE_FREETYPE=ON \
|
|
-D USE_DRACO=ON \
|
|
-D USE_FFMPEG=OFF \
|
|
-D USE_FREEIMAGE=ON \
|
|
-D USE_GLES2=ON \
|
|
-D USE_OPENVR=ON \
|
|
-D USE_VTK=${{ inputs.use-vtk }} \
|
|
-D USE_TBB=OFF \
|
|
-D USE_RAPIDJSON=ON \
|
|
-D USE_OPENGL=ON \
|
|
-D BUILD_GTEST=ON \
|
|
-D BUILD_CPP_STANDARD=C++17 \
|
|
-D INSTALL_GTEST=ON \
|
|
${{ inputs.compiler == 'clang' && '-D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" -D CMAKE_C_FLAGS="-Werror -Wall -Wextra"' || '' }} ${{ inputs.additional-cmake-flags }} ..
|
|
shell: bash
|
|
|
|
- name: Build OCCT (Windows)
|
|
if: ${{ inputs.platform == 'windows' }}
|
|
run: |
|
|
cd build
|
|
cmake --build . --target install --config Release
|
|
shell: pwsh
|
|
|
|
- name: Build OCCT (macOS)
|
|
if: ${{ inputs.platform == 'macos' }}
|
|
run: |
|
|
cd build
|
|
make install -j$(sysctl -n hw.logicalcpu)
|
|
shell: bash
|
|
|
|
- name: Build OCCT (Linux)
|
|
if: ${{ inputs.platform == 'linux' }}
|
|
run: |
|
|
cd build
|
|
cmake --build . --target install --config Release -- -j
|
|
shell: bash
|
|
|
|
- name: Upload install directory
|
|
uses: actions/upload-artifact@v4.4.3
|
|
with:
|
|
name: ${{ inputs.artifact-name }}
|
|
path: install
|
|
retention-days: 7
|