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