xref: /freebsd/share/mk/local.sys.dirdeps.mk (revision f9df609750876be2c054dfac953316f513ccffce)
1bee3d4bfSSimon J. Gerraty
2bee3d4bfSSimon J. Gerraty# local configuration specific to meta mode
3bee3d4bfSSimon J. Gerraty# we assume that MK_DIRDEPS_BUILD=yes
4bee3d4bfSSimon J. Gerraty
5bee3d4bfSSimon J. Gerraty# we need this until there is an alternative
6bee3d4bfSSimon J. GerratyMK_INSTALL_AS_USER= yes
7bee3d4bfSSimon J. Gerraty
8bee3d4bfSSimon J. Gerraty.-include <site.sys.dirdeps.mk>
9bee3d4bfSSimon J. Gerraty# previously only included for DIRDEPS_BUILD anyway
10bee3d4bfSSimon J. Gerraty.-include <site.meta.sys.mk>
11bee3d4bfSSimon J. Gerraty
12bee3d4bfSSimon J. Gerraty.if ${MK_STAGING} == "yes"
13bee3d4bfSSimon J. Gerraty
14bee3d4bfSSimon J. GerratySTAGE_TARGET_OBJTOP:= ${STAGE_ROOT}/${TARGET_OBJ_SPEC}
15bee3d4bfSSimon J. Gerraty# These are exported for hooking in out-of-tree builds.  They will always
16bee3d4bfSSimon J. Gerraty# be overridden in sub-makes above when building in-tree.
17bee3d4bfSSimon J. Gerraty.if ${.MAKE.LEVEL} > 0
18bee3d4bfSSimon J. Gerraty.export STAGE_OBJTOP STAGE_TARGET_OBJTOP STAGE_HOST_OBJTOP
19bee3d4bfSSimon J. Gerraty.endif
20bee3d4bfSSimon J. Gerraty
21bee3d4bfSSimon J. Gerraty# Use tools/install.sh which can avoid the need for xinstall for simple cases.
22bee3d4bfSSimon J. GerratyINSTALL?=	sh ${SRCTOP}/tools/install.sh
23bee3d4bfSSimon J. Gerraty# This is for stage-install to pickup from the environment.
24bee3d4bfSSimon J. GerratyREAL_INSTALL:=	${INSTALL}
25bee3d4bfSSimon J. Gerraty.export REAL_INSTALL
26bee3d4bfSSimon J. GerratySTAGE_INSTALL=	sh ${.PARSEDIR:tA}/stage-install.sh OBJDIR=${.OBJDIR:tA}
27bee3d4bfSSimon J. Gerraty
28bee3d4bfSSimon J. GerratySTAGE_LIBDIR= ${STAGE_OBJTOP}${_LIBDIR:U${LIBDIR:U/lib}}
29bee3d4bfSSimon J. GerratySTAGE_INCLUDEDIR= ${STAGE_OBJTOP}${INCLUDEDIR:U/usr/include}
30bee3d4bfSSimon J. Gerraty# this is not the same as INCLUDEDIR
31bee3d4bfSSimon J. GerratySTAGE_INCSDIR= ${STAGE_OBJTOP}${INCSDIR:U/include}
32bee3d4bfSSimon J. Gerraty# the target is usually an absolute path
33bee3d4bfSSimon J. GerratySTAGE_SYMLINKS_DIR= ${STAGE_OBJTOP}
34bee3d4bfSSimon J. Gerraty
35bee3d4bfSSimon J. Gerraty#LDFLAGS_LAST+= -Wl,-rpath-link,${STAGE_LIBDIR}
36bee3d4bfSSimon J. Gerraty.if ${MK_SYSROOT} == "yes"
37bee3d4bfSSimon J. GerratySYSROOT?= ${STAGE_OBJTOP}
38bee3d4bfSSimon J. Gerraty.else
39bee3d4bfSSimon J. GerratyLDFLAGS_LAST+= -L${STAGE_LIBDIR}
40bee3d4bfSSimon J. Gerraty.endif
41bee3d4bfSSimon J. Gerraty
42bee3d4bfSSimon J. Gerraty.endif				# MK_STAGING
43bee3d4bfSSimon J. Gerraty
44bee3d4bfSSimon J. Gerraty.-include "local.toolchain.mk"
45bee3d4bfSSimon J. Gerraty
46*f9df6097SSimon J. Gerraty.if ${.MAKE.LEVEL} > 0 && ${MACHINE:Nhost*} == "" && ${.MAKE.DEPENDFILE:E} != "${MACHINE}"
47bee3d4bfSSimon J. Gerraty# we can use this but should not update it.
48bee3d4bfSSimon J. GerratyUPDATE_DEPENDFILE?= NO
49bee3d4bfSSimon J. Gerraty.endif
50bee3d4bfSSimon J. Gerraty
51bee3d4bfSSimon J. Gerraty# define the list of places that contain files we are responsible for
52bee3d4bfSSimon J. Gerraty.MAKE.META.BAILIWICK = ${SB} ${OBJROOT} ${STAGE_ROOT}
53bee3d4bfSSimon J. Gerraty
54bee3d4bfSSimon J. GerratyCSU_DIR.${MACHINE_ARCH} ?= csu/${MACHINE_ARCH}
55bee3d4bfSSimon J. GerratyCSU_DIR := ${CSU_DIR.${MACHINE_ARCH}}
56bee3d4bfSSimon J. Gerraty
57bee3d4bfSSimon J. Gerraty.if !empty(TIME_STAMP)
58bee3d4bfSSimon J. GerratyTRACER= ${TIME_STAMP} ${:U}
59bee3d4bfSSimon J. Gerraty.endif
60bee3d4bfSSimon J. Gerraty.if !defined(_RECURSING_PROGS) && !defined(_RECURSING_CRUNCH) && \
61bee3d4bfSSimon J. Gerraty    !make(print-dir)
62bee3d4bfSSimon J. GerratyWITH_META_STATS= t
63bee3d4bfSSimon J. Gerraty.endif
64bee3d4bfSSimon J. Gerraty
65bee3d4bfSSimon J. Gerraty# toolchains can be a pain - especially bootstrappping them
66bee3d4bfSSimon J. GerratyTOOLCHAIN_VARS=	AS AR CC CLANG_TBLGEN CXX CPP LD NM OBJCOPY RANLIB \
67bee3d4bfSSimon J. Gerraty		STRINGS SIZE LLVM_TBLGEN
68bee3d4bfSSimon J. Gerraty_toolchain_bin_CLANG_TBLGEN=	/usr/bin/clang-tblgen
69bee3d4bfSSimon J. Gerraty_toolchain_bin_LLVM_TBLGEN=	/usr/bin/llvm-tblgen
70bee3d4bfSSimon J. Gerraty_toolchain_bin_CXX=		/usr/bin/c++
71bee3d4bfSSimon J. Gerraty.ifdef WITH_TOOLSDIR
72bee3d4bfSSimon J. GerratyTOOLSDIR?= ${HOST_OBJTOP}/tools
73bee3d4bfSSimon J. Gerraty.elif defined(STAGE_HOST_OBJTOP)
74bee3d4bfSSimon J. GerratyTOOLSDIR?= ${STAGE_HOST_OBJTOP}
75bee3d4bfSSimon J. Gerraty.endif
76bee3d4bfSSimon J. Gerraty.if ${MK_DIRDEPS_BUILD} == "yes" && ${MACHINE} != "host"
77bee3d4bfSSimon J. Gerraty# ideally tools needed by makefiles like sh,csh,tinfo
78bee3d4bfSSimon J. Gerraty# would be built in their own directories but for now
79bee3d4bfSSimon J. Gerraty# this works well enough.
80bee3d4bfSSimon J. GerratyBTOOLSPATH= ${HOST_OBJTOP}/${RELDIR}
81bee3d4bfSSimon J. Gerraty.else
82bee3d4bfSSimon J. Gerraty# Only define if it exists in case user didn't run bootstrap-tools.  Otherwise
83bee3d4bfSSimon J. Gerraty# the tool will be built during the build.  Building it assumes it is
84bee3d4bfSSimon J. Gerraty# TARGET==MACHINE.
85bee3d4bfSSimon J. Gerraty.if exists(${HOST_OBJTOP}/tools${.CURDIR})
86bee3d4bfSSimon J. GerratyBTOOLSPATH= ${HOST_OBJTOP}/tools${.CURDIR}
87bee3d4bfSSimon J. Gerraty.endif
88bee3d4bfSSimon J. Gerraty.endif
89bee3d4bfSSimon J. Gerraty
90bee3d4bfSSimon J. Gerraty# Don't use the bootstrap tools logic on itself.
91bee3d4bfSSimon J. Gerraty.if ${.TARGETS:Mbootstrap-tools} == "" && \
92bee3d4bfSSimon J. Gerraty    !make(test-system-*) && !make(showconfig) && !make(print-dir) && \
93bee3d4bfSSimon J. Gerraty    !defined(BOOTSTRAPPING_TOOLS) && !empty(TOOLSDIR) && ${.MAKE.LEVEL} == 0
94bee3d4bfSSimon J. Gerraty.for dir in /sbin /bin /usr/sbin /usr/bin
95bee3d4bfSSimon J. GerratyPATH:= ${TOOLSDIR}${dir}:${PATH}
96bee3d4bfSSimon J. Gerraty.endfor
97bee3d4bfSSimon J. Gerraty.export PATH
98bee3d4bfSSimon J. Gerraty# Prefer the TOOLSDIR version of the toolchain if present vs the host version.
99bee3d4bfSSimon J. Gerraty.for var in ${TOOLCHAIN_VARS}
100bee3d4bfSSimon J. Gerraty_toolchain_bin.${var}=	${TOOLSDIR}${_toolchain_bin_${var}:U/usr/bin/${var:tl}}
101bee3d4bfSSimon J. Gerraty.if exists(${_toolchain_bin.${var}})
102bee3d4bfSSimon J. GerratyHOST_${var}?=	${_toolchain_bin.${var}}
103bee3d4bfSSimon J. Gerraty.export		HOST_${var}
104bee3d4bfSSimon J. Gerraty.endif
105bee3d4bfSSimon J. Gerraty.endfor
106bee3d4bfSSimon J. Gerraty.endif
107bee3d4bfSSimon J. Gerraty
108bee3d4bfSSimon J. Gerraty.for var in ${TOOLCHAIN_VARS}
109bee3d4bfSSimon J. GerratyHOST_${var}?=	${_toolchain_bin_${var}:U/usr/bin/${var:tl}}
110bee3d4bfSSimon J. Gerraty.endfor
111bee3d4bfSSimon J. Gerraty
112bee3d4bfSSimon J. Gerraty.if ${MACHINE} == "host"
113bee3d4bfSSimon J. Gerraty.for var in ${TOOLCHAIN_VARS}
114bee3d4bfSSimon J. Gerraty${var}=		${HOST_${var}}
115bee3d4bfSSimon J. Gerraty.endfor
116bee3d4bfSSimon J. Gerraty.endif
117bee3d4bfSSimon J. Gerraty
118bee3d4bfSSimon J. Gerraty.if !defined(FREEBSD_REVISION)
119bee3d4bfSSimon J. GerratyFREEBSD_REVISION!= sed -n '/^REVISION=/{s,.*=,,;s,",,g;p; }' ${SRCTOP}/sys/conf/newvers.sh
120bee3d4bfSSimon J. Gerraty.export FREEBSD_REVISION
121bee3d4bfSSimon J. Gerraty.endif
122bee3d4bfSSimon J. Gerraty
123bee3d4bfSSimon J. Gerraty# we set these here, rather than local.gendirdeps.mk
124bee3d4bfSSimon J. Gerraty# so we can ensure any DEP_* values that might be used in
125bee3d4bfSSimon J. Gerraty# conditionals do not cause syntax errors when Makefile.depend
126bee3d4bfSSimon J. Gerraty# is included at level 1+
127bee3d4bfSSimon J. Gerraty
128bee3d4bfSSimon J. Gerraty# order of this list matters!
129bee3d4bfSSimon J. GerratyGENDIRDEPS_FILTER_DIR_VARS+= \
130bee3d4bfSSimon J. Gerraty       CSU_DIR \
131bee3d4bfSSimon J. Gerraty       BOOT_MACHINE_DIR
132bee3d4bfSSimon J. Gerraty
133bee3d4bfSSimon J. Gerraty# order of this list matters!
134bee3d4bfSSimon J. GerratyGENDIRDEPS_FILTER_VARS+= \
135bee3d4bfSSimon J. Gerraty       KERNEL_NAME \
136bee3d4bfSSimon J. Gerraty       DEP_MACHINE_CPUARCH \
137bee3d4bfSSimon J. Gerraty       DEP_MACHINE_ARCH \
138bee3d4bfSSimon J. Gerraty       DEP_MACHINE
139bee3d4bfSSimon J. Gerraty
140bee3d4bfSSimon J. Gerraty.if ${.MAKE.LEVEL} > 0
141bee3d4bfSSimon J. Gerraty.for V in ${GENDIRDEPS_FILTER_DIR_VARS:MDEP_*:O:u} \
142bee3d4bfSSimon J. Gerraty	${GENDIRDEPS_FILTER_VARS:MDEP_*:O:u}
143bee3d4bfSSimon J. Gerraty$V?= ${${V:S,DEP_,,}}
144bee3d4bfSSimon J. Gerraty.endfor
145bee3d4bfSSimon J. Gerraty.endif
146bee3d4bfSSimon J. Gerraty
147*f9df6097SSimon J. Gerraty.if ${MACHINE:Nhost*} == "" && ${.MAKE.OS} != "FreeBSD"
148bee3d4bfSSimon J. Gerraty# some makefiles expect this
149bee3d4bfSSimon J. GerratyBOOTSTRAPPING= 0
150bee3d4bfSSimon J. Gerraty.endif
151