Move definition of configure_sources CMake function to utils module.
[platform/upstream/gflags.git] / cmake / utils.cmake
1 ## Utility CMake functions.
2
3 # ----------------------------------------------------------------------------
4 ## Extract version numbers from version string.
5 function (version_numbers VERSION MAJOR MINOR PATCH)
6   if (VERSION MATCHES "([0-9]+)(\\.[0-9]+)?(\\.[0-9]+)?(rc[1-9][0-9]*|[a-z]+)?")
7     if (CMAKE_MATCH_1)
8       set (VERSION_MAJOR ${CMAKE_MATCH_1})
9     else ()
10       set (VERSION_MAJOR 0)
11     endif ()
12     if (CMAKE_MATCH_2)
13       set (VERSION_MINOR ${CMAKE_MATCH_2})
14       string (REGEX REPLACE "^\\." "" VERSION_MINOR "${VERSION_MINOR}")
15     else ()
16       set (VERSION_MINOR 0)
17     endif ()
18     if (CMAKE_MATCH_3)
19       set (VERSION_PATCH ${CMAKE_MATCH_3})
20       string (REGEX REPLACE "^\\." "" VERSION_PATCH "${VERSION_PATCH}")
21     else ()
22       set (VERSION_PATCH 0)
23     endif ()
24   else ()
25     set (VERSION_MAJOR 0)
26     set (VERSION_MINOR 0)
27     set (VERSION_PATCH 0)
28   endif ()
29   set ("${MAJOR}" "${VERSION_MAJOR}" PARENT_SCOPE)
30   set ("${MINOR}" "${VERSION_MINOR}" PARENT_SCOPE)
31   set ("${PATCH}" "${VERSION_PATCH}" PARENT_SCOPE)
32 endfunction ()
33
34 # ----------------------------------------------------------------------------
35 ## Configure source files with .in suffix
36 function (configure_sources out)
37   set (tmp)
38   foreach (src IN LISTS ARGN)
39     if (src MATCHES ".h$" AND EXISTS "${PROJECT_SOURCE_DIR}/src/${src}.in")
40       configure_file ("${PROJECT_SOURCE_DIR}/src/${src}.in" "${PROJECT_BINARY_DIR}/include/${GFLAGS_NAMESPACE}/${src}" @ONLY)
41       list (APPEND tmp "${PROJECT_BINARY_DIR}/include/${GFLAGS_NAMESPACE}/${src}")
42     else ()
43       list (APPEND tmp "${PROJECT_SOURCE_DIR}/src/${src}")
44     endif ()
45   endforeach ()
46   set (${out} "${tmp}" PARENT_SCOPE)
47 endfunction ()