xref: /freebsd/contrib/bmake/mk/scripts.mk (revision c59c3bf34db360695f07735bebc76a768cac5afc)
1*c59c3bf3SSimon J. Gerraty# SPDX-License-Identifier: BSD-2-Clause
2*c59c3bf3SSimon J. Gerraty#
3*c59c3bf3SSimon J. Gerraty# $Id: scripts.mk,v 1.5 2024/02/17 17:26:57 sjg Exp $
4cac6fd11SSimon J. Gerraty#
5cac6fd11SSimon J. Gerraty#	@(#) Copyright (c) 2006, 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#
173cbdda60SSimon J. Gerraty
183cbdda60SSimon J. Gerraty.include <init.mk>
193cbdda60SSimon J. Gerraty
20cac6fd11SSimon J. GerratySCRIPTSGROUPS ?= SCRIPTS
21cac6fd11SSimon J. GerratySCRIPTSGROUPS := ${SCRIPTSGROUPS:O:u}
223cbdda60SSimon J. Gerraty
233cbdda60SSimon J. GerratySCRIPTSDIR?=	${BINDIR}
243cbdda60SSimon J. GerratySCRIPTSOWN?=	${BINOWN}
253cbdda60SSimon J. GerratySCRIPTSGRP?=	${BINGRP}
263cbdda60SSimon J. GerratySCRIPTSMODE?=	${BINMODE}
273cbdda60SSimon J. Gerraty
28cac6fd11SSimon J. GerratySCRIPTS_INSTALL_OWN?= -o ${SCRIPTSOWN} -g ${SCRIPTSGRP}
29cac6fd11SSimon J. GerratySCRIPTS_COPY ?= -C
30cac6fd11SSimon J. Gerraty
313cbdda60SSimon J. Gerraty# how we get script name from src
323cbdda60SSimon J. GerratySCRIPTSNAME_MOD?=T:R
333cbdda60SSimon J. Gerraty
34cac6fd11SSimon J. Gerraty.if !target(buildfiles)
35cac6fd11SSimon J. Gerraty.for group in ${SCRIPTSGROUPS}
36cac6fd11SSimon J. Gerratybuildfiles: ${${group}}
373cbdda60SSimon J. Gerraty.endfor
383cbdda60SSimon J. Gerraty.endif
39cac6fd11SSimon J. Gerratybuildfiles:
40cac6fd11SSimon J. Gerratyrealbuild: buildfiles
413cbdda60SSimon J. Gerraty
42cac6fd11SSimon J. Gerraty.for group in ${SCRIPTSGROUPS}
43cac6fd11SSimon J. Gerraty.if !empty(${group}) && defined(${group}DIR)
44cac6fd11SSimon J. Gerraty.if ${group} != "SCRIPTS"
45cac6fd11SSimon J. Gerraty${group}_INSTALL_OWN ?= ${SCRIPTS_INSTALL_OWN}
46cac6fd11SSimon J. Gerraty.endif
47cac6fd11SSimon J. Gerraty# incase we are staging
48cac6fd11SSimon J. GerratySTAGE_DIR.${group} ?= ${STAGE_OBJTOP}${${group}DIR}
49cac6fd11SSimon J. Gerraty
50cac6fd11SSimon J. Gerraty.for script in ${${group}:O:u}
51cac6fd11SSimon J. Gerraty${group}_INSTALL_OWN.${script:T} ?= ${${group}_INSTALL_OWN}
52cac6fd11SSimon J. Gerraty${group}DIR.${script:T} ?= ${${group}DIR_${script:T}:U${${group}DIR}}
53cac6fd11SSimon J. Gerratyscript_mkdir_list += ${${group}DIR.${script:T}}
54cac6fd11SSimon J. Gerraty
55cac6fd11SSimon J. Gerraty${group}NAME.${script} ?= ${${group}NAME_${script:T}:U${script:${SCRIPTSNAME_MOD}}}
56cac6fd11SSimon J. Gerraty.if ${${group}NAME.${script}:T} != ${script:T}
57cac6fd11SSimon J. GerratySTAGE_AS_SETS += ${group}
58cac6fd11SSimon J. GerratySTAGE_AS_${script} = ${${group}NAME.${script:T}}
59cac6fd11SSimon J. Gerratystage_as.${group}: ${script}
60cac6fd11SSimon J. Gerraty
61cac6fd11SSimon J. Gerratyinstallscripts: installscripts.${group}.${script:T}
62cac6fd11SSimon J. Gerratyinstallscripts.${group}.${script:T}: ${script} script_mkdirs
63cac6fd11SSimon J. Gerraty	${INSTALL} ${SCRIPTS_COPY} ${${group}_INSTALL_OWN.${script:T}} \
64cac6fd11SSimon J. Gerraty	-m ${SCRIPTSMODE} ${.ALLSRC:Nscript_mkdirs} ${DESTDIR}${${group}DIR}/${${group}NAME.${script:T}}
65cac6fd11SSimon J. Gerraty
66cac6fd11SSimon J. Gerraty.else
67cac6fd11SSimon J. GerratySTAGE_SETS += ${group}
68cac6fd11SSimon J. Gerratystage_files.${group}: ${script}
69cac6fd11SSimon J. Gerratyinstallscripts.${group}: ${script}
70cac6fd11SSimon J. Gerratyinstallscripts: installscripts.${group}
713cbdda60SSimon J. Gerraty.endif
723cbdda60SSimon J. Gerraty
73cac6fd11SSimon J. Gerraty.endfor				# script
74cac6fd11SSimon J. Gerraty
75cac6fd11SSimon J. Gerratyinstallscripts.${group}: script_mkdirs
76cac6fd11SSimon J. Gerraty	${INSTALL} ${SCRIPTS_COPY} ${${group}_INSTALL_OWN} -m ${SCRIPTSMODE} \
77cac6fd11SSimon J. Gerraty	${.ALLSRC:Nscript_mkdirs:O:u} ${DESTDIR}${${group}DIR}
78cac6fd11SSimon J. Gerraty
79cac6fd11SSimon J. Gerraty.endif				# !empty
80cac6fd11SSimon J. Gerraty.endfor				# group
81cac6fd11SSimon J. Gerraty
82cac6fd11SSimon J. Gerratyscript_mkdirs:
83cac6fd11SSimon J. Gerraty	@for d in ${script_mkdir_list:O:u}; do \
84cac6fd11SSimon J. Gerraty		test -d ${DESTDIR}$$d || \
85cac6fd11SSimon J. Gerraty		${INSTALL} -d ${SCRIPTS_INSTALL_OWN} -m 775 ${DESTDIR}$$d; \
86cac6fd11SSimon J. Gerraty	done
87cac6fd11SSimon J. Gerraty
88cac6fd11SSimon J. Gerraty
89cac6fd11SSimon J. Gerratybeforeinstall:
90cac6fd11SSimon J. Gerratyinstallscripts:
91cac6fd11SSimon J. Gerratyrealinstall:	installscripts
92cac6fd11SSimon J. Gerraty.ORDER: beforeinstall installscripts
933cbdda60SSimon J. Gerraty
94