-# NOTE Add caffegen, nnkit, and ann before enco as enco's test framework depends on these projects
-add_subdirectory(caffegen)
-add_subdirectory(nnkit)
-add_subdirectory(ann)
-add_subdirectories(EXCLUDES caffegen nnkit ann)
+function(add_nncc_contrib_directory DIR)
+ string(TOUPPER ${DIR} PREFIX)
+
+ set(BUILD_CONTRIB_${PREFIX} ON CACHE BOOL "Build contrib/${dir}")
+
+ if(BUILD_CONTRIB_${PREFIX})
+ add_subdirectory(${DIR})
+ endif(BUILD_CONTRIB_${PREFIX})
+endfunction(add_nncc_contrib_directory)
+
+function(add_nncc_contrib_directories)
+ # NOTE Add caffegen, nnkit, and ann before enco as enco's test framework depends on these projects
+ add_nncc_contrib_directory(caffegen)
+ add_nncc_contrib_directory(nnkit)
+ add_nncc_contrib_directory(ann)
+
+ list_subdirectories(PROJECT_DIRS EXCLUDES caffegen nnkit ann)
+
+ foreach(PROJECT_DIR IN ITEMS ${PROJECT_DIRS})
+ add_nncc_contrib_directory(${PROJECT_DIR})
+ endforeach(PROJECT_DIR)
+endfunction(add_nncc_contrib_directories)
+
+add_nncc_contrib_directories()