diff options
author | Rat <gmstreetrat@gmail.com> | 2015-03-29 17:56:49 +0200 |
---|---|---|
committer | Rat <gmstreetrat@gmail.com> | 2015-03-29 17:56:49 +0200 |
commit | dcd18eef2a8bb3c8eeb5552d76f2af4ad6dc7bfa (patch) | |
tree | 594ac771e6813bc0b9a7f56d2b5f0de3ebdf36f6 /cmake/macros/GroupSources.cmake | |
parent | 81df6b2ad23d4f405ef088c5405bd079e6570a9d (diff) | |
parent | 833d57fa27c782c2e9a211ec19c554d057431243 (diff) |
Merge branch '6.x' of https://github.com/TrinityCore/TrinityCore into 6.x
Diffstat (limited to 'cmake/macros/GroupSources.cmake')
-rw-r--r-- | cmake/macros/GroupSources.cmake | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/cmake/macros/GroupSources.cmake b/cmake/macros/GroupSources.cmake new file mode 100644 index 00000000000..3acb03e7b4c --- /dev/null +++ b/cmake/macros/GroupSources.cmake @@ -0,0 +1,46 @@ +# Copyright (C) 2008-2015 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. + +macro(GroupSources dir) + # Skip this if WITH_SOURCE_TREE is not set (empty string). + if (NOT ${_WITH_SOURCE_TREE} STREQUAL "") + # Include all header and c files + file(GLOB_RECURSE elements RELATIVE ${dir} *.h *.hpp *.c *.cpp *.cc) + + foreach(element ${elements}) + # Extract filename and directory + get_filename_component(element_name ${element} NAME) + get_filename_component(element_dir ${element} DIRECTORY) + + if (NOT ${element_dir} STREQUAL "") + # If the file is in a subdirectory use it as source group. + if (${_WITH_SOURCE_TREE} STREQUAL "flat") + # Build flat structure by using only the first subdirectory. + string(FIND ${element_dir} "/" delemiter_pos) + if (NOT ${delemiter_pos} EQUAL -1) + string(SUBSTRING ${element_dir} 0 ${delemiter_pos} group_name) + source_group("${group_name}" FILES ${dir}/${element}) + else() + # Build hierarchical structure. + # File is in root directory. + source_group("${element_dir}" FILES ${dir}/${element}) + endif() + else() + # Use the full hierarchical structure to build source_groups. + string(REPLACE "/" "\\" group_name ${element_dir}) + source_group("${group_name}" FILES ${dir}/${element}) + endif() + else() + # If the file is in the root directory, place it in the root source_group. + source_group("\\" FILES ${dir}/${element}) + endif() + endforeach() + endif() +endmacro() |