bsd.obj.mk revision 1.51 1 # $NetBSD: bsd.obj.mk,v 1.51 2016/12/10 23:12:39 christos Exp $
2
3 .if !defined(_BSD_OBJ_MK_)
4 _BSD_OBJ_MK_=1
5
6 .include <bsd.own.mk>
7
8 __curdir:= ${.CURDIR}
9
10 .if ${MKOBJ} == "no"
11 obj:
12 .else
13 .if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR)
14 .if defined(MAKEOBJDIRPREFIX)
15 __objdir:= ${MAKEOBJDIRPREFIX}${__curdir}
16 .else
17 __objdir:= ${MAKEOBJDIR}
18 .endif
19 # MAKEOBJDIR and MAKEOBJDIRPREFIX are env variables supported
20 # by make(1). We simply mkdir -p the specified path.
21 # If that fails - we do a mkdir to get the appropriate error message
22 # before bailing out.
23 obj:
24 .if defined(MAKEOBJDIRPREFIX)
25 @if [ ! -d ${MAKEOBJDIRPREFIX} ]; then \
26 echo "MAKEOBJDIRPREFIX ${MAKEOBJDIRPREFIX} does not exist, bailing..."; \
27 exit 1; \
28 fi;
29 .endif
30 @if [ ! -d ${__objdir} ]; then \
31 mkdir -p ${__objdir}; \
32 if [ ! -d ${__objdir} ]; then \
33 mkdir ${__objdir}; exit 1; \
34 fi; \
35 ${_MKSHMSG} " objdir ${__objdir}"; \
36 fi
37 .else
38 PAWD?= /bin/pwd
39
40 __objdirsuffix= ${OBJMACHINE:D.${MACHINE}${OBJMACHINE_ARCH:D-${MACHINE_ARCH}}}
41 __objdir= obj${__objdirsuffix}
42
43 __usrobjdir= ${BSDOBJDIR}${USR_OBJMACHINE:D.${MACHINE}}
44 __usrobjdirpf= ${USR_OBJMACHINE:D:U${__objdirsuffix}}
45
46 .if defined(BUILDID)
47 __objdir:= ${__objdir}.${BUILDID}
48 __usrobjdirpf:= ${__usrobjdirpf}.${BUILDID}
49 __need_objdir_target=yes
50 .endif
51
52 .if defined(OBJHOSTMACHINE) && (${MKHOSTOBJ:Uno} != "no")
53 # In case .CURDIR has been twiddled by a .mk file and is now relative,
54 # make it absolute again.
55 .if ${__curdir:M/*} == ""
56 __curdir!= cd "${__curdir}" && ${PAWD}
57 .endif
58
59 __objdir:= ${__objdir}.${HOST_OSTYPE}
60 __usrobjdirpf:= ${__usrobjdirpf}.${HOST_OSTYPE}
61 __need_objdir_target=yes
62 .endif
63
64 .if defined(__need_objdir_target)
65 # Get make to change its internal definition of .OBJDIR
66 .OBJDIR: ${__objdir}
67 .endif
68
69 obj:
70 @cd "${__curdir}"; \
71 here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \
72 if [ "$$here" != "$$subdir" ]; then \
73 if [ ! -d ${__usrobjdir} ]; then \
74 echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \
75 exit 1; \
76 fi; \
77 subdir=$${subdir%/}; \
78 dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \
79 if [ -x ${TOOL_STAT} ] && \
80 ttarg=`${TOOL_STAT} -qf '%Y' $${here}${__objdir}` && \
81 [ "$$dest" = "$$ttarg" ]; then \
82 : ; \
83 else \
84 ${_MKSHMSG} " objdir $$dest"; \
85 rm -rf ${__objdir}; \
86 ln -s $$dest ${__objdir}; \
87 fi; \
88 if [ ! -d $$dest ]; then \
89 mkdir -p $$dest; \
90 else \
91 true; \
92 fi; \
93 else \
94 true ; \
95 dest=$${here}${__objdir} ; \
96 if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \
97 ${_MKSHMSG} " objdir $$dest"; \
98 rm -f ${__objdir}; \
99 mkdir $$dest; \
100 fi ; \
101 fi;
102 .endif
103 .endif
104
105 print-objdir:
106 @echo ${.OBJDIR}
107
108 .include <bsd.sys.mk>
109
110 .endif # !defined(_BSD_OBJ_MK_)
111