]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/bmake/mk/srctop.mk
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / bmake / mk / srctop.mk
1 # $Id: srctop.mk,v 1.3 2012/11/11 23:20:18 sjg Exp $
2 #
3 #       @(#) Copyright (c) 2012, Simon J. Gerraty
4 #
5 #       This file is provided in the hope that it will
6 #       be of use.  There is absolutely NO WARRANTY.
7 #       Permission to copy, redistribute or otherwise
8 #       use this file is hereby granted provided that 
9 #       the above copyright notice and this notice are
10 #       left intact. 
11 #      
12 #       Please send copies of changes and bug-fixes to:
13 #       sjg@crufty.net
14 #
15
16 .if !defined(SRCTOP)
17 # if using mk(1) SB will be set.
18 .ifdef SB
19 .if ${.CURDIR:S,${SB},,} != ${.CURDIR}
20 # we are actually within SB
21 .ifdef SB_SRC
22 SRCTOP:= ${SB_SRC}
23 .elif exists(${SB}/src)
24 SRCTOP:= ${SB}/src
25 .else
26 SRCTOP:= ${SB}
27 .endif
28 .endif
29 .endif
30
31 .if !defined(SRCTOP)
32 .for rd in share/mk build/mk mk
33 .if ${_this_mk_dir:M*${rd}} != ""
34 .if ${.CURDIR:S,${_this_mk_dir:${rd:C,[^/]+,H,g:S,/, ,g:ts:}},,} != ${.CURDIR}
35 SRCTOP:= ${_this_mk_dir:${rd:C,[^/]+,H,g:S,/, ,g:ts:}}
36 .endif
37 .endif
38 .endfor
39 .endif
40
41 .if !defined(SRCTOP)
42 _SRCTOP_TEST_?= [ -f ../.sandbox-env -o -d share/mk ]
43 # Linux at least has a bug where attempting to check an automounter
44 # directory will hang.  So avoid looking above /a/b
45 SRCTOP!= cd ${.CURDIR}; while :; do \
46                 here=`pwd`; \
47                 ${_SRCTOP_TEST_} && { echo $$here; break; }; \
48                 case $$here in /*/*/*) cd ..;; *) echo ""; break;; esac; \
49                 done 
50 .endif
51 .if defined(SRCTOP) && exists(${SRCTOP}/.)
52 .export SRCTOP
53 .endif
54 .endif
55
56 .if !defined(OBJTOP) && !empty(SRCTOP)
57 .if defined(MAKEOBJDIRPREFIX) && exists(${MAKEOBJDIRPREFIX}${SRCTOP})
58 OBJTOP= ${MAKEOBJDIRPREFIX}${SRCTOP}
59 .elif (exists(${SRCTOP}/Makefile) || exists(${SRCTOP}/makefile))
60 OBJTOP!= cd ${SRCTOP} && ${PRINTOBJDIR}
61 .endif
62 .if empty(OBJTOP)
63 OBJTOP= ${SRCTOP}
64 .endif
65 .export OBJTOP
66 .endif