bsd.obj.mk revision 1.28 1 # $NetBSD: bsd.obj.mk,v 1.28 2001/08/14 09:30:48 tv Exp $
2
3 .if !target(__initialized_obj__)
4 __initialized_obj__:
5 .include <bsd.own.mk>
6
7 .if ${MKOBJ} == "no"
8 obj:
9 .else
10 .if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR)
11 .if defined(MAKEOBJDIRPREFIX)
12 __objdir:= ${MAKEOBJDIRPREFIX}${.CURDIR}
13 .else
14 __objdir:= ${MAKEOBJDIR}
15 .endif
16 # MAKEOBJDIR and MAKEOBJDIRPREFIX are env variables supported
17 # by make(1). We simply mkdir -p the specified path.
18 # If that fails - we do a mkdir to get the appropriate error message
19 # before bailing out.
20 obj:
21 @if test ! -d ${__objdir}; then \
22 mkdir -p ${__objdir}; \
23 if test ! -d ${__objdir}; then \
24 mkdir ${__objdir}; exit 1; \
25 fi; \
26 echo "${.CURDIR} -> ${__objdir}"; \
27 fi
28 .else
29 .if defined(OBJMACHINE)
30 __objdir= obj.${MACHINE}
31 .else
32 __objdir= obj
33 .endif
34
35 .if defined(USR_OBJMACHINE)
36 __usrobjdir= ${BSDOBJDIR}.${MACHINE}
37 __usrobjdirpf=
38 .else
39 __usrobjdir= ${BSDOBJDIR}
40 .if defined(OBJMACHINE)
41 __usrobjdirpf= .${MACHINE}
42 .else
43 __usrobjdirpf=
44 .endif
45 .endif
46
47 PAWD?= /bin/pwd
48 __curdir:= ${.CURDIR}
49
50 obj:
51 @cd ${__curdir}; \
52 here=`${PAWD}`; subdir=$${here#${BSDSRCDIR}/}; \
53 if test $$here != $$subdir ; then \
54 if test ! -d ${__usrobjdir}; then \
55 echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \
56 exit 1; \
57 fi; \
58 dest=${__usrobjdir}/$$subdir${__usrobjdirpf} ; \
59 if [ -h $$here/${__objdir} ]; then \
60 curtarg=`ls -ld $$here/${__objdir} | awk '{print $$NF}'` ; \
61 if [ "$$curtarg" = "$$dest" ]; then \
62 : ; \
63 else \
64 echo "$$here/${__objdir} -> $$dest"; \
65 rm -rf ${__objdir}; \
66 ln -s $$dest ${__objdir}; \
67 fi; \
68 else \
69 echo "$$here/${__objdir} -> $$dest"; \
70 rm -rf ${__objdir}; \
71 ln -s $$dest ${__objdir}; \
72 fi; \
73 if test ! -d $$dest; then \
74 mkdir -p $$dest; \
75 else \
76 true; \
77 fi; \
78 else \
79 true ; \
80 dest=$$here/${__objdir} ; \
81 if test ! -d ${__objdir} || test -h ${__objdir}; then \
82 echo "making $$dest" ; \
83 rm -f ${__objdir}; \
84 mkdir $$dest; \
85 fi ; \
86 fi;
87 .endif
88 .endif
89
90 print-objdir:
91 @echo ${.OBJDIR}
92 .endif
93