xo-cmake: generate .build/reconfigure.sh script to rerun cmake
This commit is contained in:
parent
c7d6c5bb95
commit
9d7679c3ad
3 changed files with 46 additions and 9 deletions
|
|
@ -4,13 +4,10 @@ cmake_minimum_required(VERSION 3.10)
|
||||||
|
|
||||||
project(xo-umbrella VERSION 1.0)
|
project(xo-umbrella VERSION 1.0)
|
||||||
|
|
||||||
# ----------------------------------------------------------------
|
|
||||||
# global build settings
|
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
|
||||||
include(cmake/xo-bootstrap-macros.cmake)
|
|
||||||
|
|
||||||
# Adopting submodule builds directly into this cmake.
|
# Adopting submodule builds directly into this cmake.
|
||||||
|
# Want this before including bootstrap macros,
|
||||||
|
# so local ./xo-cmake supersedes installed version
|
||||||
|
#
|
||||||
# Submodule builds will pickup dependent xo artifacts directly
|
# Submodule builds will pickup dependent xo artifacts directly
|
||||||
# from sibling build dirs.
|
# from sibling build dirs.
|
||||||
# (Contrast with a build that relies on install step).
|
# (Contrast with a build that relies on install step).
|
||||||
|
|
@ -26,6 +23,12 @@ include(cmake/xo-bootstrap-macros.cmake)
|
||||||
#
|
#
|
||||||
set(XO_SUBMODULE_BUILD True)
|
set(XO_SUBMODULE_BUILD True)
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------
|
||||||
|
# global build settings
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
include(cmake/xo-bootstrap-macros.cmake)
|
||||||
|
|
||||||
# toplevel source directory; used only with XO_SUBMODULE_BUILD
|
# toplevel source directory; used only with XO_SUBMODULE_BUILD
|
||||||
set(XO_UMBRELLA_SOURCE_DIR ${CMAKE_SOURCE_DIR})
|
set(XO_UMBRELLA_SOURCE_DIR ${CMAKE_SOURCE_DIR})
|
||||||
set(XO_UMBRELLA_REPO_SUBDIR .)
|
set(XO_UMBRELLA_REPO_SUBDIR .)
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,13 @@ endif()
|
||||||
|
|
||||||
message(STATUS "XO_CMAKE_CONFIG_EXECUTABLE=${XO_CMAKE_CONFIG_EXECUTABLE}")
|
message(STATUS "XO_CMAKE_CONFIG_EXECUTABLE=${XO_CMAKE_CONFIG_EXECUTABLE}")
|
||||||
|
|
||||||
if (NOT XO_SUBMODULE_BUILD)
|
if (XO_SUBMODULE_BUILD)
|
||||||
|
if (("${CMAKE_MODULE_PATH}" STREQUAL "") OR ("${CMAKE_MODULE_PATH}" STREQUAL prefix))
|
||||||
|
# local version of xo-cmake macros
|
||||||
|
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/xo-cmake/cmake")
|
||||||
|
message(STATUS "CMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
if (("${CMAKE_MODULE_PATH}" STREQUAL "") OR ("${CMAKE_MODULE_PATH}" STREQUAL prefix))
|
if (("${CMAKE_MODULE_PATH}" STREQUAL "") OR ("${CMAKE_MODULE_PATH}" STREQUAL prefix))
|
||||||
# default to typical install location for xo-project-macros
|
# default to typical install location for xo-project-macros
|
||||||
execute_process(COMMAND ${XO_CMAKE_CONFIG_EXECUTABLE} --cmake-module-path OUTPUT_VARIABLE CMAKE_MODULE_PATH)
|
execute_process(COMMAND ${XO_CMAKE_CONFIG_EXECUTABLE} --cmake-module-path OUTPUT_VARIABLE CMAKE_MODULE_PATH)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
option(XO_ENABLE_ASM "generate assembler output (.s files)" OFF)
|
||||||
|
|
||||||
macro(xo_cxx_config_message)
|
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 "XO_CMAKE_CONFIG_EXECUTABLE=${XO_CMAKE_CONFIG_EXECUTABLE}")
|
||||||
message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
|
message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
@ -40,7 +40,7 @@ endmacro()
|
||||||
# deprecated -- prefer xo_cxx_toplevel_options3()
|
# deprecated -- prefer xo_cxx_toplevel_options3()
|
||||||
macro(xo_cxx_toplevel_options2)
|
macro(xo_cxx_toplevel_options2)
|
||||||
if (NOT DEFINED _xo_cxx_toplevel_done)
|
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)
|
enable_language(CXX)
|
||||||
xo_toplevel_compile_options()
|
xo_toplevel_compile_options()
|
||||||
|
|
@ -76,6 +76,7 @@ endmacro()
|
||||||
macro(xo_cxx_toplevel_options3)
|
macro(xo_cxx_toplevel_options3)
|
||||||
xo_cxx_toplevel_options2()
|
xo_cxx_toplevel_options2()
|
||||||
xo_toplevel_config2()
|
xo_toplevel_config2()
|
||||||
|
xo_generate_reconfigure_script()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
# deprecated, I think?
|
# deprecated, I think?
|
||||||
|
|
@ -270,6 +271,33 @@ macro(xo_toplevel_asm_config2)
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
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.
|
# target to build+install coverage report.
|
||||||
#
|
#
|
||||||
macro(xo_utest_coverage_config2)
|
macro(xo_utest_coverage_config2)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue