From 74faab3fb4b541de56634c4ff4fa361bbc335d99 Mon Sep 17 00:00:00 2001 From: Robert MacGregor Date: Sat, 21 May 2022 20:01:23 -0400 Subject: [PATCH] * Feature: Implement scanning for sub projects. --- CMakeLists.txt | 4 +++- Engine/source/CMakeLists.txt | 23 +++++++++++++++++++++-- Tools/CMake/basics.cmake | 11 +++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 04e348e2f..4359d1b4e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,9 +78,11 @@ set(TORQUE_NO_DSO_GENERATION ON) if(NOT TORQUE_SCRIPT_EXTENSION) set(TORQUE_SCRIPT_EXTENSION "tscript" CACHE STRING "The default script extension to use for TorqueScript files") endif() - mark_as_advanced(TORQUE_SCRIPT_EXTENSION) +set(TORQUE_MODULE_USER_PATH "" CACHE PATH "Additional search path for modules aside from the default Tools/CMake/modules.") +mark_as_advanced(TORQUE_MODULE_USER_PATH) + option(TORQUE_USE_ZENITY "use the Zenity backend for NFD" OFF) mark_as_advanced(TORQUE_USE_ZENITY) diff --git a/Engine/source/CMakeLists.txt b/Engine/source/CMakeLists.txt index 9575c8c46..13b635ba0 100644 --- a/Engine/source/CMakeLists.txt +++ b/Engine/source/CMakeLists.txt @@ -115,8 +115,8 @@ endif (WIN32) # Handle platformSDL file(GLOB TORQUE_PLATFORM_SDL_SOURCES "platformSDL/*.cpp" "platformSDL/threads/*.cpp") -set(TORQUE_COMPILE_DEFINITIONS ICE_NO_DLL PCRE_STATIC TORQUE_ADVANCED_LIGHTING TORQUE_SHADERGEN - TORQUE_OPENGL TORQUE_OPCODE TORQUE_ASSIMP TORQUE_SDL TORQUE_COLLADA +set(TORQUE_COMPILE_DEFINITIONS ICE_NO_DLL PCRE_STATIC TORQUE_ADVANCED_LIGHTING TORQUE_SHADERGEN + TORQUE_OPENGL TORQUE_OPCODE TORQUE_ASSIMP TORQUE_SDL TORQUE_COLLADA TORQUE_UNICODE UNICODE _UNICODE) ################# Start building libs ################### @@ -153,6 +153,12 @@ endif (APPLE) # Search module directories set(TORQUE_MODULE_PATHS "${CMAKE_SOURCE_DIR}/Tools/CMake/modules") + +message("PATH: ${TORQUE_MODULE_USER_PATH}") +if (NOT "${TORQUE_MODULE_USER_PATH}" STREQUAL "") + list(APPEND TORQUE_MODULE_PATHS "${TORQUE_MODULE_USER_PATH}") +endif() + foreach (TORQUE_MODULE_PATH ${TORQUE_MODULE_PATHS}) # First find simple cmake scripts file(GLOB MODULE_SCRIPTS "${TORQUE_MODULE_PATH}/*.cmake") @@ -162,6 +168,19 @@ foreach (TORQUE_MODULE_PATH ${TORQUE_MODULE_PATHS}) message("Including Module Script: ${TORQUE_MODULE_SCRIPT}") include(${TORQUE_MODULE_SCRIPT}) endforeach() + + # Next find sub projects + SUBDIRLIST(POSSIBLE_PROJECTS "${TORQUE_MODULE_PATH}") + foreach (POSSIBLE_PROJECT ${POSSIBLE_PROJECTS}) + # Retrieve the absolute path of this possible project + get_filename_component(POSSIBLE_PROJECT_ABSOLUTEPATH "${POSSIBLE_PROJECT}" + REALPATH BASE_DIR "${TORQUE_MODULE_PATH}") + + message("SCANNING: ${POSSIBLE_PROJECT_ABSOLUTEPATH}") + if (EXISTS "${POSSIBLE_PROJECT_ABSOLUTEPATH}/CMakeLists.txt") + add_subdirectory("${POSSIBLE_PROJECT_ABSOLUTEPATH}" ${CMAKE_BINARY_DIR}/temp/${POSSIBLE_PROJECT} EXCLUDE_FROM_ALL) + endif() + endforeach() endforeach() # Final executable diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index 9640bd743..955e060b3 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -36,3 +36,14 @@ function(installTemplate templateName) add_subdirectory("${CMAKE_SOURCE_DIR}/Templates/${templateName}") endfunction() + +MACRO(SUBDIRLIST result curdir) + FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) + SET(dirlist "") + FOREACH(child ${children}) + IF(IS_DIRECTORY ${curdir}/${child}) + LIST(APPEND dirlist ${child}) + ENDIF() + ENDFOREACH() + SET(${result} ${dirlist}) +ENDMACRO()