summaryrefslogtreecommitdiff
path: root/infra/nnfw/cmake/modules/ExtendCMakeFunction.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'infra/nnfw/cmake/modules/ExtendCMakeFunction.cmake')
-rw-r--r--infra/nnfw/cmake/modules/ExtendCMakeFunction.cmake27
1 files changed, 27 insertions, 0 deletions
diff --git a/infra/nnfw/cmake/modules/ExtendCMakeFunction.cmake b/infra/nnfw/cmake/modules/ExtendCMakeFunction.cmake
new file mode 100644
index 000000000..06b7c768d
--- /dev/null
+++ b/infra/nnfw/cmake/modules/ExtendCMakeFunction.cmake
@@ -0,0 +1,27 @@
+function(list_subdirectories OUTPUT_VARIABLE)
+ cmake_parse_arguments(ARG "" "" "EXCLUDES" ${ARGN})
+
+ file(GLOB PROJECT_FILES
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ "*/CMakeLists.txt")
+
+ foreach(PROJECT_FILE IN ITEMS ${PROJECT_FILES})
+ get_filename_component(PROJECT_DIR ${PROJECT_FILE} DIRECTORY)
+ list(FIND ARG_EXCLUDES ${PROJECT_DIR} PROJECT_INDEX)
+ if(${PROJECT_INDEX} EQUAL -1)
+ list(APPEND PROJECT_LIST ${PROJECT_DIR})
+ endif(${PROJECT_INDEX} EQUAL -1)
+ endforeach(PROJECT_FILE)
+
+ set(${OUTPUT_VARIABLE} ${PROJECT_LIST} PARENT_SCOPE)
+endfunction(list_subdirectories)
+
+function(add_subdirectories)
+ cmake_parse_arguments(ARG "" "" "EXCLUDES" ${ARGN})
+
+ list_subdirectories(PROJECT_DIRS EXCLUDES ${ARG_EXCLUDES})
+
+ foreach(PROJECT_DIR IN ITEMS ${PROJECT_DIRS})
+ add_subdirectory(${PROJECT_DIR})
+ endforeach(PROJECT_DIR)
+endfunction(add_subdirectories)