1# Copyright (c) 2007-2012 Hartmut Kaiser
2# Copyright (c) 2011      Bryce Lelbach
3#
4# Distributed under the Boost Software License, Version 1.0. (See accompanying
5# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
7macro(add_hpx_library_headers name globtype)
8  if(MSVC)
9    set(options APPEND)
10    set(one_value_args)
11    set(multi_value_args EXCLUDE GLOBS)
12    cmake_parse_arguments(HEADERS "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
13
14    if(NOT HEADERS_APPEND)
15      set(${name}_HEADERS "" CACHE INTERNAL "Headers for lib${name}." FORCE)
16    endif()
17
18    file(${globtype} headers ${HEADERS_GLOBS})
19
20    foreach(header ${headers})
21      get_filename_component(absolute_path ${header} ABSOLUTE)
22
23      set(add_flag ON)
24
25      if(HEADERS_EXCLUDE)
26        if(${absolute_path} MATCHES ${HEADERS_EXCLUDE})
27          set(add_flag OFF)
28        endif()
29      endif()
30
31      if(add_flag)
32        hpx_debug("add_library_headers.${name}"
33                  "Adding ${absolute_path} to header list for lib${name}")
34        set(${name}_HEADERS ${${name}_HEADERS} ${absolute_path}
35          CACHE INTERNAL "Headers for lib${name}." FORCE)
36      endif()
37    endforeach()
38  endif()
39endmacro()
40
41###############################################################################
42macro(add_hpx_library_headers_noglob name)
43  if(MSVC)
44    set(options APPEND)
45    set(one_value_args)
46    set(multi_value_args EXCLUDE HEADERS)
47    cmake_parse_arguments(HEADERS "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
48
49#    hpx_print_list("DEBUG" "add_hpx_library_sources_noglob.${name}"
50#      "Sources for ${name}" ${HEADERS_HEADERS})
51
52    set(headers ${HEADERS_HEADERS})
53
54    if(NOT HEADERS_APPEND)
55      set(${name}_HEADERS "" CACHE INTERNAL "Headers for lib${name}." FORCE)
56    endif()
57
58    foreach(header ${headers})
59      get_filename_component(absolute_path ${header} ABSOLUTE)
60
61      set(add_flag ON)
62
63      if(HEADERS_EXCLUDE)
64        if(${absolute_path} MATCHES ${HEADERS_EXCLUDE})
65          set(add_flag OFF)
66        endif()
67      endif()
68
69      if(add_flag)
70        hpx_debug("add_library_headers.${name}"
71                  "Adding ${absolute_path} to header list for lib${name}")
72        set(${name}_HEADERS ${${name}_HEADERS} ${absolute_path}
73          CACHE INTERNAL "Headers for lib${name}." FORCE)
74      endif()
75    endforeach()
76  endif()
77endmacro()
78
79