1*a34d5fb1SAntonio Huete Jimenez# $Id: srctop.mk,v 1.4 2020/08/19 17:51:53 sjg Exp $ 25f1e34d9SAlexandre Perrin# 35f1e34d9SAlexandre Perrin# @(#) Copyright (c) 2012, Simon J. Gerraty 45f1e34d9SAlexandre Perrin# 55f1e34d9SAlexandre Perrin# This file is provided in the hope that it will 65f1e34d9SAlexandre Perrin# be of use. There is absolutely NO WARRANTY. 75f1e34d9SAlexandre Perrin# Permission to copy, redistribute or otherwise 85f1e34d9SAlexandre Perrin# use this file is hereby granted provided that 95f1e34d9SAlexandre Perrin# the above copyright notice and this notice are 105f1e34d9SAlexandre Perrin# left intact. 115f1e34d9SAlexandre Perrin# 125f1e34d9SAlexandre Perrin# Please send copies of changes and bug-fixes to: 135f1e34d9SAlexandre Perrin# sjg@crufty.net 145f1e34d9SAlexandre Perrin# 155f1e34d9SAlexandre Perrin 165f1e34d9SAlexandre Perrin.if !defined(SRCTOP) 175f1e34d9SAlexandre Perrin# if using mk(1) SB will be set. 185f1e34d9SAlexandre Perrin.ifdef SB 195f1e34d9SAlexandre Perrin.if ${.CURDIR:S,${SB},,} != ${.CURDIR} 205f1e34d9SAlexandre Perrin# we are actually within SB 215f1e34d9SAlexandre Perrin.ifdef SB_SRC 225f1e34d9SAlexandre PerrinSRCTOP:= ${SB_SRC} 235f1e34d9SAlexandre Perrin.elif exists(${SB}/src) 245f1e34d9SAlexandre PerrinSRCTOP:= ${SB}/src 255f1e34d9SAlexandre Perrin.else 265f1e34d9SAlexandre PerrinSRCTOP:= ${SB} 275f1e34d9SAlexandre Perrin.endif 285f1e34d9SAlexandre Perrin.endif 295f1e34d9SAlexandre Perrin.endif 305f1e34d9SAlexandre Perrin 315f1e34d9SAlexandre Perrin.if !defined(SRCTOP) 325f1e34d9SAlexandre Perrin.for rd in share/mk build/mk mk 335f1e34d9SAlexandre Perrin.if ${_this_mk_dir:M*${rd}} != "" 345f1e34d9SAlexandre Perrin.if ${.CURDIR:S,${_this_mk_dir:${rd:C,[^/]+,H,g:S,/, ,g:ts:}},,} != ${.CURDIR} 355f1e34d9SAlexandre PerrinSRCTOP:= ${_this_mk_dir:${rd:C,[^/]+,H,g:S,/, ,g:ts:}} 365f1e34d9SAlexandre Perrin.endif 375f1e34d9SAlexandre Perrin.endif 385f1e34d9SAlexandre Perrin.endfor 395f1e34d9SAlexandre Perrin.endif 405f1e34d9SAlexandre Perrin 415f1e34d9SAlexandre Perrin.if !defined(SRCTOP) 425f1e34d9SAlexandre Perrin_SRCTOP_TEST_?= [ -f ../.sandbox-env -o -d share/mk ] 435f1e34d9SAlexandre Perrin# Linux at least has a bug where attempting to check an automounter 445f1e34d9SAlexandre Perrin# directory will hang. So avoid looking above /a/b 455f1e34d9SAlexandre PerrinSRCTOP!= cd ${.CURDIR}; while :; do \ 465f1e34d9SAlexandre Perrin here=`pwd`; \ 475f1e34d9SAlexandre Perrin ${_SRCTOP_TEST_} && { echo $$here; break; }; \ 485f1e34d9SAlexandre Perrin case $$here in /*/*/*) cd ..;; *) echo ""; break;; esac; \ 495f1e34d9SAlexandre Perrin done 505f1e34d9SAlexandre Perrin.endif 515f1e34d9SAlexandre Perrin.if defined(SRCTOP) && exists(${SRCTOP}/.) 525f1e34d9SAlexandre Perrin.export SRCTOP 535f1e34d9SAlexandre Perrin.endif 545f1e34d9SAlexandre Perrin.endif 555f1e34d9SAlexandre Perrin 565f1e34d9SAlexandre Perrin.if !defined(OBJTOP) && !empty(SRCTOP) 575f1e34d9SAlexandre Perrin.if defined(MAKEOBJDIRPREFIX) && exists(${MAKEOBJDIRPREFIX}${SRCTOP}) 585f1e34d9SAlexandre PerrinOBJTOP= ${MAKEOBJDIRPREFIX}${SRCTOP} 595f1e34d9SAlexandre Perrin.elif (exists(${SRCTOP}/Makefile) || exists(${SRCTOP}/makefile)) 605f1e34d9SAlexandre PerrinOBJTOP!= cd ${SRCTOP} && ${PRINTOBJDIR} 615f1e34d9SAlexandre Perrin.endif 625f1e34d9SAlexandre Perrin.if empty(OBJTOP) 635f1e34d9SAlexandre PerrinOBJTOP= ${SRCTOP} 645f1e34d9SAlexandre Perrin.endif 655f1e34d9SAlexandre Perrin.export OBJTOP 665f1e34d9SAlexandre Perrin.endif 67