own.mk revision 281812
1306196Sjkim# $Id: own.mk,v 1.28 2015/04/16 16:59:00 sjg Exp $
2110010Smarkm
3110010Smarkm.if !target(__${.PARSEFILE}__)
4160819Ssimon__${.PARSEFILE}__:
5110010Smarkm
6110010Smarkm.if !target(__init.mk__)
7110010Smarkm.include "init.mk"
8110010Smarkm.endif
9110010Smarkm
10110010Smarkm.ifndef NOMAKECONF
11110010SmarkmMAKECONF?=	/etc/mk.conf
12110010Smarkm.-include "${MAKECONF}"
13110010Smarkm.endif
14110010Smarkm
15110010Smarkm.include <host-target.mk>
16110010Smarkm
17110010SmarkmTARGET_OSNAME?= ${_HOST_OSNAME}
18110010SmarkmTARGET_OSREL?= ${_HOST_OSREL}
19110010SmarkmTARGET_OSTYPE?= ${HOST_OSTYPE}
20215698SsimonTARGET_HOST?= ${HOST_TARGET}
21215698Ssimon
22215698Ssimon# these may or may not exist
23215698Ssimon.-include "${TARGET_HOST}.mk"
24215698Ssimon.-include "config.mk"
25110010Smarkm
26110010SmarkmRM?= rm
27110010SmarkmLN?= ln
28110010SmarkmINSTALL?= install
29110010Smarkm
30110010Smarkmprefix?=	/usr
31110010Smarkm.if exists(${prefix}/lib)
32110010Smarkmlibprefix?=	${prefix}
33110010Smarkm.else
34110010Smarkmlibprefix?=	/usr
35110010Smarkm.endif
36110010Smarkm
37110010Smarkm# FreeBSD at least does not set this
38110010SmarkmMACHINE_ARCH?=${MACHINE}
39110010Smarkm# we need to make sure these are defined too in case sys.mk fails to.
40110010SmarkmCOMPILE.s?=	${CC} ${AFLAGS} -c
41276864SjkimLINK.s?=	${CC} ${AFLAGS} ${LDFLAGS}
42276864SjkimCOMPILE.S?=	${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
43110010SmarkmLINK.S?=	${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
44110010SmarkmCOMPILE.c?=	${CC} ${CFLAGS} ${CPPFLAGS} -c
45215698SsimonLINK.c?=	${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
46215698SsimonCXXFLAGS?=	${CFLAGS}
47215698SsimonCOMPILE.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
48215698SsimonLINK.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
49160819SsimonCOMPILE.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
50215698SsimonLINK.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
51160819SsimonCOMPILE.f?=	${FC} ${FFLAGS} -c
52160819SsimonLINK.f?=	${FC} ${FFLAGS} ${LDFLAGS}
53276864SjkimCOMPILE.F?=	${FC} ${FFLAGS} ${CPPFLAGS} -c
54276864SjkimLINK.F?=	${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
55276864SjkimCOMPILE.r?=	${FC} ${FFLAGS} ${RFLAGS} -c
56110010SmarkmLINK.r?=	${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
57276864SjkimLEX.l?=		${LEX} ${LFLAGS}
58276864SjkimCOMPILE.p?=	${PC} ${PFLAGS} ${CPPFLAGS} -c
59276864SjkimLINK.p?=	${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
60276864SjkimYACC.y?=	${YACC} ${YFLAGS}
61276864Sjkim
62276864Sjkim# for suffix rules
63215698SsimonIMPFLAGS?=	${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}}
64276864Sjkim.for s in .c .cc 
65276864SjkimCOMPILE.$s += ${IMPFLAGS}
66276864SjkimLINK.$s +=  ${IMPFLAGS}
67276864Sjkim.endfor
68276864Sjkim
69215698SsimonPRINT.VAR.MAKE = MAKESYSPATH=${MAKESYSPATH:U${.PARSEDIR}} ${.MAKE}
70276864Sjkim.if empty(.MAKEFLAGS:M-V*)
71110010Smarkm.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR)
72110010SmarkmPRINTOBJDIR=	${PRINT.VAR.MAKE} -r -V .OBJDIR -f /dev/null xxx
73110010Smarkm.else
74110010SmarkmPRINTOBJDIR=	${PRINT.VAR.MAKE} -V .OBJDIR
75110010Smarkm.endif
76110010Smarkm.else
77110010SmarkmPRINTOBJDIR=	echo # prevent infinite recursion
78110010Smarkm.endif
79110010Smarkm
80110010Smarkm# we really like to have SRCTOP and OBJTOP defined...
81110010Smarkm.if !defined(SRCTOP) || !defined(OBJTOP)
82110010Smarkm.-include "srctop.mk"
83110010Smarkm.endif
84110010Smarkm
85110010Smarkm.if !defined(SRCTOP) || !defined(OBJTOP)
86110010Smarkm# dpadd.mk is rather pointless without these
87110010SmarkmOPTIONS_DEFAULT_NO+= DPADD_MK
88110010Smarkm.endif
89110010Smarkm
90110010Smarkm# process options
91110010SmarkmOPTIONS_DEFAULT_NO+= \
92110010Smarkm	AUTO_OBJ \
93110010Smarkm	INSTALL_AS_USER \
94110010Smarkm	GPROF \
95110010Smarkm	LIBTOOL \
96110010Smarkm	LINT \
97110010Smarkm	META_MODE \
98110010Smarkm
99110010SmarkmOPTIONS_DEFAULT_YES+= \
100110010Smarkm	ARCHIVE \
101110010Smarkm	AUTODEP \
102110010Smarkm	CRYPTO \
103110010Smarkm	DOC \
104110010Smarkm	DPADD_MK \
105110010Smarkm	GDB \
106110010Smarkm	KERBEROS \
107110010Smarkm	LINKLIB \
108110010Smarkm	MAN \
109110010Smarkm	NLS \
110110010Smarkm	OBJ \
111110010Smarkm	PIC \
112110010Smarkm	SHARE \
113110010Smarkm	SKEY \
114110010Smarkm	YP \
115110010Smarkm
116110010SmarkmOPTIONS_DEFAULT_DEPENDENT+= \
117110010Smarkm	CATPAGES/MAN \
118110010Smarkm	OBJDIRS/OBJ \
119110010Smarkm	PICINSTALL/LINKLIB \
120110010Smarkm	PICLIB/PIC \
121110010Smarkm	PROFILE/LINKLIB \
122110010Smarkm
123110010Smarkm.include <options.mk>
124110010Smarkm
125110010Smarkm.if ${MK_INSTALL_AS_USER} == "yes"
126110010Smarkm# We ignore this if user is root.
127110010Smarkm_uid!=  id -u
128110010Smarkm.if ${_uid} != 0
129110010Smarkm.if !defined(USERGRP)
130110010SmarkmUSERGRP!=  id -g
131110010Smarkm.export USERGRP
132110010Smarkm.endif
133160819Ssimon.for x in BIN CONF DOC INFO KMOD LIB MAN NLS SHARE
134110010Smarkm$xOWN=  ${USER}
135110010Smarkm$xGRP=  ${USERGRP}
136306196Sjkim.endfor
137215698Ssimon.endif
138215698Ssimon.endif
139215698Ssimon
140215698Ssimon# override this in sys.mk
141110010SmarkmROOT_GROUP?=	wheel
142160819SsimonBINGRP?=	${ROOT_GROUP}
143110010SmarkmBINOWN?=	root
144110010SmarkmBINMODE?=	555
145110010SmarkmNONBINMODE?=	444
146110010Smarkm
147215698Ssimon# Define MANZ to have the man pages compressed (gzip)
148110010Smarkm#MANZ=		1
149110010Smarkm
150110010SmarkmMANTARGET?= cat
151110010SmarkmMANDIR?=	${prefix}/share/man/${MANTARGET}
152110010SmarkmMANGRP?=	${BINGRP}
153110010SmarkmMANOWN?=	${BINOWN}
154110010SmarkmMANMODE?=	${NONBINMODE}
155110010Smarkm
156110010SmarkmLIBDIR?=	${libprefix}/lib
157110010SmarkmSHLIBDIR?=	${libprefix}/lib
158110010Smarkm.if ${USE_SHLIBDIR:Uno} == "yes"
159160819Ssimon_LIBSODIR?=	${SHLIBDIR}
160110010Smarkm.else
161110010Smarkm_LIBSODIR?=	${LIBDIR}
162160819Ssimon.endif
163110010Smarkm# this is where ld.*so lives
164110010SmarkmSHLINKDIR?=	/usr/libexec
165110010SmarkmLINTLIBDIR?=	${libprefix}/libdata/lint
166110010SmarkmLIBGRP?=	${BINGRP}
167160819SsimonLIBOWN?=	${BINOWN}
168LIBMODE?=	${NONBINMODE}
169
170DOCDIR?=        ${prefix}/share/doc
171DOCGRP?=	${BINGRP}
172DOCOWN?=	${BINOWN}
173DOCMODE?=       ${NONBINMODE}
174
175NLSDIR?=	${prefix}/share/nls
176NLSGRP?=	${BINGRP}
177NLSOWN?=	${BINOWN}
178NLSMODE?=	${NONBINMODE}
179
180KMODDIR?=	${prefix}/lkm
181KMODGRP?=	${BINGRP}
182KMODOWN?=	${BINOWN}
183KMODMODE?=	${NONBINMODE}
184
185COPY?=		-c
186STRIP_FLAG?=	-s
187
188.if ${TARGET_OSNAME} == "NetBSD"
189.if exists(/usr/libexec/ld.elf_so)
190OBJECT_FMT=ELF
191.endif
192OBJECT_FMT?=a.out
193.endif
194# sys.mk should set something appropriate if need be.
195OBJECT_FMT?=ELF
196
197.if (${_HOST_OSNAME} == "FreeBSD")
198CFLAGS+= ${CPPFLAGS}
199.endif
200
201# allow for per target flags
202# apply the :T:R first, so the more specific :T can override if needed
203CPPFLAGS += ${CPPFLAGS_${.TARGET:T:R}} ${CPPFLAGS_${.TARGET:T}} 
204CFLAGS += ${CFLAGS_${.TARGET:T:R}} ${CFLAGS_${.TARGET:T}} 
205
206# Define SYS_INCLUDE to indicate whether you want symbolic links to the system
207# source (``symlinks''), or a separate copy (``copies''); (latter useful
208# in environments where it's not possible to keep /sys publicly readable)
209#SYS_INCLUDE= 	symlinks
210
211# don't try to generate PIC versions of libraries on machines
212# which don't support PIC.
213.if  (${MACHINE_ARCH} == "vax") || \
214    ((${MACHINE_ARCH} == "mips") && defined(STATIC_TOOLCHAIN)) || \
215    ((${MACHINE_ARCH} == "alpha") && defined(ECOFF_TOOLCHAIN))
216MK_PIC=no
217.endif
218
219# No lint, for now.
220NOLINT=
221
222
223.if ${MK_LINKLIB} == "no"
224MK_PICINSTALL=	no
225MK_PROFILE=	no
226.endif
227
228.if ${MK_MAN} == "no"
229MK_CATPAGES=	no
230.endif
231
232.if ${MK_OBJ} == "no"
233MK_OBJDIRS=	no
234MK_AUTO_OBJ=	no
235.endif
236
237.if ${MK_SHARE} == "no"
238MK_CATPAGES=	no
239MK_DOC=		no
240MK_INFO=	no
241MK_MAN=		no
242MK_NLS=		no
243.endif
244
245.endif
246