72 lines
2.4 KiB
CMake
72 lines
2.4 KiB
CMake
|
# Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
|
||
|
#
|
||
|
# This file is free software; as a special exception the author gives
|
||
|
# unlimited permission to copy and/or distribute it, with or without
|
||
|
# modifications, as long as this notice is preserved.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful, but
|
||
|
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||
|
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
|
||
|
# Collects all source files into the given variable,
|
||
|
# which is useful to include all sources in subdirectories.
|
||
|
# Ignores full qualified directories listed in the variadic arguments.
|
||
|
#
|
||
|
# Use it like:
|
||
|
# CollectSourceFiles(
|
||
|
# ${CMAKE_CURRENT_SOURCE_DIR}
|
||
|
# COMMON_PRIVATE_SOURCES
|
||
|
# # Exclude
|
||
|
# ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders
|
||
|
# ${CMAKE_CURRENT_SOURCE_DIR}/Platform)
|
||
|
#
|
||
|
function(CollectSourceFiles current_dir variable)
|
||
|
list(FIND ARGN "${current_dir}" IS_EXCLUDED)
|
||
|
if(IS_EXCLUDED EQUAL -1)
|
||
|
file(GLOB COLLECTED_SOURCES
|
||
|
${current_dir}/*.c
|
||
|
${current_dir}/*.cc
|
||
|
${current_dir}/*.cpp
|
||
|
${current_dir}/*.inl
|
||
|
${current_dir}/*.def
|
||
|
${current_dir}/*.h
|
||
|
${current_dir}/*.hh
|
||
|
${current_dir}/*.hpp)
|
||
|
list(APPEND ${variable} ${COLLECTED_SOURCES})
|
||
|
|
||
|
file(GLOB SUB_DIRECTORIES ${current_dir}/*)
|
||
|
foreach(SUB_DIRECTORY ${SUB_DIRECTORIES})
|
||
|
if (IS_DIRECTORY ${SUB_DIRECTORY})
|
||
|
CollectSourceFiles("${SUB_DIRECTORY}" "${variable}" "${ARGN}")
|
||
|
endif()
|
||
|
endforeach()
|
||
|
set(${variable} ${${variable}} PARENT_SCOPE)
|
||
|
endif()
|
||
|
endfunction()
|
||
|
|
||
|
# Collects all subdirectoroies into the given variable,
|
||
|
# which is useful to include all subdirectories.
|
||
|
# Ignores full qualified directories listed in the variadic arguments.
|
||
|
#
|
||
|
# Use it like:
|
||
|
# CollectIncludeDirectories(
|
||
|
# ${CMAKE_CURRENT_SOURCE_DIR}
|
||
|
# COMMON_PUBLIC_INCLUDES
|
||
|
# # Exclude
|
||
|
# ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders
|
||
|
# ${CMAKE_CURRENT_SOURCE_DIR}/Platform)
|
||
|
#
|
||
|
function(CollectIncludeDirectories current_dir variable)
|
||
|
list(FIND ARGN "${current_dir}" IS_EXCLUDED)
|
||
|
if(IS_EXCLUDED EQUAL -1)
|
||
|
list(APPEND ${variable} ${current_dir})
|
||
|
file(GLOB SUB_DIRECTORIES ${current_dir}/*)
|
||
|
foreach(SUB_DIRECTORY ${SUB_DIRECTORIES})
|
||
|
if (IS_DIRECTORY ${SUB_DIRECTORY})
|
||
|
CollectIncludeDirectories("${SUB_DIRECTORY}" "${variable}" "${ARGN}")
|
||
|
endif()
|
||
|
endforeach()
|
||
|
set(${variable} ${${variable}} PARENT_SCOPE)
|
||
|
endif()
|
||
|
endfunction()
|