From 8eb2831b7ed1b3062f9fde1b541da55b89bbf6ac Mon Sep 17 00:00:00 2001 From: Josh Cooper Date: Wed, 27 Apr 2022 19:53:05 -0700 Subject: [PATCH] Adds plugins/external/ and auto-populates the cmake within upon creation (#2095) * Adds a plugins sub-directory * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Auto-adds plugins/external sub-directories * Moves plugins/external globbing as to generate plugins/external/cmake * Removes plugins/external/.gitignore since the directory is generated * Fixes cmake error * Moves gitignore for plugins/external to ensure existence for fresh clone * Adds missing EOF newline * Adds requested changes --- .gitignore | 1 - plugins/CMakeLists.txt | 20 ++++++++++++++++++-- plugins/external/.gitignore | 2 ++ 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 plugins/external/.gitignore diff --git a/.gitignore b/.gitignore index 3867b9dbf..8e401a7df 100644 --- a/.gitignore +++ b/.gitignore @@ -72,5 +72,4 @@ tags .idea # external plugins -/plugins/external/ /plugins/CMakeLists.custom.txt diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 22983d617..b8cd25860 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -189,6 +189,17 @@ if(BUILD_SKELETON) add_subdirectory(skeleton) endif() +macro(subdirlist result subdir) + file(GLOB children ABSOLUTE ${subdir}/ ${subdir}/*/) + set(dirlist "") + foreach(child ${children}) + if(IS_DIRECTORY ${child}) + file(RELATIVE_PATH child ${CMAKE_CURRENT_SOURCE_DIR}/${subdir} ${child}) + list(APPEND dirlist ${child}) + endif() + endforeach() + set(${result} ${dirlist}) +endmacro() # To add "external" plugins without committing them to the DFHack repo: # @@ -204,7 +215,7 @@ endif() # 4. build DFHack as normal. The plugins you added will be built as well. if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/external/CMakeLists.txt") - file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/external/CMakeLists.txt" + set(content_str "# Add external plugins here - this file is ignored by git # Recommended: use add_subdirectory() for folders that you have created within @@ -212,9 +223,14 @@ if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/external/CMakeLists.txt") # See the end of /plugins/CMakeLists.txt for more details. ") + subdirlist(SUBDIRS external) + foreach(subdir ${SUBDIRS}) + set(content_str "${content_str}add_subdirectory(${subdir})\n") + endforeach() + file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/external/CMakeLists.txt" ${content_str}) endif() -include("${CMAKE_CURRENT_SOURCE_DIR}/external/CMakeLists.txt") +add_subdirectory(external) # for backwards compatibility if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.custom.txt") diff --git a/plugins/external/.gitignore b/plugins/external/.gitignore new file mode 100644 index 000000000..d6b7ef32c --- /dev/null +++ b/plugins/external/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore