diff --git a/bin/package b/bin/package index 9904d4109..66a405df8 100755 --- a/bin/package +++ b/bin/package @@ -2396,7 +2396,10 @@ int main() case $lhs in bsdi) lhs=bsd ;; darwin) case $(/usr/bin/cc --version) in - *'(GCC)'*) lhs=${lhs}_old ;; + *'(GCC)'*) case $rel in + [0-9].*|10.*) lhs=darwin07 ;; + *) lhs=darwin11 ;; + esac ;; esac ;; freebsd) case $rel in diff --git a/src/cmd/INIT/cc.darwin_old b/src/cmd/INIT/cc.darwin07 similarity index 93% rename from src/cmd/INIT/cc.darwin_old rename to src/cmd/INIT/cc.darwin07 index 081bd43b5..13c384ace 100755 --- a/src/cmd/INIT/cc.darwin_old +++ b/src/cmd/INIT/cc.darwin07 @@ -1,6 +1,6 @@ -: unix wrapper for mac osx cc : 2012-01-20 : +: unix wrapper for Mac OS X 10.3-10.6 (Darwin 7-10) cc : 2012-01-20 : -HOSTTYPE=darwin.generic +HOSTTYPE=darwin07.generic case " $* " in *" -dumpmachine "*) echo $HOSTTYPE; exit ;; diff --git a/src/cmd/INIT/cc.darwin11 b/src/cmd/INIT/cc.darwin11 new file mode 100755 index 000000000..198abff98 --- /dev/null +++ b/src/cmd/INIT/cc.darwin11 @@ -0,0 +1,73 @@ +: unix wrapper for Mac OS X 10.7 (Darwin 11) cc : 2013-11-07 : + +HOSTTYPE=darwin11.generic + +case " $* " in +*" -dumpmachine "*) echo $HOSTTYPE; exit ;; +esac + +CC=/usr/bin/cc +op=init +for arg +do case $op in + init) op=ld + set '' + ;; + esac + case $arg in + -c) op=cc + ;; + -E) op=cpp + continue + ;; + -G) op=dll + continue + ;; + -lc) continue + ;; + -lm) continue + ;; + -O) continue + ;; + esac + set "$@" "$arg" +done +case $# in +0) ;; +*) shift ;; +esac +case $* in +-v) $CC "$@"; exit ;; +esac +case $op in +init) echo "cc: arguments expected" >&2 + exit 1 + ;; +cpp) $CC -E "$@" + ;; +cc) $CC -DCLK_TCK=100 "$@" + ;; +dll) # what a compatibility mess -- surely they can get the apis to play nice + tmp=/tmp/cc.${USER:-$LOGNAME}.$$.err + trap "rm -f $tmp" EXIT + case `MACOSX_DEPLOYMENT_TARGET=10.7 ld -undefined dynamic_lookup 2>&1` in + *undefined*dynamic_lookup*) + ld -m -flat_namespace -undefined suppress -dylib -dynamic \ + -ldylib1.o "$@" -lcc_dynamic -framework System >$tmp 2>&1 + status=$? + ;; + *) MACOSX_DEPLOYMENT_TARGET=10.7 $CC -Wl,-flat_namespace -dynamiclib -undefined dynamic_lookup "$@" >$tmp 2>&1 + status=$? + ;; + esac + egrep -v ' (warning .*multiple definitions|definition) of ' $tmp >&2 + exit $status + ;; +ld) tmp=/tmp/cc.${USER:-$LOGNAME}.$$.err + trap "rm -f $tmp" EXIT + $CC -Wl,-m -DCLK_TCK=100 "$@" >$tmp 2>&1 + status=$? + egrep -v ' (warning .*multiple definitions of|definition of|as lazy binding|not from earlier dynamic) ' $tmp >&2 + exit $status + ;; +esac diff --git a/src/cmd/INIT/package.sh b/src/cmd/INIT/package.sh index 59c9cdd5b..a934552eb 100644 --- a/src/cmd/INIT/package.sh +++ b/src/cmd/INIT/package.sh @@ -2395,7 +2395,10 @@ int main() case $lhs in bsdi) lhs=bsd ;; darwin) case $(/usr/bin/cc --version) in - *'(GCC)'*) lhs=${lhs}_old ;; + *'(GCC)'*) case $rel in + [0-9].*|10.*) lhs=darwin07 ;; + *) lhs=darwin11 ;; + esac ;; esac ;; freebsd) case $rel in