diff options
author | don bright <hugh.m.bright@gmail.com> | 2013-01-28 02:42:20 (GMT) |
---|---|---|
committer | don bright <hugh.m.bright@gmail.com> | 2013-01-28 02:42:20 (GMT) |
commit | 1e64dddf1ea30282c89de7f35854a68614234652 (patch) | |
tree | 165d37c1c66f6ff79d48c74794238b3f0bed09da /scripts/macosx-build-dependencies.sh | |
parent | 5c779159c208ca3d88c88479ab29f9cd66574859 (diff) | |
parent | d0856efe6da545693f9c50a8a2514a9f999ab5ef (diff) |
Merge branch 'master' of github.com:openscad/openscad into issue159
Diffstat (limited to 'scripts/macosx-build-dependencies.sh')
-rwxr-xr-x | scripts/macosx-build-dependencies.sh | 142 |
1 files changed, 114 insertions, 28 deletions
diff --git a/scripts/macosx-build-dependencies.sh b/scripts/macosx-build-dependencies.sh index f7b6b18..bfe0ede 100755 --- a/scripts/macosx-build-dependencies.sh +++ b/scripts/macosx-build-dependencies.sh @@ -6,16 +6,16 @@ # # This script must be run from the OpenSCAD source root directory # -# Usage: macosx-build-dependencies.sh [-6] +# Usage: macosx-build-dependencies.sh [-6l] # -6 Build only 64-bit binaries +# -l Force use of LLVM compiler +# -c Force use of clang compiler # # Prerequisites: # - MacPorts: curl, cmake -# - Qt4 # # FIXME: # o Verbose option -# o Port to other platforms? # BASEDIR=$PWD/../libraries @@ -24,13 +24,38 @@ SRCDIR=$BASEDIR/src DEPLOYDIR=$BASEDIR/install MAC_OSX_VERSION_MIN=10.5 OPTION_32BIT=true +OPTION_LLVM=false +OPTION_CLANG=false +OPTION_GCC=false +DETECTED_LION=false export QMAKESPEC=macx-g++ printUsage() { - echo "Usage: $0 [-6]" + echo "Usage: $0 [-6lc]" echo echo " -6 Build only 64-bit binaries" + echo " -l Force use of LLVM compiler" + echo " -c Force use of clang compiler" +} + +# FIXME: Support gcc/llvm/clang flags. Use -platform <whatever> to make this work? kintel 20130117 +build_qt() +{ + version=$1 + echo "Building Qt" $version "..." + cd $BASEDIR/src + rm -rf qt-everywhere-opensource-src-$version + if [ ! -f qt-everywhere-opensource-src-$version.tar.gz ]; then + curl -O http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-$version.tar.gz + fi + tar xzf qt-everywhere-opensource-src-$version.tar.gz + cd qt-everywhere-opensource-src-$version + if $OPTION_32BIT; then + QT_32BIT="-arch x86" + fi + ./configure -prefix $DEPLOYDIR -release $QT_32BIT -arch x86_64 -opensource -confirm-license -fast -no-qt3support -no-svg -no-phonon -no-audio-backend -no-multimedia -no-javascript-jit -no-script -no-scripttools -no-declarative -no-xmlpatterns -nomake demos -nomake examples -nomake docs -nomake translations -no-webkit + make -j6 install } # Hack warning: gmplib is built separately in 32-bit and 64-bit mode @@ -134,8 +159,8 @@ build_mpfr() fi tar xjf mpfr-$version.tar.bz2 cd mpfr-$version - curl -O http://www.mpfr.org/mpfr-$version/allpatches - patch -N -Z -p1 < allpatches +# curl -O http://www.mpfr.org/mpfr-$version/allpatches +# patch -N -Z -p1 < allpatches if $OPTION_32BIT; then mkdir build-i386 cd build-i386 @@ -177,13 +202,21 @@ build_boost() 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 + ./bootstrap.sh --prefix=$DEPLOYDIR --with-libraries=thread,program_options,filesystem,chrono,system,regex 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 + if $OPTION_LLVM; then + BOOST_TOOLSET="toolset=darwin-llvm" + echo "using darwin : llvm : llvm-g++ ;" >> tools/build/v2/user-config.jam + elif $OPTION_CLANG; then + BOOST_TOOLSET="toolset=clang" + echo "using clang ;" >> tools/build/v2/user-config.jam + fi + ./b2 -d+2 $BOOST_TOOLSET 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" install install_name_tool -id $DEPLOYDIR/lib/libboost_thread.dylib $DEPLOYDIR/lib/libboost_thread.dylib + install_name_tool -change libboost_system.dylib $DEPLOYDIR/lib/libboost_system.dylib $DEPLOYDIR/lib/libboost_thread.dylib + install_name_tool -change libboost_chrono.dylib $DEPLOYDIR/lib/libboost_chrono.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 @@ -200,8 +233,10 @@ build_cgal() cd $BASEDIR/src rm -rf CGAL-$version if [ ! -f CGAL-$version.tar.gz ]; then - # 4.0.2 - curl -O https://gforge.inria.fr/frs/download.php/31175/CGAL-$version.tar.gz + # 4.1 + curl -O https://gforge.inria.fr/frs/download.php/31641/CGAL-$version.tar.gz + # 4.1-beta1 curl -O https://gforge.inria.fr/frs/download.php/31348/CGAL-$version.tar.gz + # 4.0.2 curl -O https://gforge.inria.fr/frs/download.php/31175/CGAL-$version.tar.gz # 4.0 curl -O https://gforge.inria.fr/frs/download.php/30387/CGAL-$version.tar.gz # 3.9 curl -O https://gforge.inria.fr/frs/download.php/29125/CGAL-$version.tar.gz # 3.8 curl -O https://gforge.inria.fr/frs/download.php/28500/CGAL-$version.tar.gz @@ -212,7 +247,7 @@ build_cgal() if $OPTION_32BIT; then CGAL_EXTRA_FLAGS=";i386" fi - cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DGMP_INCLUDE_DIR=$DEPLOYDIR/include -DGMP_LIBRARIES=$DEPLOYDIR/lib/libgmp.dylib -DGMPXX_LIBRARIES=$DEPLOYDIR/lib/libgmpxx.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=TRUE -DCMAKE_OSX_DEPLOYMENT_TARGET="$MAC_OSX_VERSION_MIN" -DCMAKE_OSX_ARCHITECTURES="x86_64$CGAL_EXTRA_FLAGS" -DBOOST_ROOT=$DEPLOYDIR + cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DGMP_INCLUDE_DIR=$DEPLOYDIR/include -DGMP_LIBRARIES=$DEPLOYDIR/lib/libgmp.dylib -DGMPXX_LIBRARIES=$DEPLOYDIR/lib/libgmpxx.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=TRUE -DCMAKE_OSX_DEPLOYMENT_TARGET="$MAC_OSX_VERSION_MIN" -DCMAKE_OSX_ARCHITECTURES="x86_64$CGAL_EXTRA_FLAGS" -DBOOST_ROOT=$DEPLOYDIR -DBoost_USE_MULTITHREADED=false make -j4 make install install_name_tool -id $DEPLOYDIR/lib/libCGAL.dylib $DEPLOYDIR/lib/libCGAL.dylib @@ -232,12 +267,10 @@ build_glew() 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 -ibak -e "s/\$(STRIP) -x lib\/\$(LIB.STATIC)//" Makefile 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 + make GLEW_DEST=$DEPLOYDIR CC=$CC 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" STRIP= install } build_opencsg() @@ -265,20 +298,29 @@ build_eigen() echo "Building eigen" $version "..." cd $BASEDIR/src rm -rf eigen-$version - ## Directory name for v2.0.17 - rm -rf eigen-eigen-b23437e61a07 + + EIGENDIR="none" + if [ $version = "2.0.17" ]; then EIGENDIR=eigen-eigen-b23437e61a07; fi + if [ $version = "3.1.2" ]; then EIGENDIR=eigen-eigen-5097c01bcdc4; fi + if [ $EIGENDIR = "none" ]; then + echo Unknown eigen version. Please edit script. + exit 1 + fi + rm -rf ./$EIGENDIR + 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 + ln -s ./$EIGENDIR eigen-$version cd eigen-$version + mkdir build + cd build 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" + 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 } @@ -288,20 +330,64 @@ if [ ! -f $OPENSCADDIR/openscad.pro ]; then exit 0 fi -while getopts '6' c +while getopts '6lc' c do case $c in - 6) OPTION_32BIT=false + 6) OPTION_32BIT=false;; + l) OPTION_LLVM=true;; + c) OPTION_CLANG=true;; esac done +OSVERSION=`sw_vers -productVersion | cut -d. -f2` +if [[ $OSVERSION -ge 7 ]]; then + echo "Detected Lion or later" + DETECTED_LION=true +else + echo "Detected Snow Leopard or earlier" +fi + +USING_LLVM=false +USING_GCC=false +USING_CLANG=false +if $OPTION_LLVM; then + USING_LLCM=true +elif $OPTION_GCC; then + USING_GCC=true +elif $OPTION_CLANG; then + USING_CLANG=true +elif $DETECTED_LION; then + USING_GCC=true +fi + +if $USING_LLVM; then + echo "Using gcc LLVM compiler" + export CC=llvm-gcc + export CXX=llvm-g++ + export QMAKESPEC=macx-llvm +elif $USING_GCC; then + echo "Using gcc compiler" + export CC=gcc + export CXX=g++ + export CPP=cpp + # Somehow, qmake in Qt-4.8.2 doesn't detect Lion's gcc and falls back into + # project file mode unless manually given a QMAKESPEC + export QMAKESPEC=macx-llvm +elif $USING_CLANG; then + echo "Using clang compiler" + export CC=clang + export CXX=clang++ + export QMAKESPEC=unsupported/macx-clang +fi + echo "Using basedir:" $BASEDIR mkdir -p $SRCDIR $DEPLOYDIR -build_eigen 2.0.17 -build_gmp 5.0.5 -build_mpfr 3.1.0 -build_boost 1.47.0 +build_qt 4.8.4 +build_eigen 3.1.2 +build_gmp 5.1.0 +build_mpfr 3.1.1 +build_boost 1.51.0 # NB! For CGAL, also update the actual download URL in the function -build_cgal 4.0.2 -build_glew 1.7.0 +build_cgal 4.1 +build_glew 1.9.0 build_opencsg 1.3.2 |