]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - share/mk/bsd.incs.mk
Backport security fix for absolute path traversal vulnerability in bsdcpio.
[FreeBSD/stable/10.git] / share / mk / bsd.incs.mk
1 # $FreeBSD$
2
3 .if !target(__<bsd.init.mk>__)
4 .error bsd.incs.mk cannot be included directly.
5 .endif
6
7 .if !defined(NO_INCS) && ${MK_TOOLCHAIN} != "no"
8
9 INCSGROUPS?=    INCS
10
11 _INCSGROUPS=    ${INCSGROUPS:C,[/*],_,g}
12
13 .if !target(buildincludes)
14 .for group in ${_INCSGROUPS}
15 buildincludes: ${${group}}
16 .endfor
17 .endif
18
19 all: buildincludes
20
21 .if !target(installincludes)
22 .for group in ${_INCSGROUPS}
23 .if defined(${group}) && !empty(${group})
24
25 ${group}OWN?=   ${BINOWN}
26 ${group}GRP?=   ${BINGRP}
27 ${group}MODE?=  ${NOBINMODE}
28 ${group}DIR?=   ${INCLUDEDIR}
29
30 _${group}INCS=
31 .for header in ${${group}}
32 .if defined(${group}OWN_${header:T}) || defined(${group}GRP_${header:T}) || \
33     defined(${group}MODE_${header:T}) || defined(${group}DIR_${header:T}) || \
34     defined(${group}NAME_${header:T})
35 ${group}OWN_${header:T}?=       ${${group}OWN}
36 ${group}GRP_${header:T}?=       ${${group}GRP}
37 ${group}MODE_${header:T}?=      ${${group}MODE}
38 ${group}DIR_${header:T}?=       ${${group}DIR}
39 .if defined(${group}NAME)
40 ${group}NAME_${header:T}?=      ${${group}NAME}
41 .else
42 ${group}NAME_${header:T}?=      ${header:T}
43 .endif
44 installincludes: _${group}INS_${header:T}
45 _${group}INS_${header:T}: ${header}
46         ${INSTALL} -C -o ${${group}OWN_${.ALLSRC:T}} \
47             -g ${${group}GRP_${.ALLSRC:T}} -m ${${group}MODE_${.ALLSRC:T}} \
48             ${.ALLSRC} \
49             ${DESTDIR}${${group}DIR_${.ALLSRC:T}}/${${group}NAME_${.ALLSRC:T}}
50 .else
51 _${group}INCS+= ${header}
52 .endif
53 .endfor
54 .if !empty(_${group}INCS)
55 installincludes: _${group}INS
56 _${group}INS: ${_${group}INCS}
57 .if defined(${group}NAME)
58         ${INSTALL} -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \
59             ${.ALLSRC} ${DESTDIR}${${group}DIR}/${${group}NAME}
60 .else
61         ${INSTALL} -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \
62             ${.ALLSRC} ${DESTDIR}${${group}DIR}
63 .endif
64 .endif
65
66 .endif # defined(${group}) && !empty(${group})
67 .endfor
68
69 .if defined(INCSLINKS) && !empty(INCSLINKS)
70 installincludes:
71         @set ${INCSLINKS}; \
72         while test $$# -ge 2; do \
73                 l=$$1; \
74                 shift; \
75                 t=${DESTDIR}$$1; \
76                 shift; \
77                 ${ECHO} $$t -\> $$l; \
78                 ${INSTALL_SYMLINK} $$l $$t; \
79         done; true
80 .endif
81 .endif # !target(installincludes)
82
83 realinstall: installincludes
84 .ORDER: beforeinstall installincludes
85
86 .endif # !defined(NO_INCS) && ${MK_TOOLCHAIN} != "no"