diff options
author | obache <obache@pkgsrc.org> | 2013-11-23 09:06:09 +0000 |
---|---|---|
committer | obache <obache@pkgsrc.org> | 2013-11-23 09:06:09 +0000 |
commit | f6cafd6051d2431f87b65eeb240fbb839f609c76 (patch) | |
tree | 7bbcde06aac491426396abc17b7ba2b10b332037 /mk | |
parent | 490b32be8fe375c1351feefbd8c9db9412d50def (diff) | |
download | pkgsrc-f6cafd6051d2431f87b65eeb240fbb839f609c76.tar.gz |
Introduce find-headers.mk, ablility to find builtin header files.
Inspired by find-libs.mk and find-files.mk.
Diffstat (limited to 'mk')
-rw-r--r-- | mk/buildlink3/bsd.builtin.mk | 3 | ||||
-rw-r--r-- | mk/buildlink3/find-headers.mk | 104 |
2 files changed, 106 insertions, 1 deletions
diff --git a/mk/buildlink3/bsd.builtin.mk b/mk/buildlink3/bsd.builtin.mk index e9d16bcdf98..8651d90038c 100644 --- a/mk/buildlink3/bsd.builtin.mk +++ b/mk/buildlink3/bsd.builtin.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.builtin.mk,v 1.12 2013/09/04 15:14:45 jperkin Exp $ +# $NetBSD: bsd.builtin.mk,v 1.13 2013/11/23 09:06:09 obache Exp $ # # Copyright (c) 2004-2005 The NetBSD Foundation, Inc. # All rights reserved. @@ -171,4 +171,5 @@ _BUILTIN_PKGS+= ${_pkg_} .endfor .include "../../mk/buildlink3/find-libs.mk" +.include "../../mk/buildlink3/find-headers.mk" .include "../../mk/buildlink3/find-files.mk" diff --git a/mk/buildlink3/find-headers.mk b/mk/buildlink3/find-headers.mk new file mode 100644 index 00000000000..bf3342500ac --- /dev/null +++ b/mk/buildlink3/find-headers.mk @@ -0,0 +1,104 @@ +# $NetBSD: find-headers.mk,v 1.1 2013/11/23 09:06:09 obache Exp $ +# +# Copyright (c) 2005 The NetBSD Foundation, Inc. +# All rights reserved. +# +# This code is derived from software contributed to The NetBSD Foundation +# by Johnny C. Lam. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the NetBSD +# Foundation, Inc. and its contributors. +# 4. Neither the name of The NetBSD Foundation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +# +# This is a "subroutine" that can be included to detect the presence of +# header files in the base system. +# +# The following variables must be defined before including this file: +# +# BUILTIN_FIND_HEADERS_VAR is a list of variables to define. These +# variables take the value of the path to the file that is +# "found". +# +# BUILTIN_FIND_HEADERS.<var> is the list of header files to find, in +# order, on the ${COMPILER_INCLUDE_DIRS}. The variable <var> is set +# to the first path "found" on the filesystem. +# +# Optionally, the following variables may also be defined: +# +# BUILTIN_FIND_GREP.<var> is a regular expression that must be +# matched within a file in order for the file to be considered +# "found". If it isn't defined, then we simply check for the +# existence of the file. +# +# After including this file, the following variables are defined: +# +# <var> is the first of the header file listed in +# ${BUILTIN_FIND_HEADERS.<var>} that is "found" in +# ${COMPILER_INCLUDE_DIRS}, or else it is "__nonexistent__". +# +# An example use is: +# +# BUILTIN_FIND_HEADERS_VAR:= FOO BAR +# +# BUILTIN_FIND_HEADERS.FOO= header1.h header2.h +# BUILTIN_FIND_GREP.FOO= \#define.*FOO +# +# BUILTIN_FIND_HEADERS.BAR= header3.h heaer/4.h +# .include "../../mk/buildlink3/builtin-files.mk" +# + +.if empty(USE_TOOLS:Mecho) +USE_TOOLS+= echo +.endif +.if empty(USE_TOOLS:Mgrep) +USE_TOOLS+= grep +.endif + +.for _var_ in ${BUILTIN_FIND_HEADERS_VAR} +. if !defined(${_var_}) +${_var_}= __nonexistent__ +. for _file_ in ${BUILTIN_FIND_HEADERS.${_var_}} +. for _dir_ in ${COMPILER_INCLUDE_DIRS} +. if !empty(${_var_}:M__nonexistent__) && exists(${_dir_}/${_file_}) +. if !defined(BUILTIN_FIND_GREP.${_var_}) +${_var_}= ${_dir_}/${_file_} +. else +${_var_}!= \ + if ${GREP} -q ${BUILTIN_FIND_GREP.${_var_}:Q} ${_dir_:Q}/${_file_:Q}; then \ + ${ECHO} ${_dir_:Q}/${_file_:Q}; \ + else \ + ${ECHO} __nonexistent__; \ + fi +. endif +. endif +. endfor +. endfor +. endif +MAKEVARS+= ${_var_} +.endfor |