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