xref: /freebsd/contrib/bmake/mk/files.mk (revision c59c3bf34db360695f07735bebc76a768cac5afc)
1*c59c3bf3SSimon J. Gerraty# SPDX-License-Identifier: BSD-2-Clause
2*c59c3bf3SSimon J. Gerraty#
3*c59c3bf3SSimon J. Gerraty# $Id: files.mk,v 1.8 2024/02/17 17:26:57 sjg Exp $
4cac6fd11SSimon J. Gerraty#
5cac6fd11SSimon J. Gerraty#	@(#) Copyright (c) 2017, Simon J. Gerraty
6cac6fd11SSimon J. Gerraty#
7cac6fd11SSimon J. Gerraty#	This file is provided in the hope that it will
8cac6fd11SSimon J. Gerraty#	be of use.  There is absolutely NO WARRANTY.
9cac6fd11SSimon J. Gerraty#	Permission to copy, redistribute or otherwise
10cac6fd11SSimon J. Gerraty#	use this file is hereby granted provided that
11cac6fd11SSimon J. Gerraty#	the above copyright notice and this notice are
12cac6fd11SSimon J. Gerraty#	left intact.
13cac6fd11SSimon J. Gerraty#
14cac6fd11SSimon J. Gerraty#	Please send copies of changes and bug-fixes to:
15cac6fd11SSimon J. Gerraty#	sjg@crufty.net
16cac6fd11SSimon J. Gerraty#
17cac6fd11SSimon J. Gerraty
18cac6fd11SSimon J. Gerraty.include <init.mk>
19cac6fd11SSimon J. Gerraty
20cac6fd11SSimon J. GerratyFILES_INSTALL_OWN ?= -o ${SHAREOWN} -g ${SHAREGRP}
21cac6fd11SSimon J. GerratyFILESMODE ?= ${SHAREMODE}
22cac6fd11SSimon J. GerratyFILES_COPY ?= -C
23cac6fd11SSimon J. Gerraty
24cac6fd11SSimon J. GerratyFILESGROUPS ?= FILES
25cac6fd11SSimon J. GerratyFILESGROUPS := ${FILESGROUPS:O:u}
26cac6fd11SSimon J. Gerraty
27cac6fd11SSimon J. Gerraty.if !target(buildfiles)
28cac6fd11SSimon J. Gerraty.for group in ${FILESGROUPS}
29cac6fd11SSimon J. Gerratybuildfiles: ${${group}}
30cac6fd11SSimon J. Gerraty.endfor
31cac6fd11SSimon J. Gerraty.endif
32cac6fd11SSimon J. Gerratybuildfiles:
33cac6fd11SSimon J. Gerratyrealbuild: buildfiles
34cac6fd11SSimon J. Gerraty
35cac6fd11SSimon J. Gerraty# there is no default FILESDIR so
36cac6fd11SSimon J. Gerraty# ignore group if ${group}DIR is not defined
37cac6fd11SSimon J. Gerraty.for group in ${FILESGROUPS}
38cac6fd11SSimon J. Gerraty.if !empty(${group}) && defined(${group}DIR)
39cac6fd11SSimon J. Gerraty.if ${group} != "FILES"
40cac6fd11SSimon J. Gerraty${group}_INSTALL_OWN ?= ${FILES_INSTALL_OWN}
41cac6fd11SSimon J. Gerraty.endif
42cac6fd11SSimon J. Gerraty# incase we are staging
43cac6fd11SSimon J. GerratySTAGE_DIR.${group} ?= ${STAGE_OBJTOP}${${group}DIR}
44cac6fd11SSimon J. Gerraty
45cac6fd11SSimon J. Gerraty.for file in ${${group}:O:u}
46cac6fd11SSimon J. Gerraty${group}_INSTALL_OWN.${file:T} ?= ${${group}_INSTALL_OWN}
47cac6fd11SSimon J. Gerraty${group}DIR.${file:T} ?= ${${group}DIR}
48cac6fd11SSimon J. Gerratyfile_mkdir_list += ${${group}DIR.${file:T}}
49cac6fd11SSimon J. Gerraty
50cac6fd11SSimon J. Gerraty.if defined(${group}NAME.${file:T})
51cac6fd11SSimon J. GerratySTAGE_AS_SETS += ${group}
52cac6fd11SSimon J. GerratySTAGE_AS_${file} = ${${group}NAME.${file:T}}
53cac6fd11SSimon J. Gerratystage_as.${group}: ${file}
54cac6fd11SSimon J. Gerraty
55cac6fd11SSimon J. Gerratyinstallfiles: installfiles.${group}.${file:T}
56cac6fd11SSimon J. Gerratyinstallfiles.${group}.${file:T}: ${file} file_mkdirs
57cac6fd11SSimon J. Gerraty	${INSTALL} ${FILES_COPY} ${${group}_INSTALL_OWN.${file:T}} \
58cac6fd11SSimon J. Gerraty	-m ${FILESMODE} ${.ALLSRC:Nfile_mkdirs} ${DESTDIR}${${group}DIR}/${${group}NAME.${file:T}}
59cac6fd11SSimon J. Gerraty
60cac6fd11SSimon J. Gerraty.else
61cac6fd11SSimon J. GerratySTAGE_SETS += ${group}
62cac6fd11SSimon J. Gerratystage_files.${group}: ${file}
63cac6fd11SSimon J. Gerratyinstallfiles.${group}: ${file}
64cac6fd11SSimon J. Gerratyinstallfiles: installfiles.${group}
65cac6fd11SSimon J. Gerraty.endif
66cac6fd11SSimon J. Gerraty
67cac6fd11SSimon J. Gerraty.endfor				# file
68cac6fd11SSimon J. Gerraty
69cac6fd11SSimon J. Gerratyinstallfiles.${group}: file_mkdirs
70cac6fd11SSimon J. Gerraty	${INSTALL} ${FILES_COPY} ${${group}_INSTALL_OWN} -m ${FILESMODE} \
71cac6fd11SSimon J. Gerraty	${.ALLSRC:Nfile_mkdirs:O:u} ${DESTDIR}${${group}DIR}
72cac6fd11SSimon J. Gerraty
73cac6fd11SSimon J. Gerraty.endif				# !empty
74cac6fd11SSimon J. Gerraty.endfor				# group
75cac6fd11SSimon J. Gerraty
76cac6fd11SSimon J. Gerratyfile_mkdirs:
77cac6fd11SSimon J. Gerraty	@for d in ${file_mkdir_list:O:u}; do \
78cac6fd11SSimon J. Gerraty		test -d ${DESTDIR}$$d || \
79cac6fd11SSimon J. Gerraty		${INSTALL} -d ${FILES_INSTALL_OWN} -m 775 ${DESTDIR}$$d; \
80cac6fd11SSimon J. Gerraty	done
81cac6fd11SSimon J. Gerraty
82cac6fd11SSimon J. Gerratybeforeinstall:
83cac6fd11SSimon J. Gerratyinstallfiles:
84cac6fd11SSimon J. Gerratyrealinstall:	installfiles
85cac6fd11SSimon J. Gerraty.ORDER: beforeinstall installfiles
86