bgfx: Move shaderc to bgfx with 3rdparties

This commit is contained in:
Sandy Carter
2023-01-15 07:54:46 -05:00
committed by Sandy
parent 10501b78f4
commit ba2948e099
17 changed files with 669 additions and 343 deletions

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)
@@ -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)

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,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-")

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})

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})

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

@@ -0,0 +1,147 @@
# 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_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

@@ -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()

View File

@@ -10,7 +10,7 @@
add_executable(geometryc)
# Grab the texturec source files
# Grab the geometryc source files
file(
GLOB_RECURSE
GEOMETRYC_SOURCES #

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

@@ -0,0 +1,70 @@
# 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(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()

View File

@@ -1,13 +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(BGFX_BUILD_TOOLS_SHADER)
include(${CMAKE_CURRENT_LIST_DIR}/tools/shaderc.cmake)
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()