diff --git a/CMakeLists.txt b/CMakeLists.txt
index aa60b27..3d6beda 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,7 @@
# You should have received a copy of the CC0 Public Domain Dedication along with
# this software. If not, see .
-cmake_minimum_required(VERSION 3.1)
+cmake_minimum_required(VERSION 3.6)
project(bgfx)
cmake_policy(SET CMP0054 NEW)
@@ -104,10 +104,6 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bx)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bimg)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bgfx)
-if(BGFX_BUILD_TOOLS)
- include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/tools.cmake)
-endif()
-
if(BGFX_INSTALL)
include(GNUInstallDirs)
diff --git a/cmake/3rdparty/fcpp.cmake b/cmake/3rdparty/fcpp.cmake
deleted file mode 100755
index a5a0ff0..0000000
--- a/cmake/3rdparty/fcpp.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-# bgfx.cmake - bgfx building in cmake
-# Written in 2017 by Joshua Brookover
-
-# 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 .
-
-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)
diff --git a/cmake/3rdparty/glsl-optimizer.cmake b/cmake/3rdparty/glsl-optimizer.cmake
deleted file mode 100755
index 1e7b41a..0000000
--- a/cmake/3rdparty/glsl-optimizer.cmake
+++ /dev/null
@@ -1,80 +0,0 @@
-# bgfx.cmake - bgfx building in cmake
-# Written in 2017 by Joshua Brookover
-
-# 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 .
-
-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-")
diff --git a/cmake/3rdparty/glslang.cmake b/cmake/3rdparty/glslang.cmake
deleted file mode 100644
index d46c3fb..0000000
--- a/cmake/3rdparty/glslang.cmake
+++ /dev/null
@@ -1,91 +0,0 @@
-# bgfx.cmake - bgfx building in cmake
-# Written in 2017 by Joshua Brookover
-
-# 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 .
-
-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)
diff --git a/cmake/3rdparty/spirv-cross.cmake b/cmake/3rdparty/spirv-cross.cmake
deleted file mode 100644
index d571e55..0000000
--- a/cmake/3rdparty/spirv-cross.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-# bgfx.cmake - bgfx building in cmake
-# Written in 2017 by Joshua Brookover
-
-# 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 .
-
-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-")
diff --git a/cmake/3rdparty/spirv-tools.cmake b/cmake/3rdparty/spirv-tools.cmake
deleted file mode 100644
index 15b2237..0000000
--- a/cmake/3rdparty/spirv-tools.cmake
+++ /dev/null
@@ -1,48 +0,0 @@
-# bgfx.cmake - bgfx building in cmake
-# Written in 2017 by Joshua Brookover
-
-# 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 .
-
-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-")
diff --git a/cmake/bgfx/3rdparty/fcpp.cmake b/cmake/bgfx/3rdparty/fcpp.cmake
new file mode 100644
index 0000000..8e35c1a
--- /dev/null
+++ b/cmake/bgfx/3rdparty/fcpp.cmake
@@ -0,0 +1,66 @@
+# bgfx.cmake - bgfx building in cmake
+# Written in 2017 by Joshua Brookover
+#
+# 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 .
+
+# 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()
diff --git a/cmake/bgfx/3rdparty/glsl-optimizer.cmake b/cmake/bgfx/3rdparty/glsl-optimizer.cmake
new file mode 100644
index 0000000..be34f80
--- /dev/null
+++ b/cmake/bgfx/3rdparty/glsl-optimizer.cmake
@@ -0,0 +1,248 @@
+# bgfx.cmake - bgfx building in cmake
+# Written in 2017 by Joshua Brookover
+#
+# 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 .
+
+# 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()
diff --git a/cmake/bgfx/3rdparty/glslang.cmake b/cmake/bgfx/3rdparty/glslang.cmake
new file mode 100644
index 0000000..36eec04
--- /dev/null
+++ b/cmake/bgfx/3rdparty/glslang.cmake
@@ -0,0 +1,65 @@
+# bgfx.cmake - bgfx building in cmake
+# Written in 2017 by Joshua Brookover
+#
+# 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 .
+
+# 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})
diff --git a/cmake/bgfx/3rdparty/spirv-cross.cmake b/cmake/bgfx/3rdparty/spirv-cross.cmake
new file mode 100644
index 0000000..560bbc0
--- /dev/null
+++ b/cmake/bgfx/3rdparty/spirv-cross.cmake
@@ -0,0 +1,62 @@
+# bgfx.cmake - bgfx building in cmake
+# Written in 2017 by Joshua Brookover
+#
+# 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 .
+
+# 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})
diff --git a/cmake/bgfx/3rdparty/spirv-opt.cmake b/cmake/bgfx/3rdparty/spirv-opt.cmake
new file mode 100644
index 0000000..70d2df6
--- /dev/null
+++ b/cmake/bgfx/3rdparty/spirv-opt.cmake
@@ -0,0 +1,147 @@
+# bgfx.cmake - bgfx building in cmake
+# Written in 2017 by Joshua Brookover
+#
+# 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 .
+
+# 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_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})
diff --git a/cmake/3rdparty/webgpu.cmake b/cmake/bgfx/3rdparty/webgpu.cmake
similarity index 100%
rename from cmake/3rdparty/webgpu.cmake
rename to cmake/bgfx/3rdparty/webgpu.cmake
diff --git a/cmake/bgfx/CMakeLists.txt b/cmake/bgfx/CMakeLists.txt
index 56f857d..2af54c8 100644
--- a/cmake/bgfx/CMakeLists.txt
+++ b/cmake/bgfx/CMakeLists.txt
@@ -21,3 +21,12 @@ 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()
diff --git a/cmake/bgfx/geometryc.cmake b/cmake/bgfx/geometryc.cmake
index 02fdcd5..2f2a431 100644
--- a/cmake/bgfx/geometryc.cmake
+++ b/cmake/bgfx/geometryc.cmake
@@ -10,7 +10,7 @@
add_executable(geometryc)
-# Grab the texturec source files
+# Grab the geometryc source files
file(
GLOB_RECURSE
GEOMETRYC_SOURCES #
diff --git a/cmake/bgfx/shaderc.cmake b/cmake/bgfx/shaderc.cmake
new file mode 100644
index 0000000..f8e46a1
--- /dev/null
+++ b/cmake/bgfx/shaderc.cmake
@@ -0,0 +1,70 @@
+# bgfx.cmake - bgfx building in cmake
+# Written in 2017 by Joshua Brookover
+#
+# 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 .
+
+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(geometryc PROPERTIES FOLDER "bgfx/tools")
+
+if(BGFX_BUILD_TOOLS 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()
diff --git a/cmake/tools.cmake b/cmake/tools.cmake
deleted file mode 100644
index 41c7e4a..0000000
--- a/cmake/tools.cmake
+++ /dev/null
@@ -1,13 +0,0 @@
-# bgfx.cmake - bgfx building in cmake
-# Written in 2017 by Joshua Brookover
-#
-# 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 .
-
-if(BGFX_BUILD_TOOLS_SHADER)
- include(${CMAKE_CURRENT_LIST_DIR}/tools/shaderc.cmake)
-endif()
diff --git a/cmake/tools/shaderc.cmake b/cmake/tools/shaderc.cmake
deleted file mode 100644
index 1d0a407..0000000
--- a/cmake/tools/shaderc.cmake
+++ /dev/null
@@ -1,54 +0,0 @@
-# bgfx.cmake - bgfx building in cmake
-# Written in 2017 by Joshua Brookover
-#
-# 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 .
-
-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()