xo-cmake: generate .build/reconfigure.sh script to rerun cmake

This commit is contained in:
Roland Conybeare 2026-01-11 14:05:05 -05:00
commit 455ec899d3

View file

@ -5,7 +5,7 @@ option(XO_ENABLE_OPENGL "enable opengl dependency for imgui apps" ON)
option(XO_ENABLE_ASM "generate assembler output (.s files)" OFF)
macro(xo_cxx_config_message)
message(STATUS "GUESSED_CMAKE_CMD=cmake -DXO_CMAKE_CONFIG_EXECUTABLE=${XO_CMAKE_CONFIG_EXECUTABLE} -DENABLE_TESTING=${ENABLE_TESTING} -DXO_ENABLE_DOCS=${XO_ENABLE_DCS} -DXO_ENABLE_EXAMPLES=${XO_ENABLE_EXAMPLES} -DXO_ENABLE_VULKAN=${XO_ENABLE_VULKAN} -DXO_ENABLE_OPENGL=${XO_ENABLE_OPENGL} -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH} -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_DOCDIR=${CMAKE_INSTALL_DOCDIR} -B ${CMAKE_BINARY_DIR}")
message(STATUS "GUESSED_CMAKE_CMD=cmake -DXO_CMAKE_CONFIG_EXECUTABLE=${XO_CMAKE_CONFIG_EXECUTABLE} -DENABLE_TESTING=${ENABLE_TESTING} -DXO_ENABLE_DOCS=${XO_ENABLE_DOCS} -DXO_ENABLE_ASM=${XO_ENABLE_ASM} -DXO_ENABLE_EXAMPLES=${XO_ENABLE_EXAMPLES} -DXO_ENABLE_VULKAN=${XO_ENABLE_VULKAN} -DXO_ENABLE_OPENGL=${XO_ENABLE_OPENGL} -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH} -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_DOCDIR=${CMAKE_INSTALL_DOCDIR} -B ${CMAKE_BINARY_DIR}")
message(STATUS "XO_CMAKE_CONFIG_EXECUTABLE=${XO_CMAKE_CONFIG_EXECUTABLE}")
message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
endmacro()
@ -40,7 +40,7 @@ endmacro()
# deprecated -- prefer xo_cxx_toplevel_options3()
macro(xo_cxx_toplevel_options2)
if (NOT DEFINED _xo_cxx_toplevel_done)
message("xo_cxx_toplevel_options2: PROJECT=${PROJECT_NAME}")
message(STATUS "xo_cxx_toplevel_options2: PROJECT=${PROJECT_NAME}")
enable_language(CXX)
xo_toplevel_compile_options()
@ -76,6 +76,7 @@ endmacro()
macro(xo_cxx_toplevel_options3)
xo_cxx_toplevel_options2()
xo_toplevel_config2()
xo_generate_reconfigure_script()
endmacro()
# deprecated, I think?
@ -270,6 +271,33 @@ macro(xo_toplevel_asm_config2)
endif()
endmacro()
function(xo_generate_reconfigure_script)
set(_reconfigure_script "${CMAKE_BINARY_DIR}/reconfigure.sh")
# In submodule build: only generate at umbrella toplevel
# In standalone build: always generate
if(XO_SUBMODULE_BUILD AND NOT (CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR))
return()
endif()
file(WRITE ${_reconfigure_script} "#!/bin/bash\n")
file(APPEND ${_reconfigure_script} "# Generated by cmake - rerun to reconfigure\n")
file(APPEND ${_reconfigure_script} "cmake \\\n")
file(APPEND ${_reconfigure_script} " -B ${CMAKE_BINARY_DIR} \\\n")
file(APPEND ${_reconfigure_script} " -S ${CMAKE_SOURCE_DIR} \\\n")
file(APPEND ${_reconfigure_script} " -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \\\n")
file(APPEND ${_reconfigure_script} " -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} \\\n")
file(APPEND ${_reconfigure_script} " -DXO_ENABLE_DOCS=${XO_ENABLE_DOCS} \\\n")
file(APPEND ${_reconfigure_script} " -DXO_ENABLE_EXAMPLES=${XO_ENABLE_EXAMPLES} \\\n")
file(APPEND ${_reconfigure_script} " -DXO_ENABLE_ASM=${XO_ENABLE_ASM} \\\n")
file(APPEND ${_reconfigure_script} " \"$@\"\n")
file(CHMOD ${_reconfigure_script} PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
message(STATUS "Generated ${_reconfigure_script}")
endfunction()
# target to build+install coverage report.
#
macro(xo_utest_coverage_config2)