Mac lipo build patch from Kevin O.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@46358 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2007-06-07 18:43:02 +00:00
parent c824de2497
commit d2a924d5f2
4 changed files with 108 additions and 11 deletions

View File

@@ -200,6 +200,10 @@ WXDLLVER = '%d%d' % (VER_MAJOR, VER_MINOR)
WXPY_SRC = '.' # Assume we're in the source tree already, but allow the WXPY_SRC = '.' # Assume we're in the source tree already, but allow the
# user to change it, particularly for extension building. # user to change it, particularly for extension building.
ARCH = '' # If this is set, add an -arch XXX flag to cflags
# Only tested (and presumably, needed) for OS X universal
# binary builds created using lipo.
#---------------------------------------------------------------------- #----------------------------------------------------------------------
@@ -271,7 +275,7 @@ for flag in [ 'BUILD_ACTIVEX', 'BUILD_DLLWIDGET',
# String options # String options
for option in ['WX_CONFIG', 'SYS_WX_CONFIG', 'WXDLLVER', 'BUILD_BASE', for option in ['WX_CONFIG', 'SYS_WX_CONFIG', 'WXDLLVER', 'BUILD_BASE',
'WXPORT', 'SWIG', 'CONTRIBS_INC', 'WXPY_SRC', 'FLAVOUR', 'WXPORT', 'SWIG', 'CONTRIBS_INC', 'WXPY_SRC', 'FLAVOUR',
'VER_FLAGS', 'VER_FLAGS', 'ARCH',
]: ]:
for x in range(len(sys.argv)): for x in range(len(sys.argv)):
if sys.argv[x].find(option) == 0: if sys.argv[x].find(option) == 0:
@@ -483,7 +487,10 @@ class wx_install_headers(distutils.command.install_headers.install_headers):
return return
root = self.root root = self.root
if root is None or WXPREFIX.startswith(root): #print "WXPREFIX is %s, root is %s" % (WXPREFIX, root)
# hack for universal builds, which append i386/ppc
# to the root
if root is None or WXPREFIX.startswith(os.path.dirname(root)):
root = '' root = ''
for header, location in headers: for header, location in headers:
install_dir = os.path.normpath(root + install_dir = os.path.normpath(root +
@@ -600,9 +607,9 @@ def adjustLFLAGS(lflags, libdirs, libs):
# remove any flags for universal binaries, we'll get those from # remove any flags for universal binaries, we'll get those from
# distutils instead # distutils instead
return [flag for flag in newLFLAGS return newLFLAGS #[flag for flag in newLFLAGS
if flag not in ['-isysroot', '-arch', 'ppc', 'i386'] and # if flag not in ['-isysroot', '-arch', 'ppc', 'i386'] and
not flag.startswith('/Developer') ] # not flag.startswith('/Developer') ]
@@ -789,6 +796,14 @@ elif os.name == 'posix':
GENDIR = 'mac' GENDIR = 'mac'
libs = ['stdc++'] libs = ['stdc++']
NO_SCRIPTS = 1 NO_SCRIPTS = 1
if not ARCH == "":
cflags.append("-arch")
cflags.append(ARCH)
lflags.append("-arch")
lflags.append(ARCH)
#if ARCH == "ppc":
# cflags.append("-isysroot")
# cflags.append("/Developer/SDKs/MacOSX10.3.9.sdk")
else: else:

View File

@@ -5,7 +5,7 @@ debug=no
reswig=no reswig=no
all=no all=no
if [ "$1" = "all" ]; then if [ "$1" = all ]; then
all=yes all=yes
else else
PY_VERSION=$1 PY_VERSION=$1
@@ -99,7 +99,7 @@ if [ "$OSTYPE" = "cygwin" ]; then
$WXWIN/wxPython/distrib/makedemo $WXWIN/wxPython/distrib/makedemo
$TOOLS/Python$PY_VERSION/python `cygpath -d $WXWIN/wxPython/distrib/make_installer_inno4.py` $UNICODE_FLAG $TOOLS/Python$PY_VERSION/python `cygpath -d $WXWIN/wxPython/distrib/make_installer_inno4.py` $UNICODE_FLAG
elif [ "$OSTYPE" = "darwin" ]; then elif [ "${OSTYPE:0:6}" = "darwin" ]; then
OSX_VERSION=`sw_vers -productVersion` OSX_VERSION=`sw_vers -productVersion`
echo "OS X Version: ${OSX_VERSION:0:4}" echo "OS X Version: ${OSX_VERSION:0:4}"
cd $WXWIN/wxPython cd $WXWIN/wxPython

View File

@@ -276,7 +276,10 @@ if [ $skipbuild != yes ]; then
export WXROOT export WXROOT
export BUILDPREFIX=$PREFIX export BUILDPREFIX=$PREFIX
export INSTALLDIR=$INSTALLROOT$PREFIX export INSTALLDIR=$INSTALLROOT$PREFIX
$WXDIR/distrib/scripts/mac/macbuild wxpython universal $CHARTYPE $WXDIR/distrib/scripts/mac/macbuild-lipo wxpython $CHARTYPE
if [ $? != 0 ]; then
exit $?
fi
else else
make $MAKEJOBS make $MAKEJOBS
make $MAKEJOBS -C contrib/src/gizmos make $MAKEJOBS -C contrib/src/gizmos
@@ -289,20 +292,60 @@ if [ $skipbuild != yes ]; then
fi fi
# Build wxPython # Build wxPython
if [ $universal = yes ]; then
# build ppc, then i386, then lipo them together
ARCH=ppc
export CXX="g++-3.3 -DMAC_OS_X_VERSION_MAX_ALLOWED=1030"
export CC="gcc-3.3 -DMAC_OS_X_VERSION_MAX_ALLOWED=1030"
export MACOSX_DEPLOYMENT_TARGET=10.3
mkdir -p $INSTALLROOT/$ARCH
mkdir -p $WXBLD/$ARCH
echo "Building wxPython for PPC..."
cd $WXROOT/wxPython
$PYTHON setup.py \
UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \
EP_ADD_OPTS=1 \
WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT$PREFIX" \
BUILD_BASE=$WXBLD/$ARCH/wxPython \
ARCH="$ARCH" \
build
ARCH=i386
export CXX="g++-4.0 -arch i386"
export CC="gcc-4.0 -arch i386"
export MACOSX_DEPLOYMENT_TARGET=10.4
mkdir -p $INSTALLROOT/$ARCH
mkdir -p $WXBLD/$ARCH
echo "Building wxPython for Intel..."
cd $WXROOT/wxPython cd $WXROOT/wxPython
$PYTHON setup.py \ $PYTHON setup.py \
UNICODE=$PYUNICODEOPT \ UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \ NO_SCRIPTS=1 \
EP_ADD_OPTS=1 \ EP_ADD_OPTS=1 \
WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT$PREFIX" \
BUILD_BASE=$WXBLD/$ARCH/wxPython \
ARCH="$ARCH" \
build
else
cd $WXROOT/wxPython
$PYTHON setup.py \
UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \
EP_ADD_OPTS=1 \
WX_CONFIG="$WXBLD_CONFIG --inplace" \ WX_CONFIG="$WXBLD_CONFIG --inplace" \
BUILD_BASE=$WXBLD/wxPython \ BUILD_BASE=$WXBLD/wxPython \
SWIG=$SWIGBIN \ SWIG=$SWIGBIN \
USE_SWIG=$SWIGIT \ USE_SWIG=$SWIGIT \
build build
fi
fi fi
#---------------------------------------------------------------------- #----------------------------------------------------------------------
if [ $skipinstall != yes ]; then if [ $skipinstall != yes ]; then
# Install wxWidgets # Install wxWidgets
cd $WXBLD cd $WXBLD
@@ -317,17 +360,51 @@ if [ $skipinstall != yes ]; then
rm wx-config rm wx-config
ln -s ../lib/wx/config/* wx-config ln -s ../lib/wx/config/* wx-config
# and wxPython if [ $universal == yes ]; then
ARCH=ppc
export CXX="g++-3.3 -DMAC_OS_X_VERSION_MAX_ALLOWED=1030"
export CC="gcc-3.3 -DMAC_OS_X_VERSION_MAX_ALLOWED=1030"
export MACOSX_DEPLOYMENT_TARGET=10.3
cd $WXROOT/wxPython cd $WXROOT/wxPython
$PYTHON setup.py \ $PYTHON setup.py \
UNICODE=$PYUNICODEOPT \ UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \ NO_SCRIPTS=1 \
EP_ADD_OPTS=1 \ EP_ADD_OPTS=1 \
WX_CONFIG="$INSTALLROOT$PREFIX/bin/wx-config --prefix=$INSTALLROOT$PREFIX" \ WX_CONFIG="$INSTALLROOT$PREFIX/bin/wx-config --prefix=$INSTALLROOT$PREFIX" \
BUILD_BASE=$WXBLD/$ARCH/wxPython \
install \
--root=$INSTALLROOT/$ARCH
ARCH=i386
export CXX="g++-4.0 -arch i386"
export CC="gcc-4.0 -arch i386"
export MACOSX_DEPLOYMENT_TARGET=10.4
cd $WXROOT/wxPython
$PYTHON setup.py \
UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \
EP_ADD_OPTS=1 \
WX_CONFIG="$INSTALLROOT$PREFIX/bin/wx-config --prefix=$INSTALLROOT$PREFIX" \
BUILD_BASE=$WXBLD/$ARCH/wxPython \
install \
--root=$INSTALLROOT/$ARCH
echo "Lipoing $INSTALLROOT/ppc and $INSTALLROOT/i386..."
$PYTHON $WXROOT/distrib/scripts/mac/lipo-dir.py $INSTALLROOT/ppc $INSTALLROOT/i386 $INSTALLROOT
rm -rf $INSTALLROOT/ppc $INSTALLROOT/i386
else
cd $WXROOT/wxPython
$PYTHON setup.py \
UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \
EP_ADD_OPTS=1 \
WX_CONFIG="$INSTALLROOT$PREFIX/bin/wx-config --prefix=$INSTALLROOT$PREFIX" \
BUILD_BASE=$WXBLD/wxPython \ BUILD_BASE=$WXBLD/wxPython \
install \ install \
--root=$INSTALLROOT --root=$INSTALLROOT
fi
# Apple's Python Framework (such as what comes with Panther) # Apple's Python Framework (such as what comes with Panther)
# sym-links the site-packages dir in the framework to # sym-links the site-packages dir in the framework to

View File

@@ -574,6 +574,11 @@ if BUILD_GLCANVAS:
gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl') gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl')
gl_lflags = lflags gl_lflags = lflags
if sys.platform[:6] == "darwin" and WXPORT == 'mac':
if not ARCH == "":
gl_lflags.append("-arch")
gl_lflags.append(ARCH)
ext = Extension('_glcanvas', ext = Extension('_glcanvas',
swig_sources, swig_sources,