summaryrefslogtreecommitdiffstats
path: root/share/mk/bsd.obj.mk
blob: 1612344d4d4a8237b7c681a1a39b53dd6831af3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#	$Id: bsd.obj.mk,v 1.4 1996/05/27 23:05:54 wosch Exp $
#
# The include file <bsd.obj.mk> handles creating 'obj' directory
# and cleaning up object files, log files etc.
#
#
# +++ variables +++
#
# CLEANFILES	Additional files to remove for the clean and cleandir targets.
#
# MAKEOBJDIR 	Specify somewhere other than /usr/obj to root the object
#		tree. Note: MAKEOBJDIR is an *enviroment* variable
#		and does work proper only if set as enviroment variable,
#		not as global or command line variable! [obj]
#
#		E.g. use `env MAKEOBJDIR=/somewhere/obj make'
#
# NOOBJ		Do not create build directory in object tree.
#
# OBJLINK	Create a symbolic link from ${.TARGETOBJDIR} to ${.CURDIR}/obj
#		Note:  This BREAKS the read-only src tree rule!
#
# +++ targets +++
#
#	clean:
#		remove a.out Errs errs mklog ${CLEANFILES} 
#
#	cleandir:
#		remove the build directory (and all its contents) created by obj
#
#	obj:
#		create build directory.
#


.if !target(obj)
.if defined(NOOBJ)
obj:
.else
.if !defined(OBJLINK)
obj:	_SUBDIR
	@if ! test -d ${.TARGETOBJDIR}; then \
		mkdir -p ${.TARGETOBJDIR}; \
		if ! test -d ${.TARGETOBJDIR}; then \
			${ECHO} "Unable to create ${.TARGETOBJDIR}."; \
			exit 1; \
		fi; \
		${ECHO} "${.TARGETOBJDIR} created for ${.CURDIR}"; \
	fi
.else
obj:	_SUBDIR
	@if ! test -d ${.TARGETOBJDIR}; then \
		mkdir -p ${.TARGETOBJDIR}; \
		if ! test -d ${.TARGETOBJDIR}; then \
			${ECHO} "Unable to create ${.TARGETOBJDIR}."; \
			exit 1; \
		fi; \
		ln -fs ${.TARGETOBJDIR} ${.CURDIR}/obj; \
		${ECHO} "${.CURDIR} -> ${.TARGETOBJDIR}"; \
	fi
.endif
.endif
.endif

.if !target(objlink)
objlink: _SUBDIR
	@if test -d ${.TARGETOBJDIR}; then \
		ln -fs ${.TARGETOBJDIR} ${.CURDIR}/obj; \
	else \
		echo "No ${.TARGETOBJDIR} to link to - do a make obj."; \
	fi
.endif

#
# cleanup
#
cleanobj:
	@if [ -d ${.TARGETOBJDIR} ]; then \
		rm -rf ${.TARGETOBJDIR}; \
	else \
		cd ${.CURDIR} && ${MAKE} clean cleandepend; \
	fi
.if defined(OBJLINK)
	@if [ -h ${.CURDIR}/obj ]; then rm -f ${.CURDIR}/obj; fi
.endif

.if !target(cleanfiles)
cleanfiles:
	rm -f a.out Errs errs mklog ${CLEANFILES} 
.endif

# see bsd.dep.mk
.if !target(cleandepend)
cleandepend:
	@rm -f .depend
.endif

.if !target(clean)
clean: cleanfiles _SUBDIR
.endif

cleandir: cleanobj _SUBDIR
OpenPOWER on IntegriCloud