summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2012-07-15 01:58:55 (GMT)
committerMarius Kintel <marius@kintel.net>2012-07-15 01:58:55 (GMT)
commit1b38030f7e243c4eeb288d07084a99ff1e616e85 (patch)
treea81f11d55205e0aae12d03f6d5270e4720cd0ad2
parent13557f1f9a44caccb0546717065ed72c27a210b3 (diff)
parent2aaccdcfac97f2bf432f88665261f9b582bbb8b3 (diff)
Merge branch 'master' of github.com:openscad/openscad
-rw-r--r--README.md29
-rw-r--r--openscad.pro27
-rwxr-xr-xscripts/fedora-build-dependencies.sh29
-rwxr-xr-xscripts/linux-build-dependencies.sh83
-rwxr-xr-xscripts/opensuse-build-dependencies.sh8
-rw-r--r--scripts/setenv-linbuild.sh21
-rwxr-xr-xscripts/ubuntu-build-dependencies.sh46
-rw-r--r--src/cgal.h5
-rw-r--r--src/glview.cc2
-rw-r--r--src/version_check.cc2
-rw-r--r--src/version_check.h107
11 files changed, 309 insertions, 50 deletions
diff --git a/README.md b/README.md
index 1f8ada8..9da6386 100644
--- a/README.md
+++ b/README.md
@@ -117,20 +117,26 @@ compilation process.
After that, follow the Compilation instructions below.
-### Building for newer Ubunutu
+### Building for newer Linux distributions
-sudo apt-get install libqt4-dev libqt4-opengl-dev libxmu-dev cmake \
- libglew1.5-dev bison flex libeigen2-dev git-core libboost-all-dev \
- libXi-dev libcgal-dev libopencsg-dev libopencsg1
+First, make sure that you have development tools installed to get GCC.
+Then after you've cloned this git repository, use a package manager to
+download packages for the dependency libraries listed above. Convenience
+scripts are provided for some popular systems:
-Check your library versions against the list above. After that, follow
-the Compilation instructions below.
+Ubuntu, Debian: ./scripts/ubuntu-build-dependencies.sh
+OpenSUSE: ./scripts/opensuse-build-dependencies.sh
+Fedora, Redhat: ./scripts/fedora-build-dependencies.sh
-### Building for older Linux or without root access
+Check your library versions to make sure they meet the minimum
+requirements listed above. After that follow the Compilation
+instructions below.
-First, make sure that you have compiler tools (build-essential on ubuntu).
-Then after you've cloned this git repository, run the script that sets up the
-environment variables.
+### Building for older Linux or building without root access
+
+First, make sure that you have development tools installed to get GCC.
+Then after you've cloned this git repository, run the script that sets
+up the environment variables.
source ./scripts/setenv-linbuild.sh
@@ -138,6 +144,7 @@ Then run the script to download & compile all the prerequisite libraries above:
./scripts/linux-build-dependencies.sh
+Then add LD_LIBRARY_PATH=$HOME/openscad_deps to your ~/.bashrc
After that, follow the Compilation instructions below.
### Building for Windows
@@ -157,5 +164,5 @@ Then run make. Finally you might run 'make install' as root or simply copy the
If you had problems compiling from source, raise a new issue in the
[issue tracker on the github page](https://github.com/openscad/openscad/issues).
-The four subsections of this site can also be helpful:
+This site and it's subpages can also be helpful:
http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Building_OpenSCAD_from_Sources
diff --git a/openscad.pro b/openscad.pro
index 591ed5f..048fbb5 100644
--- a/openscad.pro
+++ b/openscad.pro
@@ -108,6 +108,11 @@ CONFIG(mingw-cross-env) {
include(mingw-cross-env.pri)
}
+CONFIG(skip-version-check) {
+ # force the use of outdated libraries
+ DEFINES += OPENSCAD_SKIP_VERSION_CHECK
+}
+
# Application configuration
macx:CONFIG += mdi
CONFIG += cgal
@@ -122,14 +127,7 @@ mdi {
DEFINES += ENABLE_MDI
}
-# FIXME: This can be made default by now
-CONFIG += progresswidget
-progresswidget {
- DEFINES += USE_PROGRESSWIDGET
- FORMS += src/ProgressWidget.ui
- HEADERS += src/ProgressWidget.h
- SOURCES += src/ProgressWidget.cc
-}
+DEFINES += USE_PROGRESSWIDGET
include(common.pri)
@@ -145,9 +143,12 @@ RESOURCES = openscad.qrc
FORMS += src/MainWindow.ui \
src/Preferences.ui \
- src/OpenCSGWarningDialog.ui
+ src/OpenCSGWarningDialog.ui \
+ src/ProgressWidget.ui
-HEADERS += src/parsersettings.h \
+HEADERS += src/version_check.h \
+ src/ProgressWidget.h \
+ src/parsersettings.h \
src/renderer.h \
src/rendersettings.h \
src/ThrownTogetherRenderer.h \
@@ -203,8 +204,10 @@ HEADERS += src/parsersettings.h \
src/system-gl.h \
src/stl-utils.h
-SOURCES += src/mathc99.cc \
- src/linalg.cc \
+SOURCES += src/version_check.cc \
+ src/ProgressWidget.cc \
+ src/mathc99.cc \
+ src/linalg.cc \
src/handle_dep.cc \
src/value.cc \
src/expr.cc \
diff --git a/scripts/fedora-build-dependencies.sh b/scripts/fedora-build-dependencies.sh
new file mode 100755
index 0000000..7481a63
--- /dev/null
+++ b/scripts/fedora-build-dependencies.sh
@@ -0,0 +1,29 @@
+echo "Tested on Fedora 17. If this fails try 'old linux' build (see README.md)"
+sleep 2
+
+# Fedora 17 has CGAL 4
+#if [ "`yum list installed | grep -i cgal`" ]; then
+# echo "Please make sure you have removed all cgal packages and retry"
+# exit
+#fi
+
+if [ "`yum list installed | grep -i opencsg`" ]; then
+ echo "Please make sure you have removed all opencsg packages and retry"
+ exit
+fi
+
+sudo yum install qt-devel bison flex eigen2-devel \
+ boost-devel mpfr-devel gmp-devel glew-devel CGAL-devel gcc pkgconfig git
+
+#echo "now copy/paste the following to install CGAL and OpenCSG from source:"
+#echo "sudo BASEDIR=/usr/local ./scripts/linux-build-dependencies.sh cgal-use-sys-libs"
+
+echo
+echo "Now copy/paste the following to install OpenCSG from source:"
+echo
+# https://bugzilla.redhat.com/show_bug.cgi?id=144967
+echo "sudo echo /usr/local/lib | sudo tee -a /etc/ld.so.conf.d/local.conf"
+echo "sudo ldconfig"
+echo "sudo BASEDIR=/usr/local ./scripts/linux-build-dependencies.sh opencsg"
+echo
+
diff --git a/scripts/linux-build-dependencies.sh b/scripts/linux-build-dependencies.sh
index aef58b9..f15110d 100755
--- a/scripts/linux-build-dependencies.sh
+++ b/scripts/linux-build-dependencies.sh
@@ -9,14 +9,15 @@
# Prerequisites:
# - wget or curl
# - Qt4
-# - cmake 2.8 ( force build_cmake at bottom if yours is too old )
#
BASEDIR=$HOME/openscad_deps
OPENSCADDIR=$PWD
SRCDIR=$BASEDIR/src
DEPLOYDIR=$BASEDIR
-NUMCPU=2 # paralell builds for some libraries
+if [ ! $NUMCPU ]; then
+ NUMCPU=1 # paralell builds for some libraries
+fi
printUsage()
{
@@ -24,6 +25,22 @@ printUsage()
echo
}
+build_git()
+{
+ version=$1
+ echo "Building git" $version "..."
+ cd $BASEDIR/src
+ rm -rf git-$version
+ if [ ! -f git-$version.tar.gz ]; then
+ curl -O http://git-core.googlecode.com/files/git-$version.tar.gz
+ fi
+ tar zxf git-$version.tar.gz
+ cd git-$version
+ ./configure --prefix=$DEPLOYDIR
+ make -j$NUMCPU
+ make install
+}
+
build_cmake()
{
version=$1
@@ -128,7 +145,11 @@ build_cgal()
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
+ if [ $2 = use-sys-libs ]; then
+ cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DWITH_CGAL_Qt3=OFF -DWITH_CGAL_Qt4=OFF -DWITH_CGAL_ImageIO=OFF -DCMAKE_BUILD_TYPE=Debug
+ else
+ 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
+ fi
make -j$NUMCPU
make install
}
@@ -169,10 +190,14 @@ build_opencsg()
# uncomment this kludge for Fedora 64bit
# sed -i s/"\-lXmu"/"\-L\/usr\/lib64\/libXmu.so.6"/ src/Makefile
- qmake-qt4
+ if [ "`command -v qmake-qt4`" ]; then
+ qmake-qt4
+ else
+ qmake
+ fi
make
- install -v lib/* $DEPLOYDIR/lib
- install -v include/* $DEPLOYDIR/include
+ cp -av lib/* $DEPLOYDIR/lib
+ cp -av include/* $DEPLOYDIR/include
}
build_eigen()
@@ -196,11 +221,21 @@ build_eigen()
make install
}
+
+
+OPENSCADDIR=$PWD
if [ ! -f $OPENSCADDIR/openscad.pro ]; then
echo "Must be run from the OpenSCAD source root directory"
exit 0
fi
+. ./scripts/setenv-linbuild.sh # '.' is equivalent to 'source'
+SRCDIR=$BASEDIR/src
+DEPLOYDIR=$BASEDIR
+if [ ! $NUMCPU ]; then
+ NUMCPU=1 # paralell builds for some libraries
+fi
+
if [ ! -d $BASEDIR/bin ]; then
mkdir --parents $BASEDIR/bin
fi
@@ -208,16 +243,9 @@ fi
echo "Using basedir:" $BASEDIR
echo "Using deploydir:" $DEPLOYDIR
echo "Using srcdir:" $SRCDIR
-echo "Number of CPUs for parallel builds:" $NUMCPU
+echo "Number of CPUs for parallel builds:" $NUMCPU "(export NUMCPU=x to modify)"
mkdir -p $SRCDIR $DEPLOYDIR
-export PATH=$BASEDIR/bin:$PATH
-export LD_LIBRARY_PATH=$DEPLOYDIR/lib:$DEPLOYDIR/lib64:$LD_LIBRARY_PATH
-export LD_RUN_PATH=$DEPLOYDIR/lib:$DEPLOYDIR/lib64:$LD_RUN_PATH
-echo "PATH modified temporarily"
-echo "LD_LIBRARY_PATH modified temporarily"
-echo "LD_RUN_PATH modified temporarily"
-
if [ ! "`command -v curl`" ]; then
build_curl 7.26.0
fi
@@ -226,6 +254,31 @@ fi
if [ ! "`command -v cmake`" ]; then
build_cmake 2.8.8
fi
+if [ "`cmake --version | grep 'version 2.[1-6][^0-9]'`" ]; then
+ build_cmake 2.8.8
+fi
+
+# build_git 1.7.10.3
+
+# Singly build CGAL or OpenCSG
+# (Most systems have all libraries available as packages except CGAL/OpenCSG)
+# (They can be built singly here by passing a command line arg to the script)
+if [ $1 ]; then
+ if [ $1 = "cgal-use-sys-libs" ]; then
+ build_cgal 4.0 use-sys-libs
+ exit
+ fi
+ if [ $1 = "opencsg" ]; then
+ build_opencsg 1.3.2
+ exit
+ fi
+fi
+
+
+#
+# Main build of libraries
+# edit version numbers here as needed.
+#
build_eigen 2.0.17
build_gmp 5.0.5
@@ -236,4 +289,4 @@ build_cgal 4.0
build_glew 1.7.0
build_opencsg 1.3.2
-echo "OpenSCAD dependencies built in " $BASEDIR
+echo "OpenSCAD dependencies built and installed to " $BASEDIR
diff --git a/scripts/opensuse-build-dependencies.sh b/scripts/opensuse-build-dependencies.sh
new file mode 100755
index 0000000..623d7d0
--- /dev/null
+++ b/scripts/opensuse-build-dependencies.sh
@@ -0,0 +1,8 @@
+echo "tested on OpenSUSE 12. If this fails try 'old linux' build (see README.md)"
+
+sudo zypper install libeigen2-devel mpfr-devel gmp-devel boost-devel \
+ libqt4-devel glew-devel cmake git
+
+echo "now copy/paste the following to install CGAL and OpenCSG from source:"
+echo "sudo BASEDIR=/usr/local ./scripts/linux-build-dependencies.sh cgal-use-sys-libs"
+echo "sudo BASEDIR=/usr/local ./scripts/linux-build-dependencies.sh opencsg"
diff --git a/scripts/setenv-linbuild.sh b/scripts/setenv-linbuild.sh
index 9719533..6361dd4 100644
--- a/scripts/setenv-linbuild.sh
+++ b/scripts/setenv-linbuild.sh
@@ -1,10 +1,15 @@
-# setup env variables for building OpenSCAD against custom built
-# dependency libraries from linux-build-dependencies.sh
+# setup environment variables for building OpenSCAD against custom built
+# dependency libraries. called by linux-build-dependencies.sh
-# run this file with 'source setenv-linbuild.sh'
+# run this file with 'source setenv-linbuild.sh' every time you re-login
+# and want to build or run openscad against custom libraries installed
+# into BASEDIR.
-# BASEDIR and DEPLOYDIR must be the same as in linux-build-dependencies.sh
-BASEDIR=$HOME/openscad_deps
+# copy this file to your .bashrc if desired.
+
+if [ ! $BASEDIR ]; then
+ BASEDIR=$HOME/openscad_deps
+fi
DEPLOYDIR=$BASEDIR
export PATH=$BASEDIR/bin:$PATH
@@ -21,3 +26,9 @@ echo LD_RUN_PATH modified
echo OPENSCAD_LIBRARIES modified
echo GLEWDIR modified
+if [ "`command -v qmake-qt4`" ]; then
+ echo "Please re-run qmake-qt4 and run 'make clean' if necessary"
+else
+ echo "Please re-run qmake and run 'make clean' if necessary"
+fi
+
diff --git a/scripts/ubuntu-build-dependencies.sh b/scripts/ubuntu-build-dependencies.sh
new file mode 100755
index 0000000..0609172
--- /dev/null
+++ b/scripts/ubuntu-build-dependencies.sh
@@ -0,0 +1,46 @@
+
+too_old()
+{
+ echo "System version too low. Please try 'old linux' build (see README.md)"
+ exit
+}
+
+if [ "`cat /etc/issue | grep 'Debian GNU/Linux 6.0'`" ]; then
+ too_old
+fi
+if [ "`cat /etc/issue | grep 'Debian GNU/Linux 5'`" ]; then
+ too_old
+fi
+if [ "`cat /etc/issue | grep 'Ubunutu 10'`" ]; then
+ too_old
+fi
+if [ "`cat /etc/issue | grep 'Ubunutu 9'`" ]; then
+ too_old
+fi
+if [ "`cat /etc/issue | grep 'Ubunutu 8'`" ]; then
+ too_old
+fi
+if [ "`cat /etc/issue | grep 'Ubunutu 7'`" ]; then
+ too_old
+fi
+
+echo "tested on Ubuntu 12. If this fails try 'old linux' build (see README.md)"
+
+
+if [ "`dpkg --list | grep -i cgal`" ]; then
+ echo "Please make sure you have run apt-get purge on all cgal packages"
+ exit
+fi
+
+if [ "`dpkg --list | grep -i opencsg`" ]; then
+ echo "Please make sure you have run apt-get purge on all opencsg packages"
+ exit
+fi
+
+sudo apt-get install build-essential libqt4-dev libqt4-opengl-dev \
+ libxmu-dev cmake bison flex libeigen2-dev git-core libboost-all-dev \
+ libXi-dev libmpfr-dev libgmp-dev libboost-dev libglew1.6-dev
+
+echo "now copy/paste the following to install CGAL and OpenCSG from source:"
+echo "sudo BASEDIR=/usr/local ./scripts/linux-build-dependencies.sh cgal-use-sys-libs"
+echo "sudo BASEDIR=/usr/local ./scripts/linux-build-dependencies.sh opencsg"
diff --git a/src/cgal.h b/src/cgal.h
index 9810340..e5e39dd 100644
--- a/src/cgal.h
+++ b/src/cgal.h
@@ -11,11 +11,6 @@ using boost::intmax_t;
using boost::uintmax_t;
#endif
-#include <CGAL/version.h>
-#if CGAL_VERSION_NR < 1030601000
- #error CGAL >= 3.6 is required!
-#endif
-
// NDEBUG must be disabled when including CGAL headers, otherwise CGAL assertions
// will not be thrown, causing OpenSCAD's CGAL error checking to fail.
// To be on the safe side, this has to be done when including any CGAL header file.
diff --git a/src/glview.cc b/src/glview.cc
index bea5856..624b266 100644
--- a/src/glview.cc
+++ b/src/glview.cc
@@ -554,8 +554,6 @@ void GLView::mousePressEvent(QMouseEvent *event)
{
mouse_drag_active = true;
last_mouse = event->globalPos();
- grabMouse();
- setFocus();
}
void GLView::normalizeAngle(GLdouble& angle)
diff --git a/src/version_check.cc b/src/version_check.cc
new file mode 100644
index 0000000..87dfeeb
--- /dev/null
+++ b/src/version_check.cc
@@ -0,0 +1,2 @@
+#include "version_check.h"
+
diff --git a/src/version_check.h b/src/version_check.h
new file mode 100644
index 0000000..4d10b0b
--- /dev/null
+++ b/src/version_check.h
@@ -0,0 +1,107 @@
+// version_check.h copyright 2012 don bright. released under the GPL 2, or
+// later, as described in the file named 'COPYING' in OpenSCAD's project root.
+
+/* This file will check versions of libraries at compile time. If they
+are too old, the user will be warned. If the user wishes to force
+compilation, they can run
+
+ qmake CONFIG=skip-version-check
+
+Otherwise they will be guided to README.md and an -build-dependencies script.
+
+The extensive #else #endif is to ensure only a single error is printed at
+a time, to avoid confusion.
+*/
+
+#ifndef OPENSCAD_SKIP_VERSION_CHECK
+
+
+#include <gmp.h>
+// set minimum numbers here.
+#define GMPMAJOR 5
+#define GMPMINOR 0
+#define GMPPATCH 0
+#define SYS_GMP_VER (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL * 1)
+#if SYS_GMP_VER < GMPMAJOR * 10000 + GMPMINOR * 100 + GMPPATCH * 1
+#error GNU GMP library missing or version too old. See README.md. To force compile, run qmake CONFIG=skip-version-check
+#else
+
+
+#include <mpfr.h>
+#if MPFR_VERSION < MPFR_VERSION_NUM( 3,0,0 )
+#error GNU MPFR library missing or version too old. See README.md. To force compile, run qmake CONFIG=skip-version-check
+#else
+
+
+#include <Eigen/Core>
+#if not EIGEN_VERSION_AT_LEAST( 2,0,13 )
+#error eigen2 library missing or version too old. See README.md. To force compile, run qmake CONFIG=skip-version-check
+#else
+
+
+#include <boost/version.hpp>
+// boost 1.3.5 = 103500
+#if BOOST_VERSION < 103500
+#error boost library missing or version too old. See README.md. To force compile, run qmake CONFIG=skip-version-check
+#else
+
+
+#ifdef ENABLE_CGAL
+#include <CGAL/version.h>
+
+#if CGAL_VERSION_NR < 1030601000
+#error CGAL library missing or version too old. See README.md. To force compile, run qmake CONFIG=skip-version-check
+#else
+
+#if CGAL_VERSION_NR < 1040001000
+#warning "======================="
+#warning "."
+#warning "."
+#warning "."
+#warning "."
+#warning CGAL library version is old, risking buggy behavior. Please see README.md. Continuing anyway.
+#warning "."
+#warning "."
+#warning "."
+#warning "."
+#warning "======================="
+#endif // CGAL_VERSION_NR < 10400010000
+#endif //ENABLE_CGAL
+
+#ifdef ENABLE_OPENCSG
+#include <GL/glew.h>
+// kludge - GLEW doesnt have compiler-accessible version numbering
+#ifndef GLEW_ARB_occlusion_query2
+#error GLEW library missing or version too old. See README.md. To force compile, run qmake CONFIG=skip-version-check
+#else
+
+
+#include <opencsg.h>
+// 1.3.2 -> 0x0132
+#if OPENCSG_VERSION < 0x0132
+#error OPENCSG library missing or version too old. See README.md. To force compile, run qmake CONFIG=skip-version-check
+#else
+#endif // ENABLE_OPENCSG
+
+#include <QtCore/qglobal.h>
+#if QT_VERSION < 0x040603
+#error QT library missing or version too old. See README.md. To force compile, run qmake CONFIG=skip-version-check
+#endif // QT
+
+
+#ifdef ENABLE_OPENCSG
+#endif // OpenCSG
+#endif // GLEW
+#endif // ENABLE_OPENCSG
+
+#ifdef ENABLE_CGAL
+#endif // CGAL error
+#endif // ENABLE_CGAL
+
+#endif // Boost
+#endif // Eigen2
+#endif // MPFR
+#endif // GMP
+
+#endif // OPENSCAD_SKIP_VERSION_CHECK
+
contact: Jan Huwald // Impressum