code4game/libgltf

View on GitHub
.github/workflows/build.yml

Summary

Maintainability
Test Coverage
name: 'build'

on:
  push:
    branches: [ '*' ]
    paths-ignore:
    - '!.github/build.yml'
    - 'docs/**'
    - 'resource/**'
    - '.coveralls.yml'
    - '.readthedocs.yml'
    - '.git*'
    - '*.md'
    - 'LICENSE'

jobs:
  check:
    name: 'check by cppcheck'
    runs-on: ubuntu-latest
    steps:
    - name: 'install cppcheck'
      run: sudo apt-get install cppcheck
    - name: 'checkout'
      uses: actions/checkout@v3
    - name: 'check'
      run: cppcheck ./ --enable=warning,performance,portability --xml-version=2 --error-exitcode=1 -i external/ -i build/ -i tools/
  windows:
    name: 'for windows'
    runs-on: windows-latest
    needs: check
    steps:
    - name: 'checkout the project'
      uses: actions/checkout@v3
    - name: 'update submodules'
      run: |
        git submodule update --init external/rapidjson
        git submodule update --init external/draco
    - name: 'add msbuild'
      uses: microsoft/setup-msbuild@v1.0.2
    - name: 'build and make'
      run: |
        cmake -B build/win64 -G "Visual Studio 17 2022" -A "x64" -DLIBGLTF_WITH_GOOGLE_DRACO=TRUE .
        cmake --build build/win64/ --target libgltf --config Debug
        cmake --build build/win64/ --target libgltf --config Release
        cmake -B build/win32 -G "Visual Studio 17 2022" -A "Win32" -DLIBGLTF_WITH_GOOGLE_DRACO=TRUE .
        cmake --build build/win32/ --target libgltf --config Debug
        cmake --build build/win32/ --target libgltf --config Release
    - name: 'ready artifact'
      run: |
        cmake --install build/win64/source/ --prefix output/win64/
        xcopy /D /S /Y external\draco\src\draco\*.h output\win64\include\draco\
        xcopy /D /S /Y build\win64\draco\*.h output\win64\include\draco\
        xcopy /D /S /Y build\win64\external\draco\Release\draco.lib output\win64\lib\Release\
        xcopy /D /S /Y build\win64\external\draco\Debug\dracod.lib output\win64\lib\Debug\
        cmake --install build/win32/source/ --prefix output/win32/
        xcopy /D /S /Y external\draco\src\draco\*.h output\win32\include\draco\
        xcopy /D /S /Y build\win64\draco\*.h output\win32\include\draco\
        xcopy /D /S /Y build\win32\external\draco\Release\draco.lib output\win32\lib\Release\
        xcopy /D /S /Y build\win32\external\draco\Debug\dracod.lib output\win32\lib\Debug\
    - name: 'upload artifact'
      uses: actions/upload-artifact@v1.0.0
      with:
        name: libgltf.windows
        path: output/

  linux:
    name: 'for linux'
    runs-on: ubuntu-latest
    needs: check
    steps:
    - name: 'checkout the project'
      uses: actions/checkout@v3
    - name: 'update submodules'
      run: |
        git submodule update --init external/rapidjson
        git submodule update --init external/draco
    - name: 'build and make'
      run: |
        cmake -B build -DLIBGLTF_WITH_GOOGLE_DRACO=TRUE .
        cmake --build build --target libgltf --config Release
    - name: 'ready artifact'
      run: |
        cmake --install build/source/ --prefix output/linux/
        rsync -a --include='*.h' -f 'hide,! */' external/draco/src/draco/ output/linux/include/draco/
        rsync -a --include='*.h' -f 'hide,! */' build/draco/ output/linux/include/draco/
        cp -a build/external/draco/libdraco.a output/linux/lib/
    - name: 'upload artifact'
      uses: actions/upload-artifact@v1.0.0
      with:
        name: libgltf.linux
        path: output/

  macos:
    name: 'for macos'
    runs-on: macos-latest
    needs: check
    steps:
    - name: 'checkout the project'
      uses: actions/checkout@v3
    - name: 'update submodules'
      run: |
        git submodule update --init external/rapidjson
        git submodule update --init external/draco
    - name: 'build and make'
      run: |
        cmake -B build -DLIBGLTF_WITH_GOOGLE_DRACO=TRUE .
        cmake --build build --target libgltf --config Release
    - name: 'ready artifact'
      run: |
        cmake --install build/source/ --prefix output/macos/
        rsync -a --include='*.h' -f 'hide,! */' external/draco/src/draco/ output/macos/include/draco/
        rsync -a --include='*.h' -f 'hide,! */' build/draco/ output/macos/include/draco/
        cp build/external/draco/libdraco.a output/macos/lib/
    - name: 'upload artifact'
      uses: actions/upload-artifact@v1.0.0
      with:
        name: libgltf.macos
        path: output/

  android:
    name: 'for android api19'
    runs-on: ubuntu-latest
    needs: check
    steps:
    - name: 'install'
      run: |
        sudo apt-get install ninja-build
    - name: 'checkout the project'
      uses: actions/checkout@v3
    - name: 'update submodules'
      run: |
        git submodule update --init external/rapidjson
        git submodule update --init external/draco
    - name: 'build and make'
      run: |
        cmake -B build/armeabi-v7a -G "Ninja" -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_NDK=$ANDROID_NDK_HOME -DANDROID_NATIVE_API_LEVEL=19 -DANDROID_TOOLCHAIN=clang -DLIBGLTF_WITH_GOOGLE_DRACO=TRUE .
        cmake --build build/armeabi-v7a --target libgltf --config Release
        cmake -B build/arm64-v8a -G "Ninja" -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NDK=$ANDROID_NDK_HOME -DANDROID_NATIVE_API_LEVEL=19 -DANDROID_TOOLCHAIN=clang -DLIBGLTF_WITH_GOOGLE_DRACO=TRUE .
        cmake --build build/arm64-v8a --target libgltf --config Release
        cmake -B build/x86 -G "Ninja" -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake -DANDROID_ABI=x86 -DANDROID_NDK=$ANDROID_NDK_HOME -DANDROID_NATIVE_API_LEVEL=19 -DANDROID_TOOLCHAIN=clang -DLIBGLTF_WITH_GOOGLE_DRACO=TRUE .
        cmake --build build/x86 --target libgltf --config Release
        cmake -B build/x86_64 -G "Ninja" -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake -DANDROID_ABI=x86_64 -DANDROID_NDK=$ANDROID_NDK_HOME -DANDROID_NATIVE_API_LEVEL=19 -DANDROID_TOOLCHAIN=clang -DLIBGLTF_WITH_GOOGLE_DRACO=TRUE .
        cmake --build build/x86_64 --target libgltf --config Release
    - name: 'ready artifact'
      run: |
        cmake --install build/armeabi-v7a/source/ --prefix output/armeabi-v7a/
        rsync -a --include='*.h' -f 'hide,! */' external/draco/src/draco/ output/armeabi-v7a/include/draco/
        rsync -a --include='*.h' -f 'hide,! */' build/armeabi-v7a/draco/ output/armeabi-v7a/include/draco/
        cp -a build/armeabi-v7a/external/draco/libdraco.a output/armeabi-v7a/lib/
        cmake --install build/arm64-v8a/source/ --prefix output/arm64-v8a/
        rsync -a --include='*.h' -f 'hide,! */' external/draco/src/draco/ output/arm64-v8a/include/draco/
        rsync -a --include='*.h' -f 'hide,! */' build/arm64-v8a/draco/ output/arm64-v8a/include/draco/
        cp -a build/arm64-v8a/external/draco/libdraco.a output/arm64-v8a/lib/
        cmake --install build/x86/source/ --prefix output/x86/
        rsync -a --include='*.h' -f 'hide,! */' external/draco/src/draco/ output/x86/include/draco/
        rsync -a --include='*.h' -f 'hide,! */' build/x86/draco/ output/x86/include/draco/
        cp -a build/x86/external/draco/libdraco.a output/x86/lib/
        cmake --install build/x86_64/source/ --prefix output/x86_64/
        rsync -a --include='*.h' -f 'hide,! */' external/draco/src/draco/ output/x86_64/include/draco/
        rsync -a --include='*.h' -f 'hide,! */' build/x86_64/draco/ output/x86_64/include/draco/
        cp -a build/x86_64/external/draco/libdraco.a output/x86_64/lib/
    - name: 'upload artifact'
      uses: actions/upload-artifact@v1.0.0
      with:
        name: libgltf.android.api19
        path: output/

  ios:
    name: 'for ios'
    runs-on: macos-latest
    needs: check
    steps:
    - name: 'checkout the project'
      uses: actions/checkout@v3
    - name: 'update submodules'
      run: |
        git submodule update --init external/rapidjson
        git submodule update --init external/draco
        git submodule update --init external/ios-cmake
    - name: 'build and make'
      run: |
        cmake -B build/iphoneos -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../external/ios-cmake/toolchain/iOS.cmake -DIOS_PLATFORM=OS -DLIBGLTF_PLATFORM_IOS=TRUE -DLIBGLTF_WITH_GOOGLE_DRACO=TRUE .
        cmake --build build/iphoneos --target libgltf --config Release
        cmake -B build/watchos -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../external/ios-cmake/toolchain/iOS.cmake -DIOS_PLATFORM=WATCHOS -DLIBGLTF_PLATFORM_IOS=TRUE -DLIBGLTF_WITH_GOOGLE_DRACO=TRUE .
        cmake --build build/watchos --target libgltf --config Release
        cmake -B build/simulator -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../external/ios-cmake/toolchain/iOS.cmake -DIOS_PLATFORM=SIMULATOR -DLIBGLTF_PLATFORM_IOS=TRUE -DLIBGLTF_WITH_GOOGLE_DRACO=TRUE .
        cmake --build build/simulator --target libgltf --config Release
    - name: 'ready artifact'
      run: |
        cmake --install build/iphoneos/source/ --prefix output/iphoneos/
        rsync -a --include='*.h' -f 'hide,! */' external/draco/src/draco/ output/iphoneos/include/draco/
        rsync -a --include='*.h' -f 'hide,! */' build/iphoneos/draco/ output/iphoneos/include/draco/
        cp build/iphoneos/external/draco/libdraco.a output/iphoneos/lib/
        cmake --install build/watchos/source/ --prefix output/watchos/
        rsync -a --include='*.h' -f 'hide,! */' external/draco/src/draco/ output/watchos/include/draco/
        rsync -a --include='*.h' -f 'hide,! */' build/iphoneos/draco/ output/watchos/include/draco/
        cp build/watchos/external/draco/libdraco.a output/watchos/lib/
        cmake --install build/simulator/source/ --prefix output/simulator
        rsync -a --include='*.h' -f 'hide,! */' external/draco/src/draco/ output/simulator/include/draco/
        rsync -a --include='*.h' -f 'hide,! */' build/iphoneos/draco/ output/simulator/include/draco/
        cp build/simulator/external/draco/libdraco.a output/simulator/lib/
    - name: 'upload artifact'
      uses: actions/upload-artifact@v1.0.0
      with:
        name: libgltf.ios
        path: output/