From 1c7ef2d48fef0b5dcb8b424718ff886cc7b5af7d Mon Sep 17 00:00:00 2001 From: Sandy Carter Date: Fri, 13 Jan 2023 23:22:19 -0500 Subject: [PATCH] Add option to add user script Useful for packagers like pacman and vcpkg to add custom cmake logic instead of patching code. --- CMakeLists.txt | 17 +++++++++++++++++ cmake/Config.cmake.in | 3 +++ 2 files changed, 20 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 004f42a..21aaf69 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in index d1eb0c0..45462bb 100644 --- a/cmake/Config.cmake.in +++ b/cmake/Config.cmake.in @@ -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?