summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/testing.txt27
-rw-r--r--glew.pri1
-rw-r--r--openscad.pro10
-rwxr-xr-xscripts/linux-build-dependencies.sh227
-rw-r--r--src/glview.cc4
-rw-r--r--tests/CMakeLists.txt2
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:
diff --git a/glew.pri b/glew.pri
index 981d14b..f4a6ccd 100644
--- a/glew.pri
+++ b/glew.pri
@@ -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)
contact: Jan Huwald // Impressum