Closed
Description
Problem
./configure
script contains this piece:
19975 if test -z "$(echo $CFLAGS | grep m.*os.*-version-min)"; then
19976 min="-mmacosx-version-min=10.8"
19977 CFLAGS="$CFLAGS $min"
It breaks iOS/watchOS/tvOS (any non-macOS) build if -miphoneos-version-min
is given as part of CC rather than part of CFLAGS for example:
CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk -miphoneos-version-min=9.0
CFLAGS=-g -fPIC
...or if the minimum version is provided via an environment variable instead:
export IPHONEOS_DEPLOYMENT_TARGET=9.0
What I expected
- curl configure script either needs better detection of
*-version-min
presence - or maybe it needs to lose that
mmacosx-version-min
piece and let the user take care of that
Context
The reason I tried providing essential flags via CC
instead of CFLAGS
is #3189 — the true cause of that bug was that ./configure
was invoking preprocessor as $CC -E
without the essential -isysroot
flag which caused some autoconf checks to fail to find any system headers. The advice inside #3189 to update command line tools is not correct way to do it; the correct solution is to give sysroot/target/etc to both CFLAGS
, CPPFLAGS
, and LDFLAGS
.
Activity
bagder commentedon Oct 28, 2020
Maybe we could just extend the check and also see if the user has set the option in CC? Like this:
bagder commentedon Oct 28, 2020
We could perhaps even check
$IPHONEOS_DEPLOYMENT_TARGET
in there?acinclude: detect manually set minimum macos/ipod version
hamstergene commentedon Oct 29, 2020
Grepping
$CC $CFLAGS
should cover most users I think. I don't know how many users use environment variables, but on my memory I can't recall seeing that in the wild often.Checking environment may be a bit more complicated:
EDIT: the problem with environment variables is that we don't know if they will actually be used. Maybe IPHONEOS_DEPLOYMENT_TARGET is set, but the compiler will be targeting Mac? IMO that's bad design from Apple side, there is just no way for
curl
to have it 100% right in all cases.acinclude: detect manually set minimum macos/ipod version