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