1 # $Id: own.mk,v 1.41 2020/08/19 17:51:53 sjg Exp $
3 .if !target(__${.PARSEFILE}__)
6 .if !target(__init.mk__)
10 .if !defined(NOMAKECONF) && !defined(NO_MAKECONF)
11 MAKECONF?= /etc/mk.conf
12 .-include "${MAKECONF}"
15 .include <host-target.mk>
17 TARGET_OSNAME?= ${_HOST_OSNAME}
18 TARGET_OSREL?= ${_HOST_OSREL}
19 TARGET_OSTYPE?= ${HOST_OSTYPE}
20 TARGET_HOST?= ${HOST_TARGET}
22 # these may or may not exist
23 .-include <${TARGET_HOST}.mk>
31 .if exists(${prefix}/lib)
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}
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}
63 IMPFLAGS?= ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}}
65 COMPILE.$s += ${IMPFLAGS}
66 LINK.$s += ${IMPFLAGS}
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
74 PRINTOBJDIR= ${PRINT.VAR.MAKE} -V .OBJDIR
77 PRINTOBJDIR= echo # prevent infinite recursion
80 # we really like to have SRCTOP and OBJTOP defined...
81 .if !defined(SRCTOP) || !defined(OBJTOP)
85 .if !defined(SRCTOP) || !defined(OBJTOP)
86 # dpadd.mk is rather pointless without these
87 OPTIONS_DEFAULT_NO+= DPADD_MK
91 OPTIONS_DEFAULT_NO+= \
98 OPTIONS_DEFAULT_YES+= \
115 OPTIONS_DEFAULT_DEPENDENT+= \
117 LDORDER_MK/PROG_LDORDER_MK \
122 STAGING_PROG/STAGING \
124 .include <options.mk>
126 .if ${MK_INSTALL_AS_USER} == "yes"
127 # We ignore this if user is root.
130 .if !defined(USERGRP)
134 .for x in BIN CONF DOC INC INFO FILES KMOD LIB MAN NLS PROG SHARE
142 # override this in sys.mk
144 BINGRP?= ${ROOT_GROUP}
150 INCLUDEDIR?= ${prefix}/include
151 INCDIR?= ${INCLUDEDIR}
153 # Define MANZ to have the man pages compressed (gzip)
157 MANDIR?= ${prefix}/share/man/${MANTARGET}
160 MANMODE?= ${NONBINMODE}
162 INCLUDEDIR?= ${libprefix}/include
163 LIBDIR?= ${libprefix}/lib
164 SHLIBDIR?= ${libprefix}/lib
165 .if ${USE_SHLIBDIR:Uno} == "yes"
166 _LIBSODIR?= ${SHLIBDIR}
168 _LIBSODIR?= ${LIBDIR}
170 # this is where ld.*so lives
171 SHLINKDIR?= /usr/libexec
172 LINTLIBDIR?= ${libprefix}/libdata/lint
175 LIBMODE?= ${NONBINMODE}
177 DOCDIR?= ${prefix}/share/doc
180 DOCMODE?= ${NONBINMODE}
182 NLSDIR?= ${prefix}/share/nls
185 NLSMODE?= ${NONBINMODE}
187 KMODDIR?= ${prefix}/lkm
190 KMODMODE?= ${NONBINMODE}
194 SHAREMODE?= ${NONBINMODE}
199 .if ${TARGET_OSNAME} == "NetBSD"
200 .if exists(/usr/libexec/ld.elf_so)
205 # sys.mk should set something appropriate if need be.
208 .if (${_HOST_OSNAME} == "FreeBSD")
212 # allow for per target flags
213 # apply the :T:R first, so the more specific :T can override if needed
214 CPPFLAGS += ${CPPFLAGS_${.TARGET:T:R}} ${CPPFLAGS_${.TARGET:T}}
215 CFLAGS += ${CFLAGS_${.TARGET:T:R}} ${CFLAGS_${.TARGET:T}}
217 # Define SYS_INCLUDE to indicate whether you want symbolic links to the system
218 # source (``symlinks''), or a separate copy (``copies''); (latter useful
219 # in environments where it's not possible to keep /sys publicly readable)
220 #SYS_INCLUDE= symlinks
222 # don't try to generate PIC versions of libraries on machines
223 # which don't support PIC.
224 .if (${MACHINE_ARCH} == "vax") || \
225 ((${MACHINE_ARCH} == "mips") && defined(STATIC_TOOLCHAIN)) || \
226 ((${MACHINE_ARCH} == "alpha") && defined(ECOFF_TOOLCHAIN))
234 .if ${MK_LINKLIB} == "no"
239 .if ${MK_MAN} == "no"
243 .if ${MK_OBJ} == "no"
248 .if ${MK_SHARE} == "no"
256 # :U incase not using our sys.mk
257 .if ${MK_META_MODE:Uno} == "yes"
258 # should all be set by sys.mk if not default
259 TARGET_SPEC_VARS ?= MACHINE
260 .if ${TARGET_SPEC_VARS:[#]} > 1
261 TARGET_SPEC_VARS_REV := ${TARGET_SPEC_VARS:[-1..1]}
263 TARGET_SPEC_VARS_REV = ${TARGET_SPEC_VARS}
265 .if ${MK_STAGING} == "yes"
266 STAGE_ROOT?= ${OBJROOT}/stage
267 STAGE_OBJTOP?= ${STAGE_ROOT}/${TARGET_SPEC_VARS_REV:ts/}