Compare commits

...

35 Commits

Author SHA1 Message Date
dependabot[bot]
fba0379121 build(deps): bump bgfx from bea82a1 to 6f36b4f
Bumps [bgfx](https://github.com/bkaradzic/bgfx) from `bea82a1` to `6f36b4f`.
- [Release notes](https://github.com/bkaradzic/bgfx/releases)
- [Commits](bea82a1343...6f36b4fb3a)

---
updated-dependencies:
- dependency-name: bgfx
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-09 19:58:33 -05:00
Jamil Halabi
a6cfe968a5 Updated to the latest bgfx 2023-01-22 09:31:31 -05:00
Sandy Carter
0479a929a7 example: Fix for android 2023-01-22 08:38:49 -05:00
Sandy Carter
e5fea62b02 tests: Enable tools tests on android 2023-01-22 08:38:49 -05:00
Sandy Carter
0a11910c2a actions: Add android cross compile test 2023-01-22 08:38:49 -05:00
Sandy Carter
1c31493614 Set -fPIC always 2023-01-21 22:43:28 -05:00
Sandy Carter
fb50e78e49 examples: Only copy assets once 2023-01-21 18:16:45 -05:00
Sandy Carter
cf8b57e65c Fix -fPIC for static 2023-01-21 18:16:45 -05:00
Sandy Carter
38d11732c7 ci: test building examples 2023-01-21 18:16:45 -05:00
Sandy Carter
b6c4027d20 examples: Bump gssl version to 140 for vs and fs 2023-01-21 18:16:45 -05:00
npnp
086fccf3a8 Removed D3D_PREFIX and changed profile values to match the current version of shaderc 2023-01-21 18:16:45 -05:00
Sandy Carter
034462fd2a Add option to prefix tool names to avoid conflicts
For example the shaderc is used by dawn and an installation might want to
prefix bgfx's shaderc with bgfx-shaderc
2023-01-21 16:05:46 -05:00
Sandy Carter
7da3b0ed77 tools: Use dependent options 2023-01-15 22:08:41 -05:00
Sandy Carter
b89e3acb3b bgfx: move shared 2023-01-15 22:08:41 -05:00
Sandy Carter
ba2948e099 bgfx: Move shaderc to bgfx with 3rdparties 2023-01-15 22:08:41 -05:00
Sandy Carter
10501b78f4 bgfx: Move example to bgfx and split off imgui 2023-01-15 22:08:41 -05:00
Sandy Carter
8d130b923d bgfx: Move geometryc and add cmake macro 2023-01-15 22:08:41 -05:00
Sandy Carter
eb5a7d5f07 bgfx: Move geometryv config to bgfx dir 2023-01-15 22:08:41 -05:00
Sandy Carter
1e2f0ce9aa bgfx: Move texturev config to bgfx dir 2023-01-15 22:08:41 -05:00
Sandy Carter
052734d07a bgfx: Move bgfx config to its own directory 2023-01-15 22:08:41 -05:00
Sandy Carter
95a0a20a01 bimg: Add texturec and cmake macro 2023-01-14 22:10:06 -05:00
Sandy Carter
c1640a666b Move edtaa to file 2023-01-14 22:10:06 -05:00
Sandy Carter
850c227403 Move etc1 to file 2023-01-14 22:10:06 -05:00
Sandy Carter
2f2b00cc05 Move etc2 to file 2023-01-14 22:10:06 -05:00
Sandy Carter
6f741542d9 Move nvtt to file 2023-01-14 22:10:06 -05:00
Sandy Carter
e2c9bd0254 Move pvrtc to file 2023-01-14 22:10:06 -05:00
Sandy Carter
edb0b19c6f Move iqa sources to file 2023-01-14 22:10:06 -05:00
Sandy Carter
32508a2289 Add loadpng sources to file 2023-01-14 22:10:06 -05:00
Sandy Carter
4f4e484333 Move astc-encode to file 2023-01-14 22:10:06 -05:00
Sandy Carter
067672c661 Move tinyexr definitions to file 2023-01-14 22:10:06 -05:00
Sandy Carter
4a1f7581a6 Move libsquish definitions to file 2023-01-14 22:10:06 -05:00
Sandy Carter
03b690a4ab Move miniz definitions to file 2023-01-14 22:10:06 -05:00
Sandy Carter
1c7ef2d48f Add option to add user script
Useful for packagers like pacman and vcpkg to add custom cmake logic
instead of patching code.
2023-01-14 22:10:06 -05:00
Sandy Carter
03951e805c bimg: Restructure bimg*.cmake to be more like bimg*.lua 2023-01-14 22:10:06 -05:00
Sandy Carter
422e7cf0f8 bimg: Move bimg config to its own directory 2023-01-14 22:10:06 -05:00
60 changed files with 1785 additions and 714 deletions

View File

@@ -35,6 +35,24 @@ with section("parse"):
'DISASM',
'WERROR'],
'nargs': '1+'}},
'_bgfx_texturec_parse': { 'kwargs': { 'AS': 1,
'FILE': 1,
'FORMAT': 1,
'MAX': 1,
'MIPSKIP': 1,
'OUTPUT': 1,
'QUALITY': 1,
'RADIANCE': 1,
'REF': 1},
'pargs': { 'flags': [ 'MIPS',
'NORMALMAP',
'EQUIRECT',
'STRIP',
'SDF',
'IQA',
'PMA',
'LINEAR'],
'nargs': '*'}},
'bgfx_compile_binary_to_header': { 'kwargs': { 'ARRAY_NAME': 1,
'INPUT_FILE': 1,
'OUTPUT_FILE': 1},
@@ -43,7 +61,25 @@ with section("parse"):
'SHADERS': '+',
'TYPE': 1,
'VARYING_DEF': 1},
'pargs': {'flags': [], 'nargs': '*'}}}
'pargs': {'flags': [], 'nargs': '*'}},
'bgfx_compile_texture': { 'kwargs': { 'AS': 1,
'FILE': 1,
'FORMAT': 1,
'MAX': 1,
'MIPSKIP': 1,
'OUTPUT': 1,
'QUALITY': 1,
'RADIANCE': 1,
'REF': 1},
'pargs': { 'flags': [ 'MIPS',
'NORMALMAP',
'EQUIRECT',
'STRIP',
'SDF',
'IQA',
'PMA',
'LINEAR'],
'nargs': '*'}}}
# Override configurations per-command where available
override_spec = {}

View File

@@ -8,7 +8,7 @@ on:
branches: [ master ]
jobs:
job:
native:
name: ${{ matrix.os }} ${{ matrix.cc }}
runs-on: ${{ matrix.os }}
strategy:
@@ -34,7 +34,7 @@ jobs:
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
submodules: recursive
- name: Install Linux dependencies
run: |
sudo apt-get update
@@ -55,4 +55,50 @@ jobs:
# Build the whole project with Ninja (which is spawn by CMake).
- name: Build
run: |
cmake --build "${{ env.CMAKE_BUILD_DIR }}"
cmake --build "${{ env.CMAKE_BUILD_DIR }}"
# Build the examples which are excluded from all
- name: Build examples
run: |
cmake --build "${{ env.CMAKE_BUILD_DIR }}" --target examples
cross-android:
name: cross-android
runs-on: ubuntu-latest
strategy:
fail-fast: false
env:
# Indicates the CMake build directory where project files and binaries are being produced.
CMAKE_BUILD_DIR: ${{ github.workspace }}/build/
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Install Linux dependencies
run: |
sudo apt-get update
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 -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake
# Build the whole project with Ninja (which is spawn by CMake).
- name: Build
run: |
cmake --build "${{ env.CMAKE_BUILD_DIR }}"
# Build the examples which are excluded from all
- name: Build examples
run: |
cmake --build "${{ env.CMAKE_BUILD_DIR }}" --target examples

View File

@@ -8,7 +8,7 @@
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
cmake_minimum_required(VERSION 3.1)
cmake_minimum_required(VERSION 3.6)
project(bgfx)
cmake_policy(SET CMP0054 NEW)
@@ -26,18 +26,23 @@ if(MSVC AND (MSVC_VERSION GREATER_EQUAL 1914))
add_compile_options("/Zc:__cplusplus")
endif()
include(CMakeDependentOption)
option(BX_AMALGAMATED "Amalgamated bx build for faster compilation" OFF)
option(BX_CONFIG_DEBUG "Log debug messages (default: on in debug)" OFF)
option(BGFX_AMALGAMATED "Amalgamated bgfx build for faster compilation" OFF)
option(BGFX_BUILD_TOOLS "Build bgfx tools." ON)
option(BGFX_BUILD_TOOLS_BIN2C "Build bx binary to c converter." ON)
option(BGFX_BUILD_TOOLS_SHADER "Build bgfx shader tools." ON)
option(BGFX_BUILD_TOOLS_GEOMETRY "Build bgfx geometry tools." ON)
option(BGFX_BUILD_TOOLS_TEXTURE "Build bgfx texture tools." ON)
cmake_dependent_option(BGFX_BUILD_TOOLS_BIN2C "Build bx binary to c converter." ON BGFX_BUILD_TOOLS OFF)
cmake_dependent_option(BGFX_BUILD_TOOLS_SHADER "Build bgfx shader tools." ON BGFX_BUILD_TOOLS OFF)
cmake_dependent_option(BGFX_BUILD_TOOLS_GEOMETRY "Build bgfx geometry tools." ON BGFX_BUILD_TOOLS OFF)
cmake_dependent_option(BGFX_BUILD_TOOLS_TEXTURE "Build bgfx texture tools." ON BGFX_BUILD_TOOLS OFF)
set(BGFX_TOOLS_PREFIX "" CACHE STRING "Prefix name to add to name of tools (to avoid clashes)")
option(BGFX_BUILD_EXAMPLES "Build bgfx examples." ON)
option(BGFX_BUILD_TESTS "Build bgfx tests." OFF)
option(BGFX_INSTALL "Create installation target." ON)
option(BGFX_INSTALL_EXAMPLES "Install examples and their runtimes." OFF)
cmake_dependent_option(
BGFX_INSTALL_EXAMPLES "Install examples and their runtimes." OFF "BGFX_INSTALL;BGFX_BUILD_EXAMPLES" OFF
)
option(BGFX_CUSTOM_TARGETS "Include convenience custom targets." ON)
option(BGFX_CONFIG_MULTITHREADED "Build bgfx with multithreaded configuration" ON)
option(BGFX_CONFIG_RENDERER_WEBGPU "Enable the webgpu renderer" OFF)
@@ -46,6 +51,7 @@ option(BGFX_CONFIG_DEBUG_ANNOTATION "Enable gfx debug annotations (default: on i
set(BGFX_OPENGL_VERSION "" CACHE STRING "Specify minimum opengl version")
set(BGFX_OPENGLES_VERSION "" CACHE STRING "Specify minimum OpenGL ES version")
set(BGFX_LIBRARY_TYPE "STATIC" CACHE STRING "Linking type for library")
set_property(CACHE BGFX_LIBRARY_TYPE PROPERTY STRINGS "STATIC" "SHARED")
set(BGFX_CONFIG_DEFAULT_MAX_ENCODERS "" CACHE STRING "Specify default maximum encoder count (multithreaded only)")
set(BGFX_CONFIG_MAX_DRAW_CALLS "" CACHE STRING "Specify maximum draw calls")
@@ -60,13 +66,14 @@ set(BGFX_CONFIG_MAX_TEXTURES "" CACHE STRING "Specify maximum texture count")
set(BGFX_CONFIG_MAX_TEXTURE_SAMPLERS "" CACHE STRING "Specify maximum texture samplers")
set(BGFX_CONFIG_MAX_SHADERS "" CACHE STRING "Specify shader count")
set(BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM "" CACHE STRING "Specify maximum program count as 2^(program bits)")
set(BGFX_CMAKE_USER_SCRIPT "" CACHE STRING "Path to custom cmake script to include")
set_property(CACHE BGFX_LIBRARY_TYPE PROPERTY STRINGS STATIC SHARED)
if(BGFX_LIBRARY_TYPE MATCHES "SHARED")
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if(BGFX_CMAKE_USER_SCRIPT)
include(${BGFX_CMAKE_USER_SCRIPT})
endif()
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if(BGFX_BUILD_TESTS)
enable_testing()
endif()
@@ -89,19 +96,14 @@ endif()
# sets project version from api ver / git rev
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.cmake)
if(BGFX_BUILD_TOOLS AND BGFX_CUSTOM_TARGETS)
add_custom_target(tools)
set_target_properties(tools PROPERTIES FOLDER "bgfx/tools")
endif()
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/shared.cmake)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bx)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bimg.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bgfx.cmake)
if(BGFX_BUILD_TOOLS)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/tools.cmake)
endif()
if(BGFX_BUILD_TOOLS OR BGFX_BUILD_EXAMPLES)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/examples.cmake)
endif()
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bimg)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bgfx)
if(BGFX_INSTALL)
include(GNUInstallDirs)
@@ -136,6 +138,15 @@ if(BGFX_INSTALL)
# Use variables:
# * TARGETS_EXPORT_NAME
# * PROJECT_NAME
# * BGFX_CMAKE_USER_SCRIPT_PRESENT
# * BGFX_CMAKE_USER_SCRIPT_INSTALL_NAME
if(BGFX_CMAKE_USER_SCRIPT STREQUAL "")
set(BGFX_CMAKE_USER_SCRIPT_PRESENT OFF)
set(BGFX_CMAKE_USER_SCRIPT_INSTALL_NAME "NOT-USED")
else()
set(BGFX_CMAKE_USER_SCRIPT_PRESENT ON)
get_filename_component(BGFX_CMAKE_USER_SCRIPT_INSTALL_NAME ${BGFX_CMAKE_USER_SCRIPT} NAME)
endif()
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in" "${project_config}"
INSTALL_DESTINATION "${config_install_dir}"
@@ -154,17 +165,7 @@ if(BGFX_INSTALL)
)
if(NOT BGFX_LIBRARY_TYPE MATCHES "SHARED")
install(
TARGETS bimg
bx
astc-encoder
edtaa3
etc1
etc2
iqa
squish
nvtt
pvrtc
tinyexr
TARGETS bimg bx
EXPORT "${TARGETS_EXPORT_NAME}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
@@ -198,22 +199,23 @@ if(BGFX_INSTALL)
)
# install tools
if(BGFX_CMAKE_USER_SCRIPT)
install(FILES ${BGFX_CMAKE_USER_SCRIPT} DESTINATION "${config_install_dir}")
endif()
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/bgfxToolUtils.cmake DESTINATION "${config_install_dir}")
if(BGFX_BUILD_TOOLS)
if(BGFX_BUILD_TOOLS_BIN2C)
install(TARGETS bin2c EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
endif()
if(BGFX_BUILD_TOOLS_SHADER)
install(TARGETS shaderc EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
endif()
if(BGFX_BUILD_TOOLS_GEOMETRY)
install(TARGETS geometryc EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(TARGETS geometryv EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
endif()
if(BGFX_BUILD_TOOLS_TEXTURE)
install(TARGETS texturec EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(TARGETS texturev EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
endif()
if(BGFX_BUILD_TOOLS_BIN2C)
install(TARGETS bin2c EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
endif()
if(BGFX_BUILD_TOOLS_SHADER)
install(TARGETS shaderc EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
endif()
if(BGFX_BUILD_TOOLS_GEOMETRY)
install(TARGETS geometryc EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(TARGETS geometryv EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
endif()
if(BGFX_BUILD_TOOLS_TEXTURE)
install(TARGETS texturec EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(TARGETS texturev EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}")
endif()
# install examples

View File

@@ -60,6 +60,30 @@ target_include_directories(myLib ${CMAKE_BINARY_DIR}/include/generated/images)
#include <image.png.h>
```
### `bgfx_compile_texture`
Add a build rule for a texture to the generated build system be compiled using texturec.
```cmake
bgfx_compile_texture(
FILE filename
OUTPUT filename
[FORMAT format]
[QUALITY default|fastest|highest]
[MIPS]
[MIPSKIP N]
[NORMALMAP]
[EQUIRECT]
[STRIP]
[SDF]
[REF alpha]
[IQA]
[PMA]
[LINEAR]
[MAX max size]
[RADIANCE model]
[AS extension]
)
```
### `bgfx_compile_shader_to_header`
Add a build rule for a `*.sc` shader to the generated build system using shaderc.
```cmake

2
bgfx

Submodule bgfx updated: 5f435ea56b...6f36b4fb3a

2
bimg

Submodule bimg updated: 1af90543ca...7afa241925

2
bx

Submodule bx updated: aed1086c48...fa1411e4aa

View File

@@ -1,24 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET astc-encoder)
return()
endif()
file(GLOB ASTC_ENCODER_SOURCES ${BIMG_DIR}/3rdparty/astc-encoder/source/*.cpp
${BIMG_DIR}/3rdparty/astc-encoder/include/*.h
)
add_library(astc-encoder STATIC ${ASTC_ENCODER_SOURCES})
target_include_directories(
astc-encoder PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty> $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty/astc-encoder>
$<BUILD_INTERFACE:${BIMG_DIR}/3rdparty/astc-encoder/include>
)
set_target_properties(astc-encoder PROPERTIES FOLDER "bgfx/3rdparty")

View File

@@ -1,23 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET dear-imgui)
return()
endif()
file(GLOB dear_IMGUI_SOURCES ${BGFX_DIR}/3rdparty/dear-imgui/*.cpp ${BGFX_DIR}/3rdparty/dear-imgui/*.h
${BGFX_DIR}/3rdparty/dear-imgui/*.inl
)
add_library(dear-imgui STATIC EXCLUDE_FROM_ALL ${dear_IMGUI_SOURCES})
target_compile_definitions(dear-imgui PRIVATE "-D_CRT_SECURE_NO_WARNINGS" "-D__STDC_FORMAT_MACROS")
target_include_directories(dear-imgui PUBLIC ${BGFX_DIR}/3rdparty)
target_link_libraries(dear-imgui PUBLIC bx)
set_target_properties(dear-imgui PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")

View File

@@ -1,26 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET fcpp)
return()
endif()
file(GLOB FCPP_SOURCES ${BGFX_DIR}/3rdparty/fcpp/*.c ${BGFX_DIR}/3rdparty/fcpp/*.h)
add_library(fcpp STATIC ${FCPP_SOURCES})
target_include_directories(fcpp PUBLIC ${BGFX_DIR}/3rdparty/fcpp)
target_compile_definitions(fcpp PRIVATE NINCLUDE=64 NWORK=65536 NBUFF=65536 OLD_PREPROCESSOR=0)
if(MSVC)
set_target_properties(fcpp PROPERTIES COMPILE_FLAGS "/W0")
endif()
set_target_properties(fcpp PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")
set_source_files_properties(${BGFX_DIR}/3rdparty/fcpp/usecpp.c PROPERTIES HEADER_FILE_ONLY ON)

View File

@@ -1,80 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET glsl-optimizer)
return()
endif()
set(GLSL-OPTIMIZER_INCLUDES
${BGFX_DIR}/3rdparty/glsl-optimizer/include ${BGFX_DIR}/3rdparty/glsl-optimizer/src/mesa
${BGFX_DIR}/3rdparty/glsl-optimizer/src/mapi ${BGFX_DIR}/3rdparty/glsl-optimizer/src/glsl
${BGFX_DIR}/3rdparty/glsl-optimizer/src
)
# glsl-optimizer makes UBSan segfault for whatever reason
# We already know that it's full of UB anyway... so just don't build it with UBSan
string(REPLACE "-fsanitize=undefined" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
string(REPLACE "-fsanitize=undefined" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
# glcpp
file(GLOB GLCPP_SOURCES ${BGFX_DIR}/3rdparty/glsl-optimizer/src/glsl/glcpp/*.c
${BGFX_DIR}/3rdparty/glsl-optimizer/src/util/*.c
)
# Library must be static because hash_table_ctor referenced in function glcpp_parser_create
add_library(glcpp STATIC ${GLCPP_SOURCES})
target_include_directories(glcpp PUBLIC ${GLSL-OPTIMIZER_INCLUDES})
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
target_compile_options(glcpp PRIVATE "-fno-strict-aliasing")
endif()
if(MSVC)
set_target_properties(glcpp PROPERTIES COMPILE_FLAGS "/W0")
endif()
set_target_properties(glcpp PROPERTIES FOLDER "bgfx/3rdparty")
# mesa
file(GLOB MESA_SOURCES ${BGFX_DIR}/3rdparty/glsl-optimizer/src/mesa/program/*.c
${BGFX_DIR}/3rdparty/glsl-optimizer/src/mesa/main/*.c
)
# Library must be static because mesa/program/prog_hash_table.c uses _mesa_error_no_memory which is in glsl/standalone_scaffolding.cpp of glsl-optimizer
add_library(mesa STATIC ${MESA_SOURCES})
target_include_directories(mesa PUBLIC ${GLSL-OPTIMIZER_INCLUDES})
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
target_compile_options(mesa PRIVATE "-fno-strict-aliasing")
endif()
if(MSVC)
set_target_properties(mesa PROPERTIES COMPILE_FLAGS "/W0")
endif()
set_target_properties(mesa PROPERTIES FOLDER "bgfx/3rdparty")
# glsl-optimizer
file(GLOB GLSL-OPTIMIZER_SOURCES ${BGFX_DIR}/3rdparty/glsl-optimizer/src/glsl/*.cpp
${BGFX_DIR}/3rdparty/glsl-optimizer/src/glsl/*.c
)
file(GLOB GLSL-OPTIMIZER_SOURCES_REMOVE ${BGFX_DIR}/3rdparty/glsl-optimizer/src/glsl/main.cpp
${BGFX_DIR}/3rdparty/glsl-optimizer/src/glsl/builtin_stubs.cpp
)
list(REMOVE_ITEM GLSL-OPTIMIZER_SOURCES ${GLSL-OPTIMIZER_SOURCES_REMOVE})
add_library(glsl-optimizer STATIC ${GLSL-OPTIMIZER_SOURCES})
target_link_libraries(glsl-optimizer glcpp mesa)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
target_compile_options(
glsl-optimizer PRIVATE -fno-strict-aliasing -Wno-implicit-fallthrough -Wno-parentheses -Wno-sign-compare
-Wno-unused-function -Wno-unused-parameter
)
endif()
if(MSVC)
set_target_properties(glsl-optimizer PROPERTIES COMPILE_FLAGS "/W0")
target_compile_definitions(
glsl-optimizer PRIVATE __STDC__ __STDC_VERSION__=199901L strdup=_strdup alloca=_alloca isascii=__isascii
)
elseif(APPLE)
target_compile_options(glsl-optimizer PRIVATE -Wno-deprecated-register)
endif()
set_target_properties(glsl-optimizer PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")

View File

@@ -1,91 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET glslang)
return()
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/HLSL/*.cpp
${BGFX_DIR}/3rdparty/glslang/hlsl/*.cpp
${BGFX_DIR}/3rdparty/glslang/SPIRV/*.cpp
${BGFX_DIR}/3rdparty/glslang/OGLCompilersDLL/*.cpp
)
if(WIN32)
list(APPEND GLSLANG_SOURCES ${BGFX_DIR}/3rdparty/glslang/glslang/OSDependent/Windows/ossource.cpp)
else()
list(APPEND GLSLANG_SOURCES ${BGFX_DIR}/3rdparty/glslang/glslang/OSDependent/Unix/ossource.cpp)
endif()
add_library(glslang STATIC EXCLUDE_FROM_ALL ${GLSLANG_SOURCES})
target_include_directories(
glslang
PUBLIC ${BGFX_DIR}/3rdparty/spirv-tools/include ${BGFX_DIR}/3rdparty/spirv-tools/source ${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" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")
if(MSVC)
target_compile_options(
glslang
PRIVATE "/wd4005"
"/wd4065"
"/wd4100"
"/wd4127"
"/wd4189"
"/wd4244"
"/wd4310"
"/wd4389"
"/wd4456"
"/wd4457"
"/wd4458"
"/wd4702"
"/wd4715"
"/wd4838"
)
else()
target_compile_options(
glslang
PRIVATE "-Wno-ignored-qualifiers"
"-Wno-implicit-fallthrough"
"-Wno-missing-field-initializers"
"-Wno-reorder"
"-Wno-return-type"
"-Wno-shadow"
"-Wno-sign-compare"
"-Wno-switch"
"-Wno-undef"
"-Wno-unknown-pragmas"
"-Wno-unused-function"
"-Wno-unused-parameter"
"-Wno-unused-variable"
"-fno-strict-aliasing"
)
endif()
if(APPLE)
target_compile_options(
glslang PRIVATE "-Wno-c++11-extensions" "-Wno-unused-const-variable" "-Wno-deprecated-register"
)
endif()
if(UNIX AND NOT APPLE)
target_compile_options(glslang PRIVATE "-Wno-unused-but-set-variable")
endif()
target_compile_definitions(glslang PRIVATE ENABLE_OPT=1 ENABLE_HLSL=1)

View File

@@ -1,21 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET squish)
return()
endif()
file(GLOB SQUISH_SOURCES ${BIMG_DIR}/3rdparty/libsquish/*.cpp ${BIMG_DIR}/3rdparty/libsquish/*.h
${BIMG_DIR}/3rdparty/libsquish/*.inl
)
add_library(squish STATIC ${SQUISH_SOURCES})
target_include_directories(squish PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty>)
set_target_properties(squish PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")

View File

@@ -1,19 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET meshoptimizer)
return()
endif()
file(GLOB MESHOPTIMIZER_SOURCES ${BGFX_DIR}/3rdparty/meshoptimizer/src/*.cpp ${BGFX_DIR}/3rdparty/meshoptimizer/src/*.h)
add_library(meshoptimizer STATIC ${MESHOPTIMIZER_SOURCES})
target_include_directories(meshoptimizer PUBLIC ${BGFX_DIR}/3rdparty)
set_target_properties(meshoptimizer PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")

View File

@@ -1,35 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET nvtt)
return()
endif()
file(
GLOB
NVTT_SOURCES
${BIMG_DIR}/3rdparty/nvtt/bc6h/*.cpp
${BIMG_DIR}/3rdparty/nvtt/bc6h/*.h
${BIMG_DIR}/3rdparty/nvtt/bc7/*.cpp
${BIMG_DIR}/3rdparty/nvtt/bc7/*.h
${BIMG_DIR}/3rdparty/nvtt/nvcore/*.h
${BIMG_DIR}/3rdparty/nvtt/nvcore/*.inl
${BIMG_DIR}/3rdparty/nvtt/nvmath/*.cpp
${BIMG_DIR}/3rdparty/nvtt/nvmath/*.h
${BIMG_DIR}/3rdparty/nvtt/*.cpp
${BIMG_DIR}/3rdparty/nvtt/*.h
)
add_library(nvtt STATIC ${NVTT_SOURCES})
target_include_directories(
nvtt PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty> $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty/nvtt>
)
target_link_libraries(nvtt PUBLIC bx)
set_target_properties(nvtt PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")

View File

@@ -1,25 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET spirv-cross)
return()
endif()
file(GLOB SPIRV_CROSS_SOURCES ${BGFX_DIR}/3rdparty/spirv-cross/*.cpp ${BGFX_DIR}/3rdparty/spirv-cross/*.h)
add_library(spirv-cross STATIC ${SPIRV_CROSS_SOURCES})
target_compile_definitions(spirv-cross PRIVATE SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS)
target_include_directories(spirv-cross PUBLIC ${BGFX_DIR}/3rdparty/spirv-cross ${BGFX_DIR}/3rdparty/spirv-cross/include)
if(MSVC)
target_compile_options(spirv-cross PRIVATE "/wd4018" "/wd4245" "/wd4706" "/wd4715")
endif()
set_target_properties(spirv-cross PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")

View File

@@ -1,48 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET spirv-tools)
return()
endif()
file(
GLOB
SPIRV_TOOLS_SOURCES
${BGFX_DIR}/3rdparty/spirv-tools/source/*.cpp
${BGFX_DIR}/3rdparty/spirv-tools/source/*.h
${BGFX_DIR}/3rdparty/spirv-tools/source/opt/*.cpp
${BGFX_DIR}/3rdparty/spirv-tools/source/opt/*.h
${BGFX_DIR}/3rdparty/spirv-tools/source/reduce/*.cpp
${BGFX_DIR}/3rdparty/spirv-tools/source/reduce/*.h
${BGFX_DIR}/3rdparty/spirv-tools/source/util/*.cpp
${BGFX_DIR}/3rdparty/spirv-tools/source/util/*.h
${BGFX_DIR}/3rdparty/spirv-tools/source/val/*.cpp
${BGFX_DIR}/3rdparty/spirv-tools/source/val/*.h
)
add_library(spirv-tools STATIC ${SPIRV_TOOLS_SOURCES})
target_include_directories(
spirv-tools
PUBLIC ${BGFX_DIR}/3rdparty/spirv-headers/include ${BGFX_DIR}/3rdparty/spirv-tools
${BGFX_DIR}/3rdparty/spirv-tools/include ${BGFX_DIR}/3rdparty/spirv-tools/include/generated
${BGFX_DIR}/3rdparty/spirv-tools/source
)
if(MSVC)
target_compile_options(spirv-tools PRIVATE "/wd4127" "/wd4389" "/wd4702" "/wd4706")
else()
target_compile_options(spirv-tools PRIVATE "-Wno-switch")
if(MINGW OR ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
target_compile_options(spirv-tools PRIVATE "-Wno-misleading-indentation")
endif()
endif()
set_target_properties(spirv-tools PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")

View File

@@ -1,11 +0,0 @@
if(TARGET tinyexr)
return()
endif()
file(GLOB_RECURSE TINYEXR_SOURCES ${BIMG_DIR}/3rdparty/tinyexr/*.c ${BIMG_DIR}/3rdparty/tinyexr/*.h)
add_library(tinyexr STATIC ${TINYEXR_SOURCES})
target_include_directories(
tinyexr PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty> $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty/tinyexr/deps/miniz>
)
set_target_properties(tinyexr PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")

View File

@@ -1,5 +1,8 @@
@PACKAGE_INIT@
if(@BGFX_CMAKE_USER_SCRIPT_PRESENT@)
include("${CMAKE_CURRENT_LIST_DIR}/@BGFX_CMAKE_USER_SCRIPT_INSTALL_NAME@")
endif()
include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
get_target_property(BGFX_INCLUDE_PATH bgfx::bgfx INTERFACE_INCLUDE_DIRECTORIES)
list(GET BGFX_INCLUDE_PATH 0 BGFX_INCLUDE_PATH_1) # bgfx::bgfx exports include directory twice?
@@ -23,8 +26,8 @@ if(@CMAKE_CROSSCOMPILING@)
endmacro()
_bgfx_crosscompile_use_host_tool(bin2c)
_bgfx_crosscompile_use_host_tool(shaderc)
_bgfx_crosscompile_use_host_tool(texturec)
_bgfx_crosscompile_use_host_tool(shaderc)
_bgfx_crosscompile_use_host_tool(texturev)
_bgfx_crosscompile_use_host_tool(geometryv)
endif()

26
cmake/bgfx/3rdparty/dear-imgui.cmake vendored Normal file
View File

@@ -0,0 +1,26 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BGFX_DIR})
message(SEND_ERROR "Could not load bgfx, directory does not exist. ${BGFX_DIR}")
return()
endif()
if(NOT DEAR_IMGUI_LIBRARIES)
file(
GLOB #
DEAR_IMGUI_SOURCES #
${BGFX_DIR}/3rdparty/dear-imgui/*.cpp #
${BGFX_DIR}/3rdparty/dear-imgui/*.h #
${BGFX_DIR}/3rdparty/dear-imgui/*.inl #
)
set(DEAR_IMGUI_INCLUDE_DIR ${BGFX_DIR}/3rdparty)
endif()

66
cmake/bgfx/3rdparty/fcpp.cmake vendored Normal file
View File

@@ -0,0 +1,66 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BGFX_DIR})
message(SEND_ERROR "Could not load bgfx, directory does not exist. ${BGFX_DIR}")
return()
endif()
set(FCPP_DIR ${BGFX_DIR}/3rdparty/fcpp)
add_library(fcpp STATIC)
target_compile_definitions(
fcpp
PRIVATE "NINCLUDE=64" #
"NWORK=65536" #
"NBUFF=65536" #
"OLD_PREPROCESSOR=0" #
# "MSG_PREFIX=\"Preprocessor: \"" #
)
# Put in a "bgfx" folder in Visual Studio
set_target_properties(fcpp PROPERTIES FOLDER "bgfx")
target_include_directories(fcpp PUBLIC ${FCPP_DIR})
file(
GLOB
FCPP_SOURCES
${FCPP_DIR}/*.h
${FCPP_DIR}/cpp1.c
${FCPP_DIR}/cpp2.c
${FCPP_DIR}/cpp3.c
${FCPP_DIR}/cpp4.c
${FCPP_DIR}/cpp5.c
${FCPP_DIR}/cpp6.c
${FCPP_DIR}/cpp6.c
)
target_sources(fcpp PRIVATE ${FCPP_SOURCES})
if(MSVC)
target_compile_options(
fcpp
PRIVATE
"/wd4055" # warning C4055: 'type cast': from data pointer 'void *' to function pointer 'void (__cdecl *)(char *,void *)'
"/wd4244" # warning C4244: '=': conversion from 'const flex_int32_t' to 'YY_CHAR', possible loss of data
"/wd4701" # warning C4701: potentially uninitialized local variable 'lower' used
"/wd4706" # warning C4706: assignment within conditional expression
)
else()
target_compile_options(
fcpp
PRIVATE -Wno-implicit-fallthrough #
-Wno-incompatible-pointer-types #
-Wno-parentheses-equality #
)
endif()

248
cmake/bgfx/3rdparty/glsl-optimizer.cmake vendored Normal file
View File

@@ -0,0 +1,248 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BGFX_DIR})
message(SEND_ERROR "Could not load bgfx, directory does not exist. ${BGFX_DIR}")
return()
endif()
set(GLSL_OPTIMIZER ${BGFX_DIR}/3rdparty/glsl-optimizer)
add_library(glsl-optimizer STATIC)
# Put in a "bgfx" folder in Visual Studio
set_target_properties(glsl-optimizer PROPERTIES FOLDER "bgfx")
target_include_directories(
glsl-optimizer
PUBLIC ${GLSL_OPTIMIZER}/include #
${GLSL_OPTIMIZER}/src/glsl #
PRIVATE ${GLSL_OPTIMIZER}/src #
${GLSL_OPTIMIZER}/src/mesa #
${GLSL_OPTIMIZER}/src/mapi #
)
file(
GLOB
GLSL_OPTIMIZER_SOURCES
${GLSL_OPTIMIZER}/src/glsl/glcpp/glcpp.h
${GLSL_OPTIMIZER}/src/glsl/glcpp/glcpp-lex.c
${GLSL_OPTIMIZER}/src/glsl/glcpp/glcpp-parse.c
${GLSL_OPTIMIZER}/src/glsl/glcpp/glcpp-parse.h
${GLSL_OPTIMIZER}/src/glsl/glcpp/pp.c
${GLSL_OPTIMIZER}/src/glsl/ast.h
${GLSL_OPTIMIZER}/src/glsl/ast_array_index.cpp
${GLSL_OPTIMIZER}/src/glsl/ast_expr.cpp
${GLSL_OPTIMIZER}/src/glsl/ast_function.cpp
${GLSL_OPTIMIZER}/src/glsl/ast_to_hir.cpp
${GLSL_OPTIMIZER}/src/glsl/ast_type.cpp
${GLSL_OPTIMIZER}/src/glsl/builtin_functions.cpp
${GLSL_OPTIMIZER}/src/glsl/builtin_type_macros.h
${GLSL_OPTIMIZER}/src/glsl/builtin_types.cpp
${GLSL_OPTIMIZER}/src/glsl/builtin_variables.cpp
${GLSL_OPTIMIZER}/src/glsl/glsl_lexer.cpp
${GLSL_OPTIMIZER}/src/glsl/glsl_optimizer.cpp
${GLSL_OPTIMIZER}/src/glsl/glsl_optimizer.h
${GLSL_OPTIMIZER}/src/glsl/glsl_parser.cpp
${GLSL_OPTIMIZER}/src/glsl/glsl_parser.h
${GLSL_OPTIMIZER}/src/glsl/glsl_parser_extras.cpp
${GLSL_OPTIMIZER}/src/glsl/glsl_parser_extras.h
${GLSL_OPTIMIZER}/src/glsl/glsl_symbol_table.cpp
${GLSL_OPTIMIZER}/src/glsl/glsl_symbol_table.h
${GLSL_OPTIMIZER}/src/glsl/glsl_types.cpp
${GLSL_OPTIMIZER}/src/glsl/glsl_types.h
${GLSL_OPTIMIZER}/src/glsl/hir_field_selection.cpp
${GLSL_OPTIMIZER}/src/glsl/ir.cpp
${GLSL_OPTIMIZER}/src/glsl/ir.h
${GLSL_OPTIMIZER}/src/glsl/ir_basic_block.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_basic_block.h
${GLSL_OPTIMIZER}/src/glsl/ir_builder.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_builder.h
${GLSL_OPTIMIZER}/src/glsl/ir_clone.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_constant_expression.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_equals.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_expression_flattening.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_expression_flattening.h
${GLSL_OPTIMIZER}/src/glsl/ir_function.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_function_can_inline.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_function_detect_recursion.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_function_inlining.h
${GLSL_OPTIMIZER}/src/glsl/ir_hierarchical_visitor.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_hierarchical_visitor.h
${GLSL_OPTIMIZER}/src/glsl/ir_hv_accept.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_import_prototypes.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_optimization.h
${GLSL_OPTIMIZER}/src/glsl/ir_print_glsl_visitor.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_print_glsl_visitor.h
${GLSL_OPTIMIZER}/src/glsl/ir_print_metal_visitor.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_print_metal_visitor.h
${GLSL_OPTIMIZER}/src/glsl/ir_print_visitor.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_print_visitor.h
${GLSL_OPTIMIZER}/src/glsl/ir_rvalue_visitor.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_rvalue_visitor.h
${GLSL_OPTIMIZER}/src/glsl/ir_stats.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_stats.h
${GLSL_OPTIMIZER}/src/glsl/ir_uniform.h
${GLSL_OPTIMIZER}/src/glsl/ir_unused_structs.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_unused_structs.h
${GLSL_OPTIMIZER}/src/glsl/ir_validate.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_variable_refcount.cpp
${GLSL_OPTIMIZER}/src/glsl/ir_variable_refcount.h
${GLSL_OPTIMIZER}/src/glsl/ir_visitor.h
${GLSL_OPTIMIZER}/src/glsl/link_atomics.cpp
${GLSL_OPTIMIZER}/src/glsl/link_functions.cpp
${GLSL_OPTIMIZER}/src/glsl/link_interface_blocks.cpp
${GLSL_OPTIMIZER}/src/glsl/link_uniform_block_active_visitor.cpp
${GLSL_OPTIMIZER}/src/glsl/link_uniform_block_active_visitor.h
${GLSL_OPTIMIZER}/src/glsl/link_uniform_blocks.cpp
${GLSL_OPTIMIZER}/src/glsl/link_uniform_initializers.cpp
${GLSL_OPTIMIZER}/src/glsl/link_uniforms.cpp
${GLSL_OPTIMIZER}/src/glsl/link_varyings.cpp
${GLSL_OPTIMIZER}/src/glsl/link_varyings.h
${GLSL_OPTIMIZER}/src/glsl/linker.cpp
${GLSL_OPTIMIZER}/src/glsl/linker.h
${GLSL_OPTIMIZER}/src/glsl/list.h
${GLSL_OPTIMIZER}/src/glsl/loop_analysis.cpp
${GLSL_OPTIMIZER}/src/glsl/loop_analysis.h
${GLSL_OPTIMIZER}/src/glsl/loop_controls.cpp
${GLSL_OPTIMIZER}/src/glsl/loop_unroll.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_clip_distance.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_discard.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_discard_flow.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_if_to_cond_assign.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_instructions.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_jumps.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_mat_op_to_vec.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_named_interface_blocks.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_noise.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_offset_array.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_output_reads.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_packed_varyings.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_packing_builtins.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_ubo_reference.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_variable_index_to_cond_assign.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_vec_index_to_cond_assign.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_vec_index_to_swizzle.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_vector.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_vector_insert.cpp
${GLSL_OPTIMIZER}/src/glsl/lower_vertex_id.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_algebraic.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_array_splitting.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_constant_folding.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_constant_propagation.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_constant_variable.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_copy_propagation.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_copy_propagation_elements.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_cse.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_dead_builtin_variables.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_dead_builtin_varyings.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_dead_code.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_dead_code_local.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_dead_functions.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_flatten_nested_if_blocks.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_flip_matrices.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_function_inlining.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_if_simplification.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_minmax.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_noop_swizzle.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_rebalance_tree.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_redundant_jumps.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_structure_splitting.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_swizzle_swizzle.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_tree_grafting.cpp
${GLSL_OPTIMIZER}/src/glsl/opt_vectorize.cpp
${GLSL_OPTIMIZER}/src/glsl/program.h
${GLSL_OPTIMIZER}/src/glsl/s_expression.cpp
${GLSL_OPTIMIZER}/src/glsl/s_expression.h
${GLSL_OPTIMIZER}/src/glsl/standalone_scaffolding.cpp
${GLSL_OPTIMIZER}/src/glsl/standalone_scaffolding.h
${GLSL_OPTIMIZER}/src/glsl/strtod.c
${GLSL_OPTIMIZER}/src/glsl/strtod.h
${GLSL_OPTIMIZER}/src/mesa/main/compiler.h
${GLSL_OPTIMIZER}/src/mesa/main/config.h
${GLSL_OPTIMIZER}/src/mesa/main/context.h
${GLSL_OPTIMIZER}/src/mesa/main/core.h
${GLSL_OPTIMIZER}/src/mesa/main/dd.h
${GLSL_OPTIMIZER}/src/mesa/main/errors.h
${GLSL_OPTIMIZER}/src/mesa/main/glheader.h
${GLSL_OPTIMIZER}/src/mesa/main/glminimal.h
${GLSL_OPTIMIZER}/src/mesa/main/imports.c
${GLSL_OPTIMIZER}/src/mesa/main/imports.h
${GLSL_OPTIMIZER}/src/mesa/main/macros.h
${GLSL_OPTIMIZER}/src/mesa/main/mtypes.h
${GLSL_OPTIMIZER}/src/mesa/main/simple_list.h
${GLSL_OPTIMIZER}/src/mesa/program/hash_table.h
${GLSL_OPTIMIZER}/src/mesa/program/prog_hash_table.c
${GLSL_OPTIMIZER}/src/mesa/program/prog_instruction.h
${GLSL_OPTIMIZER}/src/mesa/program/prog_parameter.h
${GLSL_OPTIMIZER}/src/mesa/program/prog_statevars.h
${GLSL_OPTIMIZER}/src/mesa/program/symbol_table.c
${GLSL_OPTIMIZER}/src/mesa/program/symbol_table.h
${GLSL_OPTIMIZER}/src/util/hash_table.c
${GLSL_OPTIMIZER}/src/util/hash_table.h
${GLSL_OPTIMIZER}/src/util/macros.h
${GLSL_OPTIMIZER}/src/util/ralloc.c
${GLSL_OPTIMIZER}/src/util/ralloc.h
)
target_sources(glsl-optimizer PRIVATE ${GLSL_OPTIMIZER_SOURCES})
if(MSVC)
target_compile_definitions(
glsl-optimizer
PRIVATE "__STDC__" #
"__STDC_VERSION__=199901L" #
"strdup=_strdup" #
"alloca=_alloca" #
"isascii=__isascii" #
)
target_compile_options(
glsl-optimizer
PRIVATE
"/wd4100" # error C4100: '' : unreferenced formal parameter
"/wd4127" # warning C4127: conditional expression is constant
"/wd4132" # warning C4132: 'deleted_key_value': const object should be initialized
"/wd4189" # warning C4189: 'interface_type': local variable is initialized but not referenced
"/wd4204" # warning C4204: nonstandard extension used: non-constant aggregate initializer
"/wd4244" # warning C4244: '=': conversion from 'const flex_int32_t' to 'YY_CHAR', possible loss of data
"/wd4389" # warning C4389: '!=': signed/unsigned mismatch
"/wd4245" # warning C4245: 'return': conversion from 'int' to 'unsigned int', signed/unsigned mismatch
"/wd4701" # warning C4701: potentially uninitialized local variable 'lower' used
"/wd4702" # warning C4702: unreachable code
"/wd4706" # warning C4706: assignment within conditional expression
"/wd4996" # warning C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strdup.
)
else()
target_compile_options(
glsl-optimizer
PRIVATE "-fno-strict-aliasing" # glsl-optimizer has bugs if strict aliasing is used.
#
"-Wno-implicit-fallthrough" #
"-Wno-parentheses" #
"-Wno-sign-compare" #
"-Wno-unused-function" #
"-Wno-unused-parameter" #
)
endif()
if(XCODE)
target_compile_options(
glsl-optimizer PRIVATE #
"-Wno-deprecated-register" #
)
endif()
if(MINGW)
target_compile_options(
glsl-optimizer PRIVATE #
"-Wno-misleading-indentation" #
)
endif()

65
cmake/bgfx/3rdparty/glslang.cmake vendored Normal file
View File

@@ -0,0 +1,65 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BGFX_DIR})
message(SEND_ERROR "Could not load bgfx, directory does not exist. ${BGFX_DIR}")
return()
endif()
set(GLSLANG ${BGFX_DIR}/3rdparty/glslang)
set(SPIRV_TOOLS ${BGFX_DIR}/3rdparty/spirv-tools)
add_library(glslang STATIC)
target_compile_definitions(
glslang
PRIVATE #
ENABLE_OPT=1 # spriv-tools
ENABLE_HLSL=1 #
)
# Put in a "bgfx" folder in Visual Studio
set_target_properties(glslang PROPERTIES FOLDER "bgfx")
target_include_directories(
glslang
PUBLIC ${GLSLANG} #
${GLSLANG}/glslang/Public #
PRIVATE ${GLSLANG}/.. #
${SPIRV_TOOLS}/include #
${SPIRV_TOOLS}/source #
)
file(
GLOB_RECURSE
GLSLANG_SOURCES
${GLSLANG}/glslang/*.cpp
${GLSLANG}/glslang/*.h
#
${GLSLANG}/hlsl/*.cpp
${GLSLANG}/hlsl/*.h
#
${GLSLANG}/SPIRV/*.cpp
${GLSLANG}/SPIRV/*.h
#
${GLSLANG}/OGLCompilersDLL/*.cpp
${GLSLANG}/OGLCompilersDLL/*.h
)
if(WIN32)
list(FILTER GLSLANG_SOURCES EXCLUDE REGEX "glslang/OSDependent/Unix/.*.cpp")
list(FILTER GLSLANG_SOURCES EXCLUDE REGEX "glslang/OSDependent/Unix/.*.h")
else()
list(FILTER GLSLANG_SOURCES EXCLUDE REGEX "glslang/OSDependent/Windows/.*.cpp")
list(FILTER GLSLANG_SOURCES EXCLUDE REGEX "glslang/OSDependent/Windows/.*.h")
endif()
target_sources(glslang PRIVATE ${GLSLANG_SOURCES})

View File

@@ -1,20 +1,25 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET etc2)
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BGFX_DIR})
message(SEND_ERROR "Could not load bgfx, directory does not exist. ${BGFX_DIR}")
return()
endif()
file(GLOB ETC2_SOURCES ${BIMG_DIR}/3rdparty/etc2/*.cpp ${BIMG_DIR}/3rdparty/etc2/*.h)
add_library(etc2 STATIC ${ETC2_SOURCES})
target_include_directories(etc2 PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty>)
target_link_libraries(etc2 PUBLIC bx)
set_target_properties(etc2 PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")
if(NOT MESHOPTIMIZER_LIBRARIES)
file(
GLOB #
MESHOPTIMIZER_SOURCES #
${BGFX_DIR}/3rdparty/meshoptimizer/src/*.cpp #
${BGFX_DIR}/3rdparty/meshoptimizer/src/*.h #
)
set(MESHOPTIMIZER_INCLUDE_DIR ${BGFX_DIR}/3rdparty)
endif()

62
cmake/bgfx/3rdparty/spirv-cross.cmake vendored Normal file
View File

@@ -0,0 +1,62 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BGFX_DIR})
message(SEND_ERROR "Could not load bgfx, directory does not exist. ${BGFX_DIR}")
return()
endif()
set(SPIRV_CROSS ${BGFX_DIR}/3rdparty/spirv-cross)
add_library(spirv-cross STATIC)
target_compile_definitions(spirv-cross PRIVATE SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS)
# Put in a "bgfx" folder in Visual Studio
set_target_properties(spirv-cross PROPERTIES FOLDER "bgfx")
target_include_directories(
spirv-cross #
PUBLIC #
${SPIRV_CROSS} #
PRIVATE #
${SPIRV_CROSS}/include #
)
file(
GLOB
SPIRV_CROSS_SOURCES
#
${SPIRV_CROSS}/spirv.hpp
${SPIRV_CROSS}/spirv_cfg.cpp
${SPIRV_CROSS}/spirv_cfg.hpp
${SPIRV_CROSS}/spirv_common.hpp
${SPIRV_CROSS}/spirv_cpp.cpp
${SPIRV_CROSS}/spirv_cpp.hpp
${SPIRV_CROSS}/spirv_cross.cpp
${SPIRV_CROSS}/spirv_cross.hpp
${SPIRV_CROSS}/spirv_cross_parsed_ir.cpp
${SPIRV_CROSS}/spirv_cross_parsed_ir.hpp
${SPIRV_CROSS}/spirv_cross_util.cpp
${SPIRV_CROSS}/spirv_cross_util.hpp
${SPIRV_CROSS}/spirv_glsl.cpp
${SPIRV_CROSS}/spirv_glsl.hpp
${SPIRV_CROSS}/spirv_hlsl.cpp
${SPIRV_CROSS}/spirv_hlsl.hpp
${SPIRV_CROSS}/spirv_msl.cpp
${SPIRV_CROSS}/spirv_msl.hpp
${SPIRV_CROSS}/spirv_parser.cpp
${SPIRV_CROSS}/spirv_parser.hpp
${SPIRV_CROSS}/spirv_reflect.cpp
${SPIRV_CROSS}/spirv_reflect.hpp
)
target_sources(spirv-cross PRIVATE ${SPIRV_CROSS_SOURCES})

148
cmake/bgfx/3rdparty/spirv-opt.cmake vendored Normal file
View File

@@ -0,0 +1,148 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BGFX_DIR})
message(SEND_ERROR "Could not load bgfx, directory does not exist. ${BGFX_DIR}")
return()
endif()
set(SPIRV_HEADERS ${BGFX_DIR}/3rdparty/spirv-headers)
set(SPIRV_TOOLS ${BGFX_DIR}/3rdparty/spirv-tools)
add_library(spirv-opt STATIC)
# Put in a "bgfx" folder in Visual Studio
set_target_properties(spirv-opt PROPERTIES FOLDER "bgfx")
target_include_directories(
spirv-opt
PUBLIC ${SPIRV_TOOLS}/include #
PRIVATE ${SPIRV_TOOLS} #
${SPIRV_TOOLS}/include/generated #
${SPIRV_TOOLS}/source #
${SPIRV_HEADERS}/include #
)
file(
GLOB
SPIRV_OPT_SOURCES
# libspirv
${SPIRV_TOOLS}/source/opt/*.cpp
${SPIRV_TOOLS}/source/opt/*.h
${SPIRV_TOOLS}/source/reduce/*.cpp
${SPIRV_TOOLS}/source/reduce/*.h
${SPIRV_TOOLS}/source/assembly_grammar.cpp
${SPIRV_TOOLS}/source/assembly_grammar.h
${SPIRV_TOOLS}/source/binary.cpp
${SPIRV_TOOLS}/source/binary.h
${SPIRV_TOOLS}/source/cfa.h
${SPIRV_TOOLS}/source/diagnostic.cpp
${SPIRV_TOOLS}/source/diagnostic.h
${SPIRV_TOOLS}/source/disassemble.cpp
${SPIRV_TOOLS}/source/disassemble.h
${SPIRV_TOOLS}/source/enum_set.h
${SPIRV_TOOLS}/source/enum_string_mapping.cpp
${SPIRV_TOOLS}/source/enum_string_mapping.h
${SPIRV_TOOLS}/source/ext_inst.cpp
${SPIRV_TOOLS}/source/ext_inst.h
${SPIRV_TOOLS}/source/extensions.cpp
${SPIRV_TOOLS}/source/extensions.h
${SPIRV_TOOLS}/source/instruction.h
${SPIRV_TOOLS}/source/latest_version_glsl_std_450_header.h
${SPIRV_TOOLS}/source/latest_version_opencl_std_header.h
${SPIRV_TOOLS}/source/latest_version_spirv_header.h
${SPIRV_TOOLS}/source/libspirv.cpp
${SPIRV_TOOLS}/source/macro.h
${SPIRV_TOOLS}/source/name_mapper.cpp
${SPIRV_TOOLS}/source/name_mapper.h
${SPIRV_TOOLS}/source/opcode.cpp
${SPIRV_TOOLS}/source/opcode.h
${SPIRV_TOOLS}/source/operand.cpp
${SPIRV_TOOLS}/source/operand.h
${SPIRV_TOOLS}/source/parsed_operand.cpp
${SPIRV_TOOLS}/source/parsed_operand.h
${SPIRV_TOOLS}/source/print.cpp
${SPIRV_TOOLS}/source/print.h
${SPIRV_TOOLS}/source/software_version.cpp
${SPIRV_TOOLS}/source/spirv_constant.h
${SPIRV_TOOLS}/source/spirv_definition.h
${SPIRV_TOOLS}/source/spirv_endian.cpp
${SPIRV_TOOLS}/source/spirv_endian.h
${SPIRV_TOOLS}/source/spirv_optimizer_options.cpp
${SPIRV_TOOLS}/source/spirv_reducer_options.cpp
${SPIRV_TOOLS}/source/spirv_target_env.cpp
${SPIRV_TOOLS}/source/spirv_target_env.h
${SPIRV_TOOLS}/source/spirv_validator_options.cpp
${SPIRV_TOOLS}/source/spirv_validator_options.h
${SPIRV_TOOLS}/source/table.cpp
${SPIRV_TOOLS}/source/table.h
${SPIRV_TOOLS}/source/text.cpp
${SPIRV_TOOLS}/source/text.h
${SPIRV_TOOLS}/source/text_handler.cpp
${SPIRV_TOOLS}/source/text_handler.h
${SPIRV_TOOLS}/source/util/bit_vector.cpp
${SPIRV_TOOLS}/source/util/bit_vector.h
${SPIRV_TOOLS}/source/util/bitutils.h
${SPIRV_TOOLS}/source/util/hex_float.h
${SPIRV_TOOLS}/source/util/parse_number.cpp
${SPIRV_TOOLS}/source/util/parse_number.h
${SPIRV_TOOLS}/source/util/string_utils.cpp
${SPIRV_TOOLS}/source/util/string_utils.h
${SPIRV_TOOLS}/source/util/timer.h
${SPIRV_TOOLS}/source/val/basic_block.cpp
${SPIRV_TOOLS}/source/val/construct.cpp
${SPIRV_TOOLS}/source/val/decoration.h
${SPIRV_TOOLS}/source/val/function.cpp
${SPIRV_TOOLS}/source/val/instruction.cpp
${SPIRV_TOOLS}/source/val/validate.cpp
${SPIRV_TOOLS}/source/val/validate.h
${SPIRV_TOOLS}/source/val/validate_adjacency.cpp
${SPIRV_TOOLS}/source/val/validate_annotation.cpp
${SPIRV_TOOLS}/source/val/validate_arithmetics.cpp
${SPIRV_TOOLS}/source/val/validate_atomics.cpp
${SPIRV_TOOLS}/source/val/validate_barriers.cpp
${SPIRV_TOOLS}/source/val/validate_bitwise.cpp
${SPIRV_TOOLS}/source/val/validate_builtins.cpp
${SPIRV_TOOLS}/source/val/validate_capability.cpp
${SPIRV_TOOLS}/source/val/validate_cfg.cpp
${SPIRV_TOOLS}/source/val/validate_composites.cpp
${SPIRV_TOOLS}/source/val/validate_constants.cpp
${SPIRV_TOOLS}/source/val/validate_conversion.cpp
${SPIRV_TOOLS}/source/val/validate_debug.cpp
${SPIRV_TOOLS}/source/val/validate_decorations.cpp
${SPIRV_TOOLS}/source/val/validate_derivatives.cpp
${SPIRV_TOOLS}/source/val/validate_execution_limitations.cpp
${SPIRV_TOOLS}/source/val/validate_extensions.cpp
${SPIRV_TOOLS}/source/val/validate_function.cpp
${SPIRV_TOOLS}/source/val/validate_id.cpp
${SPIRV_TOOLS}/source/val/validate_image.cpp
${SPIRV_TOOLS}/source/val/validate_instruction.cpp
${SPIRV_TOOLS}/source/val/validate_interfaces.cpp
${SPIRV_TOOLS}/source/val/validate_layout.cpp
${SPIRV_TOOLS}/source/val/validate_literals.cpp
${SPIRV_TOOLS}/source/val/validate_logicals.cpp
${SPIRV_TOOLS}/source/val/validate_memory.cpp
${SPIRV_TOOLS}/source/val/validate_memory_semantics.cpp
${SPIRV_TOOLS}/source/val/validate_mesh_shading.cpp
${SPIRV_TOOLS}/source/val/validate_misc.cpp
${SPIRV_TOOLS}/source/val/validate_mode_setting.cpp
${SPIRV_TOOLS}/source/val/validate_non_uniform.cpp
${SPIRV_TOOLS}/source/val/validate_primitives.cpp
${SPIRV_TOOLS}/source/val/validate_ray_query.cpp
${SPIRV_TOOLS}/source/val/validate_ray_tracing.cpp
${SPIRV_TOOLS}/source/val/validate_ray_tracing_reorder.cpp
${SPIRV_TOOLS}/source/val/validate_scopes.cpp
${SPIRV_TOOLS}/source/val/validate_small_type_uses.cpp
${SPIRV_TOOLS}/source/val/validate_type.cpp
${SPIRV_TOOLS}/source/val/validation_state.cpp
)
target_sources(spirv-opt PRIVATE ${SPIRV_OPT_SOURCES})

View File

@@ -8,21 +8,26 @@
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(BGFX_CUSTOM_TARGETS)
add_custom_target(tools)
set_target_properties(tools PROPERTIES FOLDER "bgfx/tools")
endif()
include(bgfx.cmake)
include(3rdparty/meshoptimizer.cmake)
include(3rdparty/dear-imgui.cmake)
if(BGFX_BUILD_TOOLS_SHADER)
include(${CMAKE_CURRENT_LIST_DIR}/tools/shaderc.cmake)
endif()
if(BGFX_BUILD_TOOLS_GEOMETRY)
include(${CMAKE_CURRENT_LIST_DIR}/tools/geometryc.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/tools/geometryv.cmake)
endif()
include(shared.cmake)
include(examples.cmake)
if(BGFX_BUILD_TOOLS_TEXTURE)
include(${CMAKE_CURRENT_LIST_DIR}/tools/texturec.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/tools/texturev.cmake)
include(texturev.cmake)
endif()
if(BGFX_BUILD_TOOLS_GEOMETRY)
include(geometryc.cmake)
include(geometryv.cmake)
endif()
if(BGFX_BUILD_TOOLS_SHADER)
include(3rdparty/spirv-opt.cmake)
include(3rdparty/spirv-cross.cmake)
include(3rdparty/glslang.cmake)
include(3rdparty/glsl-optimizer.cmake)
include(3rdparty/fcpp.cmake)
include(3rdparty/webgpu.cmake)
include(shaderc.cmake)
endif()

View File

@@ -12,22 +12,17 @@ include(CMakeParseArguments)
include(${CMAKE_CURRENT_LIST_DIR}/util/ConfigureDebugging.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/dear-imgui.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/meshoptimizer.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/bgfxToolUtils.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/../bgfxToolUtils.cmake)
function(add_bgfx_shader FILE FOLDER)
get_filename_component(FILENAME "${FILE}" NAME_WE)
string(SUBSTRING "${FILENAME}" 0 2 TYPE)
if("${TYPE}" STREQUAL "fs")
set(TYPE "FRAGMENT")
set(D3D_PREFIX "ps")
elseif("${TYPE}" STREQUAL "vs")
set(TYPE "VERTEX")
set(D3D_PREFIX "vs")
elseif("${TYPE}" STREQUAL "cs")
set(TYPE "COMPUTE")
set(D3D_PREFIX "cs")
else()
set(TYPE "")
endif()
@@ -43,7 +38,7 @@ function(add_bgfx_shader FILE FOLDER)
set(DX9_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/dx9/${FILENAME}.bin)
_bgfx_shaderc_parse(
DX9 ${COMMON} WINDOWS
PROFILE ${D3D_PREFIX}_3_0
PROFILE s_3_0
O 3
OUTPUT ${DX9_OUTPUT}
)
@@ -56,14 +51,14 @@ function(add_bgfx_shader FILE FOLDER)
if(NOT "${TYPE}" STREQUAL "COMPUTE")
_bgfx_shaderc_parse(
DX11 ${COMMON} WINDOWS
PROFILE ${D3D_PREFIX}_5_0
PROFILE s_5_0
O 3
OUTPUT ${DX11_OUTPUT}
)
else()
_bgfx_shaderc_parse(
DX11 ${COMMON} WINDOWS
PROFILE ${D3D_PREFIX}_5_0
PROFILE s_5_0
O 1
OUTPUT ${DX11_OUTPUT}
)
@@ -91,7 +86,7 @@ function(add_bgfx_shader FILE FOLDER)
# glsl
set(GLSL_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/glsl/${FILENAME}.bin)
if(NOT "${TYPE}" STREQUAL "COMPUTE")
_bgfx_shaderc_parse(GLSL ${COMMON} LINUX PROFILE 120 OUTPUT ${GLSL_OUTPUT})
_bgfx_shaderc_parse(GLSL ${COMMON} LINUX PROFILE 140 OUTPUT ${GLSL_OUTPUT})
else()
_bgfx_shaderc_parse(GLSL ${COMMON} LINUX PROFILE 430 OUTPUT ${GLSL_OUTPUT})
endif()
@@ -144,9 +139,16 @@ function(add_example ARG_NAME)
# Add target
if(ARG_COMMON)
add_library(example-${ARG_NAME} STATIC EXCLUDE_FROM_ALL ${SOURCES})
target_include_directories(example-${ARG_NAME} PUBLIC ${BGFX_DIR}/examples/common)
target_link_libraries(example-${ARG_NAME} PUBLIC bgfx bx bimg dear-imgui meshoptimizer)
add_library(
example-${ARG_NAME} STATIC EXCLUDE_FROM_ALL ${SOURCES} ${DEAR_IMGUI_SOURCES} ${MESHOPTIMIZER_SOURCES}
)
target_include_directories(
example-${ARG_NAME} PUBLIC ${BGFX_DIR}/examples/common ${DEAR_IMGUI_INCLUDE_DIR}
${MESHOPTIMIZER_INCLUDE_DIR}
)
target_link_libraries(
example-${ARG_NAME} PUBLIC bgfx bx bimg bimg_decode ${DEAR_IMGUI_LIBRARIES} ${MESHOPTIMIZER_LIBRARIES}
)
if(BGFX_WITH_GLFW)
find_package(glfw3 REQUIRED)
target_link_libraries(example-${ARG_NAME} PUBLIC glfw)
@@ -155,16 +157,69 @@ function(add_example ARG_NAME)
find_package(SDL2 REQUIRED)
target_link_libraries(example-${ARG_NAME} PUBLIC ${SDL2_LIBRARIES})
target_compile_definitions(example-${ARG_NAME} PUBLIC ENTRY_CONFIG_USE_SDL)
elseif(UNIX AND NOT APPLE)
elseif(UNIX AND NOT APPLE AND NOT ANDROID)
target_link_libraries(example-${ARG_NAME} PUBLIC X11)
endif()
else()
if(BGFX_INSTALL_EXAMPLES)
add_executable(example-${ARG_NAME} WIN32 ${SOURCES})
else()
add_executable(example-${ARG_NAME} WIN32 EXCLUDE_FROM_ALL ${SOURCES})
if(ANDROID)
target_include_directories(example-${ARG_NAME} PRIVATE ${BGFX_DIR}/3rdparty/native_app_glue)
target_link_libraries(example-${ARG_NAME} INTERFACE android EGL GLESv2)
endif()
target_link_libraries(example-${ARG_NAME} example-common)
if(BGFX_BUILD_EXAMPLES)
if(IOS OR WIN32)
# on iOS we need to build a bundle so have to copy the data rather than symlink
# and on windows we can't create symlinks
add_custom_command(
TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E copy_directory ${BGFX_DIR}/examples/runtime/
$<TARGET_FILE_DIR:example-${ARG_NAME}>
)
else()
# For everything else symlink some folders into our output directory
add_custom_command(
TARGET example-${ARG_NAME}
COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/font
$<TARGET_FILE_DIR:example-${ARG_NAME}>/font
)
add_custom_command(
TARGET example-${ARG_NAME}
COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/images
$<TARGET_FILE_DIR:example-${ARG_NAME}>/images
)
add_custom_command(
TARGET example-${ARG_NAME}
COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/meshes
$<TARGET_FILE_DIR:example-${ARG_NAME}>/meshes
)
add_custom_command(
TARGET example-${ARG_NAME}
COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/shaders
$<TARGET_FILE_DIR:example-${ARG_NAME}>/shaders
)
add_custom_command(
TARGET example-${ARG_NAME}
COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/text
$<TARGET_FILE_DIR:example-${ARG_NAME}>/text
)
add_custom_command(
TARGET example-${ARG_NAME}
COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/textures
$<TARGET_FILE_DIR:example-${ARG_NAME}>/textures
)
endif()
endif()
else()
if(ANDROID)
add_library(example-${ARG_NAME} SHARED)
else()
add_executable(example-${ARG_NAME} WIN32)
endif()
if(NOT BGFX_INSTALL_EXAMPLES)
set_property(TARGET example-${ARG_NAME} PROPERTY EXCLUDE_FROM_ALL ON)
endif()
target_sources(example-${ARG_NAME} PUBLIC ${SOURCES})
target_link_libraries(example-${ARG_NAME} PUBLIC example-common)
configure_debugging(example-${ARG_NAME} WORKING_DIR ${BGFX_DIR}/examples/runtime)
if(MSVC)
set_target_properties(example-${ARG_NAME} PROPERTIES LINK_FLAGS "/ENTRY:\"mainCRTStartup\"")
@@ -184,8 +239,10 @@ function(add_example ARG_NAME)
endif()
endif()
target_compile_definitions(
example-${ARG_NAME} PRIVATE "-D_CRT_SECURE_NO_WARNINGS" "-D__STDC_FORMAT_MACROS"
"-DENTRY_CONFIG_IMPLEMENT_MAIN=1"
example-${ARG_NAME}
PRIVATE "-D_CRT_SECURE_NO_WARNINGS" #
"-D__STDC_FORMAT_MACROS" #
"-DENTRY_CONFIG_IMPLEMENT_MAIN=1" #
)
# Configure shaders
@@ -211,42 +268,6 @@ function(add_example ARG_NAME)
# Directory name
set_target_properties(example-${ARG_NAME} PROPERTIES FOLDER "bgfx/examples")
if(IOS OR WIN32)
# on iOS we need to build a bundle so have to copy the data rather than symlink
# and on windows we can't create symlinks
add_custom_command(
TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E copy_directory ${BGFX_DIR}/examples/runtime/
$<TARGET_FILE_DIR:example-${ARG_NAME}>
)
else()
# For everything else symlink some folders into our output directory
add_custom_command(
TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/font
$<TARGET_FILE_DIR:example-${ARG_NAME}>/font
)
add_custom_command(
TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/images
$<TARGET_FILE_DIR:example-${ARG_NAME}>/images
)
add_custom_command(
TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/meshes
$<TARGET_FILE_DIR:example-${ARG_NAME}>/meshes
)
add_custom_command(
TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/shaders
$<TARGET_FILE_DIR:example-${ARG_NAME}>/shaders
)
add_custom_command(
TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/text
$<TARGET_FILE_DIR:example-${ARG_NAME}>/text
)
add_custom_command(
TARGET example-${ARG_NAME} COMMAND ${CMAKE_COMMAND} -E create_symlink ${BGFX_DIR}/examples/runtime/textures
$<TARGET_FILE_DIR:example-${ARG_NAME}>/textures
)
endif()
endfunction()
# Build all examples target

View File

@@ -8,15 +8,28 @@
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
include(CMakeParseArguments)
add_executable(geometryc)
include(${CMAKE_CURRENT_LIST_DIR}/../3rdparty/meshoptimizer.cmake)
# Grab the geometryc source files
file(
GLOB_RECURSE
GEOMETRYC_SOURCES #
${BGFX_DIR}/tools/geometryc/*.cpp #
${BGFX_DIR}/tools/geometryc/*.h #
#
${MESHOPTIMIZER_SOURCES}
)
add_executable(geometryc ${BGFX_DIR}/tools/geometryc/geometryc.cpp)
target_sources(geometryc PRIVATE ${GEOMETRYC_SOURCES})
target_include_directories(geometryc PRIVATE ${MESHOPTIMIZER_INCLUDE_DIR})
target_link_libraries(geometryc PRIVATE bx bgfx-vertexlayout ${MESHOPTIMIZER_LIBRARIES})
target_compile_definitions(geometryc PRIVATE "-D_CRT_SECURE_NO_WARNINGS")
set_target_properties(geometryc PROPERTIES FOLDER "bgfx/tools")
target_link_libraries(geometryc bx bgfx-vertexlayout meshoptimizer)
if(BGFX_CUSTOM_TARGETS)
set_target_properties(
geometryc PROPERTIES FOLDER "bgfx/tools" #
OUTPUT_NAME ${BGFX_TOOLS_PREFIX}geometryc #
)
if(BGFX_BUILD_TOOLS_GEOMETRY AND BGFX_CUSTOM_TARGETS)
add_dependencies(tools geometryc)
endif()

View File

@@ -8,16 +8,32 @@
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
add_executable(geometryv ${BGFX_DIR}/tools/geometryv/geometryv.cpp)
set_target_properties(geometryv PROPERTIES FOLDER "bgfx/tools")
target_link_libraries(geometryv example-common)
if(EMSCRIPTEN)
target_link_options(geometryv PRIVATE -sMAX_WEBGL_VERSION=2)
if(ANDROID)
add_library(geometryv SHARED)
else()
add_executable(geometryv)
endif()
if(BGFX_CUSTOM_TARGETS)
# Grab the geometryv source files
file(GLOB_RECURSE GEOMETRYV_SOURCES #
${BGFX_DIR}/tools/geometryv/*
)
target_sources(geometryv PRIVATE ${GEOMETRYV_SOURCES})
target_link_libraries(geometryv PRIVATE example-common)
set_target_properties(
geometryv PROPERTIES FOLDER "bgfx/tools" #
OUTPUT_NAME ${BGFX_TOOLS_PREFIX}geometryv #
)
if(BGFX_BUILD_TOOLS_GEOMETRY AND BGFX_CUSTOM_TARGETS)
add_dependencies(tools geometryv)
endif()
if(IOS)
if(ANDROID)
set_property(TARGET geometryv PROPERTY PREFIX "")
elseif(EMSCRIPTEN)
target_link_options(geometryv PRIVATE -sMAX_WEBGL_VERSION=2)
elseif(IOS)
set_target_properties(geometryv PROPERTIES MACOSX_BUNDLE ON MACOSX_BUNDLE_GUI_IDENTIFIER geometryv)
endif()

73
cmake/bgfx/shaderc.cmake Normal file
View File

@@ -0,0 +1,73 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
add_executable(shaderc)
#target_include_directories(
# shaderc
# PRIVATE
# ${BIMG_DIR}/include #
# ${GLSL_OPTIMIZER}/include #
# ${GLSL_OPTIMIZER}/src/mesa #
# ${GLSL_OPTIMIZER}/src/mapi #
# ${GLSL_OPTIMIZER}/src/glsl #
#)
target_link_libraries(
shaderc
PRIVATE bx
bgfx-vertexlayout
fcpp
glslang
glsl-optimizer
spirv-opt
spirv-cross
)
target_link_libraries(
shaderc
PRIVATE bx
bimg
bgfx-vertexlayout
fcpp
glslang
glsl-optimizer
spirv-opt
spirv-cross
webgpu
)
if(BGFX_AMALGAMATED)
target_link_libraries(shaderc PRIVATE bgfx-shader)
endif()
# Grab the shaderc source files
file(
GLOB
SHADERC_SOURCES #
${BGFX_DIR}/tools/shaderc/*.cpp #
${BGFX_DIR}/tools/shaderc/*.h #
${BGFX_DIR}/src/shader* #
)
target_sources(shaderc PRIVATE ${SHADERC_SOURCES})
set_target_properties(
shaderc PROPERTIES FOLDER "bgfx/tools" #
OUTPUT_NAME ${BGFX_TOOLS_PREFIX}shaderc #
)
if(BGFX_BUILD_TOOLS_SHADER AND BGFX_CUSTOM_TARGETS)
add_dependencies(tools shaderc)
endif()
if(ANDROID)
target_link_libraries(shaderc PRIVATE log)
elseif(IOS)
set_target_properties(shaderc PROPERTIES MACOSX_BUNDLE ON MACOSX_BUNDLE_GUI_IDENTIFIER shaderc)
endif()

View File

@@ -1,25 +1,39 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
include(CMakeParseArguments)
add_executable(texturev ${BGFX_DIR}/tools/texturev/texturev.cpp)
set_target_properties(texturev PROPERTIES FOLDER "bgfx/tools")
target_link_libraries(texturev example-common)
if(EMSCRIPTEN)
target_link_options(texturev PRIVATE -sMAX_WEBGL_VERSION=2)
if(ANDROID)
add_library(texturev SHARED)
else()
add_executable(texturev)
endif()
if(BGFX_CUSTOM_TARGETS)
# Grab the texturev source files
file(GLOB_RECURSE TEXTUREV_SOURCES #
${BGFX_DIR}/tools/texturev/*
)
target_sources(texturev PRIVATE ${TEXTUREV_SOURCES})
target_link_libraries(texturev PRIVATE example-common)
set_target_properties(
texturev PROPERTIES FOLDER "bgfx/tools" #
OUTPUT_NAME ${BGFX_TOOLS_PREFIX}texturev #
)
if(BGFX_BUILD_TOOLS_TEXTURE AND BGFX_CUSTOM_TARGETS)
add_dependencies(tools texturev)
endif()
if(IOS)
if(ANDROID)
set_property(TARGET texturev PROPERTY PREFIX "")
elseif(EMSCRIPTEN)
target_link_options(texturev PRIVATE -sMAX_WEBGL_VERSION=2)
elseif(IOS)
set_target_properties(texturev PROPERTIES MACOSX_BUNDLE ON MACOSX_BUNDLE_GUI_IDENTIFIER texturev)
endif()

View File

@@ -59,6 +59,292 @@ function(bgfx_compile_binary_to_header)
)
endfunction()
# _bgfx_texturec_parse(
# FILE filename
# OUTPUT filename
# [FORMAT format]
# [QUALITY default|fastest|highest]
# [MIPS]
# [MIPSKIP N]
# [NORMALMAP]
# [EQUIRECT]
# [STRIP]
# [SDF]
# [REF alpha]
# [IQA]
# [PMA]
# [LINEAR]
# [MAX max size]
# [RADIANCE model]
# [AS extension]
# )
function(_bgfx_texturec_parse ARG_OUT)
cmake_parse_arguments(
ARG #
"MIPS;NORMALMAP;EQUIRECT;STRIP;SDF;IQA;PMA;LINEAR" #
"FILE;OUTPUT;FORMAT;QUALITY;MIPSKIP;REF;MAX;RADIANCE;AS" #
"" #
${ARGN} #
)
set(CLI "")
# -f
if(ARG_FILE)
list(APPEND CLI "-f" "${ARG_FILE}")
endif()
# -o
if(ARG_OUTPUT)
list(APPEND CLI "-o" "${ARG_OUTPUT}")
endif()
# -t
if(ARG_FORMAT)
list(APPEND CLI "-t" "${ARG_FORMAT}")
endif()
# -q
if(ARG_QUALITY)
list(APPEND CLI "-q" "${ARG_QUALITY}")
endif()
# --mips
if(ARG_MIPS)
list(APPEND CLI "--mips")
endif()
# --mipskip
if(ARG_MIPSKIP)
list(APPEND CLI "--mipskip" "${ARG_MIPSKIP}")
endif()
# --normalmap
if(ARG_NORMALMAP)
list(APPEND CLI "--normalmap")
endif()
# --equirect
if(ARG_EQUIRECT)
list(APPEND CLI "--equirect")
endif()
# --strip
if(ARG_STRIP)
list(APPEND CLI "--strip")
endif()
# --sdf
if(ARG_SDF)
list(APPEND CLI "--sdf")
endif()
# --ref
if(ARG_REF)
list(APPEND CLI "--ref" "${ARG_REF}")
endif()
# --iqa
if(ARG_IQA)
list(APPEND CLI "--iqa")
endif()
# --pma
if(ARG_PMA)
list(APPEND CLI "--pma")
endif()
# --linear
if(ARG_LINEAR)
list(APPEND CLI "--linear")
endif()
# --max
if(ARG_MAX)
list(APPEND CLI "--max" "${ARG_MAX}")
endif()
# --radiance
if(ARG_RADIANCE)
list(APPEND CLI "--radiance" "${ARG_RADIANCE}")
endif()
# --as
if(ARG_AS)
list(APPEND CLI "--as" "${ARG_AS}")
endif()
set(${ARG_OUT} ${CLI} PARENT_SCOPE)
endfunction()
# bgfx_compile_texture(
# FILE filename
# OUTPUT filename
# [FORMAT format]
# [QUALITY default|fastest|highest]
# [MIPS]
# [MIPSKIP N]
# [NORMALMAP]
# [EQUIRECT]
# [STRIP]
# [SDF]
# [REF alpha]
# [IQA]
# [PMA]
# [LINEAR]
# [MAX max size]
# [RADIANCE model]
# [AS extension]
# )
#
function(bgfx_compile_texture)
cmake_parse_arguments(
ARG #
"MIPS;NORMALMAP;EQUIRECT;STRIP;SDF;IQA;PMA;LINEAR" #
"FILE;OUTPUT;FORMAT;QUALITY;MIPSKIP;REF;MAX;RADIANCE;AS" #
"" #
${ARGN} #
)
_bgfx_texturec_parse(CLI ${ARGV})
add_custom_command(
OUTPUT ${ARG_OUTPUT} #
COMMAND bgfx::texturec ${CLI} #
MAIN_DEPENDENCY ${ARG_INPUT} #
)
endfunction()
# _bgfx_geometryc_parse(
# FILE filename
# OUTPUT filename
# [SCALE scale]
# [CCW]
# [FLIPV]
# [OBB num steps]
# [PACKNORMAL 0|1]
# [PACKUV 0|1]
# [TANGENT]
# [BARYCENTRIC]
# [COMPRESS]
# [LH_UP_Y|LH_UP_Z|RH_UP_Y|RH_UP_Z]
# )
function(_bgfx_geometryc_parse ARG_OUT)
cmake_parse_arguments(
ARG #
"CCW;FLIPV;TANGENT;BARYCENTRIC;COMPRESS;LH_UP_Y;LH_UP_Z;RH_UP_Y;RH_UP_Z" #
"FILE;OUTPUT;SCALE;OBB;PACKNORMAL;PACKUV" #
"" #
${ARGN} #
)
set(CLI "")
# -f
if(ARG_FILE)
list(APPEND CLI "-f" "${ARG_FILE}")
endif()
# -o
if(ARG_OUTPUT)
list(APPEND CLI "-o" "${ARG_OUTPUT}")
endif()
# -s
if(ARG_SCALE)
list(APPEND CLI "-s" "${ARG_SCALE}")
endif()
# --cw
if(ARG_QUALITY)
list(APPEND CLI "--cw")
endif()
# --flipv
if(ARG_FLIPV)
list(APPEND CLI "--flipv")
endif()
# --obb
if(ARG_OBB)
list(APPEND CLI "--mipskip" "${ARG_OBB}")
endif()
# --packnormal
if(ARG_PACKNORMAL)
list(APPEND CLI "--packnormal ${ARG_PACKNORMAL}")
endif()
# --packuv
if(ARG_PACKUV)
list(APPEND CLI "--packuv" ${ARG_PACKUV})
endif()
# --tangent
if(ARG_TANGENT)
list(APPEND CLI "--tangent")
endif()
# --barycentric
if(ARG_BARYCENTRIC)
list(APPEND CLI "--barycentric")
endif()
# --compress
if(ARG_REF)
list(APPEND CLI "--compress" "${ARG_COMPRESS}")
endif()
# --lh-up+y
if(ARG_LH_UP_Y)
list(APPEND CLI "--lh-up+y")
endif()
# --lh-up+z
if(ARG_LH_UP_Z)
list(APPEND CLI "--lh-up+z")
endif()
# --rh-up+y
if(ARG_RH_UP_Y)
list(APPEND CLI "--rh-up+y")
endif()
# --rh-up+z
if(ARG_RH_UP_Z)
list(APPEND CLI "--rh-up+z")
endif()
set(${ARG_OUT} ${CLI} PARENT_SCOPE)
endfunction()
# bgfx_compile_geometry(
# FILE filename
# OUTPUT filename
# [SCALE scale]
# [CCW]
# [FLIPV]
# [OBB num steps]
# [PACKNORMAL 0|1]
# [PACKUV 0|1]
# [TANGENT]
# [BARYCENTRIC]
# [COMPRESS]
# [LH_UP_Y|LH_UP_Z|RH_UP_Y|RH_UP_Z]
# )
#
function(bgfx_compile_geometry)
cmake_parse_arguments(
ARG #
"CCW;FLIPV;TANGENT;BARYCENTRIC;COMPRESS;LH_UP_Y;LH_UP_Z;RH_UP_Y;RH_UP_Z" #
"FILE;OUTPUT;SCALE;OBB;PACKNORMAL;PACKUV" #
"" #
${ARGN} #
)
_bgfx_geometryc_parse(CLI ${ARGV})
add_custom_command(
OUTPUT ${ARG_OUTPUT} #
COMMAND bgfx::geometryc ${CLI} #
MAIN_DEPENDENCY ${ARG_INPUT} #
)
endfunction()
# _bgfx_shaderc_parse(
# FILE filename
# OUTPUT filename

View File

@@ -1,55 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Third party libs
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/astc-encoder.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/edtaa3.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/etc1.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/etc2.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/iqa.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/libsquish.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/nvtt.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/pvrtc.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/tinyexr.cmake)
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
# Grab the bimg source files
file(GLOB BIMG_SOURCES ${BIMG_DIR}/src/*.cpp)
# Create the bimg target
add_library(bimg STATIC ${BIMG_SOURCES})
# Add include directory of bimg
target_include_directories(
bimg PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/include> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
# bimg dependencies
target_link_libraries(
bimg
PUBLIC bx
PRIVATE astc-encoder
edtaa3
etc1
etc2
iqa
squish
nvtt
pvrtc
tinyexr
)
# Put in a "bgfx" folder in Visual Studio
set_target_properties(bimg PROPERTIES FOLDER "bgfx")

25
cmake/bimg/3rdparty/astc_encoder.cmake vendored Normal file
View File

@@ -0,0 +1,25 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
if(NOT ASTC_ENCODER_LIBRARIES)
file(
GLOB_RECURSE #
ASTC_ENCODER_SOURCES #
${BIMG_DIR}/3rdparty/astc-encoder/source/*.cpp #
${BIMG_DIR}/3rdparty/astc-encoder/source/*.h #
)
set(ASTC_ENCODER_INCLUDE_DIR ${BIMG_DIR}/3rdparty/astc-encoder/include)
endif()

View File

@@ -1,19 +1,25 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET iqa)
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
file(GLOB IQA_SOURCES ${BIMG_DIR}/3rdparty/iqa/source/*.c ${BIMG_DIR}/3rdparty/iqa/include/*.h)
add_library(iqa STATIC ${IQA_SOURCES})
target_include_directories(iqa PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty/iqa/include>)
set_target_properties(iqa PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")
if(NOT EDTAA3_LIBRARIES)
file(
GLOB_RECURSE #
EDTAA3_SOURCES #
${BIMG_DIR}/3rdparty/edtaa3/**.cpp #
${BIMG_DIR}/3rdparty/edtaa3/**.h #
)
set(EDTAA3_INCLUDE_DIR ${BIMG_DIR}/3rdparty)
endif()

View File

@@ -1,19 +1,22 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET etc1)
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
file(GLOB ETC1_SOURCES ${BIMG_DIR}/3rdparty/etc1/*.cpp ${BIMG_DIR}/3rdparty/etc1/*.h)
add_library(etc1 STATIC ${ETC1_SOURCES})
target_include_directories(etc1 PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty>)
set_target_properties(etc1 PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")
if(NOT ETC1_LIBRARIES)
file(GLOB_RECURSE ETC1_SOURCES ${BIMG_DIR}/3rdparty/etc1/**.cpp #
${BIMG_DIR}/3rdparty/etc1/**.hpp #
)
set(ETC1_INCLUDE_DIR ${BIMG_DIR}/3rdparty)
endif()

View File

@@ -1,19 +1,25 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET edtaa3)
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
file(GLOB EDTAA3_SOURCES ${BIMG_DIR}/3rdparty/edtaa3/*.cpp ${BIMG_DIR}/3rdparty/edtaa3/*.h)
add_library(edtaa3 STATIC ${EDTAA3_SOURCES})
target_include_directories(edtaa3 PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty>)
set_target_properties(edtaa3 PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")
if(NOT ETC2_LIBRARIES)
file(
GLOB_RECURSE #
ETC2_SOURCES #
${BIMG_DIR}/3rdparty/etc2/**.cpp #
${BIMG_DIR}/3rdparty/etc2/**.hpp #
)
set(ETC2_INCLUDE_DIR ${BIMG_DIR}/3rdparty)
endif()

25
cmake/bimg/3rdparty/iqa.cmake vendored Normal file
View File

@@ -0,0 +1,25 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
if(NOT IQA_LIBRARIES)
file(
GLOB_RECURSE #
IQA_SOURCES #
${BIMG_DIR}/3rdparty/iqa/include/**.h #
${BIMG_DIR}/3rdparty/iqa/source/**.c #
)
set(IQA_INCLUDE_DIR ${BIMG_DIR}/3rdparty/iqa/include)
endif()

25
cmake/bimg/3rdparty/libsquish.cmake vendored Normal file
View File

@@ -0,0 +1,25 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
if(NOT LIBSQUISH_LIBRARIES)
file(
GLOB_RECURSE #
LIBSQUISH_SOURCES #
${BIMG_DIR}/3rdparty/libsquish/**.cpp #
${BIMG_DIR}/3rdparty/libsquish/**.h #
)
set(LIBSQUISH_INCLUDE_DIR ${BIMG_DIR}/3rdparty)
endif()

26
cmake/bimg/3rdparty/loadpng.cmake vendored Normal file
View File

@@ -0,0 +1,26 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
if(NOT LOADPNG_LIBRARIES)
file(
GLOB_RECURSE #
LOADPNG_SOURCES #
${BIMG_DIR}/3rdparty/lodepng/lodepng.cpp #
${BIMG_DIR}/3rdparty/lodepng/lodepng.h #
)
set_source_files_properties(${BIMG_DIR}/3rdparty/lodepng/lodepng.cpp PROPERTIES HEADER_FILE_ONLY ON)
set(LOADPNG_INCLUDE_DIR ${BIMG_DIR}/3rdparty)
endif()

View File

@@ -1,19 +1,23 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
if(TARGET pvrtc)
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
file(GLOB PVRTC_SOURCES ${BIMG_DIR}/3rdparty/pvrtc/*.cpp ${BIMG_DIR}/3rdparty/pvrtc/*.h)
add_library(pvrtc STATIC ${PVRTC_SOURCES})
target_include_directories(pvrtc PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/3rdparty>)
set_target_properties(pvrtc PROPERTIES FOLDER "bgfx/3rdparty" PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}bgfx-")
if(NOT MINIZ_LIBRARIES)
file(GLOB_RECURSE #
MINIZ_SOURCES #
${BIMG_DIR}/3rdparty/tinyexr/deps/miniz/miniz.* #
)
set(MINIZ_INCLUDE_DIR ${BIMG_DIR}/3rdparty/tinyexr/deps/miniz)
endif()

25
cmake/bimg/3rdparty/nvtt.cmake vendored Normal file
View File

@@ -0,0 +1,25 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
if(NOT NVTT_LIBRARIES)
file(
GLOB_RECURSE #
NVTT_SOURCES #
${BIMG_DIR}/3rdparty/nvtt/**.cpp #
${BIMG_DIR}/3rdparty/nvtt/**.h #
)
set(NVTT_INCLUDE_DIR ${BIMG_DIR}/3rdparty/nvtt)
endif()

25
cmake/bimg/3rdparty/pvrtc.cmake vendored Normal file
View File

@@ -0,0 +1,25 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
if(NOT PVRTC_LIBRARIES)
file(
GLOB_RECURSE #
PVRTC_SOURCES #
${BIMG_DIR}/3rdparty/pvrtc/**.cpp #
${BIMG_DIR}/3rdparty/pvrtc/**.h #
)
set(PVRTC_INCLUDE_DIR ${BIMG_DIR}/3rdparty)
endif()

23
cmake/bimg/3rdparty/tinyexr.cmake vendored Normal file
View File

@@ -0,0 +1,23 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
if(NOT TINYEXR_LIBRARIES)
file(GLOB_RECURSE #
TINYEXR_SOURCES #
${BIMG_DIR}/3rdparty/tinyexr/**.h #
)
set(TINYEXR_INCLUDE_DIR ${BIMG_DIR}/3rdparty)
endif()

28
cmake/bimg/CMakeLists.txt Normal file
View File

@@ -0,0 +1,28 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
include(3rdparty/loadpng.cmake)
include(3rdparty/libsquish.cmake)
include(3rdparty/astc_encoder.cmake)
include(3rdparty/edtaa3.cmake)
include(3rdparty/etc1.cmake)
include(3rdparty/etc2.cmake)
include(3rdparty/nvtt.cmake)
include(3rdparty/pvrtc.cmake)
include(3rdparty/tinyexr.cmake)
include(3rdparty/iqa.cmake)
include(3rdparty/miniz.cmake)
include(bimg.cmake)
include(bimg_decode.cmake)
include(bimg_encode.cmake)
if(BGFX_BUILD_TOOLS_TEXTURE)
include(texturec.cmake)
endif()

46
cmake/bimg/bimg.cmake Normal file
View File

@@ -0,0 +1,46 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_DIR}")
return()
endif()
add_library(bimg STATIC)
# Put in a "bgfx" folder in Visual Studio
set_target_properties(bimg PROPERTIES FOLDER "bgfx")
target_include_directories(
bimg PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/include>$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE ${ASTC_ENCODER_INCLUDE_DIR} #
${MINIZ_INCLUDE_DIR} #
)
file(
GLOB_RECURSE
BIMG_SOURCES
${BIMG_DIR}/include/* #
${BIMG_DIR}/src/image.* #
${BIMG_DIR}/src/image_gnf.cpp #
#
${ASTC_ENCODER_SOURCES}
${MINIZ_SOURCES}
)
target_sources(bimg PRIVATE ${BIMG_SOURCES})
target_link_libraries(
bimg
PUBLIC bx #
${ASTC_ENCODER_LIBRARIES} #
${MINIZ_LIBRARIES} #
)

View File

@@ -0,0 +1,47 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg_decode, directory does not exist. ${BIMG_DIR}")
return()
endif()
add_library(bimg_decode STATIC)
# Put in a "bgfx" folder in Visual Studio
set_target_properties(bimg_decode PROPERTIES FOLDER "bgfx")
target_include_directories(
bimg_decode
PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/include> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE ${LOADPNG_INCLUDE_DIR} #
${MINIZ_INCLUDE_DIR} #
${TINYEXR_INCLUDE_DIR} #
)
file(
GLOB_RECURSE
BIMG_DECODE_SOURCES #
${BIMG_DIR}/include/* #
${BIMG_DIR}/src/image_decode.* #
#
${LOADPNG_SOURCES} #
${MINIZ_SOURCES} #
)
target_sources(bimg_decode PRIVATE ${BIMG_DECODE_SOURCES})
target_link_libraries(
bimg_decode
PUBLIC bx #
${LOADPNG_LIBRARIES} #
${MINIZ_LIBRARIES} #
${TINYEXR_LIBRARIES} #
)

View File

@@ -0,0 +1,87 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# Ensure the directory exists
if(NOT IS_DIRECTORY ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg_encode, directory does not exist. ${BIMG_DIR}")
return()
endif()
add_library(bimg_encode STATIC)
# Put in a "bgfx" folder in Visual Studio
set_target_properties(bimg_encode PROPERTIES FOLDER "bgfx")
target_include_directories(
bimg_encode
PUBLIC $<BUILD_INTERFACE:${BIMG_DIR}/include> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE ${LIBSQUISH_INCLUDE_DIR} #
${ASTC_ENCODER_INCLUDE_DIR} #
${EDTAA3_INCLUDE_DIR} #
${ETC1_INCLUDE_DIR} #
${ETC2_INCLUDE_DIR} #
${NVTT_INCLUDE_DIR} #
${PVRTC_INCLUDE_DIR} #
${TINYEXR_INCLUDE_DIR} #
${IQA_INCLUDE_DIR} #
${MINIZ_INCLUDE_DIR} #
)
file(
GLOB_RECURSE
BIMG_ENCODE_SOURCES
${BIMG_DIR}/include/* #
${BIMG_DIR}/src/image_encode.* #
${BIMG_DIR}/src/image_cubemap_filter.* #
${LIBSQUISH_SOURCES} #
${EDTAA3_SOURCES} #
${ETC1_SOURCES} #
${ETC2_SOURCES} #
${NVTT_SOURCES} #
${PVRTC_SOURCES} #
${TINYEXR_SOURCES}
${IQA_SOURCES} #
)
target_sources(bimg_encode PRIVATE ${BIMG_ENCODE_SOURCES})
target_link_libraries(
bimg_encode
PUBLIC bx #
${LIBSQUISH_LIBRARIES} #
${ASTC_ENCODER_LIBRARIES} #
${EDTAA3_LIBRARIES} #
${ETC1_LIBRARIES} #
${ETC2_LIBRARIES} #
${NVTT_LIBRARIES} #
${PVRTC_LIBRARIES} #
${TINYEXR_LIBRARIES} #
${IQA_LIBRARIES} #
)
include(CheckCXXCompilerFlag)
foreach(flag "-Wno-implicit-fallthrough" "-Wno-shadow" "-Wno-shift-negative-value" "-Wno-undef")
check_cxx_compiler_flag(${flag} flag_supported)
if(flag_supported)
target_compile_options(bimg_encode PRIVATE ${flag})
endif()
endforeach()
foreach(flag "-Wno-class-memaccess" "-Wno-deprecated-copy")
check_cxx_compiler_flag(${flag} flag_supported)
if(flag_supported)
foreach(file ${BIMG_ENCODE_SOURCES})
get_source_file_property(lang ${file} LANGUAGE)
if(lang STREQUAL "CXX")
set_source_files_properties(${file} PROPERTIES COMPILE_OPTIONS ${flag})
endif()
endforeach()
endif()
endforeach()

View File

@@ -1,24 +1,34 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
include(CMakeParseArguments)
add_executable(texturec)
add_executable(texturec ${BIMG_DIR}/tools/texturec/texturec.cpp)
set_target_properties(texturec PROPERTIES FOLDER "bgfx/tools")
target_link_libraries(texturec bimg)
if(BGFX_CUSTOM_TARGETS)
# Grab the texturec source files
file(GLOB_RECURSE TEXTUREC_SOURCES #
${BIMG_DIR}/tools/texturec/*.cpp #
${BIMG_DIR}/tools/texturec/*.h #
)
target_sources(texturec PRIVATE ${TEXTUREC_SOURCES})
target_link_libraries(texturec PRIVATE bimg_decode bimg_encode bimg)
set_target_properties(
texturec PROPERTIES FOLDER "bgfx/tools" #
OUTPUT_NAME ${BGFX_TOOLS_PREFIX}texturec #
)
if(BGFX_BUILD_TOOLS_TEXTURE AND BGFX_CUSTOM_TARGETS)
add_dependencies(tools texturec)
endif()
if(ANDROID)
target_link_libraries(texturec log)
target_link_libraries(texturec PRIVATE log)
elseif(IOS)
set_target_properties(texturec PROPERTIES MACOSX_BUNDLE ON MACOSX_BUNDLE_GUI_IDENTIFIER texturec)
endif()

View File

@@ -10,7 +10,7 @@
include(bx.cmake)
if(BGFX_BUILD_TOOLS)
if(BGFX_BUILD_TOOLS_BIN2C)
include(bin2c.cmake)
endif()

View File

@@ -18,4 +18,17 @@ file(GLOB_RECURSE BIN2C_SOURCES #
target_sources(bin2c PRIVATE ${BIN2C_SOURCES})
target_link_libraries(bin2c PRIVATE bx)
set_target_properties(bin2c PROPERTIES FOLDER "bgfx/tools")
set_target_properties(
bin2c PROPERTIES FOLDER "bgfx/tools" #
OUTPUT_NAME ${BGFX_TOOLS_PREFIX}bin2c #
)
if(BGFX_BUILD_TOOLS_BIN2C AND BGFX_CUSTOM_TARGETS)
add_dependencies(tools bin2c)
endif()
if(ANDROID)
target_link_libraries(bin2c PRIVATE log)
elseif(IOS)
set_target_properties(bin2c PROPERTIES MACOSX_BUNDLE ON MACOSX_BUNDLE_GUI_IDENTIFIER bin2c)
endif()

View File

@@ -1,54 +0,0 @@
# bgfx.cmake - bgfx building in cmake
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
include(CMakeParseArguments)
include(${CMAKE_CURRENT_LIST_DIR}/../3rdparty/fcpp.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/../3rdparty/glsl-optimizer.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/../3rdparty/glslang.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/../3rdparty/spirv-cross.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/../3rdparty/spirv-tools.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/../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
fcpp
glsl-optimizer
glslang
spirv-cross
spirv-tools
webgpu
)
if(BGFX_CUSTOM_TARGETS)
add_dependencies(tools shaderc)
endif()
if(ANDROID)
target_link_libraries(shaderc PRIVATE log)
elseif(IOS)
set_target_properties(shaderc PROPERTIES MACOSX_BUNDLE ON MACOSX_BUNDLE_GUI_IDENTIFIER shaderc)
endif()