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