Compare commits

...

15 Commits

Author SHA1 Message Date
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
30 changed files with 683 additions and 216 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

@@ -60,6 +60,11 @@ 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")
if(BGFX_CMAKE_USER_SCRIPT)
include(${BGFX_CMAKE_USER_SCRIPT})
endif()
set_property(CACHE BGFX_LIBRARY_TYPE PROPERTY STRINGS STATIC SHARED)
@@ -89,10 +94,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)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bimg)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bgfx.cmake)
if(BGFX_BUILD_TOOLS)
@@ -136,6 +145,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 +172,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,6 +206,9 @@ 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)

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

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

View File

@@ -59,6 +59,153 @@ 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_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")

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 ${BIMG_DIR})
message(SEND_ERROR "Could not load bimg, directory does not exist. ${BIMG_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 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,31 @@
# 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)
# 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")
target_link_libraries(texturec bimg)
if(BGFX_CUSTOM_TARGETS)
if(BGFX_BUILD_TOOLS 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

@@ -19,3 +19,13 @@ 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")
if(BGFX_BUILD_TOOLS 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

@@ -146,7 +146,7 @@ function(add_example ARG_NAME)
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)
target_link_libraries(example-${ARG_NAME} PUBLIC bgfx bx bimg bimg_decode dear-imgui meshoptimizer)
if(BGFX_WITH_GLFW)
find_package(glfw3 REQUIRED)
target_link_libraries(example-${ARG_NAME} PUBLIC glfw)

View File

@@ -8,11 +8,6 @@
# 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()
if(BGFX_BUILD_TOOLS_SHADER)
include(${CMAKE_CURRENT_LIST_DIR}/tools/shaderc.cmake)
endif()
@@ -23,6 +18,5 @@ if(BGFX_BUILD_TOOLS_GEOMETRY)
endif()
if(BGFX_BUILD_TOOLS_TEXTURE)
include(${CMAKE_CURRENT_LIST_DIR}/tools/texturec.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/tools/texturev.cmake)
endif()