bsd.obj.mk revision 1.32 1 # $NetBSD: bsd.obj.mk,v 1.32 2001/11/11 23:19:14 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 PAWD?= /bin/pwd
32
33 __objdir= obj${OBJMACHINE:D.${MACHINE}}
34
35 .if defined(USR_OBJMACHINE)
36 __usrobjdir= ${BSDOBJDIR}.${MACHINE}
37 __usrobjdirpf=
38 .else
39 __usrobjdir= ${BSDOBJDIR}
40 __usrobjdirpf= ${OBJMACHINE:D.${MACHINE}}
41 .endif
42
43 .if defined(OBJMACHINE) && defined(OBJHOSTMACHINE)
44 # In case .CURDIR has been twiddled by a .mk file and is now relative,
45 # make it absolute again.
46 .if ${.CURDIR:M/*} == ""
47 .CURDIR!= ${PAWD}
48 .endif
49
50 __objdir:= ${__objdir}.${HOST_OSTYPE}
51 __usrobjdirpf:= ${__usrobjdirpf}.${HOST_OSTYPE}
52 .OBJDIR: ${__objdir}
53 .endif
54
55 obj:
56 @cd ${__curdir}; \
57 here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \
58 if [ "$$here" != "$$subdir" ]; then \
59 if [ ! -d ${__usrobjdir} ]; then \
60 echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \
61 exit 1; \
62 fi; \
63 subdir=$${subdir%/}; \
64 dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \
65 if [ -h $${here}${__objdir} ]; then \
66 curtarg=`ls -ld $${here}${__objdir} | awk '{print $$NF}'` ; \
67 if [ "$$curtarg" = "$$dest" ]; then \
68 : ; \
69 else \
70 echo "$${here}${__objdir} -> $$dest"; \
71 rm -rf ${__objdir}; \
72 ln -s $$dest ${__objdir}; \
73 fi; \
74 else \
75 echo "$${here}${__objdir} -> $$dest"; \
76 rm -rf ${__objdir}; \
77 ln -s $$dest ${__objdir}; \
78 fi; \
79 if [ ! -d $$dest ]; then \
80 mkdir -p $$dest; \
81 else \
82 true; \
83 fi; \
84 else \
85 true ; \
86 dest=$${here}${__objdir} ; \
87 if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \
88 echo "making $$dest" ; \
89 rm -f ${__objdir}; \
90 mkdir $$dest; \
91 fi ; \
92 fi;
93 .endif
94 .endif
95
96 print-objdir:
97 @echo ${.OBJDIR}
98 .endif
99