summaryrefslogtreecommitdiff
path: root/mk/platform/NetBSD.mk
blob: 7bd53bcae8227de2801bf5d2b3ab477c26765d6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# $NetBSD: NetBSD.mk,v 1.72 2022/05/21 07:37:39 nia Exp $
#
# Variable definitions for the NetBSD operating system.

# Needed for 1.6.1 and earlier due to rpcgen bugs and paths
.if defined(CPP) && ${CPP} == "cpp"
CPP=		/usr/bin/cpp
.endif
ECHO_N?=	${ECHO} -n
IMAKE_MAKE?=	${MAKE}		# program which gets invoked by imake
PKGLOCALEDIR?=	share
PS?=		/bin/ps
SU?=		/usr/bin/su
TYPE?=		type				# Shell builtin

# pax-as-tar, found on <=8, and optionally later, fails on many archives.
EXTRACT_USING?=	bsdtar

.if ${OPSYS_VERSION} < 090000
EXTRACT_ENV+=	LC_CTYPE=en_US.UTF-8
.endif

USERADD?=	/usr/sbin/useradd
GROUPADD?=	/usr/sbin/groupadd

CPP_PRECOMP_FLAGS?=	# unset
DEF_UMASK?=		0022
.if ${OBJECT_FMT} == "ELF"
EXPORT_SYMBOLS_LDFLAGS?=-Wl,-E	# add symbols to the dynamic symbol table
.else
EXPORT_SYMBOLS_LDFLAGS?=-Wl,--export-dynamic
.endif
MOTIF_TYPE_DEFAULT?=	motif	# default 2.0 compatible libs type
NOLOGIN?=		/sbin/nologin
# This must be lazy and using :? evaluation doesn't work due to a make bugs.
PKG_TOOLS_BIN_cmd=	if [ -x ${LOCALBASE}/sbin/pkg_info ]; then echo ${LOCALBASE}/sbin; else echo /usr/sbin; fi
PKG_TOOLS_BIN?=		${PKG_TOOLS_BIN_cmd:sh}
ROOT_CMD?=		${SU} - root -c
ROOT_USER?=		root
ROOT_GROUP?=	wheel
ULIMIT_CMD_virtualsize?=	ulimit -v `ulimit -H -v`
ULIMIT_CMD_datasize?=		ulimit -d `ulimit -H -d`
ULIMIT_CMD_stacksize?=		ulimit -s `ulimit -H -s`
ULIMIT_CMD_memorysize?=		ulimit -m `ulimit -H -m`
ULIMIT_CMD_cputime?=		ulimit -t `ulimit -H -t`

# Native X11 is only supported on NetBSD-5 and later.
# On NetBSD-5, native X11 has enough issues that we default
# to modular.
.if ${OPSYS_VERSION} >= 060000
X11_TYPE?=		native
.endif

_OPSYS_EMULDIR.aout=		/emul/aout
_OPSYS_EMULDIR.darwin=		/emul/darwin
_OPSYS_EMULDIR.freebsd=		/emul/freebsd
_OPSYS_EMULDIR.hpux=		/emul/hpux
_OPSYS_EMULDIR.irix=		/emul/irix
_OPSYS_EMULDIR.linux=		/emul/linux
_OPSYS_EMULDIR.linux32=		/emul/linux32
_OPSYS_EMULDIR.netbsd=		# empty
_OPSYS_EMULDIR.netbsd32=	/emul/netbsd32
_OPSYS_EMULDIR.osf1=		/emul/osf1
_OPSYS_EMULDIR.solaris=		/emul/svr4
_OPSYS_EMULDIR.solaris32=	/emul/svr4_32
_OPSYS_EMULDIR.sunos=		/emul/sunos

_OPSYS_SYSTEM_RPATH?=		/usr/lib
_OPSYS_LIB_DIRS?=		/usr/lib
_OPSYS_INCLUDE_DIRS?=		/usr/include

.if exists(/usr/include/netinet6)
_OPSYS_HAS_INET6=	yes	# IPv6 is standard
.else
_OPSYS_HAS_INET6=	no	# IPv6 is not standard
.endif
_OPSYS_HAS_JAVA=	no	# Java is not standard
_OPSYS_HAS_MANZ=	yes	# MANZ controls gzipping of man pages
_OPSYS_HAS_OSSAUDIO=	yes	# libossaudio is available
_OPSYS_PERL_REQD=		# no base version of perl required
_OPSYS_PTHREAD_AUTO=	no	# -lpthread needed for pthreads
_OPSYS_SHLIB_TYPE=	${_OPSYS_SHLIB_TYPE_cmd:sh}	# shared library type
_OPSYS_SHLIB_TYPE_cmd=	\
	output=`/usr/bin/file /sbin/sysctl`;	\
	case $$output in			\
	*ELF*dynamically*)	echo ELF ;;	\
	*shared*library*)	echo a.out ;;	\
	*dynamically*)		echo a.out ;;	\
	*)			echo ELF ;;	\
	esac
_PATCH_CAN_BACKUP=	yes	# native patch(1) can make backups
_PATCH_BACKUP_ARG?=	-V simple --suffix # switch to patch(1) for backup suffix
_USE_RPATH=		yes	# add rpath to LDFLAGS

_STRIPFLAG_CC?=		${_INSTALL_UNSTRIPPED:D:U-s}	# cc(1) option to strip
_STRIPFLAG_INSTALL?=	${_INSTALL_UNSTRIPPED:D:U-s}	# install(1) option to strip

.if (${MACHINE_ARCH} == alpha)
DEFAULT_SERIAL_DEVICE?=	/dev/ttyC0
SERIAL_DEVICES?=	/dev/ttyC0 \
			/dev/ttyC1
.elif (${MACHINE_ARCH} == "i386")
DEFAULT_SERIAL_DEVICE?=	/dev/tty00
SERIAL_DEVICES?=	/dev/tty00 \
			/dev/tty01
.elif (${MACHINE_ARCH} == m68k)
DEFAULT_SERIAL_DEVICE?=	/dev/tty00
SERIAL_DEVICES?=	/dev/tty00 \
			/dev/tty01
.elif (${MACHINE_ARCH} == mipsel)
DEFAULT_SERIAL_DEVICE?=	/dev/ttyC0
SERIAL_DEVICES?=	/dev/ttyC0 \
			/dev/ttyC1
.elif (${MACHINE_ARCH} == "sparc")
DEFAULT_SERIAL_DEVICE?=	/dev/ttya
SERIAL_DEVICES?=	/dev/ttya \
			/dev/ttyb
.else
DEFAULT_SERIAL_DEVICE?=	/dev/null
SERIAL_DEVICES?=	/dev/null
.endif

.if (${MACHINE_ARCH} == alpha)
CFLAGS+=	-mieee
FFLAGS+=	-mieee
.endif

# check for kqueue(2) support, added in NetBSD-1.6J
.if exists(/usr/include/sys/event.h)
OPSYS_HAS_KQUEUE=	# defined
.endif

# check for eventfd(2) support, added in NetBSD-9.99.x
.if exists(/usr/include/sys/eventfd.h)
OPSYS_HAS_EVENTFD=	# defined
.endif

# check for timerfd(2) support, added in NetBSD-9.99.x
.if exists(/usr/include/sys/timerfd.h)
OPSYS_HAS_TIMERFD=	# defined
.endif

# Register support for FORTIFY (with GCC)
# Disable on older versions, see:
# http://mail-index.netbsd.org/pkgsrc-users/2017/08/07/msg025435.html
.if ${OPSYS_VERSION} >= 070000
_OPSYS_SUPPORTS_FORTIFY=yes
.endif

# Register support for PIE on supported architectures (with GCC)
.if (${MACHINE_ARCH} == "i386") || \
    (${MACHINE_ARCH} == "x86_64") || \
    (${MACHINE_ARCH} == "aarch64") || \
    (${MACHINE_ARCH} == "aarch64eb") || \
    (${MACHINE_ARCH} == "sparc64") || \
    (${MACHINE_ARCH} == "m68k") || \
    (!empty(MACHINE_ARCH:Mearm*)) || \
    (!empty(MACHINE_ARCH:Mmips*))
_OPSYS_SUPPORTS_MKPIE=	yes
.endif

.if (${MACHINE_ARCH} == "i386" || \
    ${MACHINE_ARCH} == "x86_64") && \
    ${OPSYS_VERSION} >= 090000
OPSYS_HAS_STATIC_PIE=	# defined
.endif

# Register support for RELRO on supported architectures
.if (${MACHINE_ARCH} == "i386") || \
    (${MACHINE_ARCH} == "x86_64") || \
    (${MACHINE_ARCH} == "aarch64") || \
    (${MACHINE_ARCH} == "aarch64eb") || \
    (${MACHINE_ARCH} == "powerpc")
_OPSYS_SUPPORTS_RELRO=	yes
.endif

# Register support for REPRO (with GCC)
_OPSYS_SUPPORTS_MKREPRO=	yes

# Register support for SSP on most architectures (with GCC)
.if (${MACHINE_ARCH} != "alpha") && \
    (${MACHINE_ARCH} != "hppa") && \
    (${MACHINE_ARCH} != "ia64") && \
    (${MACHINE_ARCH} != "mips")
_OPSYS_SUPPORTS_SSP=	yes
.endif

# Register support for stack check on supported architectures (with GCC)
.if (${MACHINE_ARCH} == "i386") || \
    (${MACHINE_ARCH} == "x86_64")
_OPSYS_SUPPORTS_STACK_CHECK=	yes
.endif

.if !defined(PKG_DBDIR) && exists(/var/db/pkg)
PKG_DBDIR_ERROR=	Compatibility pkgdb location exists, but PKG_DBDIR not specified. \
			This may cause unexpected issues. To avoid problems, add \
			PKG_DBDIR=/var/db/pkg to /etc/mk.conf.
.endif

_OPSYS_SUPPORTS_CWRAPPERS=	yes

# use readelf in check/bsd.check-vars.mk
_OPSYS_CAN_CHECK_RELRO=		yes
_OPSYS_CAN_CHECK_SHLIBS=	yes
_OPSYS_CAN_CHECK_SSP=		no  # only supports libssp at this time

# check for maximum command line length and set it in configure's environment,
# to avoid a test required by the libtool script that takes forever.
_OPSYS_MAX_CMDLEN_CMD=	/sbin/sysctl -n kern.argmax