-
Notifications
You must be signed in to change notification settings - Fork 161
/
Darwin.mk
257 lines (229 loc) · 9.14 KB
/
Darwin.mk
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
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
# $NetBSD: Darwin.mk,v 1.140 2024/04/29 13:57:55 jperkin Exp $
#
# Variable definitions for the Darwin operating system.
# OS, Kernel, Xcode Version
# Note that Xcode gets updates on older systems sometimes.
# pkgsrc generally expects that the most up-to-date xcode available for
# an OS version is installed
#
# Codename OS Kernel Xcode
# ------------ ------- ------ ---------------------------
# Cheetah 10.0.x 1.3.1
# Puma 10.1.x 5.x.y
# Jaguar 10.2.x 6.x.y
# Panther 10.3.x 7.x.y
# Tiger 10.4.x 8.x.y 2.x (gcc 4.0 / 4.0.1)
# Leopard 10.5.x 9.x.y 3.x (gcc 4.0.1 / 4.2.1)
# Snow Leopard 10.6.x 10.x.y 3.2+ (gcc 4.0.1 / 4.2.1)
# Lion 10.7.x 11.x.y 4.x (llvm gcc 4.2.1)
# Mountain Lion 10.8.x 12.x.y 4.x (llvm gcc 4.2.1)
# Mavericks 10.9.x 13.x.y 6.x (llvm clang 6)
# Yosemite 10.10.x 14.x.y 6.x (llvm clang 6)
# El Capitan 10.11.x 15.x.y 7.x (llvm clang 7)
# Sierra 10.12.x 16.x.y 8.x (llvm clang 8)
# High Sierra 10.13.x 17.x.y 9.x (llvm clang 9)
# Mojave 10.14.x 18.x.y 10.x (llvm clang 10)
# Catalina 10.15.x 19.x.y 11.x (llvm clang 11)
# Big Sur 11.x 20.x.y 12.x (llvm clang 12)
# Monterey 12.x 21.x.y 13.x (llvm clang 13)
# Ventura 13.x 22.x.y 14.1+ (llvm clang 14)
#
# Tiger (and earlier) use Xfree 4.4.0 (and earlier)
.if ${OPSYS_VERSION} < 100500
X11_TYPE?= native
.endif
.if !defined(CPP) || ${CPP} == "cpp"
CPP= ${CC} -E ${CPP_PRECOMP_FLAGS}
.endif
# bash invoked as /bin/sh on Leopard and newer does not support echo -n.
.if ${OPSYS_VERSION} >= 100500 && \
(!defined(TOOLS_PLATFORM.sh) || ${TOOLS_PLATFORM.sh} == "/bin/sh")
ECHO_N?= /bin/echo -n
.else
ECHO_N?= ${ECHO} -n
.endif
LDD?= /usr/bin/otool -L
IMAKE_MAKE?= ${MAKE} # program which gets invoked by imake
PKGLOCALEDIR?= share
PS?= /bin/ps
# XXX: default from defaults/mk.conf. Verify/correct for this platform
# and remove this comment.
SU?= /usr/bin/su
TYPE?= type # Shell builtin
IMAKEOPTS+= -DBuildHtmlManPages=NO
.if defined(UNPRIVILEGED) && !empty(UNPRIVILEGED:M[Yy][Ee][Ss])
IMAKEOPTS+= -DInstallFlags=-c # do not set user or group
.endif
.if !defined(PKGSRC_COMPILER) || !empty(PKGSRC_COMPILER:Mgcc)
# don't look in "/usr/local/include" before "/usr/include".
CPP_PRECOMP_FLAGS?= -isystem /usr/include
# don't symlink to /usr/bin/gcc since the latter is a wrapper that tries
# evoke the real (architecture-dependent) gcc binary in the same place
# which fails when called via a symlink from a different directory
COMPILER_USE_SYMLINKS?= no
.endif
DEF_UMASK?= 0022
DEFAULT_SERIAL_DEVICE?= /dev/null
EXPORT_SYMBOLS_LDFLAGS?= # Don't add symbols to the dynamic symbol table
MOTIF_TYPE_DEFAULT?= motif # default 2.0 compatible libs type
NOLOGIN?= /usr/bin/false
PKG_TOOLS_BIN?= ${LOCALBASE}/sbin
ROOT_CMD?= /usr/bin/sudo ${SH} -c
ROOT_GROUP?= wheel
ROOT_USER?= root
SERIAL_DEVICES?= /dev/null
ULIMIT_CMD_datasize?= ulimit -d `ulimit -H -d`
ULIMIT_CMD_memorysize?= ulimit -m `ulimit -H -m`
ULIMIT_CMD_stacksize?= ulimit -s `ulimit -H -s`
ULIMIT_CMD_cputime?= ulimit -t `ulimit -H -t`
GROUPADD?= ${LOCALBASE}/sbin/groupadd
USERADD?= ${LOCALBASE}/sbin/useradd
_PKG_USER_HOME?= /var/empty # to match other system accounts
_USER_DEPENDS= user-darwin>=20130712:../../sysutils/user_darwin
_OPSYS_EMULDIR.darwin= # empty
_OPSYS_SYSTEM_RPATH?= /usr/lib
.if !defined(OSX_VERSION)
OSX_VERSION!= sw_vers -productVersion
. if "${OSX_VERSION:R:R}" != "${OSX_VERSION:R}"
OSX_VERSION:= ${OSX_VERSION:R}
. endif
MAKEFLAGS+= OSX_VERSION=${OSX_VERSION:Q}
.endif
#
# If the user has set MACOSX_DEPLOYMENT_TARGET (ideally at bootstrap time) to
# select a specific SDK then we prefer that.
#
.if defined(MACOSX_DEPLOYMENT_TARGET)
. if !defined(OSX_SDK_PATH)
OSX_SDK_PATH!= /usr/bin/xcrun --sdk macosx${MACOSX_DEPLOYMENT_TARGET} \
--show-sdk-path 2>/dev/null || echo /nonexistent
. endif
. if !exists(${OSX_SDK_PATH})
PKG_FAIL_REASON+= "Unable to find macOS SDK at ${OSX_SDK_PATH}"
PKG_FAIL_REASON+= "Check MACOSX_DEPLOYMENT_TARGET points to a valid SDK"
. endif
ALL_ENV+= MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET}
MAKEFLAGS+= OSX_SDK_PATH=${OSX_SDK_PATH:Q}
_OPSYS_INCLUDE_DIRS?= ${OSX_SDK_PATH}/usr/include
CWRAPPERS_APPEND.cc+= -isysroot ${OSX_SDK_PATH}
CWRAPPERS_APPEND.cxx+= -isysroot ${OSX_SDK_PATH}
_WRAP_EXTRA_ARGS.CC+= -isysroot ${OSX_SDK_PATH}
_WRAP_EXTRA_ARGS.CXX+= -isysroot ${OSX_SDK_PATH}
.elif exists(/usr/include/stdio.h)
_OPSYS_INCLUDE_DIRS?= /usr/include
.elif exists(/usr/bin/xcrun)
. if !defined(OSX_SDK_PATH)
OSX_SDK_PATH!= /usr/bin/xcrun --sdk macosx --show-sdk-path 2>/dev/null || echo /nonexistent
MAKEFLAGS+= OSX_SDK_PATH=${OSX_SDK_PATH:Q}
. endif
. if exists(${OSX_SDK_PATH}/usr/include/stdio.h)
_OPSYS_INCLUDE_DIRS?= ${OSX_SDK_PATH}/usr/include
. else
PKG_FAIL_REASON+= "No suitable Xcode SDK or Command Line Tools installed."
. endif
.endif
#
# Newer macOS releases remove library files from the file system. The only way
# to test them is via dlopen(), which is obviously impractical for many things.
#
# The DARWIN_NO_SYSTEM_LIBS define turns off anything that can't reasonably
# support this. We also need to set _OPSYS_LIB_DIRS for find-libs.mk to look
# in the SDK directory. It may be that this can be set for all versions, but
# for now keep the legacy behaviour and limit it to Big Sur onwards only.
#
.if ${OPSYS_VERSION} >= 110000
DARWIN_NO_SYSTEM_LIBS= # defined
_OPSYS_LIB_DIRS?= ${OSX_SDK_PATH}/usr/lib
.else
_OPSYS_LIB_DIRS?= /usr/lib
.endif
.if ${OPSYS_VERSION} >= 100200
_OPSYS_HAS_INET6= yes # IPv6 is standard
.else
_OPSYS_HAS_INET6= no # IPv6 is not standard
.endif
_OPSYS_HAS_JAVA= yes # Java is standard
_OPSYS_HAS_MANZ= yes # MANZ controls gzipping of man pages
_OPSYS_HAS_OSSAUDIO= no # libossaudio is available
_OPSYS_PERL_REQD= 5.8.0 # base version of perl required
_OPSYS_PTHREAD_AUTO= yes # -lpthread not needed for pthreads
_OPSYS_LINKER_RPATH_FLAG= -L # darwin has no rpath, use -L instead
_OPSYS_COMPILER_RPATH_FLAG= -L # compiler flag to pass rpaths to linker
_OPSYS_SHLIB_TYPE= dylib # shared lib type
_PATCH_CAN_BACKUP= yes # native patch(1) can make backups
_PATCH_BACKUP_ARG?= -V simple -b -z # switch to patch(1) for backup suffix
_USE_RPATH= no # don't add rpath to LDFLAGS
# Comes with a native mit-krb5 implementation
KRB5_DEFAULT?= mit-krb5
#
# Builtin overrides.
#
.if ${OPSYS_VERSION} < 100300
USE_BUILTIN.dl= no # Use devel/dlcompat
.endif
# Builtin defaults which make sense for this platform.
_OPSYS_PREFER.libuuid?= native # system headers assume uuid_string_t
_OPSYS_PREFER.linux-pam?= native
_OPSYS_PREFER.mit-krb5?= native
_OPSYS_PREFER.openssl?= pkgsrc # builtin deprecated from 10.7 onwards
_OPSYS_SUPPORTS_CWRAPPERS= yes
_OPSYS_CAN_CHECK_SHLIBS= yes # check shared libraries using otool(1)
# OSX strip(1) tries to remove relocatable symbols and fails on certain
# objects, resulting in non-zero exit status. We can't modify strip arguments
# (e.g. adding "-u -r" which would fix the issue) when using install -s so for
# now stripping is disabled in that mode.
_STRIPFLAG_CC?= ${_INSTALL_UNSTRIPPED:D:U-Wl,-x} # cc(1) option to strip
_STRIPFLAG_INSTALL?= ${_INSTALL_UNSTRIPPED:D:U} # install(1) option to strip
# 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= /usr/sbin/sysctl -n kern.argmax
# Darwin 7.7.x has poll() in libc, but no poll.h. Try to help GNU
# configure packages that break because of this by pretending that
# there is no poll().
.if defined(GNU_CONFIGURE)
. if !exists(${_OPSYS_INCLUDE_DIRS}/poll.h) && !exists(${_OPSYS_INCLUDE_DIRS}/sys/poll.h)
CONFIGURE_ENV+= ac_cv_func_poll=no
. endif
.endif
# check for kqueue(2) support
.if exists(${_OPSYS_INCLUDE_DIRS}/sys/event.h)
OPSYS_HAS_KQUEUE= # defined
.endif
# check for posix_spawn(3) support
.if ${OPSYS_VERSION} >= 100500
OPSYS_HAS_POSIX_SPAWN= # defined
OPSYS_HAS_SENDFILE= # defined
.endif
# If the deployment target is not set explicitly, the linker in Tiger and prior
# versions running on PowerPC hosts defaults to a target of 10.1.
# Set the target for Tiger systems to be 10.4.
.if !empty(MACHINE_PLATFORM:MDarwin-8.*-powerpc)
MAKE_ENV+= MACOSX_DEPLOYMENT_TARGET="10.4"
.endif
.if !empty(MACHINE_PLATFORM:MDarwin-*-powerpc*)
# Convert to flags that the old toolchain understands.
#
# XXX: probably applies to more platforms too, but the GCC docs
# unhelpfully describe -pthread as a "HP-UX/Solaris flag" to this day
BUILDLINK_TRANSFORM+= opt:-pthread:-lpthread
BUILDLINK_TRANSFORM+= rm:-Wl,-no_compact_unwind
# unfortunately, many highly-depended-upon packages now include multiple
# overlapping definitions. This changes them from an error to a warning.
LDFLAGS+= -Wl,-m
CWRAPPERS_APPEND.ld+= -m
_WRAP_EXTRA_ARGS.LD+= -m
.endif
# El Capitan GM has a file system bug where a deep directory hierarchy can be
# created but not removed. Avoid running a test which does exactly this.
# See https://openradar.appspot.com/radar?id=6160634819379200
.if defined(GNU_CONFIGURE) && !empty(OS_VERSION:M15.[01].0)
CONFIGURE_ENV+= gl_cv_func_getcwd_abort_bug=no
.endif
_OPSYS_MISSING_FEATURES+= memrchr
# strnlen(3) and getline(3) are available from Lion onwards
.if ${OPSYS_VERSION} < 100700
_OPSYS_MISSING_FEATURES+= strndup strnlen getline
_OPSYS_SUPPORTS_MKTOOLS= no
.else
_OPSYS_SUPPORTS_MKTOOLS= yes
.endif