diff --git a/cmake/xo_macros/xo_cxx.cmake b/cmake/xo_macros/xo_cxx.cmake index 31e8b879..d07fb3ad 100644 --- a/cmake/xo_macros/xo_cxx.cmake +++ b/cmake/xo_macros/xo_cxx.cmake @@ -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)