.github/workflows/build.yml
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/