1331246Ssjg# $Id: own.mk,v 1.39 2018/01/26 20:08:16 sjg Exp $
2246149Ssjg
3246149Ssjg.if !target(__${.PARSEFILE}__)
4246149Ssjg__${.PARSEFILE}__:
5246149Ssjg
6246149Ssjg.if !target(__init.mk__)
7246149Ssjg.include "init.mk"
8246149Ssjg.endif
9246149Ssjg
10321653Ssjg.if !defined(NOMAKECONF) && !defined(NO_MAKECONF)
11246149SsjgMAKECONF?=	/etc/mk.conf
12246149Ssjg.-include "${MAKECONF}"
13246149Ssjg.endif
14246149Ssjg
15246149Ssjg.include <host-target.mk>
16246149Ssjg
17246149SsjgTARGET_OSNAME?= ${_HOST_OSNAME}
18246149SsjgTARGET_OSREL?= ${_HOST_OSREL}
19246149SsjgTARGET_OSTYPE?= ${HOST_OSTYPE}
20246149SsjgTARGET_HOST?= ${HOST_TARGET}
21246149Ssjg
22246149Ssjg# these may or may not exist
23300313Ssjg.-include <${TARGET_HOST}.mk>
24300313Ssjg.-include <config.mk>
25246149Ssjg
26246149SsjgRM?= rm
27246149SsjgLN?= ln
28246149SsjgINSTALL?= install
29246149Ssjg
30246149Ssjgprefix?=	/usr
31246149Ssjg.if exists(${prefix}/lib)
32246149Ssjglibprefix?=	${prefix}
33246149Ssjg.else
34246149Ssjglibprefix?=	/usr
35246149Ssjg.endif
36246149Ssjg
37246149Ssjg# FreeBSD at least does not set this
38321653SsjgMACHINE_ARCH?=	${MACHINE}
39246149Ssjg# we need to make sure these are defined too in case sys.mk fails to.
40246149SsjgCOMPILE.s?=	${CC} ${AFLAGS} -c
41246149SsjgLINK.s?=	${CC} ${AFLAGS} ${LDFLAGS}
42246149SsjgCOMPILE.S?=	${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
43246149SsjgLINK.S?=	${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
44246149SsjgCOMPILE.c?=	${CC} ${CFLAGS} ${CPPFLAGS} -c
45246149SsjgLINK.c?=	${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
46246149SsjgCXXFLAGS?=	${CFLAGS}
47246149SsjgCOMPILE.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
48246149SsjgLINK.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
49246149SsjgCOMPILE.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
50246149SsjgLINK.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
51246149SsjgCOMPILE.f?=	${FC} ${FFLAGS} -c
52246149SsjgLINK.f?=	${FC} ${FFLAGS} ${LDFLAGS}
53246149SsjgCOMPILE.F?=	${FC} ${FFLAGS} ${CPPFLAGS} -c
54246149SsjgLINK.F?=	${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
55246149SsjgCOMPILE.r?=	${FC} ${FFLAGS} ${RFLAGS} -c
56246149SsjgLINK.r?=	${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
57246149SsjgLEX.l?=		${LEX} ${LFLAGS}
58246149SsjgCOMPILE.p?=	${PC} ${PFLAGS} ${CPPFLAGS} -c
59246149SsjgLINK.p?=	${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
60246149SsjgYACC.y?=	${YACC} ${YFLAGS}
61246149Ssjg
62246149Ssjg# for suffix rules
63246149SsjgIMPFLAGS?=	${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}}
64246149Ssjg.for s in .c .cc 
65246149SsjgCOMPILE.$s += ${IMPFLAGS}
66246149SsjgLINK.$s +=  ${IMPFLAGS}
67246149Ssjg.endfor
68246149Ssjg
69246149SsjgPRINT.VAR.MAKE = MAKESYSPATH=${MAKESYSPATH:U${.PARSEDIR}} ${.MAKE}
70246149Ssjg.if empty(.MAKEFLAGS:M-V*)
71246149Ssjg.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR)
72246149SsjgPRINTOBJDIR=	${PRINT.VAR.MAKE} -r -V .OBJDIR -f /dev/null xxx
73246149Ssjg.else
74246149SsjgPRINTOBJDIR=	${PRINT.VAR.MAKE} -V .OBJDIR
75246149Ssjg.endif
76246149Ssjg.else
77246149SsjgPRINTOBJDIR=	echo # prevent infinite recursion
78246149Ssjg.endif
79246149Ssjg
80246149Ssjg# we really like to have SRCTOP and OBJTOP defined...
81246149Ssjg.if !defined(SRCTOP) || !defined(OBJTOP)
82300313Ssjg.-include <srctop.mk>
83246149Ssjg.endif
84246149Ssjg
85246149Ssjg.if !defined(SRCTOP) || !defined(OBJTOP)
86246149Ssjg# dpadd.mk is rather pointless without these
87246149SsjgOPTIONS_DEFAULT_NO+= DPADD_MK
88246149Ssjg.endif
89246149Ssjg
90246149Ssjg# process options
91246149SsjgOPTIONS_DEFAULT_NO+= \
92246149Ssjg	INSTALL_AS_USER \
93253883Ssjg	GPROF \
94331246Ssjg	LDORDER_MK \
95246149Ssjg	LIBTOOL \
96246149Ssjg	LINT \
97246149Ssjg
98246149SsjgOPTIONS_DEFAULT_YES+= \
99246149Ssjg	ARCHIVE \
100246149Ssjg	AUTODEP \
101246149Ssjg	CRYPTO \
102246149Ssjg	DOC \
103246149Ssjg	DPADD_MK \
104246149Ssjg	GDB \
105246149Ssjg	KERBEROS \
106246149Ssjg	LINKLIB \
107246149Ssjg	MAN \
108246149Ssjg	NLS \
109246149Ssjg	OBJ \
110246149Ssjg	PIC \
111246149Ssjg	SHARE \
112246149Ssjg	SKEY \
113246149Ssjg	YP \
114246149Ssjg
115246149SsjgOPTIONS_DEFAULT_DEPENDENT+= \
116246149Ssjg	CATPAGES/MAN \
117331246Ssjg	PROG_LDORDER_MK/LDORDER_MK \
118246149Ssjg	OBJDIRS/OBJ \
119246149Ssjg	PICINSTALL/LINKLIB \
120246149Ssjg	PICLIB/PIC \
121246149Ssjg	PROFILE/LINKLIB \
122319884Ssjg	STAGING_PROG/STAGING \
123246149Ssjg
124246149Ssjg.include <options.mk>
125246149Ssjg
126246149Ssjg.if ${MK_INSTALL_AS_USER} == "yes"
127246149Ssjg# We ignore this if user is root.
128246149Ssjg_uid!=  id -u
129246149Ssjg.if ${_uid} != 0
130246149Ssjg.if !defined(USERGRP)
131246149SsjgUSERGRP!=  id -g
132246149Ssjg.export USERGRP
133246149Ssjg.endif
134321653Ssjg.for x in BIN CONF DOC INC INFO FILES KMOD LIB MAN NLS PROG SHARE
135246149Ssjg$xOWN=  ${USER}
136246149Ssjg$xGRP=  ${USERGRP}
137289842Ssjg$x_INSTALL_OWN=
138246149Ssjg.endfor
139246149Ssjg.endif
140246149Ssjg.endif
141246149Ssjg
142246149Ssjg# override this in sys.mk
143246149SsjgROOT_GROUP?=	wheel
144246149SsjgBINGRP?=	${ROOT_GROUP}
145246149SsjgBINOWN?=	root
146246149SsjgBINMODE?=	555
147246149SsjgNONBINMODE?=	444
148289842SsjgDIRMODE?=	755
149246149Ssjg
150319884SsjgINCLUDEDIR?=	${prefix}/include
151319884SsjgINCDIR?=	${INCLUDEDIR}
152319884Ssjg
153246149Ssjg# Define MANZ to have the man pages compressed (gzip)
154246149Ssjg#MANZ=		1
155246149Ssjg
156246149SsjgMANTARGET?= cat
157246149SsjgMANDIR?=	${prefix}/share/man/${MANTARGET}
158246149SsjgMANGRP?=	${BINGRP}
159246149SsjgMANOWN?=	${BINOWN}
160246149SsjgMANMODE?=	${NONBINMODE}
161246149Ssjg
162300313SsjgINCLUDEDIR?=	${libprefix}/include
163246149SsjgLIBDIR?=	${libprefix}/lib
164246149SsjgSHLIBDIR?=	${libprefix}/lib
165246149Ssjg.if ${USE_SHLIBDIR:Uno} == "yes"
166246149Ssjg_LIBSODIR?=	${SHLIBDIR}
167246149Ssjg.else
168246149Ssjg_LIBSODIR?=	${LIBDIR}
169246149Ssjg.endif
170246149Ssjg# this is where ld.*so lives
171246149SsjgSHLINKDIR?=	/usr/libexec
172246149SsjgLINTLIBDIR?=	${libprefix}/libdata/lint
173246149SsjgLIBGRP?=	${BINGRP}
174246149SsjgLIBOWN?=	${BINOWN}
175246149SsjgLIBMODE?=	${NONBINMODE}
176246149Ssjg
177246149SsjgDOCDIR?=        ${prefix}/share/doc
178246149SsjgDOCGRP?=	${BINGRP}
179246149SsjgDOCOWN?=	${BINOWN}
180246149SsjgDOCMODE?=       ${NONBINMODE}
181246149Ssjg
182246149SsjgNLSDIR?=	${prefix}/share/nls
183246149SsjgNLSGRP?=	${BINGRP}
184246149SsjgNLSOWN?=	${BINOWN}
185246149SsjgNLSMODE?=	${NONBINMODE}
186246149Ssjg
187246149SsjgKMODDIR?=	${prefix}/lkm
188246149SsjgKMODGRP?=	${BINGRP}
189246149SsjgKMODOWN?=	${BINOWN}
190246149SsjgKMODMODE?=	${NONBINMODE}
191246149Ssjg
192319884SsjgSHAREGRP?=	${BINGRP}
193319884SsjgSHAREOWN?=	${BINOWN}
194319884SsjgSHAREMODE?=	${NONBINMODE}
195319884Ssjg
196246149SsjgCOPY?=		-c
197246149SsjgSTRIP_FLAG?=	-s
198246149Ssjg
199246149Ssjg.if ${TARGET_OSNAME} == "NetBSD"
200246149Ssjg.if exists(/usr/libexec/ld.elf_so)
201246149SsjgOBJECT_FMT=ELF
202246149Ssjg.endif
203246149SsjgOBJECT_FMT?=a.out
204246149Ssjg.endif
205246149Ssjg# sys.mk should set something appropriate if need be.
206246149SsjgOBJECT_FMT?=ELF
207246149Ssjg
208246149Ssjg.if (${_HOST_OSNAME} == "FreeBSD")
209246149SsjgCFLAGS+= ${CPPFLAGS}
210246149Ssjg.endif
211246149Ssjg
212246149Ssjg# allow for per target flags
213246149Ssjg# apply the :T:R first, so the more specific :T can override if needed
214246149SsjgCPPFLAGS += ${CPPFLAGS_${.TARGET:T:R}} ${CPPFLAGS_${.TARGET:T}} 
215246149SsjgCFLAGS += ${CFLAGS_${.TARGET:T:R}} ${CFLAGS_${.TARGET:T}} 
216246149Ssjg
217246149Ssjg# Define SYS_INCLUDE to indicate whether you want symbolic links to the system
218246149Ssjg# source (``symlinks''), or a separate copy (``copies''); (latter useful
219246149Ssjg# in environments where it's not possible to keep /sys publicly readable)
220246149Ssjg#SYS_INCLUDE= 	symlinks
221246149Ssjg
222246149Ssjg# don't try to generate PIC versions of libraries on machines
223246149Ssjg# which don't support PIC.
224246149Ssjg.if  (${MACHINE_ARCH} == "vax") || \
225246149Ssjg    ((${MACHINE_ARCH} == "mips") && defined(STATIC_TOOLCHAIN)) || \
226246149Ssjg    ((${MACHINE_ARCH} == "alpha") && defined(ECOFF_TOOLCHAIN))
227246149SsjgMK_PIC=no
228246149Ssjg.endif
229246149Ssjg
230246149Ssjg# No lint, for now.
231246149SsjgNOLINT=
232246149Ssjg
233246149Ssjg
234246149Ssjg.if ${MK_LINKLIB} == "no"
235246149SsjgMK_PICINSTALL=	no
236246149SsjgMK_PROFILE=	no
237246149Ssjg.endif
238246149Ssjg
239246149Ssjg.if ${MK_MAN} == "no"
240246149SsjgMK_CATPAGES=	no
241246149Ssjg.endif
242246149Ssjg
243246149Ssjg.if ${MK_OBJ} == "no"
244246149SsjgMK_OBJDIRS=	no
245246149SsjgMK_AUTO_OBJ=	no
246246149Ssjg.endif
247246149Ssjg
248246149Ssjg.if ${MK_SHARE} == "no"
249246149SsjgMK_CATPAGES=	no
250246149SsjgMK_DOC=		no
251246149SsjgMK_INFO=	no
252246149SsjgMK_MAN=		no
253246149SsjgMK_NLS=		no
254246149Ssjg.endif
255246149Ssjg
256319884Ssjg# :U incase not using our sys.mk
257319884Ssjg.if ${MK_META_MODE:Uno} == "yes"
258319884Ssjg# should all be set by sys.mk if not default
259319884SsjgTARGET_SPEC_VARS ?= MACHINE
260319884Ssjg.if ${TARGET_SPEC_VARS:[#]} > 1
261319884SsjgTARGET_SPEC_VARS_REV := ${TARGET_SPEC_VARS:[-1..1]}
262319884Ssjg.else
263319884SsjgTARGET_SPEC_VARS_REV = ${TARGET_SPEC_VARS}
264246149Ssjg.endif
265319884Ssjg.if ${MK_STAGING} == "yes"
266319884SsjgSTAGE_ROOT?= ${OBJROOT}/stage
267319884SsjgSTAGE_OBJTOP?= ${STAGE_ROOT}/${TARGET_SPEC_VARS_REV:ts/}
268319884Ssjg.endif
269319884Ssjg.endif
270319884Ssjg
271319884Ssjg.endif
272