From 61343d301801f6d0fd175a0627db13e556c36da0 Mon Sep 17 00:00:00 2001 From: Ted Mielczarek Date: Thu, 18 Mar 2010 10:22:54 -0400 Subject: [PATCH] bug 411588 - support 64-bit universal binaries on OSX. add a build/macosx/universal/mozconfig-64. r=josh --HG-- rename : build/macosx/universal/mozconfig => build/macosx/universal/mozconfig.common --- build/macosx/universal/mozconfig | 92 +----------------------- build/macosx/universal/mozconfig-64 | 7 ++ build/macosx/universal/mozconfig.common | 94 +++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 90 deletions(-) create mode 100644 build/macosx/universal/mozconfig-64 create mode 100644 build/macosx/universal/mozconfig.common diff --git a/build/macosx/universal/mozconfig b/build/macosx/universal/mozconfig index 795f69499f8..1c4b9b97a35 100644 --- a/build/macosx/universal/mozconfig +++ b/build/macosx/universal/mozconfig @@ -1,95 +1,7 @@ -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is the Mozilla Mac OS X Universal Binary Packaging System -# -# The Initial Developer of the Original Code is Google Inc. -# Portions created by the Initial Developer are Copyright (C) 2006 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Mentovai (Original Author) -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** +# ppc/i386 Universal Build mozconfig # As used here, arguments in $MOZ_BUILD_PROJECTS are suitable as arguments # to gcc's -arch parameter. mk_add_options MOZ_BUILD_PROJECTS="ppc i386" -mk_add_options MOZ_UNIFY_BDATE=1 - -mk_add_options MOZ_POSTFLIGHT_ALL+=build/macosx/universal/flight.mk - -DARWIN_VERSION=`uname -r` -ac_add_app_options ppc --target=powerpc-apple-darwin$DARWIN_VERSION -ac_add_app_options i386 --target=i386-apple-darwin$DARWIN_VERSION - -ac_add_options --with-macos-sdk=/Developer/SDKs/MacOSX10.5.sdk - -# $MOZ_BUILD_APP is only defined when sourced by configure. That's not a -# problem, because the variables it affects only need to be set for -# configure. -if test -n "$MOZ_BUILD_APP" ; then -if test "$MOZ_BUILD_APP" = "i386" -o "$MOZ_BUILD_APP" = "ppc"; then - TARGET_CPU=$MOZ_BUILD_APP - GCC_VERSION=4.2 - - # It's not strictly necessary to specify -arch during native builds, but it - # makes the merged about:buildconfig easier to follow, and it reduces - # conditionalized differences between builds. - CC="gcc-$GCC_VERSION -arch $TARGET_CPU" - CXX="g++-$GCC_VERSION -arch $TARGET_CPU" - - # $HOST_CXX is presently unused. $HOST_CC will only be used during a cross - # compile. Always use the 4.2 compiler, since it will always be present and - # will always work. - HOST_CC=gcc-4.2 - HOST_CXX=g++-4.2 - - # These must be set for cross builds, and don't hurt straight builds. - RANLIB=ranlib - AR=ar - AS=$CC - LD=ld - STRIP="strip -x -S" - - NATIVE_CPU=`uname -p` - if test "$NATIVE_CPU" = "powerpc" ; then - NATIVE_CPU=ppc - fi - - # Let configure know that we mean business. - if test "$NATIVE_CPU" != "$TARGET_CPU" ; then - CROSS_COMPILE=1 - fi - - # Each per-CPU build should be entirely oblivious to the fact that a - # universal binary will be produced. The exception is packager.mk, which - # needs to know to look for universal bits when building the .dmg. - UNIVERSAL_BINARY=1 - - export CC CXX HOST_CC HOST_CXX RANLIB AR AS LD STRIP -fi -fi +. $topsrcdir/build/macosx/universal/mozconfig.common diff --git a/build/macosx/universal/mozconfig-64 b/build/macosx/universal/mozconfig-64 new file mode 100644 index 00000000000..1fa20b33b44 --- /dev/null +++ b/build/macosx/universal/mozconfig-64 @@ -0,0 +1,7 @@ +# i386/x86-64 Universal Build mozconfig + +# As used here, arguments in $MOZ_BUILD_PROJECTS are suitable as arguments +# to gcc's -arch parameter. +mk_add_options MOZ_BUILD_PROJECTS="i386 x86_64" + +. $topsrcdir/build/macosx/universal/mozconfig.common diff --git a/build/macosx/universal/mozconfig.common b/build/macosx/universal/mozconfig.common new file mode 100644 index 00000000000..769cda422f4 --- /dev/null +++ b/build/macosx/universal/mozconfig.common @@ -0,0 +1,94 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Mozilla Mac OS X Universal Binary Packaging System +# +# The Initial Developer of the Original Code is Google Inc. +# Portions created by the Initial Developer are Copyright (C) 2006 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Mentovai (Original Author) +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +mk_add_options MOZ_UNIFY_BDATE=1 + +mk_add_options MOZ_POSTFLIGHT_ALL+=build/macosx/universal/flight.mk + +DARWIN_VERSION=`uname -r` +ac_add_app_options ppc --target=powerpc-apple-darwin$DARWIN_VERSION +ac_add_app_options i386 --target=i386-apple-darwin$DARWIN_VERSION +ac_add_app_options x86_64 --target=x86_64-apple-darwin$DARWIN_VERSION + +ac_add_app_options ppc --with-macos-sdk=/Developer/SDKs/MacOSX10.5.sdk +ac_add_app_options i386 --with-macos-sdk=/Developer/SDKs/MacOSX10.5.sdk +ac_add_app_options x86_64 --with-macos-sdk=/Developer/SDKs/MacOSX10.6.sdk + +# $MOZ_BUILD_APP is only defined when sourced by configure. That's not a +# problem, because the variables it affects only need to be set for +# configure. +if test -n "$MOZ_BUILD_APP" ; then +if test "$MOZ_BUILD_APP" = "i386" -o "$MOZ_BUILD_APP" = "ppc" -o "$MOZ_BUILD_APP" = "x86_64"; then + TARGET_CPU=$MOZ_BUILD_APP + GCC_VERSION=4.2 + + # It's not strictly necessary to specify -arch during native builds, but it + # makes the merged about:buildconfig easier to follow, and it reduces + # conditionalized differences between builds. + CC="gcc-$GCC_VERSION -arch $TARGET_CPU" + CXX="g++-$GCC_VERSION -arch $TARGET_CPU" + + # $HOST_CXX is presently unused. $HOST_CC will only be used during a cross + # compile. Always use the 4.2 compiler, since it will always be present and + # will always work. + HOST_CC=gcc-4.2 + HOST_CXX=g++-4.2 + + # These must be set for cross builds, and don't hurt straight builds. + RANLIB=ranlib + AR=ar + AS=$CC + LD=ld + STRIP="strip -x -S" + + NATIVE_CPU=`$topsrcdir/build/autoconf/config.guess | cut -f1 -d-` + if test "$NATIVE_CPU" = "powerpc" ; then + NATIVE_CPU=ppc + fi + + # Let configure know that we mean business. + if test "$NATIVE_CPU" != "$TARGET_CPU" ; then + CROSS_COMPILE=1 + fi + + # Each per-CPU build should be entirely oblivious to the fact that a + # universal binary will be produced. The exception is packager.mk, which + # needs to know to look for universal bits when building the .dmg. + UNIVERSAL_BINARY=1 + + export CC CXX HOST_CC HOST_CXX RANLIB AR AS LD STRIP +fi +fi