Add option to add user script

Useful for packagers like pacman and vcpkg to add custom cmake logic
instead of patching code.
This commit is contained in:
Sandy Carter
2023-01-13 23:22:19 -05:00
committed by Sandy
parent 03951e805c
commit 1c7ef2d48f
2 changed files with 20 additions and 0 deletions

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)
@@ -136,6 +141,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}"
@@ -188,6 +202,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

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