Commit 10fd0490 by Mislav Marohnić

Fix Yosemite builds that use gcc-4.2 through `require_gcc`

The definitions that use `require_gcc` are not compatible with Apple's
clang-powered `gcc` and need gcc-4.2 from Homebrew. However, builds
using gcc-4.2 fail on Yosemite with a warning:

    couldn't understand kern.osversion `14.0.0'

Although the warning is non-fatal, the build goes to shit from there. It
seems that setting the magical value `MACOSX_DEPLOYMENT_TARGET=10.9`
makes the build work and doesn't seem to have negative consequences.
parent e7810a61
...@@ -85,6 +85,16 @@ os_information() { ...@@ -85,6 +85,16 @@ os_information() {
fi fi
} }
# 9.1 -> 901
# 10.9 -> 1009
# 10.10 -> 1010
osx_version() {
local ver="$(sw_vers -productVersion)"
local major="${ver%.*}"
local minor="${ver#*.}"
echo $(( major*100 + minor ))
}
build_failed() { build_failed() {
{ echo { echo
colorize 1 "BUILD FAILED" colorize 1 "BUILD FAILED"
...@@ -715,6 +725,9 @@ require_gcc() { ...@@ -715,6 +725,9 @@ require_gcc() {
fi fi
export CC="$gcc" export CC="$gcc"
if [ "$(uname -s)" = "Darwin" ] && [ "$(osx_version)" -ge 1010 ]; then
export MACOSX_DEPLOYMENT_TARGET=10.9
fi
} }
locate_gcc() { locate_gcc() {
......
#!/usr/bin/env bats
load test_helper
export MAKE=make
@test "require_gcc on OS X 10.9" {
stub uname '-s : echo Darwin'
stub sw_vers '-productVersion : echo 10.9'
stub gcc '--version : echo 4.2.1'
run_inline_definition <<DEF
require_gcc
echo CC=\$CC
echo MACOSX_DEPLOYMENT_TARGET=\${MACOSX_DEPLOYMENT_TARGET-no}
DEF
assert_success
assert_output <<OUT
CC=${TMP}/bin/gcc
MACOSX_DEPLOYMENT_TARGET=no
OUT
}
@test "require_gcc on OS X 10.10" {
stub uname '-s : echo Darwin'
stub sw_vers '-productVersion : echo 10.10'
stub gcc '--version : echo 4.2.1'
run_inline_definition <<DEF
require_gcc
echo CC=\$CC
echo MACOSX_DEPLOYMENT_TARGET=\${MACOSX_DEPLOYMENT_TARGET-no}
DEF
assert_success
assert_output <<OUT
CC=${TMP}/bin/gcc
MACOSX_DEPLOYMENT_TARGET=10.9
OUT
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment