From daf514d0bb31b091ab8d242e19da601601761ea4 Mon Sep 17 00:00:00 2001 From: "Simon J. Gerraty" Date: Fri, 19 Jun 2015 14:56:24 +0000 Subject: [PATCH] Move include of make.conf back to its old position. This means moving include of local.sys.mk and src.sys.mk too. Introduce new includes to take the early slot, for the purpose of being able to influence toolchains and the like. Differential Revision: D2860 Reviewed by: imp --- share/mk/local.sys.env.mk | 43 +++++++++++++++++++++++++++++++++++++++ share/mk/local.sys.mk | 38 ---------------------------------- share/mk/src.sys.env.mk | 24 ++++++++++++++++++++++ share/mk/src.sys.mk | 15 ++------------ share/mk/sys.mk | 20 ++++++++++-------- 5 files changed, 80 insertions(+), 60 deletions(-) create mode 100644 share/mk/local.sys.env.mk create mode 100644 share/mk/src.sys.env.mk diff --git a/share/mk/local.sys.env.mk b/share/mk/local.sys.env.mk new file mode 100644 index 00000000000..ca3f7a0e0e7 --- /dev/null +++ b/share/mk/local.sys.env.mk @@ -0,0 +1,43 @@ +# $FreeBSD$ + +# This makefile is for customizations that should be done early + +.if !defined(_TARGETS) +# some things we do only once +_TARGETS:= ${.TARGETS} +.export _TARGETS +.endif + +# some handy macros +_this = ${.PARSEDIR:tA}/${.PARSEFILE} +# some useful modifiers + +# A useful trick for testing multiple :M's against something +# :L says to use the variable's name as its value - ie. literal +# got = ${clean* destroy:${M_ListToMatch:S,V,.TARGETS,}} +M_ListToMatch = L:@m@$${V:M$$m}@ +# match against our initial targets (see above) +M_L_TARGETS = ${M_ListToMatch:S,V,_TARGETS,} + +# turn a list into a set of :N modifiers +# NskipFoo = ${Foo:${M_ListToSkip}} +M_ListToSkip= O:u:ts::S,:,:N,g:S,^,N, + +# type should be a builtin in any sh since about 1980, +# AUTOCONF := ${autoconf:L:${M_whence}} +M_type = @x@(type $$x 2> /dev/null); echo;@:sh:[0]:N* found*:[@]:C,[()],,g +M_whence = ${M_type}:M/*:[1] + +# convert a path to a valid shell variable +M_P2V = tu:C,[./-],_,g + +# these are handy +# we can use this for a cheap timestamp at the start of a target's script, +# but not at the end - since make will expand both at the same time. +TIME_STAMP_FMT = @ %s [%Y-%m-%d %T] +TIME_STAMP = ${TIME_STAMP_FMT:localtime} +# this will produce the same output but as of when date(1) is run. +TIME_STAMP_DATE = `date '+${TIME_STAMP_FMT}'` +TIME_STAMP_END?= ${TIME_STAMP_DATE} + +.include "src.sys.env.mk" diff --git a/share/mk/local.sys.mk b/share/mk/local.sys.mk index 87f945eac7d..d542f8b5de9 100644 --- a/share/mk/local.sys.mk +++ b/share/mk/local.sys.mk @@ -1,34 +1,5 @@ # $FreeBSD$ -.if !defined(_TARGETS) -# some things we do only once -_TARGETS:= ${.TARGETS} -.export _TARGETS -.endif - -# some handy macros -_this = ${.PARSEDIR:tA}/${.PARSEFILE} -# some useful modifiers - -# A useful trick for testing multiple :M's against something -# :L says to use the variable's name as its value - ie. literal -# got = ${clean* destroy:${M_ListToMatch:S,V,.TARGETS,}} -M_ListToMatch = L:@m@$${V:M$$m}@ -# match against our initial targets (see above) -M_L_TARGETS = ${M_ListToMatch:S,V,_TARGETS,} - -# turn a list into a set of :N modifiers -# NskipFoo = ${Foo:${M_ListToSkip}} -M_ListToSkip= O:u:ts::S,:,:N,g:S,^,N, - -# type should be a builtin in any sh since about 1980, -# AUTOCONF := ${autoconf:L:${M_whence}} -M_type = @x@(type $$x 2> /dev/null); echo;@:sh:[0]:N* found*:[@]:C,[()],,g -M_whence = ${M_type}:M/*:[1] - -# convert a path to a valid shell variable -M_P2V = tu:C,[./-],_,g - .if ${MK_META_MODE} == "yes" MAKE_PRINT_VAR_ON_ERROR+= \ .CURDIR \ @@ -51,13 +22,4 @@ MAKE_PRINT_VAR_ON_ERROR += .MAKE.MAKEFILES .PATH .endif .endif -# these are handy -# we can use this for a cheap timestamp at the start of a target's script, -# but not at the end - since make will expand both at the same time. -TIME_STAMP_FMT = @ %s [%Y-%m-%d %T] -TIME_STAMP = ${TIME_STAMP_FMT:localtime} -# this will produce the same output but as of when date(1) is run. -TIME_STAMP_DATE = `date '+${TIME_STAMP_FMT}'` -TIME_STAMP_END?= ${TIME_STAMP_DATE} - .include "src.sys.mk" diff --git a/share/mk/src.sys.env.mk b/share/mk/src.sys.env.mk new file mode 100644 index 00000000000..0516075bd28 --- /dev/null +++ b/share/mk/src.sys.env.mk @@ -0,0 +1,24 @@ +# $FreeBSD$ + +# early setup only see also src.sys.mk + +# make sure this is defined in a consistent manner +SRCTOP:= ${.PARSEDIR:tA:H:H} + +# site customizations that do not depend on anything! +SRC_ENV_CONF?= /etc/src-env.conf +.if !empty(SRC_ENV_CONF) && !target(_src_env_conf_included_) +.-include "${SRC_ENV_CONF}" +_src_env_conf_included_: .NOTMAIN +.endif + +# If we were found via .../share/mk we need to replace that +# with ${.PARSEDIR:tA} so that we can be found by +# sub-makes launched from objdir. +.if ${.MAKEFLAGS:M.../share/mk} != "" +.MAKEFLAGS:= ${.MAKEFLAGS:S,.../share/mk,${.PARSEDIR:tA},} +.endif +.if ${MAKESYSPATH:Uno:M*.../*} != "" +MAKESYSPATH:= ${MAKESYSPATH:S,.../share/mk,${.PARSEDIR:tA},} +.export MAKESYSPATH +.endif diff --git a/share/mk/src.sys.mk b/share/mk/src.sys.mk index f8dea28ef29..81ecaf6d65f 100644 --- a/share/mk/src.sys.mk +++ b/share/mk/src.sys.mk @@ -5,24 +5,13 @@ # to preserve historical (and useful) behavior. Changes here need to # be reflected there so SRCCONF isn't included multiple times. -# make sure this is defined in a consistent manner -SRCTOP:= ${.PARSEDIR:tA:H:H} - # Allow user to configure things that only effect src tree builds. SRCCONF?= /etc/src.conf .if (exists(${SRCCONF}) || ${SRCCONF} != "/etc/src.conf") && !target(_srcconf_included_) .sinclude "${SRCCONF}" _srcconf_included_: .NOTMAIN .endif -# If we were found via .../share/mk we need to replace that -# with ${.PARSEDIR:tA} so that we can be found by -# sub-makes launched from objdir. -.if ${.MAKEFLAGS:M.../share/mk} != "" -.MAKEFLAGS:= ${.MAKEFLAGS:S,.../share/mk,${.PARSEDIR:tA},} -.endif -.if ${MAKESYSPATH:Uno:M*.../*} != "" -MAKESYSPATH:= ${MAKESYSPATH:S,.../share/mk,${.PARSEDIR:tA},} -.export MAKESYSPATH -.endif + # tempting, but bsd.compiler.mk causes problems this early +# probably need to remove dependence on bsd.own.mk #.include "src.opts.mk" diff --git a/share/mk/sys.mk b/share/mk/sys.mk index f3534a6db84..d23d1d713bd 100644 --- a/share/mk/sys.mk +++ b/share/mk/sys.mk @@ -31,15 +31,9 @@ __DEFAULT_DEPENDENT_OPTIONS= \ .include -# Pull in global settings. -__MAKE_CONF?=/etc/make.conf -.if exists(${__MAKE_CONF}) -.include "${__MAKE_CONF}" -.endif - -# Set any local definitions first. Place this early, but it needs -# MACHINE_CPUARCH to be defined. -.-include +# early include for customization +# see local.sys.mk below +.-include .if ${MK_META_MODE} == "yes" .-include @@ -360,6 +354,14 @@ YFLAGS ?= -d rm -f ${.PREFIX}.tmp.c ${CTFCONVERT_CMD} +# Pull in global settings. +__MAKE_CONF?=/etc/make.conf +.if exists(${__MAKE_CONF}) +.include "${__MAKE_CONF}" +.endif + +# late include for customization +.-include .if defined(__MAKE_SHELL) && !empty(__MAKE_SHELL) SHELL= ${__MAKE_SHELL}