bsd.obj.mk revision 1.43 1 # $NetBSD: bsd.obj.mk,v 1.43 2003/07/28 00:57:25 lukem 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 defined(MAKEOBJDIRPREFIX)
24 @if [ ! -d ${MAKEOBJDIRPREFIX} ]; then \
25 echo "MAKEOBJDIRPREFIX ${MAKEOBJDIRPREFIX} does not exist, bailing..."; \
26 exit 1; \
27 fi;
28 .endif
29 @if [ ! -d ${__objdir} ]; then \
30 mkdir -p ${__objdir}; \
31 if [ ! -d ${__objdir} ]; then \
32 mkdir ${__objdir}; exit 1; \
33 fi; \
34 echo "${__curdir} -> ${__objdir}"; \
35 fi
36 .else
37 PAWD?= /bin/pwd
38
39 __objdir= obj${OBJMACHINE:D.${MACHINE}}
40
41 __usrobjdir= ${BSDOBJDIR}${USR_OBJMACHINE:D.${MACHINE}}
42 __usrobjdirpf= ${USR_OBJMACHINE:D:U${OBJMACHINE:D.${MACHINE}}}
43
44 .if defined(BUILDID)
45 __objdir:= ${__objdir}.${BUILDID}
46 __usrobjdirpf:= ${__usrobjdirpf}.${BUILDID}
47 __need_objdir_target=yes
48 .endif
49
50 .if defined(OBJHOSTMACHINE) && (${MKHOSTOBJ:Uno} != "no")
51 # In case .CURDIR has been twiddled by a .mk file and is now relative,
52 # make it absolute again.
53 .if ${__curdir:M/*} == ""
54 __curdir!= cd ${__curdir} && ${PAWD}
55 .endif
56
57 __objdir:= ${__objdir}.${HOST_OSTYPE}
58 __usrobjdirpf:= ${__usrobjdirpf}.${HOST_OSTYPE}
59 __need_objdir_target=yes
60 .endif
61
62 .if defined(__need_objdir_target)
63 .OBJDIR: ${__objdir}
64 .endif
65
66 obj:
67 @cd ${__curdir}; \
68 here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \
69 if [ "$$here" != "$$subdir" ]; then \
70 if [ ! -d ${__usrobjdir} ]; then \
71 echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \
72 exit 1; \
73 fi; \
74 subdir=$${subdir%/}; \
75 dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \
76 if ttarg=`${TOOL_STAT} -qf '%Y' $${here}${__objdir}` && \
77 [ "$$dest" = "$$ttarg" ]; then \
78 : ; \
79 else \
80 echo "$${here}${__objdir} -> $$dest"; \
81 rm -rf ${__objdir}; \
82 ln -s $$dest ${__objdir}; \
83 fi; \
84 if [ ! -d $$dest ]; then \
85 mkdir -p $$dest; \
86 else \
87 true; \
88 fi; \
89 else \
90 true ; \
91 dest=$${here}${__objdir} ; \
92 if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \
93 echo "making $$dest" ; \
94 rm -f ${__objdir}; \
95 mkdir $$dest; \
96 fi ; \
97 fi;
98 .endif
99 .endif
100
101 print-objdir:
102 @echo ${.OBJDIR}
103
104 .include <bsd.sys.mk>
105 .endif
106