diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..5ab75fe --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,55 @@ +# https://github.com/openblack/bgfx.cmake/blob/master/.github/workflows/ci.yml +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + job: + name: ${{ matrix.os }} ${{ matrix.cc }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - os: windows-latest + - os: ubuntu-latest + cc: gcc + cxx: g++ + - os: ubuntu-latest + cc: clang + cxx: clang++ + - os: macos-latest + env: + # Indicates the CMake build directory where project files and binaries are being produced. + CMAKE_BUILD_DIR: ${{ github.workspace }}/build/ + + CC: ${{ matrix.cc }} + CXX: ${{ matrix.cxx }} + + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Install Linux dependencies + run: | + sudo apt install -y libgl1-mesa-dev + if: matrix.os == 'ubuntu-latest' + + # Setup the build machine with the most recent versions of CMake and Ninja. Both are cached if not already: on subsequent runs both will be quickly restored from GitHub cache service. + - uses: lukka/get-cmake@latest + + # On Windows runners, let's ensure to have the Developer Command Prompt environment setup correctly. As used here the Developer Command Prompt created is targeting x64 and using the default the Windows SDK. + - uses: ilammy/msvc-dev-cmd@v1 + + # Run CMake to generate Ninja project files + - name: Generate project files + run: | + cmake -B "${{ env.CMAKE_BUILD_DIR }}" -GNinja -DCMAKE_BUILD_TYPE=Release + # Build the whole project with Ninja (which is spawn by CMake). + - name: Build + run: | + cmake --build "${{ env.CMAKE_BUILD_DIR }}" \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..599c8b0 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,54 @@ +# https://github.com/openblack/bgfx.cmake/blob/master/.github/workflows/release.yml + +name: Release + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + job: + name: ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - os: windows-latest + - os: ubuntu-latest + + env: + # Indicates the CMake build directory where project files and binaries are being produced. + CMAKE_BUILD_DIR: ${{ github.workspace }}/build/ + CMAKE_INSTALL_DIR: ${{ github.workspace }}/install/ + + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Install Linux dependencies + run: | + sudo apt install -y libgl1-mesa-dev + if: matrix.os == 'ubuntu-latest' + + # Setup the build machine with the most recent versions of CMake and Ninja. Both are cached if not already: on subsequent runs both will be quickly restored from GitHub cache service. + - uses: lukka/get-cmake@latest + + # On Windows runners, let's ensure to have the Developer Command Prompt environment setup correctly. As used here the Developer Command Prompt created is targeting x64 and using the default the Windows SDK. + - uses: ilammy/msvc-dev-cmd@v1 + + # Run CMake to generate project files + - name: Generate project files + run: | + cmake -B "${{ env.CMAKE_BUILD_DIR }}" -DCMAKE_INSTALL_PREFIX="${{ env.CMAKE_INSTALL_DIR }}" -DCMAKE_DEBUG_POSTFIX=d -DBGFX_BUILD_EXAMPLES=OFF -DBGFX_BUILD_TOOLS=ON -DBGFX_INSTALL=ON + # Build the install targets + - name: Build + run: | + cmake --build "${{ env.CMAKE_BUILD_DIR }}" --target install --config Debug + cmake --build "${{ env.CMAKE_BUILD_DIR }}" --target install --config Release + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.os }} + path: ${{ github.workspace }}/install/ \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 22306ad..0000000 --- a/.travis.yml +++ /dev/null @@ -1,164 +0,0 @@ -language: cpp - -addons: - apt_packages: - - libgl1-mesa-dev - homebrew: - packages: - - cmake - update: true - -matrix: - include: - - - name: "Linux gcc" - os: linux - dist: xenial - compiler: gcc - env: - - AMALGAMATED=OFF - - - name: "Linux gcc Amalgamated" - os: linux - dist: xenial - compiler: gcc - env: - - AMALGAMATED=ON - - - name: "Linux clang" - os: linux - dist: xenial - compiler: clang - env: - - AMALGAMATED=OFF - - - name: "Linux clang Amalgamated" - os: linux - dist: xenial - compiler: clang - env: - - AMALGAMATED=ON - - - name: "macOS Xcode 10" - os: osx - osx_image: xcode10 - env: - - CMAKE_FLAGS="-GXcode" - - AMALGAMATED=OFF - - - name: "macOS Xcode 10 Amalgamated" - os: osx - osx_image: xcode10 - env: - - CMAKE_FLAGS="-GXcode" - - AMALGAMATED=ON - - - name: "macOS Xcode 10 (Makefiles)" - os: osx - osx_image: xcode10 - env: - - AMALGAMATED=OFF - - - name: "macOS Xcode 10 Amalgamated (Makefiles)" - os: osx - osx_image: xcode10 - env: - - AMALGAMATED=ON - - #- name: "iOS Xcode 10" - # os: osx - # osx_image: xcode10 - # env: - # - CMAKE_FLAGS="-GXcode -DCMAKE_SYSTEM_NAME=iOS -DBGFX_BUILD_TOOLS=OFF -DCMAKE_OSX_SYSROOT=iphonesimulator" - # - AMALGAMATED=OFF - - #- name: "iOS Xcode 10 Amalgamated" - # os: osx - # osx_image: xcode10 - # env: - # - CMAKE_FLAGS="-GXcode -DCMAKE_SYSTEM_NAME=iOS -DBGFX_BUILD_TOOLS=OFF -DCMAKE_OSX_SYSROOT=iphonesimulator" - # - AMALGAMATED=ON - - - name: "Visual studio 15 2017" - os: windows - env: - - AMALGAMATED=OFF - - - - name: "Visual studio 15 2017 Amalgamated" - os: windows - env: - - AMALGAMATED=ON - - - name: "Emscripten" - os: linux - dist: xenial - language: node_js - services: - - docker - before_script: - - docker run -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash - script: - - docker exec -it emscripten emconfigure cmake . -DBGFX_BUILD_TOOLS=OFF -DBGFX_AMALGAMATED=$AMALGAMATED -DBX_AMALGAMATED=$AMALGAMATED - - docker exec -it emscripten emmake make - env: - - AMALGAMATED=OFF - - - name: "Emscripten Amalgamated" - os: linux - dist: xenial - language: node_js - services: - - docker - before_script: - - docker run -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash - script: - - docker exec -it emscripten emconfigure cmake . -DBGFX_BUILD_TOOLS=OFF -DBGFX_AMALGAMATED=$AMALGAMATED -DBX_AMALGAMATED=$AMALGAMATED - - docker exec -it emscripten emmake make - env: - - AMALGAMATED=OFF - - - name: "Android armeabi-v7a" - language: android - android: &androidComponents - components: - - tools - - platform-tools - - build-tools-26.0.1 - env: - - CMAKE_FLAGS="-DCMAKE_SYSTEM_NAME=Android -DBGFX_BUILD_TOOLS=OFF -DBGFX_BUILD_EXAMPLES=OFF -DCMAKE_ANDROID_NDK=$TRAVIS_BUILD_DIR/android-ndk-r18b -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26" - - AMALGAMATED=OFF - install: &androidInstall - - echo y | sdkmanager "cmake;3.10.2.4988404" - - sudo ln -sf /usr/local/android-sdk/cmake/3.10.2.4988404/bin/cmake /usr/bin/cmake - - wget https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip - - unzip -qq android-ndk-r18b-linux-x86_64.zip - - - name: "Android armeabi-v7a Amalgamated" - language: android - android: *androidComponents - env: - - CMAKE_FLAGS="-DCMAKE_SYSTEM_NAME=Android -DBGFX_BUILD_TOOLS=OFF -DBGFX_BUILD_EXAMPLES=OFF -DCMAKE_ANDROID_NDK=$TRAVIS_BUILD_DIR/android-ndk-r18b -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26" - - AMALGAMATED=ON - install: *androidInstall - - - name: "Android x86" - language: android - android: *androidComponents - env: - - CMAKE_FLAGS="-DCMAKE_SYSTEM_NAME=Android -DBGFX_BUILD_TOOLS=OFF -DBGFX_BUILD_EXAMPLES=OFF -DCMAKE_ANDROID_NDK=$TRAVIS_BUILD_DIR/android-ndk-r18b -DCMAKE_ANDROID_ARCH_ABI=x86 -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26" - - AMALGAMATED=OFF - install: *androidInstall - - - name: "Android x86 Amalgamated" - language: android - android: *androidComponents - env: - - CMAKE_FLAGS="-DCMAKE_SYSTEM_NAME=Android -DBGFX_BUILD_TOOLS=OFF -DBGFX_BUILD_EXAMPLES=OFF -DCMAKE_ANDROID_NDK=$TRAVIS_BUILD_DIR/android-ndk-r18b -DCMAKE_ANDROID_ARCH_ABI=x86 -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26" - - AMALGAMATED=ON - install: *androidInstall - -script: - - mkdir build && cd build - - cmake $CMAKE_FLAGS -DBGFX_INSTALL_EXAMPLES=ON -DBGFX_AMALGAMATED=$AMALGAMATED -DBX_AMALGAMATED=$AMALGAMATED .. - - cmake --build . diff --git a/README.md b/README.md index df7ce7f..d306bb7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ bgfx.cmake =================== -[![Build Status](https://travis-ci.org/bkaradzic/bgfx.cmake.svg?branch=master)](https://travis-ci.org/bkaradzic/bgfx.cmake) +[![Build Status](https://github.com/bkaradzic/bgfx.cmake/workflows/Release/badge.svg)](https://github.com/bkaradzic/bgfx.cmake/workflows/Release/badge.svg) This repo contains a bunch of cmake files that can be used to build bgfx with CMake. diff --git a/bgfx b/bgfx index 5b05c6c..9310d19 160000 --- a/bgfx +++ b/bgfx @@ -1 +1 @@ -Subproject commit 5b05c6c09e3884143491f289f456d6e98579c7ae +Subproject commit 9310d19141b685d9a225ecb3a66ab1e736a439b2 diff --git a/bimg b/bimg index bfe3c68..a39082d 160000 --- a/bimg +++ b/bimg @@ -1 +1 @@ -Subproject commit bfe3c683f9c628fb3fd5d71b1a80d8fbdb6044a4 +Subproject commit a39082ddbcb087fbe0578eecd3f59dd42e8fc23a diff --git a/bx b/bx index 892062b..51f25ba 160000 --- a/bx +++ b/bx @@ -1 +1 @@ -Subproject commit 892062b10b16f905915258c0ad0d3c5d89dc6444 +Subproject commit 51f25ba638b9cb35eb2ac078f842a4bed0746d56 diff --git a/cmake/3rdparty/glslang.cmake b/cmake/3rdparty/glslang.cmake index f58c52b..df249c0 100644 --- a/cmake/3rdparty/glslang.cmake +++ b/cmake/3rdparty/glslang.cmake @@ -15,7 +15,7 @@ endif() file( GLOB GLSLANG_SOURCES ${BGFX_DIR}/3rdparty/glslang/glslang/GenericCodeGen/*.cpp ${BGFX_DIR}/3rdparty/glslang/glslang/MachineIndependent/*.cpp - ${BGFX_DIR}/3rdparty/glslang/glslang/MachineIndependent/preprocessor/*.cpp + ${BGFX_DIR}/3rdparty/glslang/glslang/MachineIndependent/preprocessor/*.cpp ${BGFX_DIR}/3rdparty/glslang/glslang/HLSL/*.cpp ${BGFX_DIR}/3rdparty/glslang/hlsl/*.cpp ${BGFX_DIR}/3rdparty/glslang/SPIRV/*.cpp @@ -35,6 +35,9 @@ target_include_directories( glslang PUBLIC ${BGFX_DIR}/3rdparty/glslang ${BGFX_DIR}/3rdparty/glslang/glslang/Include ${BGFX_DIR}/3rdparty/glslang/glslang/Public + + PRIVATE + ${BGFX_DIR}/3rdparty ) set_target_properties( glslang PROPERTIES FOLDER "bgfx/3rdparty" ) @@ -92,4 +95,4 @@ endif() target_compile_definitions( glslang PRIVATE ENABLE_OPT=1 ENABLE_HLSL=1 -) +) \ No newline at end of file diff --git a/cmake/examples.cmake b/cmake/examples.cmake index 9076932..dbe7d6f 100755 --- a/cmake/examples.cmake +++ b/cmake/examples.cmake @@ -268,7 +268,12 @@ if( BGFX_BUILD_EXAMPLES ) # 37-gpudrivenrendering 38-bloom 39-assao -# 40-svt + 40-svt +# 41-tess + 42-bunnylod + 43-denoise + 44-sss + 45-bokeh ) foreach( EXAMPLE ${BGFX_EXAMPLES} ) diff --git a/cmake/shared.cmake b/cmake/shared.cmake index ded8a53..9597597 100644 --- a/cmake/shared.cmake +++ b/cmake/shared.cmake @@ -14,11 +14,12 @@ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/generated/vertexlayout.cpp.in target_sources( bgfx-vertexlayout INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/generated/vertexlayout.cpp ) target_include_directories( bgfx-vertexlayout INTERFACE ${BGFX_DIR}/include ) -add_library( bgfx-shader-spirv INTERFACE ) -configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/generated/shader_spirv.cpp.in - ${CMAKE_CURRENT_BINARY_DIR}/generated/shader_spirv.cpp ) -target_sources( bgfx-shader-spirv INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/generated/shader_spirv.cpp ) -target_include_directories( bgfx-shader-spirv INTERFACE ${BGFX_DIR}/include ) +add_library( bgfx-shader INTERFACE ) + +configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/generated/shader.cpp.in + ${CMAKE_CURRENT_BINARY_DIR}/generated/shader.cpp ) +target_sources( bgfx-shader INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/generated/shader.cpp ) +target_include_directories( bgfx-shader INTERFACE ${BGFX_DIR}/include ) add_library( bgfx-bounds INTERFACE ) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/generated/bounds.cpp.in diff --git a/cmake/tools/shaderc.cmake b/cmake/tools/shaderc.cmake index 92f23d0..f3014e1 100644 --- a/cmake/tools/shaderc.cmake +++ b/cmake/tools/shaderc.cmake @@ -20,7 +20,7 @@ include( cmake/3rdparty/webgpu.cmake ) add_executable( shaderc ${BGFX_DIR}/tools/shaderc/shaderc.cpp ${BGFX_DIR}/tools/shaderc/shaderc.h ${BGFX_DIR}/tools/shaderc/shaderc_glsl.cpp ${BGFX_DIR}/tools/shaderc/shaderc_hlsl.cpp ${BGFX_DIR}/tools/shaderc/shaderc_pssl.cpp ${BGFX_DIR}/tools/shaderc/shaderc_spirv.cpp ${BGFX_DIR}/tools/shaderc/shaderc_metal.cpp ) target_compile_definitions( shaderc PRIVATE "-D_CRT_SECURE_NO_WARNINGS" ) set_target_properties( shaderc PROPERTIES FOLDER "bgfx/tools" ) -target_link_libraries(shaderc PRIVATE bx bimg bgfx-vertexlayout bgfx-shader-spirv fcpp glsl-optimizer glslang spirv-cross spirv-tools webgpu) +target_link_libraries(shaderc PRIVATE bx bimg bgfx-vertexlayout bgfx-shader fcpp glsl-optimizer glslang spirv-cross spirv-tools webgpu) if( BGFX_CUSTOM_TARGETS ) add_dependencies( tools shaderc ) diff --git a/generated/shader.cpp.in b/generated/shader.cpp.in new file mode 100644 index 0000000..9260c65 --- /dev/null +++ b/generated/shader.cpp.in @@ -0,0 +1,4 @@ +#include "@BGFX_DIR@/src/shader.cpp" +#include "@BGFX_DIR@/src/shader_dx9bc.cpp" +#include "@BGFX_DIR@/src/shader_dxbc.cpp" +#include "@BGFX_DIR@/src/shader_spirv.cpp" \ No newline at end of file diff --git a/generated/shader_spirv.cpp.in b/generated/shader_spirv.cpp.in deleted file mode 100644 index 89feeb0..0000000 --- a/generated/shader_spirv.cpp.in +++ /dev/null @@ -1 +0,0 @@ -#include "@BGFX_DIR@/src/shader_spirv.cpp"