forked from Open-Cascade-SAS/OCCT
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Testing - MinGW build validation Open-Cascade-SAS#253
Add MinGW build validation workflow for Windows
- Loading branch information
Showing
1 changed file
with
215 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,215 @@ | ||
# This workflow validates the build on Windows using MinGW and MSYS2. | ||
# It is triggered on pushes to the master branch. | ||
# The workflow includes steps to install dependencies, configure, build, and clean up the project. | ||
|
||
name: MinGW build validation | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- '**' | ||
push: | ||
branches: | ||
- 'master' | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.event.pull_request.number }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
main_job: | ||
name: Windows MinGW validation | ||
runs-on: windows-2022 | ||
|
||
strategy: | ||
matrix: | ||
config: | ||
- { | ||
name: "GCC", | ||
cc: "x86_64-w64-mingw32-gcc", | ||
cxx: "x86_64-w64-mingw32-g++", | ||
package: "mingw-w64-x86_64-toolchain", | ||
thirdparty_dir: "/mingw64", | ||
dependencies: "mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-rapidjson mingw-w64-x86_64-freetype mingw-w64-x86_64-draco mingw-w64-x86_64-freeimage" | ||
} | ||
- { | ||
name: "Clang", | ||
cc: "clang", | ||
cxx: "clang++", | ||
package: "mingw-w64-clang-x86_64-toolchain", | ||
thirdparty_dir: "/clang64", | ||
dependencies: "mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-ninja mingw-w64-clang-x86_64-rapidjson mingw-w64-clang-x86_64-freetype mingw-w64-clang-x86_64-draco mingw-w64-clang-x86_64-freeimage" | ||
} | ||
- { | ||
name: "UCRT", | ||
cc: "x86_64-w64-mingw32-gcc", | ||
cxx: "x86_64-w64-mingw32-g++", | ||
package: "mingw-w64-ucrt-x86_64-toolchain", | ||
thirdparty_dir: "/ucrt64", | ||
dependencies: "mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-ninja mingw-w64-ucrt-x86_64-rapidjson mingw-w64-ucrt-x86_64-freetype mingw-w64-ucrt-x86_64-draco mingw-w64-ucrt-x86_64-freeimage" | ||
} | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/[email protected] | ||
|
||
- name: Set up MSYS2 | ||
uses: msys2/setup-msys2@v2 | ||
with: | ||
msystem: ${{ matrix.config.name == 'Clang' && 'CLANG64' || matrix.config.name == 'UCRT' && 'UCRT64' || 'MINGW64' }} | ||
update: true | ||
install: ${{ matrix.config.package }} ${{ matrix.config.dependencies }} | ||
|
||
- name: Setup environment | ||
shell: msys2 {0} | ||
run: | | ||
echo "Checking compiler version:" | ||
${{ matrix.config.cc }} --version | ||
echo "Checking CMake version:" | ||
cmake --version | ||
echo "Setting up environment variables..." | ||
echo "$MSYSTEM_PREFIX/bin" >> $GITHUB_PATH | ||
echo "CMAKE_PREFIX_PATH=$MSYSTEM_PREFIX" >> $GITHUB_ENV | ||
- name: Configure basic | ||
shell: msys2 {0} | ||
run: | | ||
mkdir -p build | ||
cd build | ||
cmake -G "Ninja" \ | ||
-D CMAKE_C_COMPILER=${{ matrix.config.cc }} \ | ||
-D CMAKE_CXX_COMPILER=${{ matrix.config.cxx }} \ | ||
-D CMAKE_PREFIX_PATH=$MSYSTEM_PREFIX \ | ||
-D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \ | ||
-D CMAKE_C_FLAGS="-Werror -Wall -Wextra" .. | ||
- name: Build basic | ||
shell: msys2 {0} | ||
run: | | ||
cd build | ||
cmake --build . -- -j 4 | ||
- name: Clear up after build | ||
run: | | ||
rm -rf build | ||
- name: Configure full shared | ||
shell: msys2 {0} | ||
run: | | ||
mkdir -p build | ||
cd build | ||
cmake -G "Ninja" \ | ||
-D CMAKE_C_COMPILER=${{ matrix.config.cc }} \ | ||
-D CMAKE_CXX_COMPILER=${{ matrix.config.cxx }} \ | ||
-D CMAKE_PREFIX_PATH=$MSYSTEM_PREFIX \ | ||
-D BUILD_USE_PCH=OFF \ | ||
-D BUILD_INCLUDE_SYMLINK=ON \ | ||
-D BUILD_OPT_PROFILE=Production \ | ||
-D BUILD_LIBRARY_TYPE=Shared \ | ||
-D USE_TK=ON \ | ||
-D CMAKE_BUILD_TYPE=Debug \ | ||
-D USE_MMGR_TYPE=JEMALLOC \ | ||
-D INSTALL_DIR=${{ github.workspace }}/install \ | ||
-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=ON \ | ||
-D USE_TBB=ON \ | ||
-D USE_RAPIDJSON=ON \ | ||
-D USE_OPENGL=ON \ | ||
-D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \ | ||
-D CMAKE_C_FLAGS="-Werror -Wall -Wextra" .. | ||
- name: Build full shared | ||
shell: msys2 {0} | ||
run: | | ||
cd build | ||
cmake --build . --target install --config Debug -- -j 4 | ||
- name: Clear up after build | ||
run: | | ||
rm -rf build | ||
rm -rf ${{ github.workspace }}/install | ||
- name: Configure full static | ||
shell: msys2 {0} | ||
run: | | ||
mkdir -p build | ||
cd build | ||
cmake -G "Ninja" \ | ||
-D CMAKE_C_COMPILER=${{ matrix.config.cc }} \ | ||
-D CMAKE_CXX_COMPILER=${{ matrix.config.cxx }} \ | ||
-D CMAKE_PREFIX_PATH=$MSYSTEM_PREFIX \ | ||
-D BUILD_USE_PCH=OFF \ | ||
-D BUILD_INCLUDE_SYMLINK=ON \ | ||
-D BUILD_OPT_PROFILE=Production \ | ||
-D BUILD_LIBRARY_TYPE=Static \ | ||
-D USE_TK=ON \ | ||
-D CMAKE_BUILD_TYPE=Debug \ | ||
-D USE_MMGR_TYPE=JEMALLOC \ | ||
-D INSTALL_DIR=${{ github.workspace }}/install \ | ||
-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=OFF \ | ||
-D USE_TBB=ON \ | ||
-D USE_RAPIDJSON=ON \ | ||
-D USE_OPENGL=ON \ | ||
-D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \ | ||
-D CMAKE_C_FLAGS="-Werror -Wall -Wextra" .. | ||
- name: Build full static | ||
shell: msys2 {0} | ||
run: | | ||
cd build | ||
cmake --build . --target install --config Debug -- -j 4 | ||
- name: Clear up after build | ||
run: | | ||
rm -rf build | ||
rm -rf ${{ github.workspace }}/install | ||
- name: Configure full with DEBUG define | ||
shell: msys2 {0} | ||
run: | | ||
mkdir -p build | ||
cd build | ||
cmake -G "Ninja" \ | ||
-D CMAKE_C_COMPILER=${{ matrix.config.cc }} \ | ||
-D CMAKE_CXX_COMPILER=${{ matrix.config.cxx }} \ | ||
-D CMAKE_PREFIX_PATH=$MSYSTEM_PREFIX \ | ||
-D BUILD_WITH_DEBUG=ON \ | ||
-D BUILD_USE_PCH=OFF \ | ||
-D BUILD_INCLUDE_SYMLINK=ON \ | ||
-D BUILD_OPT_PROFILE=Production \ | ||
-D BUILD_LIBRARY_TYPE=Shared \ | ||
-D USE_TK=ON \ | ||
-D CMAKE_BUILD_TYPE=Debug \ | ||
-D INSTALL_DIR=${{ github.workspace }}/install \ | ||
-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=ON \ | ||
-D USE_TBB=ON \ | ||
-D USE_RAPIDJSON=ON \ | ||
-D USE_OPENGL=ON .. | ||
- name: Build full with DEBUG define | ||
shell: msys2 {0} | ||
run: | | ||
cd build | ||
cmake --build . --target install --config Debug -- -j 4 | ||
- name: Clear up after build | ||
run: | | ||
rm -rf build | ||
rm -rf ${{ github.workspace }}/install |