diff --git a/.github/workflows/fmutool-package.yml b/.github/workflows/fmutool-package.yml index da2ed37..6803285 100644 --- a/.github/workflows/fmutool-package.yml +++ b/.github/workflows/fmutool-package.yml @@ -9,62 +9,140 @@ on: branches: [ "main" ] jobs: - compile: - runs-on: ${{ matrix.os }} - - strategy: - # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. - fail-fast: false - - # Set up a matrix to run the following 3 configurations: - # 1. - # 2. - # 3. - # - # To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list. - matrix: - os: [ubuntu-latest, windows-latest] - build_type: [Release] - c_compiler: [gcc, cl] - include: - - os: windows-latest - c_compiler: cl - cpp_compiler: cl - - os: ubuntu-latest - c_compiler: gcc - cpp_compiler: g++ - exclude: - - os: windows-latest - c_compiler: gcc - - os: ubuntu-latest - c_compiler: cl + compile-windows32: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + + - name: Set reusable strings + # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. + id: strings + shell: bash + run: | + echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=cl + -DCMAKE_C_COMPILER=cl + -DCMAKE_BUILD_TYPE=Release + -A Win32 + -S ${{ github.workspace }}/remoting + - name: Build + # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Release + - name: Archive Artifacts + uses: actions/upload-artifact@v3 + with: + name: binaries + path: | + ${{ github.workspace }}/remoting/win32/client_sm.dll + ${{ github.workspace }}/remoting/win32/server_sm.exe + compile-windows64: + runs-on: windows-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - name: Set reusable strings - # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. - id: strings - shell: bash - run: | - echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" - - - name: Configure CMake - # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. - # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: > - cmake -B ${{ steps.strings.outputs.build-output-dir }} - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} - -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - -S ${{ github.workspace }}/remoting - - - name: Build - # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). - run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} + - name: Set reusable strings + # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. + id: strings + shell: bash + run: | + echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=cl + -DCMAKE_C_COMPILER=cl + -DCMAKE_BUILD_TYPE=Release + -A x64 + -S ${{ github.workspace }}/remoting + + - name: Build + # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Release + - name: Archive Artifacts + uses: actions/upload-artifact@v3 + with: + name: binaries + path: | + ${{ github.workspace }}/remoting/win64/client_sm.dll + ${{ github.workspace }}/remoting/win64/server_sm.exe + compile-linux32: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set reusable strings + # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. + id: strings + shell: bash + run: | + echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=cl + -DCMAKE_C_COMPILER=cl + -DCMAKE_BUILD_TYPE=Release + -DBUILD_32=ON + -S ${{ github.workspace }}/remoting + + - name: Build + # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Release + - name: Archive Artifacts + uses: actions/upload-artifact@v3 + with: + name: binaries + path: | + ${{ github.workspace }}/remoting/linux32/client_sm.so + ${{ github.workspace }}/remoting/linux32/server_sm + compile-linux64: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set reusable strings + # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. + id: strings + shell: bash + run: | + echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=cl + -DCMAKE_C_COMPILER=cl + -DCMAKE_BUILD_TYPE=Release + -S ${{ github.workspace }}/remoting + + - name: Build + # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Release + - name: Archive Artifacts + uses: actions/upload-artifact@v3 + with: + name: binaries + path: | + ${{ github.workspace }}/remoting/linux64/client_sm.so + ${{ github.workspace }}/remoting/linux64/server_sm package: - needs: compile + needs: [compile-windows32, compile-windows64, compile-linux32, compile-linux64] runs-on: ubuntu-latest