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