From a9e79409436d9037227dd73571b026c7ff0d4f62 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Wed, 15 Feb 2012 00:14:27 +0100 Subject: Merged the 64-bit only script back into the main script. Use the -6 option for 64-bit only diff --git a/scripts/macosx-build-dependencies-64bit.sh b/scripts/macosx-build-dependencies-64bit.sh deleted file mode 100755 index e40c5ab..0000000 --- a/scripts/macosx-build-dependencies-64bit.sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/bin/sh -e -# -# This script builds all library dependencies of OpenSCAD for Mac OS X. -# The libraries will be build in 64-bit mode and backwards compatible with -# 10.6 -# -# Usage: -# - Edit the BASEDIR variable. This is where libraries will be built and installed -# - Edit the OPENSCADDIR variable. This is where patches are fetched from -# -# Prerequisites: -# - MacPorts: curl eigen -# - Qt4 -# -# FIXME: -# o Verbose option -# o Port to other platforms? -# - -BASEDIR=$PWD/../libraries -OPENSCADDIR=$PWD -SRCDIR=$BASEDIR/src -DEPLOYDIR=$BASEDIR/install -MAC_OSX_VERSION_MIN=10.6 - -# Hack warning: gmplib is built separately in 32-bit and 64-bit mode -# and then merged afterwards. gmplib's header files are dependant on -# the CPU architecture on which configure was run and will be patched accordingly. -build_gmp() -{ - version=$1 - echo "Building gmp" $version "..." - cd $BASEDIR/src - rm -rf gmp-$version - if [ ! -f gmp-$version.tar.bz2 ]; then - curl -O ftp://ftp.gmplib.org/pub/gmp-$version/gmp-$version.tar.bz2 - fi - tar xjf gmp-$version.tar.bz2 - cd gmp-$version - # 32-bit version - mkdir build-i386 - cd build-i386 - ../configure --prefix=$DEPLOYDIR/i386 "CFLAGS=-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" LDFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" ABI=32 --enable-cxx - make install - cd .. - # 64-bit version - mkdir build-x86_64 - cd build-x86_64 - ../configure --prefix=$DEPLOYDIR/x86_64 "CFLAGS=-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64" LDFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64" ABI=64 --enable-cxx - make install - - # merge - cd $DEPLOYDIR - mkdir -p lib - lipo -create i386/lib/libgmp.dylib x86_64/lib/libgmp.dylib -output lib/libgmp.dylib - install_name_tool -id $DEPLOYDIR/lib/libgmp.dylib lib/libgmp.dylib - cp lib/libgmp.dylib i386/lib/ - cp lib/libgmp.dylib x86_64/lib/ - mkdir -p include - cp x86_64/include/gmp.h include/ - cp x86_64/include/gmpxx.h include/ - - patch -p0 include/gmp.h << EOF ---- gmp.h.orig 2011-11-08 01:03:41.000000000 +0100 -+++ gmp.h 2011-11-08 01:06:21.000000000 +0100 -@@ -26,12 +26,28 @@ - #endif - - --/* Instantiated by configure. */ --#if ! defined (__GMP_WITHIN_CONFIGURE) -+#if defined(__i386__) -+#define __GMP_HAVE_HOST_CPU_FAMILY_power 0 -+#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0 -+#define GMP_LIMB_BITS 32 -+#define GMP_NAIL_BITS 0 -+#elif defined(__x86_64__) - #define __GMP_HAVE_HOST_CPU_FAMILY_power 0 - #define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0 - #define GMP_LIMB_BITS 64 - #define GMP_NAIL_BITS 0 -+#elif defined(__ppc__) -+#define __GMP_HAVE_HOST_CPU_FAMILY_power 0 -+#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 1 -+#define GMP_LIMB_BITS 32 -+#define GMP_NAIL_BITS 0 -+#elif defined(__powerpc64__) -+#define __GMP_HAVE_HOST_CPU_FAMILY_power 0 -+#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 1 -+#define GMP_LIMB_BITS 64 -+#define GMP_NAIL_BITS 0 -+#else -+#error Unsupported architecture - #endif - #define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS) - #define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS) -EOF -} - -# As with gmplib, mpfr is built separately in 32-bit and 64-bit mode and then merged -# afterwards. -build_mpfr() -{ - version=$1 - echo "Building mpfr" $version "..." - cd $BASEDIR/src - rm -rf mpfr-$version - if [ ! -f mpfr-$version.tar.bz2 ]; then - curl -O http://www.mpfr.org/mpfr-current/mpfr-$version.tar.bz2 - fi - tar xjf mpfr-$version.tar.bz2 - cd mpfr-$version - - # 32-bit version - mkdir build-i386 - cd build-i386 - ../configure --prefix=$DEPLOYDIR/i386 --with-gmp=$DEPLOYDIR/i386 CFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" LDFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" - make install - cd .. - - # 64-bit version - mkdir build-x86_64 - cd build-x86_64 - ../configure --prefix=$DEPLOYDIR/x86_64 --with-gmp=$DEPLOYDIR/x86_64 CFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64" LDFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64" - make install - - # merge - cd $DEPLOYDIR - lipo -create i386/lib/libmpfr.dylib x86_64/lib/libmpfr.dylib -output lib/libmpfr.dylib - install_name_tool -id $DEPLOYDIR/lib/libmpfr.dylib lib/libmpfr.dylib - mkdir -p include - cp x86_64/include/mpfr.h include/ - cp x86_64/include/mpf2mpfr.h include/ -} - - -build_boost() -{ - version=$1 - bversion=`echo $version | tr "." "_"` - echo "Building boost" $version "..." - cd $BASEDIR/src - rm -rf boost_$bversion - if [ ! -f boost_$bversion.tar.bz2 ]; then - curl -LO http://downloads.sourceforge.net/project/boost/boost/$version/boost_$bversion.tar.bz2 - fi - tar xjf boost_$bversion.tar.bz2 - cd boost_$bversion - # We only need the thread and program_options libraries - ./bootstrap.sh --prefix=$DEPLOYDIR --with-libraries=thread,program_options,filesystem,system,regex - ./bjam cflags="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64" linkflags="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64" - ./bjam install - install_name_tool -id $DEPLOYDIR/lib/libboost_thread.dylib $DEPLOYDIR/lib/libboost_thread.dylib - install_name_tool -id $DEPLOYDIR/lib/libboost_program_options.dylib $DEPLOYDIR/lib/libboost_program_options.dylib - install_name_tool -id $DEPLOYDIR/lib/libboost_filesystem.dylib $DEPLOYDIR/lib/libboost_filesystem.dylib - install_name_tool -change libboost_system.dylib $DEPLOYDIR/lib/libboost_system.dylib $DEPLOYDIR/lib/libboost_filesystem.dylib - install_name_tool -id $DEPLOYDIR/lib/libboost_system.dylib $DEPLOYDIR/lib/libboost_system.dylib - install_name_tool -id $DEPLOYDIR/lib/libboost_regex.dylib $DEPLOYDIR/lib/libboost_regex.dylib - - -} - -build_cgal() -{ - version=$1 - echo "Building CGAL" $version "..." - cd $BASEDIR/src - rm -rf CGAL-$version - if [ ! -f CGAL-$version.tar.gz ]; then - curl -O https://gforge.inria.fr/frs/download.php/29125/CGAL-$version.tar.gz - # curl -O https://gforge.inria.fr/frs/download.php/28500/CGAL-$version.tar.gz - # curl -O https://gforge.inria.fr/frs/download.php/27641/CGAL-$version.tar.gz - fi - tar xzf CGAL-$version.tar.gz - cd CGAL-$version - # We build a static lib. Not really necessary, but it's well tested. - cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DGMP_INCLUDE_DIR=$DEPLOYDIR/include -DGMP_LIBRARIES=$DEPLOYDIR/lib/libgmp.dylib -DGMPXX_INCLUDE_DIR=$DEPLOYDIR/include -DMPFR_INCLUDE_DIR=$DEPLOYDIR/include -DMPFR_LIBRARIES=$DEPLOYDIR/lib/libmpfr.dylib -DWITH_CGAL_Qt3=OFF -DWITH_CGAL_Qt4=OFF -DWITH_CGAL_ImageIO=OFF -DBUILD_SHARED_LIBS=FALSE -DCMAKE_OSX_DEPLOYMENT_TARGET="$MAC_OSX_VERSION_MIN" -DCMAKE_OSX_ARCHITECTURES="x86_64" -DBOOST_ROOT=$DEPLOYDIR - make -j4 - make install -} - -build_glew() -{ - version=$1 - echo "Building GLEW" $version "..." - cd $BASEDIR/src - rm -rf glew-$version - if [ ! -f glew-$version.tgz ]; then - curl -LO http://downloads.sourceforge.net/project/glew/glew/$version/glew-$version.tgz - fi - tar xzf glew-$version.tgz - cd glew-$version - mkdir -p $DEPLOYDIR/lib/pkgconfig - # To avoid running strip on a fat archive as this is not supported by strip - sed -i bak -e "s/\$(STRIP) -x lib\/\$(LIB.STATIC)//" Makefile - make GLEW_DEST=$DEPLOYDIR CFLAGS.EXTRA="-no-cpp-precomp -dynamic -fno-common -mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64" LDFLAGS.EXTRA="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64" install -} - -build_opencsg() -{ - version=$1 - echo "Building OpenCSG" $version "..." - cd $BASEDIR/src - rm -rf OpenCSG-$version - if [ ! -f OpenCSG-$version.tar.gz ]; then - curl -O http://www.opencsg.org/OpenCSG-$version.tar.gz - fi - tar xzf OpenCSG-$version.tar.gz - cd OpenCSG-$version - patch -p1 < $OPENSCADDIR/patches/OpenCSG-$version-MacOSX-port.patch - OPENSCAD_LIBRARIES=$DEPLOYDIR qmake -r CONFIG+="x86_64" - make install -} - -build_eigen() -{ - version=$1 - echo "Building eigen" $version "..." - cd $BASEDIR/src - rm -rf eigen-$version - ## Directory name for v2.0.17 - rm -rf eigen-eigen-b23437e61a07 - if [ ! -f eigen-$version.tar.bz2 ]; then - curl -LO http://bitbucket.org/eigen/eigen/get/$version.tar.bz2 - mv $version.tar.bz2 eigen-$version.tar.bz2 - fi - tar xjf eigen-$version.tar.bz2 - ## File name for v2.0.17 - ln -s eigen-eigen-b23437e61a07 eigen-$version - cd eigen-$version - cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DEIGEN_BUILD_LIB=ON -DBUILD_SHARED_LIBS=FALSE -DCMAKE_OSX_DEPLOYMENT_TARGET="$MAC_OSX_VERSION_MIN" -DCMAKE_OSX_ARCHITECTURES="x86_64" - make -j4 - make install -} - -if [ ! -f $OPENSCADDIR/openscad.pro ]; then - echo "Must be run from the OpenSCAD source root directory" - exit 0 -fi - -echo "Using basedir:" $BASEDIR -rm -rf $DEPLOYDIR -mkdir -p $SRCDIR $DEPLOYDIR -build_eigen 2.0.17 -build_gmp 5.0.3 -build_mpfr 3.1.0 -build_boost 1.47.0 -# NB! For CGAL, also update the actual download URL in the function -build_cgal 3.9 -build_glew 1.7.0 -build_opencsg 1.3.2 diff --git a/scripts/macosx-build-dependencies.sh b/scripts/macosx-build-dependencies.sh index a52f1fe..fada8c4 100755 --- a/scripts/macosx-build-dependencies.sh +++ b/scripts/macosx-build-dependencies.sh @@ -1,15 +1,16 @@ #!/bin/sh -e # # This script builds all library dependencies of OpenSCAD for Mac OS X. -# The libraries will be build in 32- and 64-bit mode and backwards compatible with -# 10.5 "Leopard". +# The libraries will be build in 64-bit (and optionally 32-bit mode) mode +# and backwards compatible with 10.5 "Leopard". # -# Usage: -# - Edit the BASEDIR variable. This is where libraries will be built and installed -# - Edit the OPENSCADDIR variable. This is where patches are fetched from +# This script must be run from the OpenSCAD source root directory +# +# Usage: macosx-build-dependencies.sh [-6] +# -6 Build only 64-bit binaries # # Prerequisites: -# - MacPorts: curl eigen +# - MacPorts: curl # - Qt4 # # FIXME: @@ -22,9 +23,17 @@ OPENSCADDIR=$PWD SRCDIR=$BASEDIR/src DEPLOYDIR=$BASEDIR/install MAC_OSX_VERSION_MIN=10.5 +OPTION_32BIT=true + +printUsage() +{ + echo "Usage: $0 [-6]" + echo + echo " -6 Build only 64-bit binaries" +} # Hack warning: gmplib is built separately in 32-bit and 64-bit mode -# and then merged afterwards. gmplib's header files are dependant on +# and then merged afterwards. gmplib's header files are dependent on # the CPU architecture on which configure was run and will be patched accordingly. build_gmp() { @@ -37,12 +46,14 @@ build_gmp() fi tar xjf gmp-$version.tar.bz2 cd gmp-$version - # 32-bit version - mkdir build-i386 - cd build-i386 - ../configure --prefix=$DEPLOYDIR/i386 "CFLAGS=-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" LDFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" ABI=32 --enable-cxx - make install - cd .. + if $OPTION_32BIT; then + mkdir build-i386 + cd build-i386 + ../configure --prefix=$DEPLOYDIR/i386 "CFLAGS=-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" LDFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" ABI=32 --enable-cxx + make install + cd .. + fi + # 64-bit version mkdir build-x86_64 cd build-x86_64 @@ -52,10 +63,16 @@ build_gmp() # merge cd $DEPLOYDIR mkdir -p lib - lipo -create i386/lib/libgmp.dylib x86_64/lib/libgmp.dylib -output lib/libgmp.dylib + if $OPTION_32BIT; then + lipo -create i386/lib/libgmp.dylib x86_64/lib/libgmp.dylib -output lib/libgmp.dylib + else + cp x86_64/lib/libgmp.dylib lib/libgmp.dylib + fi install_name_tool -id $DEPLOYDIR/lib/libgmp.dylib lib/libgmp.dylib - cp lib/libgmp.dylib i386/lib/ - cp lib/libgmp.dylib x86_64/lib/ + if $OPTION_32BIT; then + cp lib/libgmp.dylib i386/lib/ + cp lib/libgmp.dylib x86_64/lib/ + fi mkdir -p include cp x86_64/include/gmp.h include/ cp x86_64/include/gmpxx.h include/ @@ -111,12 +128,13 @@ build_mpfr() tar xjf mpfr-$version.tar.bz2 cd mpfr-$version - # 32-bit version - mkdir build-i386 - cd build-i386 - ../configure --prefix=$DEPLOYDIR/i386 --with-gmp=$DEPLOYDIR/i386 CFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" LDFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" - make install - cd .. + if $OPTION_32BIT; then + mkdir build-i386 + cd build-i386 + ../configure --prefix=$DEPLOYDIR/i386 --with-gmp=$DEPLOYDIR/i386 CFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" LDFLAGS="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386" + make install + cd .. + fi # 64-bit version mkdir build-x86_64 @@ -126,7 +144,11 @@ build_mpfr() # merge cd $DEPLOYDIR - lipo -create i386/lib/libmpfr.dylib x86_64/lib/libmpfr.dylib -output lib/libmpfr.dylib + if $OPTION_32BIT; then + lipo -create i386/lib/libmpfr.dylib x86_64/lib/libmpfr.dylib -output lib/libmpfr.dylib + else + cp x86_64/lib/libmpfr.dylib lib/libmpfr.dylib + fi install_name_tool -id $DEPLOYDIR/lib/libmpfr.dylib lib/libmpfr.dylib mkdir -p include cp x86_64/include/mpfr.h include/ @@ -148,7 +170,10 @@ build_boost() cd boost_$bversion # We only need the thread and program_options libraries ./bootstrap.sh --prefix=$DEPLOYDIR --with-libraries=thread,program_options,filesystem,system,regex - ./bjam cflags="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386 -arch x86_64" linkflags="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386 -arch x86_64" + if $OPTION_32BIT; then + BOOST_EXTRA_FLAGS="-arch i386" + fi + ./bjam cflags="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64 $BOOST_EXTRA_FLAGS" linkflags="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch x86_64 $BOOST_EXTRA_FLAGS" ./bjam install install_name_tool -id $DEPLOYDIR/lib/libboost_thread.dylib $DEPLOYDIR/lib/libboost_thread.dylib install_name_tool -id $DEPLOYDIR/lib/libboost_program_options.dylib $DEPLOYDIR/lib/libboost_program_options.dylib @@ -173,8 +198,11 @@ build_cgal() fi tar xzf CGAL-$version.tar.gz cd CGAL-$version + if $OPTION_32BIT; then + CGAL_EXTRA_FLAGS=";i386" + fi # We build a static lib. Not really necessary, but it's well tested. - cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DGMP_INCLUDE_DIR=$DEPLOYDIR/include -DGMP_LIBRARIES=$DEPLOYDIR/lib/libgmp.dylib -DGMPXX_INCLUDE_DIR=$DEPLOYDIR/include -DMPFR_INCLUDE_DIR=$DEPLOYDIR/include -DMPFR_LIBRARIES=$DEPLOYDIR/lib/libmpfr.dylib -DWITH_CGAL_Qt3=OFF -DWITH_CGAL_Qt4=OFF -DWITH_CGAL_ImageIO=OFF -DBUILD_SHARED_LIBS=FALSE -DCMAKE_OSX_DEPLOYMENT_TARGET="$MAC_OSX_VERSION_MIN" -DCMAKE_OSX_ARCHITECTURES="i386;x86_64" -DBOOST_ROOT=$DEPLOYDIR + cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DGMP_INCLUDE_DIR=$DEPLOYDIR/include -DGMP_LIBRARIES=$DEPLOYDIR/lib/libgmp.dylib -DGMPXX_INCLUDE_DIR=$DEPLOYDIR/include -DMPFR_INCLUDE_DIR=$DEPLOYDIR/include -DMPFR_LIBRARIES=$DEPLOYDIR/lib/libmpfr.dylib -DWITH_CGAL_Qt3=OFF -DWITH_CGAL_Qt4=OFF -DWITH_CGAL_ImageIO=OFF -DBUILD_SHARED_LIBS=FALSE -DCMAKE_OSX_DEPLOYMENT_TARGET="$MAC_OSX_VERSION_MIN" -DCMAKE_OSX_ARCHITECTURES="x86_64$CGAL_EXTRA_FLAGS" -DBOOST_ROOT=$DEPLOYDIR make -j4 make install } @@ -193,7 +221,10 @@ build_glew() mkdir -p $DEPLOYDIR/lib/pkgconfig # To avoid running strip on a fat archive as this is not supported by strip sed -i bak -e "s/\$(STRIP) -x lib\/\$(LIB.STATIC)//" Makefile - make GLEW_DEST=$DEPLOYDIR CFLAGS.EXTRA="-no-cpp-precomp -dynamic -fno-common -mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386 -arch x86_64" LDFLAGS.EXTRA="-mmacosx-version-min=$MAC_OSX_VERSION_MIN -arch i386 -arch x86_64" install + if $OPTION_32BIT; then + GLEW_EXTRA_FLAGS="-arch i386" + fi + make GLEW_DEST=$DEPLOYDIR CFLAGS.EXTRA="-no-cpp-precomp -dynamic -fno-common -mmacosx-version-min=$MAC_OSX_VERSION_MIN $GLEW_EXTRA_FLAGS -arch x86_64" LDFLAGS.EXTRA="-mmacosx-version-min=$MAC_OSX_VERSION_MIN $GLEW_EXTRA_FLAGS -arch x86_64" install } build_opencsg() @@ -208,7 +239,10 @@ build_opencsg() tar xzf OpenCSG-$version.tar.gz cd OpenCSG-$version patch -p1 < $OPENSCADDIR/patches/OpenCSG-$version-MacOSX-port.patch - OPENSCAD_LIBRARIES=$DEPLOYDIR qmake -r CONFIG+="x86 x86_64" + if $OPTION_32BIT; then + OPENCSG_EXTRA_FLAGS="x86" + fi + OPENSCAD_LIBRARIES=$DEPLOYDIR qmake -r CONFIG+="x86_64 $OPENCSG_EXTRA_FLAGS" make install } @@ -228,7 +262,10 @@ build_eigen() ## File name for v2.0.17 ln -s eigen-eigen-b23437e61a07 eigen-$version cd eigen-$version - cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DEIGEN_BUILD_LIB=ON -DBUILD_SHARED_LIBS=FALSE -DCMAKE_OSX_DEPLOYMENT_TARGET="$MAC_OSX_VERSION_MIN" -DCMAKE_OSX_ARCHITECTURES="i386;x86_64" + if $OPTION_32BIT; then + EIGEN_EXTRA_FLAGS=";i386" + fi + cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DEIGEN_BUILD_LIB=ON -DBUILD_SHARED_LIBS=FALSE -DCMAKE_OSX_DEPLOYMENT_TARGET="$MAC_OSX_VERSION_MIN" -DCMAKE_OSX_ARCHITECTURES="x86_64$EIGEN_EXTRA_FLAGS" make -j4 make install } @@ -238,11 +275,17 @@ if [ ! -f $OPENSCADDIR/openscad.pro ]; then exit 0 fi +while getopts '6' c +do + case $c in + 6) OPTION_32BIT=false + esac +done + echo "Using basedir:" $BASEDIR -rm -rf $DEPLOYDIR mkdir -p $SRCDIR $DEPLOYDIR build_eigen 2.0.17 -build_gmp 5.0.3 +build_gmp 5.0.4 build_mpfr 3.1.0 build_boost 1.47.0 # NB! For CGAL, also update the actual download URL in the function -- cgit v0.10.1