From f5b3b30e51a5658918af52521ddb48eebcc1b6dc Mon Sep 17 00:00:00 2001 From: kintel Date: Fri, 7 May 2010 16:24:26 +0000 Subject: [PATCH] Improved Mac OS X deployment - hopefully this doesn't break builds on other platforms git-svn-id: http://svn.clifford.at/openscad/trunk@529 b57f626f-c46c-0410-a088-ec61d464b74c --- cgal.pri | 27 +++++++--------- doc/TODO.txt | 6 ++-- doc/checklist-macosx.txt | 58 ++++++++++++++++++++++++++-------- opencsg.pri | 32 +++++++++---------- openscad.pro | 16 ++++++++-- scripts/macosx-sanity-check.py | 2 ++ scripts/release-common.sh | 2 +- setenv_mjau.sh | 3 ++ 8 files changed, 93 insertions(+), 53 deletions(-) diff --git a/cgal.pri b/cgal.pri index 70c7fcc0..0c1fd301 100644 --- a/cgal.pri +++ b/cgal.pri @@ -1,22 +1,17 @@ cgal { DEFINES += ENABLE_CGAL - LIBS += -lCGAL - # Optionally specify location of CGAL using the - # CGALDIR env. variable - CGAL_DIR = $$(CGALDIR) - !isEmpty(CGAL_DIR) { - INCLUDEPATH += $$CGAL_DIR/include - LIBS += -L$$CGAL_DIR/lib - message("CGAL location: $$CGAL_DIR") + !deploy { + # Optionally specify location of CGAL using the + # CGALDIR env. variable + CGAL_DIR = $$(CGALDIR) + !isEmpty(CGAL_DIR) { + INCLUDEPATH += $$CGAL_DIR/include + LIBS += -L$$CGAL_DIR/lib + message("CGAL location: $$CGAL_DIR") + } } - macx { - # The -L/usr/lib is to force the linker to use system libraries over MacPort libraries - LIBS += -L/usr/lib -L/opt/local/lib /opt/local/lib/libgmp.a /opt/local/lib/libmpfr.a /opt/local/lib/libboost_thread-mt.a - } - else { - LIBS += -lmpfr - } - win32:LIBS += -lboost_thread -lgmp + + LIBS += -lCGAL -lmpfr -lgmp -lboost_thread QMAKE_CXXFLAGS += -frounding-math } diff --git a/doc/TODO.txt b/doc/TODO.txt index e6b4ac5b..b6643c45 100644 --- a/doc/TODO.txt +++ b/doc/TODO.txt @@ -41,7 +41,7 @@ o MDI o 3D View - OpenGL 2.0 test: What, exactly, is needed from OpenGL 2.0? Can we use 1.x with extensions? - Improve mouse rotation - - Add modifier key combos to handle pan on 1 mouse button systems + - Add modifier key combos to handle pan and zoom on 1 mouse button systems - Show grid - 4 x split view w/orthogonal cameras? - Quick highlighting of object under the cursor in the editor @@ -170,6 +170,8 @@ MISC o Streamline the cmd-line interface a bit - Implicit output file format o Mac OS X: - - universal binary -> fix cgal and opencsg + - 32-bit compatibility + o Build everything including i386 arch + o Write checklists for typical extension work (add new module, add new function) -> make sure new test files are added diff --git a/doc/checklist-macosx.txt b/doc/checklist-macosx.txt index 6db20336..26ef2089 100644 --- a/doc/checklist-macosx.txt +++ b/doc/checklist-macosx.txt @@ -1,30 +1,60 @@ -o Prerequisites (MacPorts): - - NB! CGAL requires gcc >= 4.2 - - eigen - - boost - - gmp - - mpfr - - cmake - - Qt4 +NB! This is the Mac OS X deployment checklist. + See build-macosx.txt for how to build a development build of + OpenSCAD for your system only without manually compiling all + dependencies. + +o MacPorts libs + port install eigen + +o Qt4 + - Download and install the combined 32-bit and 64-bit build for 10.5-10.6 from here: + http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x + +o Build gmp + + tar xjz gmp-5.0.1.tar.bz2 + cd gmp-5.0.1 + ./configure --prefix=$PWD/../../deploy CFLAGS=-mmacosx-version-min=10.5 LDFLAGS=-mmacosx-version-min=10.5 + make install + +o Build mpfr + tar xjz mpfr-2.4.2.tar.bz2 + cd mpfr-2.4.2 + ./configure --prefix=$PWD/../../deploy --with-gmp=$PWD/../../deploy CFLAGS=-mmacosx-version-min=10.5 LDFLAGS=-mmacosx-version-min=10.5 + make install + +o Build boost::thread + tar xjz boost_1_42_0.tar.bz2 + cd boost_1_42_0 + ./bootstrap.sh --prefix=$PWD/../../deploy --with-libraries=thread + ./bjam cflags="-mmacosx-version-min=10.5" linkflags="-mmacosx-version-min=10.5" + ./bjam install o Build CGAL >= 3.5 tar xzf CGAL-3.6.tar.gz cd CGAL-3.6 - cmake -DCMAKE_INSTALL_PREFIX=$PWD/../install/CGAL-3.6 -DBUILD_SHARED_LIBS=FALSE + cmake -DCMAKE_INSTALL_PREFIX=$PWD/../../deploy -DBUILD_SHARED_LIBS=FALSE -DCMAKE_OSX_DEPLOYMENT_TARGET="10.5" make -j4 make install -o Patch OpenCSG >= 1.3.0 +o Patch & build GLEW + tar xzf glew-1.5.3.tar.gz + cd glew-1.5.3 + patch -p1 < ../openscad/patches/glew-1.5.3-MacOSX.patch + mkdir ../../deploy/lib/pkgconfig + GLEW_DEST=$PWD/../../deploy make install + +o Patch and build OpenCSG >= 1.3.0 + + FIXME: Update patch tar xzf OpenCSG-1.3.0.tar.gz cd OpenCSG-1.3.0 patch -p1 < ../openscad/patches/OpenCSG-1.3.0-MacOSX-port.patch - -o Build OpenCSG - - qmake -recursive + MACOSX_DEPLOY_DIR=$PWD/../../deploy qmake -r make + make install o Build and Deploy OpenSCAD diff --git a/opencsg.pri b/opencsg.pri index c9ed9900..a3b70f73 100644 --- a/opencsg.pri +++ b/opencsg.pri @@ -1,23 +1,21 @@ opencsg { + DEFINES += ENABLE_OPENCSG + CONFIG += glew + include(glew.pri) + HEADERS += src/render-opencsg.h SOURCES += src/render-opencsg.cc - DEFINES += ENABLE_OPENCSG - LIBS += -lopencsg - unix:LIBS += -lGLEW - win32:LIBS += -lglew32 + !deploy { + # Optionally specify location of OpenCSG using the + # OPENCSGDIR env. variable + OPENCSG_DIR = $$(OPENCSGDIR) + !isEmpty(OPENCSG_DIR) { + INCLUDEPATH += $$OPENCSG_DIR/include + LIBS += -L$$OPENCSG_DIR/lib + message("OpenCSG location: $$OPENCSG_DIR") + } + } - # Optionally specify location of OpenCSG using the - # OPENCSGDIR env. variable - OPENCSG_DIR = $$(OPENCSGDIR) - !isEmpty(OPENCSG_DIR) { - INCLUDEPATH += $$OPENCSG_DIR/include - LIBS += -L$$OPENCSG_DIR/lib - message("OpenCSG location: $$CGAL_DIR") - } - macx { - # For glew - INCLUDEPATH += /opt/local/include - LIBS += -L/opt/local/lib - } + LIBS += -lopencsg } diff --git a/openscad.pro b/openscad.pro index 8d0df635..bb3d387e 100644 --- a/openscad.pro +++ b/openscad.pro @@ -10,6 +10,16 @@ RCC_DIR = objects INCLUDEPATH += src macx { + # add CONFIG+=deploy to the qmake command-line to make a deployment build + deploy { + message("Building deployment version") + DEPLOYDIR = $$(MACOSX_DEPLOY_DIR) + !isEmpty(DEPLOYDIR) { + INCLUDEPATH += $$DEPLOYDIR/include + LIBS += -L$$DEPLOYDIR/lib + } + } + TARGET = OpenSCAD ICON = icons/OpenSCAD.icns QMAKE_INFO_PLIST = Info.plist @@ -56,9 +66,9 @@ include(opencsg.pri) include(eigen2.pri) # Standard include path for misc external libs -macx { - INCLUDEPATH += /opt/local/include -} +#macx { +# INCLUDEPATH += /opt/local/include +#} # QMAKE_CFLAGS += -pg # QMAKE_CXXFLAGS += -pg diff --git a/scripts/macosx-sanity-check.py b/scripts/macosx-sanity-check.py index 24389065..1b5a7b7a 100755 --- a/scripts/macosx-sanity-check.py +++ b/scripts/macosx-sanity-check.py @@ -5,6 +5,8 @@ # are present and that they are backwards compatible with at least 10.5. # Run with an executable as parameter # +# Author: Marius Kintel +# import sys import os diff --git a/scripts/release-common.sh b/scripts/release-common.sh index b782976a..340266dd 100755 --- a/scripts/release-common.sh +++ b/scripts/release-common.sh @@ -42,7 +42,7 @@ echo "Building openscad-$VERSION $CONFIGURATION..." case $OS in MACOSX) - CONFIG=mdi + CONFIG=deploy TARGET= ;; WIN) diff --git a/setenv_mjau.sh b/setenv_mjau.sh index ed466f77..5a1adb0a 100644 --- a/setenv_mjau.sh +++ b/setenv_mjau.sh @@ -1,3 +1,6 @@ +export MACOSX_DEPLOY_DIR=$PWD/../libraries/deploy +export DYLD_LIBRARY_PATH=$MACOSX_DEPLOY_DIR/lib + export OPENCSGDIR=$PWD/../OpenCSG-1.3.0 export CGALDIR=$PWD/../install/CGAL-3.6 export QCODEEDITDIR=$PWD/../qcodeedit-2.2.3/install