xref: /freebsd/share/mk/local.sys.env.mk (revision e9c2838d93cab8098e333a32990d75439dc84359)
1daf514d0SSimon J. Gerraty
2daf514d0SSimon J. Gerraty# This makefile is for customizations that should be done early
3daf514d0SSimon J. Gerraty
4daf514d0SSimon J. Gerraty.if !defined(_TARGETS)
5daf514d0SSimon J. Gerraty# some things we do only once
6daf514d0SSimon J. Gerraty_TARGETS:= ${.TARGETS}
7daf514d0SSimon J. Gerraty.export _TARGETS
8daf514d0SSimon J. Gerraty.endif
9daf514d0SSimon J. Gerraty
10daf514d0SSimon J. Gerraty# some handy macros
11daf514d0SSimon J. Gerraty_this = ${.PARSEDIR:tA}/${.PARSEFILE}
12daf514d0SSimon J. Gerraty# some useful modifiers
13daf514d0SSimon J. Gerraty
14daf514d0SSimon J. Gerraty# A useful trick for testing multiple :M's against something
15daf514d0SSimon J. Gerraty# :L says to use the variable's name as its value - ie. literal
16daf514d0SSimon J. Gerraty# got = ${clean* destroy:${M_ListToMatch:S,V,.TARGETS,}}
17daf514d0SSimon J. GerratyM_ListToMatch = L:@m@$${V:M$$m}@
18daf514d0SSimon J. Gerraty# match against our initial targets (see above)
19daf514d0SSimon J. GerratyM_L_TARGETS = ${M_ListToMatch:S,V,_TARGETS,}
20daf514d0SSimon J. Gerraty
21daf514d0SSimon J. Gerraty# turn a list into a set of :N modifiers
22daf514d0SSimon J. Gerraty# NskipFoo = ${Foo:${M_ListToSkip}}
23daf514d0SSimon J. GerratyM_ListToSkip= O:u:ts::S,:,:N,g:S,^,N,
24daf514d0SSimon J. Gerraty
25daf514d0SSimon J. Gerraty# type should be a builtin in any sh since about 1980,
26daf514d0SSimon J. Gerraty# AUTOCONF := ${autoconf:L:${M_whence}}
27daf514d0SSimon J. GerratyM_type = @x@(type $$x 2> /dev/null); echo;@:sh:[0]:N* found*:[@]:C,[()],,g
28daf514d0SSimon J. GerratyM_whence = ${M_type}:M/*:[1]
29daf514d0SSimon J. Gerraty
30daf514d0SSimon J. Gerraty# convert a path to a valid shell variable
31daf514d0SSimon J. GerratyM_P2V = tu:C,[./-],_,g
32daf514d0SSimon J. Gerraty
33daf514d0SSimon J. Gerraty# these are handy
34daf514d0SSimon J. Gerraty# we can use this for a cheap timestamp at the start of a target's script,
35daf514d0SSimon J. Gerraty# but not at the end - since make will expand both at the same time.
36daf514d0SSimon J. GerratyTIME_STAMP_FMT = @ %s [%Y-%m-%d %T]
37daf514d0SSimon J. GerratyTIME_STAMP = ${TIME_STAMP_FMT:localtime}
38daf514d0SSimon J. Gerraty# this will produce the same output but as of when date(1) is run.
39daf514d0SSimon J. GerratyTIME_STAMP_DATE = `date '+${TIME_STAMP_FMT}'`
40daf514d0SSimon J. GerratyTIME_STAMP_END?= ${TIME_STAMP_DATE}
41daf514d0SSimon J. Gerraty
4249c9ea8fSBryan Drewery# Simplify auto.obj.mk mkdir -p handling and avoid unneeded/redundant
4349c9ea8fSBryan Drewery# error spam and show a proper error.
4449c9ea8fSBryan DreweryMkdirs= Mkdirs() { mkdir -p $$* || :; }
4549c9ea8fSBryan Drewery
46*e9c2838dSSimon J. Gerraty# jobs.mk wants this
47*e9c2838dSSimon J. Gerraty.if empty(NEWLOG_SH)
48*e9c2838dSSimon J. GerratyNEWLOG_SH:= ${SRCTOP}/contrib/bmake/mk/newlog.sh
49*e9c2838dSSimon J. Gerraty.export NEWLOG_SH
50*e9c2838dSSimon J. Gerraty.endif
51*e9c2838dSSimon J. Gerraty
52e1b7ce1fSBryan Drewery.if !empty(.MAKEFLAGS:M-s)
53e1b7ce1fSBryan DreweryECHO_TRACE?=	true
54e1b7ce1fSBryan Drewery.endif
55e1b7ce1fSBryan Drewery
56daf514d0SSimon J. Gerraty.include "src.sys.env.mk"
57073ccb9dSSimon J. Gerraty.-include <site.sys.env.mk>
58bee3d4bfSSimon J. Gerraty
59bee3d4bfSSimon J. Gerraty.if !defined(HOST_TARGET) || !defined(HOST_MACHINE)
60bee3d4bfSSimon J. Gerraty# we need HOST_TARGET etc below.
61bee3d4bfSSimon J. Gerraty.include <host-target.mk>
62bee3d4bfSSimon J. Gerraty.export HOST_TARGET
63bee3d4bfSSimon J. Gerraty.endif
64da1ef2d6SSimon J. Gerraty
6561fe0b8eSSimon J. Gerraty.include <local.sys.machine.mk>
66