From 8f958ba91e49bdac1b41f93245619d547618a2b1 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 24 Jul 2018 16:34:58 +0000 Subject: [PATCH] Convert bsd.confs.mk to support DIRS. This paves the way for moving config files out of head/etc and into the directories with the src. Approved by: bapt (mentor) Differential Revision: https://reviews.freebsd.org/D16406 --- share/mk/bsd.confs.mk | 154 ++++++++++++++++++++++++++++-------------- share/mk/bsd.files.mk | 2 + share/mk/bsd.lib.mk | 2 +- 3 files changed, 106 insertions(+), 52 deletions(-) diff --git a/share/mk/bsd.confs.mk b/share/mk/bsd.confs.mk index f9040e761980..a9a7aa8a2516 100644 --- a/share/mk/bsd.confs.mk +++ b/share/mk/bsd.confs.mk @@ -1,24 +1,37 @@ # $FreeBSD$ .if !target(____) -.error bsd.conf.mk cannot be included directly. +. error bsd.conf.mk cannot be included directly. .endif +.if !target(____) +. if target(____) +. error bsd.dirs.mk must be included after bsd.confs.mk. +. endif + +____: + CONFGROUPS?= CONFS -.if !target(buildconfig) -.for group in ${CONFGROUPS} +. if !target(buildconfig) +. for group in ${CONFGROUPS} buildconfig: ${${group}} -.endfor -.endif +. endfor +. endif -.if !defined(_SKIP_BUILD) +. if !defined(_SKIP_BUILD) all: buildconfig -.endif +. endif -.if !target(installconfig) -.for group in ${CONFGROUPS} -.if defined(${group}) && !empty(${group}) +. if !target(installconfig) +. for group in ${CONFGROUPS} +. if defined(${group}) && !empty(${group}) + +. if !target(afterinstallconfig) +afterinstallconfig: +. endif +installconfig: realinstallconfig afterinstallconfig +.ORDER: realinstallconfig afterinstallconfig ${group}OWN?= ${SHAREOWN} ${group}GRP?= ${SHAREGRP} @@ -27,61 +40,100 @@ ${group}DIR?= ${CONFDIR} STAGE_SETS+= ${group:C,[/*],_,g} STAGE_DIR.${group:C,[/*],_,g}= ${STAGE_OBJTOP}${${group}DIR} -_${group}CONFS= -.for cnf in ${${group}} -.if defined(${group}OWN_${cnf:T}) || defined(${group}GRP_${cnf:T}) || \ - defined(${group}MODE_${cnf:T}) || defined(${group}DIR_${cnf:T}) || \ - defined(${group}NAME_${cnf:T}) || defined(${group}NAME) -${group}OWN_${cnf:T}?= ${${group}OWN} -${group}GRP_${cnf:T}?= ${${group}GRP} -${group}MODE_${cnf:T}?= ${${group}MODE} -${group}DIR_${cnf:T}?= ${${group}DIR} -.if defined(${group}NAME) -${group}NAME_${cnf:T}?= ${${group}NAME} -.else -${group}NAME_${cnf:T}?= ${cnf:T} -.endif +. if defined(NO_ROOT) +. if !defined(${group}TAGS) || ! ${${group}TAGS:Mpackage=*} +. if defined(${${group}PACKAGE}) +${group}TAGS+= package=${${group}PACKAGE:Uruntime} +. else +${group}TAGS+= package=${PACKAGE:Uruntime} +. endif +. endif +${group}TAGS+= config +${group}TAG_ARGS= -T ${${group}TAGS:[*]:S/ /,/g} +. endif + + +. if ${${group}DIR:S/^\///} == ${${group}DIR} +# ${group}DIR specifies a variable that specifies a path +DIRS+= ${${group}DIR} +_${group}DIR= ${${group}DIR} +. else +# ${group}DIR specifies a path +DIRS+= ${group}DIR +_${group}DIR= ${group}DIR +. endif + + +. for cnf in ${${group}} +${group}OWN_${cnf}?= ${${group}OWN} +${group}GRP_${cnf}?= ${${group}GRP} +${group}MODE_${cnf}?= ${${group}MODE} +${group}DIR_${cnf}?= ${${group}DIR} +. if defined(${group}NAME) +${group}NAME_${cnf}?= ${${group}NAME} +. else +${group}NAME_${cnf}?= ${cnf:T} +. endif + + +# Determine the directory for the current file. Default to the parent group +# DIR, then check to see how to pass that variable on below. +${group}DIR_${cnf}?= ${${group}DIR} +. if ${${group}DIR_${cnf}:S/^\///} == ${${group}DIR_${cnf}} +# DIR specifies a variable that specifies a path +_${group}DIR_${cnf}= ${${group}DIR_${cnf}} +. else +# DIR directly specifies a path +_${group}DIR_${cnf}= ${group}DIR_${cnf} +. endif +${group}PREFIX_${cnf}= ${DESTDIR}${${_${group}DIR_${cnf}}} + +# Append DIR to DIRS if not already in place -- DIRS is already filtered, so +# this is primarily to ease inspection. +. for d in ${DIRS} +_DIRS+= ${${d}} +. endfor +. if ${DIRS:M${_${group}DIR_${cnf}}} == "" +. if ${_DIRS:M${${_${group}DIR_${cnf}}}} == "" +DIRS+= ${_${group}DIR_${cnf}} +. else +_${group}DIR_${cnf}= ${group}DIR +. endif +. endif + +. if defined(${group}NAME) +${group}NAME_${cnf}?= ${${group}NAME} +. else +${group}NAME_${cnf}?= ${cnf:T} +. endif # defined(${group}NAME) + + STAGE_AS_SETS+= ${cnf:T} STAGE_AS_${cnf:T}= ${${group}NAME_${cnf:T}} # XXX {group}OWN,GRP,MODE STAGE_DIR.${cnf:T}= ${STAGE_OBJTOP}${${group}DIR_${cnf:T}} stage_as.${cnf:T}: ${cnf} -installconfig: _${group}INS_${cnf:T} +realinstallconfig: installdirs-${_${group}DIR_${cnf}} _${group}INS_${cnf:T} _${group}INS_${cnf:T}: ${cnf} - ${INSTALL} -C -o ${${group}OWN_${.ALLSRC:T}} \ - -g ${${group}GRP_${.ALLSRC:T}} -m ${${group}MODE_${.ALLSRC:T}} \ - ${.ALLSRC} \ - ${DESTDIR}${${group}DIR_${.ALLSRC:T}}/${${group}NAME_${.ALLSRC:T}} -.else -_${group}CONFS+= ${cnf} -.endif -.endfor -.if !empty(_${group}CONFS) -stage_files.${group}: ${_${group}CONFS} + ${INSTALL} ${${group}TAG_ARGS} -C -o ${${group}OWN_${cnf}} \ + -g ${${group}GRP_${cnf}} -m ${${group}MODE_${cnf}} \ + ${.ALLSRC} ${${group}PREFIX_${cnf}}/${${group}NAME_${cnf}} +. endfor # for cnf in ${${group}} -installconfig: _${group}INS -_${group}INS: ${_${group}CONFS} -.if defined(${group}NAME) - ${INSTALL} -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \ - ${.ALLSRC} ${DESTDIR}${${group}DIR}/${${group}NAME} -.else - ${INSTALL} -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \ - ${.ALLSRC} ${DESTDIR}${${group}DIR}/ -.endif -.endif -.endif # defined(${group}) && !empty(${group}) -.endfor +. endif # defined(${group}) && !empty(${group}) +. endfor .endif # !target(installconfig) .if ${MK_STAGING} != "no" -.if !empty(STAGE_SETS) +. if !empty(STAGE_SETS) buildconfig: stage_files -.if !empty(STAGE_AS_SETS) +. if !empty(STAGE_AS_SETS) buildconfig: stage_as -.endif -.endif +. endif +. endif .endif +.endif # !target(____) diff --git a/share/mk/bsd.files.mk b/share/mk/bsd.files.mk index 80de736ab724..0330386ad0b1 100644 --- a/share/mk/bsd.files.mk +++ b/share/mk/bsd.files.mk @@ -121,4 +121,6 @@ buildfiles: stage_as .endif .endif +.include + .endif # !target(____) diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk index 5f937d02a13d..23fe82f18b77 100644 --- a/share/mk/bsd.lib.mk +++ b/share/mk/bsd.lib.mk @@ -432,9 +432,9 @@ _libinstall: .if !defined(LIBRARIES_ONLY) .include +.include .include .include -.include .endif LINKOWN?= ${LIBOWN}