diff options
| author | Naios <naios-dev@live.de> | 2016-03-14 15:45:39 +0100 | 
|---|---|---|
| committer | Naios <naios-dev@live.de> | 2016-03-18 02:52:57 +0100 | 
| commit | abda7a910a760687f9c1b9e0893314e04982c0f1 (patch) | |
| tree | 3b4d14aa9a46abd347571956e126722080972371 /cmake/macros/AutoCollect.cmake | |
| parent | 2413a82b9343178b613bc6309125eecec8aa9123 (diff) | |
CMake: Use inherited dependencies in common and tools
Diffstat (limited to 'cmake/macros/AutoCollect.cmake')
| -rw-r--r-- | cmake/macros/AutoCollect.cmake | 71 | 
1 files changed, 71 insertions, 0 deletions
| diff --git a/cmake/macros/AutoCollect.cmake b/cmake/macros/AutoCollect.cmake new file mode 100644 index 00000000000..cddd3a20290 --- /dev/null +++ b/cmake/macros/AutoCollect.cmake @@ -0,0 +1,71 @@ +# 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() | 
