xref: /freebsd/contrib/bmake/mk/own.mk (revision d9f0ce31900a48d1a2bfc1c8c86f79d1e831451a)
1# $Id: own.mk,v 1.30 2015/11/14 18:09:57 sjg Exp $
2
3.if !target(__${.PARSEFILE}__)
4__${.PARSEFILE}__:
5
6.if !target(__init.mk__)
7.include "init.mk"
8.endif
9
10.ifndef NOMAKECONF
11MAKECONF?=	/etc/mk.conf
12.-include "${MAKECONF}"
13.endif
14
15.include <host-target.mk>
16
17TARGET_OSNAME?= ${_HOST_OSNAME}
18TARGET_OSREL?= ${_HOST_OSREL}
19TARGET_OSTYPE?= ${HOST_OSTYPE}
20TARGET_HOST?= ${HOST_TARGET}
21
22# these may or may not exist
23.-include "${TARGET_HOST}.mk"
24.-include "config.mk"
25
26RM?= rm
27LN?= ln
28INSTALL?= install
29
30prefix?=	/usr
31.if exists(${prefix}/lib)
32libprefix?=	${prefix}
33.else
34libprefix?=	/usr
35.endif
36
37# FreeBSD at least does not set this
38MACHINE_ARCH?=${MACHINE}
39# we need to make sure these are defined too in case sys.mk fails to.
40COMPILE.s?=	${CC} ${AFLAGS} -c
41LINK.s?=	${CC} ${AFLAGS} ${LDFLAGS}
42COMPILE.S?=	${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
43LINK.S?=	${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
44COMPILE.c?=	${CC} ${CFLAGS} ${CPPFLAGS} -c
45LINK.c?=	${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
46CXXFLAGS?=	${CFLAGS}
47COMPILE.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
48LINK.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
49COMPILE.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
50LINK.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
51COMPILE.f?=	${FC} ${FFLAGS} -c
52LINK.f?=	${FC} ${FFLAGS} ${LDFLAGS}
53COMPILE.F?=	${FC} ${FFLAGS} ${CPPFLAGS} -c
54LINK.F?=	${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
55COMPILE.r?=	${FC} ${FFLAGS} ${RFLAGS} -c
56LINK.r?=	${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
57LEX.l?=		${LEX} ${LFLAGS}
58COMPILE.p?=	${PC} ${PFLAGS} ${CPPFLAGS} -c
59LINK.p?=	${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
60YACC.y?=	${YACC} ${YFLAGS}
61
62# for suffix rules
63IMPFLAGS?=	${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}}
64.for s in .c .cc
65COMPILE.$s += ${IMPFLAGS}
66LINK.$s +=  ${IMPFLAGS}
67.endfor
68
69PRINT.VAR.MAKE = MAKESYSPATH=${MAKESYSPATH:U${.PARSEDIR}} ${.MAKE}
70.if empty(.MAKEFLAGS:M-V*)
71.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR)
72PRINTOBJDIR=	${PRINT.VAR.MAKE} -r -V .OBJDIR -f /dev/null xxx
73.else
74PRINTOBJDIR=	${PRINT.VAR.MAKE} -V .OBJDIR
75.endif
76.else
77PRINTOBJDIR=	echo # prevent infinite recursion
78.endif
79
80# we really like to have SRCTOP and OBJTOP defined...
81.if !defined(SRCTOP) || !defined(OBJTOP)
82.-include "srctop.mk"
83.endif
84
85.if !defined(SRCTOP) || !defined(OBJTOP)
86# dpadd.mk is rather pointless without these
87OPTIONS_DEFAULT_NO+= DPADD_MK
88.endif
89
90# process options
91OPTIONS_DEFAULT_NO+= \
92	INSTALL_AS_USER \
93	GPROF \
94	LIBTOOL \
95	LINT \
96
97OPTIONS_DEFAULT_YES+= \
98	ARCHIVE \
99	AUTODEP \
100	CRYPTO \
101	DOC \
102	DPADD_MK \
103	GDB \
104	KERBEROS \
105	LINKLIB \
106	MAN \
107	NLS \
108	OBJ \
109	PIC \
110	SHARE \
111	SKEY \
112	YP \
113
114OPTIONS_DEFAULT_DEPENDENT+= \
115	CATPAGES/MAN \
116	OBJDIRS/OBJ \
117	PICINSTALL/LINKLIB \
118	PICLIB/PIC \
119	PROFILE/LINKLIB \
120
121.include <options.mk>
122
123.if ${MK_INSTALL_AS_USER} == "yes"
124# We ignore this if user is root.
125_uid!=  id -u
126.if ${_uid} != 0
127.if !defined(USERGRP)
128USERGRP!=  id -g
129.export USERGRP
130.endif
131.for x in BIN CONF DOC INFO KMOD LIB MAN NLS SHARE
132$xOWN=  ${USER}
133$xGRP=  ${USERGRP}
134$x_INSTALL_OWN=
135.endfor
136PROG_INSTALL_OWN=
137.endif
138.endif
139
140# override this in sys.mk
141ROOT_GROUP?=	wheel
142BINGRP?=	${ROOT_GROUP}
143BINOWN?=	root
144BINMODE?=	555
145NONBINMODE?=	444
146DIRMODE?=	755
147
148# Define MANZ to have the man pages compressed (gzip)
149#MANZ=		1
150
151MANTARGET?= cat
152MANDIR?=	${prefix}/share/man/${MANTARGET}
153MANGRP?=	${BINGRP}
154MANOWN?=	${BINOWN}
155MANMODE?=	${NONBINMODE}
156
157LIBDIR?=	${libprefix}/lib
158SHLIBDIR?=	${libprefix}/lib
159.if ${USE_SHLIBDIR:Uno} == "yes"
160_LIBSODIR?=	${SHLIBDIR}
161.else
162_LIBSODIR?=	${LIBDIR}
163.endif
164# this is where ld.*so lives
165SHLINKDIR?=	/usr/libexec
166LINTLIBDIR?=	${libprefix}/libdata/lint
167LIBGRP?=	${BINGRP}
168LIBOWN?=	${BINOWN}
169LIBMODE?=	${NONBINMODE}
170
171DOCDIR?=        ${prefix}/share/doc
172DOCGRP?=	${BINGRP}
173DOCOWN?=	${BINOWN}
174DOCMODE?=       ${NONBINMODE}
175
176NLSDIR?=	${prefix}/share/nls
177NLSGRP?=	${BINGRP}
178NLSOWN?=	${BINOWN}
179NLSMODE?=	${NONBINMODE}
180
181KMODDIR?=	${prefix}/lkm
182KMODGRP?=	${BINGRP}
183KMODOWN?=	${BINOWN}
184KMODMODE?=	${NONBINMODE}
185
186COPY?=		-c
187STRIP_FLAG?=	-s
188
189.if ${TARGET_OSNAME} == "NetBSD"
190.if exists(/usr/libexec/ld.elf_so)
191OBJECT_FMT=ELF
192.endif
193OBJECT_FMT?=a.out
194.endif
195# sys.mk should set something appropriate if need be.
196OBJECT_FMT?=ELF
197
198.if (${_HOST_OSNAME} == "FreeBSD")
199CFLAGS+= ${CPPFLAGS}
200.endif
201
202# allow for per target flags
203# apply the :T:R first, so the more specific :T can override if needed
204CPPFLAGS += ${CPPFLAGS_${.TARGET:T:R}} ${CPPFLAGS_${.TARGET:T}}
205CFLAGS += ${CFLAGS_${.TARGET:T:R}} ${CFLAGS_${.TARGET:T}}
206
207# Define SYS_INCLUDE to indicate whether you want symbolic links to the system
208# source (``symlinks''), or a separate copy (``copies''); (latter useful
209# in environments where it's not possible to keep /sys publicly readable)
210#SYS_INCLUDE= 	symlinks
211
212# don't try to generate PIC versions of libraries on machines
213# which don't support PIC.
214.if  (${MACHINE_ARCH} == "vax") || \
215    ((${MACHINE_ARCH} == "mips") && defined(STATIC_TOOLCHAIN)) || \
216    ((${MACHINE_ARCH} == "alpha") && defined(ECOFF_TOOLCHAIN))
217MK_PIC=no
218.endif
219
220# No lint, for now.
221NOLINT=
222
223
224.if ${MK_LINKLIB} == "no"
225MK_PICINSTALL=	no
226MK_PROFILE=	no
227.endif
228
229.if ${MK_MAN} == "no"
230MK_CATPAGES=	no
231.endif
232
233.if ${MK_OBJ} == "no"
234MK_OBJDIRS=	no
235MK_AUTO_OBJ=	no
236.endif
237
238.if ${MK_SHARE} == "no"
239MK_CATPAGES=	no
240MK_DOC=		no
241MK_INFO=	no
242MK_MAN=		no
243MK_NLS=		no
244.endif
245
246.endif
247