diff options
author | Marius Kintel <marius@kintel.net> | 2012-06-04 05:48:42 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2012-06-04 05:48:42 (GMT) |
commit | 2836f0c37273aa41ba8280ee459ced418dbb74ea (patch) | |
tree | 513ad0da109fb114ac637d9c0b1cdd3e74e52a10 | |
parent | 5b366adf8a9fb1b677eb9340f97ec764a15e5425 (diff) | |
parent | 6f65f92c6707147dd676094a98bdf715557bcb58 (diff) |
Merge branch 'master' into caliston1
-rw-r--r-- | doc/testing.txt | 27 | ||||
-rw-r--r-- | glew.pri | 1 | ||||
-rw-r--r-- | openscad.pro | 10 | ||||
-rwxr-xr-x | scripts/linux-build-dependencies.sh | 227 | ||||
-rw-r--r-- | src/glview.cc | 4 | ||||
-rw-r--r-- | tests/CMakeLists.txt | 2 |
6 files changed, 263 insertions, 8 deletions
diff --git a/doc/testing.txt b/doc/testing.txt index 6990c2f..8ab1cee 100644 --- a/doc/testing.txt +++ b/doc/testing.txt @@ -77,6 +77,10 @@ virtual framebuffer program like Xvnc or Xvfb. For example: $ Xvfb :5 -screen 0 800x600x24 & $ DISPLAY=:5 ctest +or + +$ xvfb-run ctest + Some versions of Xvfb may fail, however. 1. Trouble finding libraries on unix @@ -84,13 +88,19 @@ Some versions of Xvfb may fail, however. To help CMAKE find eigen2, OpenCSG, CGAL, Boost, and GLEW, you can use environment variables, just like for the main qmake & openscad.pro. Examples: - OPENSCAD_LIBRARIES=~ cmake . - CGALDIR=~/CGAL-3.9 BOOSTDIR=~/boost-1.47.0 cmake . - + OPENSCAD_LIBRARIES=$HOME cmake . + CGALDIR=$HOME/CGAL-3.9 BOOSTDIR=$HOME/boost-1.47.0 cmake . + Valid variables are as follows: BOOSTDIR, CGALDIR, EIGEN2DIR, GLEWDIR, OPENCSGDIR, OPENSCAD_LIBRARIES + When running, this might help find your locally built libraries (assuming + you installed into $HOME) + + Linux: export LD_LIBRARY_PATH=$HOME/lib:$HOME/lib64 + Mac: export DYLD_LIBRARY_PATH=$HOME/lib + 2. Location of logs Logs of test runs are found in tests/build/Testing/Temporary @@ -111,7 +121,16 @@ Comparison method. Your version of imagemagick is old. Upgrade, or pass -DCOMPARATOR=old to cmake. The comparison will be of lowered reliability. -5. Other issues +5. Locale errors + +"terminate called after throwing an instance of 'std::runtime_error' + what(): locale::facet::_S_create_c_locale name not valid" + +Is a boost/libstdc++ bug. Fix like so: + + $ export LC_MESSAGES= + +6. Other issues The OpenSCAD User Manual has a section on buildling. Please check there for updates: @@ -5,6 +5,7 @@ glew { !isEmpty(GLEW_DIR) { QMAKE_INCDIR += $$GLEW_DIR/include QMAKE_LIBDIR += $$GLEW_DIR/lib + QMAKE_LIBDIR += $$GLEW_DIR/lib64 message("GLEW location: $$GLEW_DIR") } diff --git a/openscad.pro b/openscad.pro index 453ab77..591ed5f 100644 --- a/openscad.pro +++ b/openscad.pro @@ -81,9 +81,13 @@ win32 { CONFIG += qt QT += opengl -# Fedora Linux + DSO fix -linux*:exists(/usr/lib64/libGLU*)|linux*:exists(/usr/lib/libGLU*) { - LIBS += -lGLU +# see http://fedoraproject.org/wiki/UnderstandingDSOLinkChange +# and https://github.com/openscad/openscad/pull/119 +# ( QT += opengl does not automatically link glu on some DSO systems. ) +unix:!macx { + !contains ( QMAKE_LIBS_OPENGL, "-lGLU" ) { + QMAKE_LIBS_OPENGL += -lGLU + } } netbsd* { diff --git a/scripts/linux-build-dependencies.sh b/scripts/linux-build-dependencies.sh new file mode 100755 index 0000000..9097850 --- /dev/null +++ b/scripts/linux-build-dependencies.sh @@ -0,0 +1,227 @@ +#!/bin/sh -e +# +# This script builds all library dependencies of OpenSCAD for Linux +# +# This script must be run from the OpenSCAD source root directory +# +# Usage: linux-build-dependencies.sh +# +# Prerequisites: +# - curl +# -- you can uncomment 'build_curl' at the bottom +# -- and add $BASEDIR/bin to your PATH, i.e. in .bash_profile +# - Qt4 +# - cmake 2.8 +# -- you can uncomment 'build_cmake' at the bottom +# + +BASEDIR=$HOME +OPENSCADDIR=$PWD +SRCDIR=$BASEDIR/src +DEPLOYDIR=$BASEDIR +NUMCPU=2 # paralell builds for some libraries + +printUsage() +{ + echo "Usage: $0" + echo +} + +build_cmake() +{ + version=$1 + echo "Building cmake" $version "..." + cd $BASEDIR/src + rm -rf cmake-$version + if [ ! -f cmake-$version.tar.gz ]; then + curl -O http://www.cmake.org/files/v2.8/cmake-$version.tar.gz + fi + tar zxf cmake-$version.tar.gz + cd cmake-$version + mkdir build + cd build + ../configure --prefix=$DEPLOYDIR + make -j$NUMCPU + make install +} + +build_curl() +{ + version=$1 + echo "Building curl" $version "..." + cd $BASEDIR/src + rm -rf curl-$version + if [ ! -f curl-$version.tar.bz2 ]; then + wget http://curl.haxx.se/download/curl-$version.tar.bz2 + fi + tar xjf curl-$version.tar.bz2 + cd curl-$version + mkdir build + cd build + ../configure --prefix=$DEPLOYDIR + make -j$NUMCPU + make install +} + +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 + mkdir build + cd build + ../configure --prefix=$DEPLOYDIR --enable-cxx + make install +} + +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 + curl -O http://www.mpfr.org/mpfr-current/allpatches + patch -N -Z -p1 < allpatches + mkdir build + cd build + ../configure --prefix=$DEPLOYDIR --with-gmp=$DEPLOYDIR + make install + cd .. +} + +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 certain portions of boost + ./bootstrap.sh --prefix=$DEPLOYDIR --with-libraries=thread,program_options,filesystem,system,regex + ./bjam -j$NUMCPU + ./bjam install +} + +build_cgal() +{ + version=$1 + echo "Building CGAL" $version "..." + cd $BASEDIR/src + rm -rf CGAL-$version + if [ ! -f CGAL-$version.tar.gz ]; then + #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 + # 3.7 curl -O https://gforge.inria.fr/frs/download.php/27641/CGAL-$version.tar.gz + fi + tar xzf CGAL-$version.tar.gz + cd CGAL-$version + cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DGMP_INCLUDE_DIR=$DEPLOYDIR/include -DGMP_LIBRARIES=$DEPLOYDIR/lib/libgmp.so -DGMPXX_LIBRARIES=$DEPLOYDIR/lib/libgmpxx.so -DGMPXX_INCLUDE_DIR=$DEPLOYDIR/include -DMPFR_INCLUDE_DIR=$DEPLOYDIR/include -DMPFR_LIBRARIES=$DEPLOYDIR/lib/libmpfr.so -DWITH_CGAL_Qt3=OFF -DWITH_CGAL_Qt4=OFF -DWITH_CGAL_ImageIO=OFF -DBOOST_ROOT=$DEPLOYDIR -DCMAKE_BUILD_TYPE=Debug + make -j$NUMCPU + 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 + GLEW_DEST=$DEPLOYDIR make -j$NUMCPU + GLEW_DEST=$DEPLOYDIR make 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 + sed -i s/example// opencsg.pro # examples might be broken without GLUT + qmake-qt4 + make + install -v lib/* $DEPLOYDIR/lib + install -v include/* $DEPLOYDIR/include +} + +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 + make -j$NUMCPU + make install +} + +if [ ! -f $OPENSCADDIR/openscad.pro ]; then + echo "Must be run from the OpenSCAD source root directory" + exit 0 +fi + +if [ ! -d $BASEDIR/bin ]; then + mkdir --parents $BASEDIR/bin +fi + +echo "Using basedir:" $BASEDIR +echo "Using deploydir:" $DEPLOYDIR +echo "Using srcdir:" $SRCDIR +echo "Number of CPUs for parallel builds:" $NUMCPU +mkdir -p $SRCDIR $DEPLOYDIR + +#build_curl 7.26.0 +# NB! For cmake, also update the actual download URL in the function +#build_cmake 2.8.8 +build_eigen 2.0.17 +build_gmp 5.0.5 +build_mpfr 3.1.0 +build_boost 1.47.0 +# NB! For CGAL, also update the actual download URL in the function +build_cgal 4.0 +build_glew 1.7.0 +build_opencsg 1.3.2 + +echo "Now do this:" +echo "export LD_LIBRARY_PATH=$DEPLOYDIR/lib:$DEPLOYDIR/lib64" +echo "GLEWDIR=$DEPLOYDIR OPENSCAD_LIBRARIES=$DEPLOYDIR qmake-qt4" +echo "make -j$NUMCPU" + diff --git a/src/glview.cc b/src/glview.cc index aa2e746..bea5856 100644 --- a/src/glview.cc +++ b/src/glview.cc @@ -600,7 +600,11 @@ void GLView::mouseMoveEvent(QMouseEvent *event) double mz = -(dy) * viewer_distance/1000; double my = 0; +#if (QT_VERSION < QT_VERSION_CHECK(4, 7, 0)) + if (event->buttons() & Qt::MidButton) { +#else if (event->buttons() & Qt::MiddleButton) { +#endif my = mz; mz = 0; // actually lock the x-position diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 12b8543..569f631 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -237,7 +237,7 @@ if (NOT GLEW_INCLUDE_DIR) NO_DEFAULT_PATH) find_library(GLEW_LIBRARY NAMES GLEW glew - HINTS ${GLEW_DIR}/lib + HINTS ${GLEW_DIR}/lib ${GLEW_DIR}/lib64 NO_DEFAULT_PATH) if (NOT GLEW_LIBRARY) find_package(GLEW REQUIRED) |