Merge pull request #235 from openscad/mxebuild_fix

Mxebuild fix
felipesanches-svg
Marius Kintel 2013-01-05 14:57:08 -08:00
commit 101510c5cb
27 changed files with 1412 additions and 640 deletions

View File

@ -80,7 +80,7 @@ numbers in brackets specify the versions which have been used for
development. Other versions may or may not work as well.
If you're using a newer version of Ubuntu, you can install these
libraries from aptitude. If you're using Mac, or an older Linux, there
libraries from aptitude. If you're using Mac, or an older Linux/BSD, there
are build scripts that download and compile the libraries from source.
Follow the instructions for the platform you're compiling on below.
@ -91,7 +91,7 @@ Follow the instructions for the platform you're compiling on below.
* [MPFR (3.x)](http://www.mpfr.org/)
* [boost (1.35 - 1.47)](http://www.boost.org/)
* [OpenCSG (1.3.2)](http://www.opencsg.org/)
* [GLEW (1.6 ->)](http://glew.sourceforge.net/)
* [GLEW (1.5.4 ->)](http://glew.sourceforge.net/)
* [Eigen (2.0.13->3.1.1)](http://eigen.tuxfamily.org/)
* [GCC C++ Compiler (4.2 ->)](http://gcc.gnu.org/)
* [Bison (2.4)](http://www.gnu.org/software/bison/)
@ -131,34 +131,52 @@ compilation process.
After that, follow the Compilation instructions below.
### Building for newer Linux distributions
### Building for Linux/BSD
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:
First, make sure that you have git installed (often packaged as 'git-core'
or 'scmgit'). Once you've cloned this git repository, download and install
the dependency packages listed above using your system's package
manager. A convenience script is provided that can help with this
process on some systems:
Ubuntu, Debian: ./scripts/ubuntu-build-dependencies.sh
OpenSUSE: ./scripts/opensuse-build-dependencies.sh
Fedora: ./scripts/fedora-build-dependencies.sh
./scripts/uni-get-dependencies.sh
Check your library versions to make sure they meet the minimum
requirements listed above. After that follow the Compilation
instructions below.
After installing dependencies, check their versions. You can run this
script to help you:
### Building for older Linux or building without root access
./scripts/check-dependencies.sh
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.
Take care that you don't have old local copies anywhere (/usr/local/).
If all dependencies are present and of a high enough version, skip ahead
to the Compilation instructions.
source ./scripts/setenv-linbuild.sh
### Building for Linux/BSD on systems with older or missing dependencies
Then run the script to download & compile all the prerequisite libraries above:
If some of your system dependency libraries are missing or old, then you
can download and build newer versions into $HOME/openscad_deps by
following this process. First, run the script that sets up the
environment variables.
./scripts/linux-build-dependencies.sh
source ./scripts/setenv-unibuild.sh
Then run the script to compile all the prerequisite libraries above:
./scripts/uni-build-dependencies.sh
This may take an hour or more, depending on your network and system. It
is recommended to have at least 1 gigabyte of free disk space. As a
special timesaver if you are only missing CGAL and OpenCSG, you can do
this instead:
./scripts/uni-build-dependencies.sh opencsg
./scripts/uni-build-dependencies.sh cgal
Note that huge dependencies like gcc or qt are not included here, only
the smaller ones (boost, CGAL, opencsg, etc). After the build, again
check dependencies.
./scripts/check-dependencies.sh
Then add LD_LIBRARY_PATH=$HOME/openscad_deps to your ~/.bashrc
After that, follow the Compilation instructions below.
### Building for Windows
@ -177,9 +195,9 @@ Then run the script to download & compile all the prerequisite libraries above:
./scripts/mingw-x-build-dependencies.sh
Then skip the compilation instructions below. Instead, build an installer:
Then, build OpenSCAD and package it to an installer:
OSTYPE=mingw-cross-env ./scripts/release-common.sh
./scripts/release-common.sh mingw32
### Compilation

View File

@ -17,17 +17,26 @@ win32 {
QMAKE_EXTRA_COMPILERS += bison_header
}
unix:freebsd-g++ {
# on bsd /usr/bin/bison is outdated, dont use it
QMAKE_YACC = /usr/local/bin/bison
}
unix:netbsd* {
QMAKE_YACC = /usr/pkg/bin/bison
}
unix:linux* {
exists(/usr/bin/bison) {
QMAKE_YACC = /usr/bin/bison
}
}
freebsd* {
# on some BSD, /usr/local/bin/bison is newer than
# /usr/bin/bison, so try to prefer it.
exists(/usr/local/bin/bison) {
QMAKE_YACC = /usr/local/bin/bison
} else { # look in $PATH
QMAKE_YACC = bison
}
}
netbsd* {
exists(/usr/pkg/bin/bison) {
QMAKE_YACC = /usr/pkg/bin/bison
} else { # look in $PATH
QMAKE_YACC = bison
}
}

View File

@ -48,14 +48,14 @@ CONFIG(mingw-cross-env) {
isEmpty(EIGEN_INCLUDEPATH) {
freebsd-g++: EIGEN_INCLUDEPATH = /usr/local/include/eigen3
macx: EIGEN_INCLUDEPATH = /opt/local/include/eigen3
linux*|hurd*: EIGEN_INCLUDEPATH = /usr/include/eigen3
netbsd*: EIGEN_INCLUDEPATH = /usr/pkg/include/eigen3
!exists($$EIGEN_INCLUDEPATH) {
linux*|hurd*|unix: EIGEN_INCLUDEPATH = /usr/include/eigen3
macx: EIGEN_INCLUDEPATH = /opt/local/include/eigen3
!exists(EIGEN_INCLUDEPATH) {
freebsd-g++: EIGEN_INCLUDEPATH = /usr/local/include/eigen2
macx: EIGEN_INCLUDEPATH = /opt/local/include/eigen2
linux*|hurd*: EIGEN_INCLUDEPATH = /usr/include/eigen2
netbsd*: EIGEN_INCLUDEPATH = /usr/pkg/include/eigen2
linux*|hurd*|unix*: EIGEN_INCLUDEPATH = /usr/include/eigen2
macx: EIGEN_INCLUDEPATH = /opt/local/include/eigen2
}
}
@ -69,4 +69,9 @@ isEmpty(EIGEN_INCLUDEPATH) {
# EIGEN being under 'include/eigen[2-3]' needs special prepending
QMAKE_INCDIR_QT = $$EIGEN_INCLUDEPATH $$QMAKE_INCDIR_QT
# qmakespecs on netbsd prepend system includes, we need eigen first.
netbsd* {
QMAKE_CXXFLAGS = -I$$EIGEN_INCLUDEPATH $$QMAKE_CXXFLAGS
}
} # eigen

View File

@ -9,16 +9,17 @@ win32 {
QMAKE_EXTRA_COMPILERS += flex
}
unix:freebsd-g++ {
QMAKE_LEX = /usr/local/bin/flex
}
unix:netbsd* {
QMAKE_LEX = /usr/pkg/bin/flex
}
unix:linux* {
exists(/usr/bin/flex) {
QMAKE_LEX = /usr/bin/flex
}
}
freebsd* {
QMAKE_LEX = /usr/local/bin/flex
}
netbsd* {
QMAKE_LEX = /usr/pkg/bin/flex
}

View File

@ -6,7 +6,6 @@ glew {
QMAKE_INCDIR += $$GLEW_DIR/include
QMAKE_LIBDIR += $$GLEW_DIR/lib
QMAKE_LIBDIR += $$GLEW_DIR/lib64
message("GLEW location: $$GLEW_DIR")
}
unix:LIBS += -lGLEW

View File

@ -90,14 +90,28 @@ unix:!macx {
}
netbsd* {
LIBS += -L/usr/X11R7/lib
QMAKE_LFLAGS += -L/usr/X11R7/lib
QMAKE_LFLAGS += -Wl,-R/usr/X11R7/lib
QMAKE_LFLAGS += -Wl,-R/usr/pkg/lib
!isEmpty(OPENSCAD_LIBDIR) {
QMAKE_LFLAGS += -Wl,-R$$OPENSCAD_LIBDIR/lib
QMAKE_CFLAGS = -I$$OPENSCAD_LIBDIR/include $$QMAKE_CFLAGS
QMAKE_CXXFLAGS = -I$$OPENSCAD_LIBDIR/include $$QMAKE_CXXFLAGS
QMAKE_LFLAGS = -L$$OPENSCAD_LIBDIR/lib $$QMAKE_LFLAGS
QMAKE_LFLAGS = -Wl,-R$$OPENSCAD_LIBDIR/lib $$QMAKE_LFLAGS
}
}
# Prevent LD_LIBRARY_PATH problems when running the openscad binary
# on systems where uni-build-dependencies.sh was used.
# Will not affect 'normal' builds.
!isEmpty(OPENSCAD_LIBDIR) {
unix:!macx {
QMAKE_LFLAGS = -Wl,-R$$OPENSCAD_LIBDIR/lib $$QMAKE_LFLAGS
# need /lib64 beause GLEW installs itself there on 64 bit machines
QMAKE_LFLAGS = -Wl,-R$$OPENSCAD_LIBDIR/lib64 $$QMAKE_LFLAGS
}
}
# See Dec 2011 OpenSCAD mailing list, re: CGAL/GCC bugs.
*g++* {
QMAKE_CXXFLAGS *= -fno-strict-aliasing

506
scripts/check-dependencies.sh Executable file
View File

@ -0,0 +1,506 @@
# Parse the minimum versions of dependencies from README.md, and compare
# with what is found on the system. Print results.
#
# usage
# check-dependencies.sh # check version of all dependencies
# check-dependencies.sh debug # debug this script
#
# output
# a table displaying the minimum version from README, the found version,
# and whether it is OK or not.
#
# design
# stage 1. search by parsing header files and/or binary output (_sysver)
# stage 2. search with pkg-config
#
# Code style is portability and simplicity. Plain sed, awk, grep, sh.
# Functions return strings under $function_name_result variable.
# tmp variables are named funcname_abbreviated_tmp.
# Local vars are not used.
#
# todo
# testing of non-bash shells
# if /usr/ and /usr/local/ on linux both hit, throw a warning
# print location found, how found???
# look at pkgconfig --exists & --modversion
# deal with deps like GLEW that don't have proper version strings?
#
DEBUG=
debug()
{
if [ $DEBUG ]; then echo check-dependencies.sh: $* ; fi
}
eigen_sysver()
{
debug eigen
eigpath=
eig3path=$1/include/eigen3/Eigen/src/Core/util/Macros.h
eig2path=$1/include/eigen2/Eigen/src/Core/util/Macros.h
if [ -e $eig3path ]; then eigpath=$eig3path; fi
if [ -e $eig2path ]; then eigpath=$eig2path; fi
debug $eig2path
if [ ! $eigpath ]; then return; fi
eswrld=`grep "define *EIGEN_WORLD_VERSION *[0-9]*" $eigpath | awk '{print $3}'`
esmaj=`grep "define *EIGEN_MAJOR_VERSION *[0-9]*" $eigpath | awk '{print $3}'`
esmin=`grep "define *EIGEN_MINOR_VERSION *[0-9]*" $eigpath | awk '{print $3}'`
eigen_sysver_result="$eswrld.$esmaj.$esmin"
}
opencsg_sysver()
{
debug opencsg_sysver
if [ ! -e $1/include/opencsg.h ]; then return; fi
ocsgver=`grep "define *OPENCSG_VERSION_STRING *[0-9x]*" $1/include/opencsg.h`
ocsgver=`echo $ocsgver | awk '{print $4}' | sed s/'"'//g | sed s/[^1-9.]//g`
opencsg_sysver_result=$ocsgver
}
cgal_sysver()
{
cgalpath=$1/include/CGAL/version.h
if [ ! -e $cgalpath ]; then return; fi
cgal_sysver_result=`grep "define *CGAL_VERSION *[0-9.]*" $cgalpath | awk '{print $3}'`
}
boost_sysver()
{
boostpath=$1/include/boost/version.hpp
if [ ! -e $boostpath ]; then return; fi
bsver=`grep 'define *BOOST_LIB_VERSION *[0-9_"]*' $boostpath | awk '{print $3}'`
bsver=`echo $bsver | sed s/'"'//g | sed s/'_'/'.'/g`
boost_sysver_result=$bsver
}
mpfr_sysver()
{
mpfrpath=$1/include/mpfr.h
if [ ! -e $mpfrpath ]; then return; fi
mpfrsver=`grep 'define *MPFR_VERSION_STRING *' $mpfrpath | awk '{print $3}'`
mpfrsver=`echo $mpfrsver | sed s/"-.*"// | sed s/'"'//g`
mpfr_sysver_result=$mpfrsver
}
gmp_sysver()
{
# on some systems you have VERSION in gmp-$arch.h not gmp.h. use gmp*.h
if [ ! -e $1/include ]; then return; fi
gmppaths=`ls $1/include | grep ^gmp`
if [ ! "$gmppaths" ]; then return; fi
for gmpfile in $gmppaths; do
gmppath=$1/include/$gmpfile
if [ "`grep __GNU_MP_VERSION $gmppath`" ]; then
gmpmaj=`grep "define *__GNU_MP_VERSION *[0-9]*" $gmppath | awk '{print $3}'`
gmpmin=`grep "define *__GNU_MP_VERSION_MINOR *[0-9]*" $gmppath | awk '{print $3}'`
gmppat=`grep "define *__GNU_MP_VERSION_PATCHLEVEL *[0-9]*" $gmppath | awk '{print $3}'`
fi
done
gmp_sysver_result="$gmpmaj.$gmpmin.$gmppat"
}
qt4_sysver()
{
qt4path=$1/include/qt4/QtCore/qglobal.h
if [ ! -e $qt4path ]; then
qt4path=$1/include/QtCore/qglobal.h
fi
if [ ! -e $qt4path ]; then
# netbsd
qt4path=$1/qt4/include/QtCore/qglobal.h
fi
if [ ! -e $qt4path ]; then return; fi
qt4ver=`grep 'define *QT_VERSION_STR *' $qt4path | awk '{print $3}'`
qt4ver=`echo $qt4ver | sed s/'"'//g`
qt4_sysver_result=$qt4ver
}
glew_sysver()
{
glewh=$1/include/GL/glew.h
if [ -e $glewh ]; then
# glew has no traditional version number in it's headers
# so we either test for what we need and 'guess', or assign it to 0.0
# the resulting number is a 'lower bound', not exactly what is installed
if [ "`grep __GLEW_VERSION_4_2 $glewh`" ]; then
glew_sysver_result=1.7.0
fi
if [ ! $glew_sysver_result ]; then
if [ "`grep __GLEW_ARB_occlusion_query2 $glewh`" ]; then
glew_sysver_result=1.5.4
fi
fi
if [ ! $glew_sysver_result ]; then
glew_sysver_result=0.0
fi
fi
}
imagemagick_sysver()
{
if [ ! -x $1/bin/convert ]; then return; fi
imver=`$1/bin/convert --version | grep -i version`
imagemagick_sysver_result=`echo $imver | sed s/"[^0-9. ]"/" "/g | awk '{print $1}'`
}
flex_sysver()
{
flexbin=$1/bin/flex
if [ -x $1/bin/gflex ]; then flexbin=$1/bin/gflex; fi # openbsd
if [ ! -x $flexbin ]; then return ; fi
flex_sysver_result=`$flexbin --version | sed s/"[^0-9.]"/" "/g`
}
bison_sysver()
{
if [ ! -x $1/bin/bison ]; then return ; fi
bison_sysver_result=`$1/bin/bison --version | grep bison | sed s/"[^0-9.]"/" "/g`
}
gcc_sysver()
{
bingcc=$1/bin/g++
if [ ! -x $1/bin/g++ ]; then
if [ "`command -v g++`" ]; then # fallback to $PATH
bingcc=g++;
fi
fi
debug using bingcc: $bingcc
if [ ! -x $bingcc ]; then return; fi
if [ ! "`$bingcc --version`" ]; then return; fi
gccver=`$bingcc --version| grep -i g++ | awk -F "(" ' { print $2 } '`
debug g++ output1: $gccver
gccver=`echo $gccver | awk -F ")" ' { print $2 } '`
debug g++ output2: $gccver
gccver=`echo $gccver | awk ' { print $1 } '`
debug g++ output3: $gccver
gcc_sysver_result=$gccver
}
git_sysver()
{
if [ ! -x $1/bin/git ]; then return ; fi
git_sysver_result=`$1/bin/git --version | grep git | sed s/"[^0-9.]"/" "/g`
}
curl_sysver()
{
if [ ! -x $1/bin/curl ]; then return; fi
curl_sysver_result=`$1/bin/curl --version | grep curl | sed s/"[^0-9. ]"/" "/g | awk '{print $1}'`
}
cmake_sysver()
{
if [ ! -x $1/bin/cmake ]; then return ; fi
cmake_sysver_result=`$1/bin/cmake --version | grep cmake | sed s/"[^0-9.]"/" "/g | awk '{ print $1 }'`
}
make_sysver()
{
make_sysver_tmp=
binmake=$1/bin/make
if [ -x $1/bin/gmake ]; then binmake=$1/bin/gmake ;fi
if [ ! -x $binmake ]; then return ;fi
make_sysver_tmp=`$binmake --version 2>&1`
debug finding gnu make: raw make response: $make_sysver_tmp
if [ ! "`echo $make_sysver_tmp | grep -i gnu`" ]; then
return;
fi
make_sysver_tmp=`$binmake --version 2>&1 | grep -i 'gnu make' | sed s/"[^0-9.]"/" "/g`
if [ "`echo $make_sysver_tmp | grep [0-9]`" ]; then
make_sysver_result=$make_sysver_tmp
fi
}
bash_sysver()
{
if [ -x /bin/bash ]; then binbash=/bin/bash ;fi
if [ -x /usr/bin/bash ]; then binbash=/usr/bin/bash ;fi
if [ -x $1/bin/bash ]; then binbash=$1/bin/bash ;fi
if [ ! -x $binbash ]; then return; fi
bash_sysver_result=`$binbash --version | grep bash | sed s/"[^0-9. ]"/" "/g|awk '{print $1}'`
}
python_sysver()
{
if [ ! -x $1/bin/python ]; then return; fi
python_sysver_result=`$1/bin/python --version 2>&1 | awk '{print $2}'`
}
pkg_config_search()
{
debug pkg_config_search $*
pkg_config_search_result=
pcstmp=
if [ ! $1 ]; then return; fi
pkgname=$1
pkg-config --exists $pkgname 2>&1
if [ $? = 0 ]; then
pkg_config_search_result=`pkg-config --modversion $pkgname`
else
debug pkg_config_search failed on $*, result of run was: $pcstmp
fi
}
get_minversion_from_readme()
{
if [ -e README.md ]; then READFILE=README.md; fi
if [ -e ../README.md ]; then READFILE=../README.md; fi
if [ ! $READFILE ]; then
if [ "`command -v dirname`" ]; then
READFILE=`dirname $0`/../README.md
fi
fi
if [ ! $READFILE ]; then echo "cannot find README.md"; exit 1; fi
debug get_minversion_from_readme $*
if [ ! $1 ]; then return; fi
depname=$1
local grv_tmp=
debug $depname
# example--> * [CGAL (3.6 - 3.9)] (www.cgal.org) becomes 3.6
# steps: eliminate *, find left (, find -, make 'x' into 0, delete junk
grv_tmp=`grep -i ".$depname.*([0-9]" $READFILE | sed s/"*"//`
debug $grv_tmp
grv_tmp=`echo $grv_tmp | awk -F"(" '{print $2}'`
debug $grv_tmp
grv_tmp=`echo $grv_tmp | awk -F"-" '{print $1}'`
debug $grv_tmp
grv_tmp=`echo $grv_tmp | sed s/"x"/"0"/g`
debug $grv_tmp
grv_tmp=`echo $grv_tmp | sed s/"[^0-9.]"//g`
debug $grv_tmp
get_minversion_from_readme_result=$grv_tmp
}
find_min_version()
{
find_min_version_result=
fmvtmp=
if [ ! $1 ] ; then return; fi
fmvdep=$1
get_minversion_from_readme $fmvdep
fmvtmp=$get_minversion_from_readme_result
# items not included in README.md
if [ $fmvdep = "git" ]; then fmvtmp=1.5 ; fi
if [ $fmvdep = "curl" ]; then fmvtmp=6 ; fi
if [ $fmvdep = "make" ]; then fmvtmp=3 ; fi
if [ $fmvdep = "python" ]; then fmvtmp=2 ; fi
find_min_version_result=$fmvtmp
}
vers_to_int()
{
# change x.y.z.p into an integer that can be compared using -lt or -gt
# 1.2.3.4 into 1020304
# 1.11.0.12 into 1110012
# 2011.2.3 into 20110020300
# it will work as long as the resulting int is less than 2.147 billion
# and y z and p are less than 99
vers_to_int_result=
if [ ! $1 ] ; then return ; fi
vtoi_ver=$1
vtoi_test=`echo $vtoi_ver | sed s/"[^0-9.]"//g`
debug vers_to_int $* :: vtoi_ver: $vtoi_ver vtoi_test: $vtoi_test
if [ ! "$vtoi_test" = "$vtoi_ver" ]; then
debug failure in version-to-integer conversion.
debug '"'$vtoi_ver'"' has letters, etc in it. setting to 0
vtoi_ver="0"
fi
vers_to_int_result=`echo $vtoi_ver | awk -F. '{print $1*1000000+$2*10000+$3*100+$4}'`
vtoi_ver=
vtoi_test=
}
version_less_than_or_equal()
{
if [ ! $1 ]; then return; fi
if [ ! $2 ]; then return; fi
v1=$1
v2=$2
vers_to_int $v1
v1int=$vers_to_int_result
vers_to_int $v2
v2int=$vers_to_int_result
debug "v1, v2, v1int, v2int" , $v1, $v2, $v1int, $v2int
if [ $v1int -le $v2int ]; then
debug "v1 <= v2"
return 0
else
debug "v1 > v2"
return 1
fi
v1=
v2=
v1int=
v2int=
}
compare_version()
{
debug compare_version $*
compare_version_result="NotOK"
if [ ! $1 ] ; then return; fi
if [ ! $2 ] ; then return; fi
cvminver=$1
cvinstver=$2
cvtmp=
version_less_than_or_equal $cvminver $cvinstver
if [ $? = 0 ]; then
cvtmp="OK"
else
cvtmp="NotOK"
fi
compare_version_result=$cvtmp
cvtmp=
}
pretty_print()
{
# there are four columns, passed as $1 $2 $3 and $4
# 1 = name of dependency
# 2 = version found in README
# 3 = version found on system
# 4 = whether it is OK or not
debug pretty_print $*
brightred="\033[40;31m"
red="\033[40;31m"
brown="\033[40;33m"
yellow="\033[40;33m"
white="\033[40;37m"
purple="\033[40;35m"
green="\033[40;32m"
cyan="\033[40;36m"
gray="\033[40;37m"
nocolor="\033[0m"
ppstr="%s%-12s"
pp_format='{printf("'$ppstr$ppstr$ppstr$ppstr$nocolor'\n",$1,$2,$3,$4,$5,$6,$7,$8)}'
pp_title="$gray depname $gray minimum $gray found $gray OKness"
if [ $1 ]; then pp_depname=$1; fi
if [ $pp_depname = "title" ]; then
echo -e $pp_title | awk $pp_format
return ;
fi
if [ $2 ]; then pp_minver=$2; else pp_minver="unknown"; fi
if [ $3 ]; then pp_foundver=$3; else pp_foundver="unknown"; fi
if [ $4 ]; then pp_okness=$4; else pp_okness="NotOK"; fi
if [ $pp_okness = "NotOK" ]; then
pp_foundcolor=$purple;
pp_cmpcolor=$purple;
else
pp_foundcolor=$gray;
pp_cmpcolor=$green;
fi
echo -e $cyan $pp_depname $gray $pp_minver $pp_foundcolor $pp_foundver $pp_cmpcolor $pp_okness | awk $pp_format
pp_depname=
pp_minver=
pp_foundver=
pp_okness=
}
find_installed_version()
{
debug find_installed_version $*
find_installed_version_result=unknown
fsv_tmp=
depname=$1
# try to find/parse headers and/or binary output
if [ ! $fsv_tmp ]; then
for syspath in "/opt" "/usr/pkg" "/usr" "/usr/local" $OPENSCAD_LIBRARIES; do
if [ -e $syspath ]; then
debug $depname"_sysver" $syspath
eval $depname"_sysver" $syspath
fsv_tmp=`eval echo "$"$depname"_sysver_result"`
fi
done
fi
# use pkg-config to search
if [ ! $fsv_tmp ]; then
if [ "`command -v pkg-config`" ]; then
debug plain search failed. trying pkg_config...
pkg_config_search $depname
fsv_tmp=$pkg_config_search_result
fi
fi
if [ $fsv_tmp ]; then
find_installed_version_result=$fsv_tmp
else
debug all searches failed. unknown version.
fi
}
check_old_local()
{
warnon=
if [ "`uname | grep -i linux`" ]; then
header_list="opencsg.h CGAL boost GL/glew.h gmp.h mpfr.h eigen2 eigen3"
liblist="libboost libopencsg libCGAL libglew"
for i in $header_list $liblist; do
if [ -e /usr/local/include/$i ]; then
echo "Warning: you have a copy of "$i" under /usr/local/include"
warnon=1
fi
if [ -e /usr/local/lib/$i.so ]; then
echo "Warning: you have a copy of "$i" under /usr/local/lib"
warnon=1
fi
done
fi
if [ $warnon ]; then
echo "Please verify these local copies don't conflict with the system"
fi
}
check_misc()
{
if [ "`uname -a|grep -i netbsd`" ]; then
echo "NetBSD: Please manually verify the X Sets have been installed"
fi
}
checkargs()
{
for i in $*; do
if [ $i = "debug" ]; then DEBUG=1 ; fi
done
}
main()
{
deps="qt4 cgal gmp mpfr boost opencsg glew eigen gcc bison flex make"
#deps="$deps curl git" # not technically necessary for build
#deps="$deps python cmake imagemagick" # only needed for tests
pretty_print title
for depname in $deps; do
debug "processing $dep"
find_installed_version $depname
dep_sysver=$find_installed_version_result
find_min_version $depname
dep_minver=$find_min_version_result
compare_version $dep_minver $dep_sysver
dep_compare=$compare_version_result
pretty_print $depname $dep_minver $dep_sysver $dep_compare
done
check_old_local
check_misc
}
checkargs $*
main
exit 0

View File

@ -1,29 +0,0 @@
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

View File

@ -1,28 +0,0 @@
#!/usr/local/bin/bash -e
echo "Tested on FreeBSD 9. Please see README.md for info on older systems."
if [ "`pkg_info | grep -i cgal `" ]; then
echo Stopping. Please remove any CGAL packages you have installed and restart
exit
fi
if [ "`pkg_info | grep -i opencsg`" ]; then
echo Stopping. Please remove any OpenCSG packages you have installed and restart
exit
fi
OPENSCADDIR=$PWD
if [ ! -f $OPENSCADDIR/openscad.pro ]; then
echo "Must be run from the OpenSCAD source root directory"
exit 0
fi
. ./scripts/setenv-freebsdbuild.sh
pkg_add -r bison boost-libs cmake git bash eigen2 flex gmake gmp mpfr
pkg_add -r xorg libGLU libXmu libXi xorg-vfbserver glew
pkg_add -r qt4-corelib qt4-gui qt4-moc qt4-opengl qt4-qmake qt4-rcc qt4-uic
BASEDIR=/usr/local ./scripts/linux-build-dependencies.sh cgal-use-sys-libs
BASEDIR=/usr/local ./scripts/linux-build-dependencies.sh opencsg

View File

@ -1,339 +0,0 @@
#!/bin/sh -e
# test_pretty_print copyright 2012 don bright. released under the GPL 2, or
# later, as described in the file named 'COPYING' in OpenSCAD's project root.
# permission to change this license is given to Marius Kintel & Clifford Wolf
#
# 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:
# - wget or curl
# - Qt4
#
printUsage()
{
echo "Usage: $0"
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
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-$version/mpfr-$version.tar.bz2
fi
tar xjf mpfr-$version.tar.bz2
cd mpfr-$version
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
if [ $CXX ]; then
if [ $CXX = "clang++" ]; then
./b2 -j$NUMCPU toolset=clang install
# ./b2 -j$NUMCPU toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" install
fi
else
./b2 -j$NUMCPU
./b2 install
fi
}
build_cgal()
{
version=$1
echo "Building CGAL" $version "..."
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/31174/CGAL-$version.tar.bz2
# 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 jxf CGAL-$version.tar.bz2
cd CGAL-$version
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
}
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
# Fedora 64-bit
if [ -e /usr/lib64 ]; then
if [ "`ls /usr/lib64 | grep Xmu`" ]; then
echo "modifying glew makefile for 64 bit machine"
sed -ibak s/"\-lXmu"/"\-L\/usr\/lib64\/libXmu.so.6"/ config/Makefile.linux
fi
fi
if [ $CC ]; then
if [ $CC = "clang" ]; then
echo "modifying glew makefile for clang"
sed -i s/\$\(CC\)/clang/ Makefile
fi
fi
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 -ibak s/example// opencsg.pro # examples might be broken without GLUT
# Fedora 64-bit
if [ -e /usr/lib64 ]; then
if [ "`ls /usr/lib64 | grep Xmu`" ]; then
echo "modifying opencsg makefile for 64 bit machine"
sed -ibak s/"\-lXmu"/"\-L\/usr\/lib64\/libXmu.so.6"/ src/Makefile
fi
fi
if [ `uname | grep FreeBSD` ]; then
sed -ibak s/X11R6/local/g src/Makefile
fi
if [ "`command -v qmake-qt4`" ]; then
OPENCSG_QMAKE=qmake-qt4
else
OPENCSG_QMAKE=qmake
fi
if [ $CXX ]; then
if [ $CXX = "clang++" ]; then
cd $BASEDIR/src/OpenCSG-$version/src
$OPENCSG_QMAKE
cd $BASEDIR/src/OpenCSG-$version
$OPENCSG_QMAKE
fi
else
$OPENCSG_QMAKE
fi
make
cp -av lib/* $DEPLOYDIR/lib
cp -av include/* $DEPLOYDIR/include
cd $OPENSCADDIR
}
build_eigen()
{
version=$1
echo "Building eigen" $version "..."
cd $BASEDIR/src
rm -rf eigen-$version
EIGENDIR="none"
if [ $version = "2.0.17" ]; then EIGENDIR=eigen-eigen-b23437e61a07; fi
if [ $version = "3.1.1" ]; then EIGENDIR=eigen-eigen-43d9075b23ef; 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
ln -s ./$EIGENDIR eigen-$version
cd eigen-$version
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR ..
make -j$NUMCPU
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
if [ ! $NUMCPU ]; then
echo "Note: The NUMCPU environment variable can be set for paralell builds"
NUMCPU=1
fi
if [ ! -d $BASEDIR/bin ]; then
mkdir -p $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
if [ ! "`command -v curl`" ]; then
build_curl 7.26.0
fi
# NB! For cmake, also update the actual download URL in the function
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.2 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 3.1.1
build_gmp 5.0.5
build_mpfr 3.1.1
build_boost 1.47.0
# NB! For CGAL, also update the actual download URL in the function
build_cgal 4.0.2
build_glew 1.7.0
build_opencsg 1.3.2
echo "OpenSCAD dependencies built and installed to " $BASEDIR

View File

@ -41,8 +41,9 @@ if [ ! -e $BASEDIR ]; then
fi
if [ ! -e $MXEDIR ]; then
echo "Downloading MXE into " $MXEDIR
mkdir -p $MXEDIR
cd $MXEDIR/..
echo "Downloading MXE into " $PWD
git clone git://github.com/mxe/mxe.git
fi

View File

@ -1,8 +0,0 @@
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"

View File

@ -31,7 +31,7 @@ if [ ! -f $OPENSCADDIR/openscad.pro ]; then
exit 1
fi
OSTYPE=mingw-cross-env ./scripts/release-common.sh -v $VERSION $COMMIT
./scripts/release-common.sh -v $VERSION $COMMIT mingw32
if [ $? != 0 ]; then
echo "release-common.sh returned error code: $?. build stopped."

View File

@ -1,25 +1,29 @@
#!/bin/bash
#
# This script creates a binary release of OpenSCAD.
# This should work under Mac OS X, Windows (msys), and Linux cross-compiling
# for windows using mingw-cross-env (use like: OSTYPE=mingw-cross-env release-common.sh).
# Linux support pending.
# The script will create a file called openscad-<versionstring>.zip
# in the current directory (or in the $DEPLOYDIR of a mingw cross build)
# This script creates a binary release of OpenSCAD. This should work
# under Mac OS X, Linux 32, Linux 64, and Linux->Win32 MXE cross-build.
# Windows under msys has not been tested recently.
#
# Usage: release-common.sh [-v <versionstring>] [-c]
# -v Version string (e.g. -v 2010.01)
# -c Build with commit info
# The script will create a file called openscad-<versionstring>.<extension> in
# the current directory (or under ./mingw32)
#
# Usage: release-common.sh [-v <versionstring>] [-c] [-x32]
# -v Version string (e.g. -v 2010.01)
# -c Build with commit info
# -mingw32 Cross-compile for win32 using MXE
#
# If no version string is given, todays date will be used (YYYY-MM-DD)
# If no make target is given, release will be used on Windows, none one Mac OS X
#
# The commit info will extracted from git and be passed to qmake as OPENSCAD_COMMIT
# to identify a build in the about box.
#
# The mingw32 cross compile depends on the MXE cross-build tools. Please
# see the README.md file on how to install these dependencies.
printUsage()
{
echo "Usage: $0 -v <versionstring> -c
echo "Usage: $0 -v <versionstring> -c -mingw32
echo
echo " Example: $0 -v 2010.01
}
@ -42,11 +46,18 @@ elif [[ $OSTYPE == "linux-gnu" ]]; then
ARCH=32
fi
echo "Detected ARCH: $ARCH"
elif [[ $OSTYPE == "mingw-cross-env" ]]; then
fi
if [ "`echo $* | grep mingw32`" ]; then
OS=LINXWIN
fi
echo "Detected OS: $OS"
if [ $OS ]; then
echo "Detected OS: $OS"
else
echo "Error: Couldn't detect OSTYPE"
exit
fi
while getopts 'v:c' c
do
@ -147,14 +158,19 @@ case $OS in
;;
esac
if [ ! $NUMCPU ]; then
echo "note: you can 'export NUMCPU=x' for multi-core compiles (x=number)";
NUMCPU=2
fi
case $OS in
LINXWIN)
# make -jx sometimes has problems with parser_yacc
# dont use paralell builds, it can error-out on parser_yacc.
cd $DEPLOYDIR && make $TARGET
cd $OPENSCADDIR
;;
*)
make -j2 $TARGET
make -j$NUMCPU $TARGET
;;
esac

View File

@ -1,6 +0,0 @@
# run with '. ./scripts/setenv-freebsdbuild.sh'
# use in conjuction with freebsd-build-dependencies.sh
QMAKESPEC=freebsd-g++
QTDIR=/usr/local/share/qt4

View File

@ -1,12 +0,0 @@
# build dependencies and/or openscad on linux with the clang compiler
export CC=clang
export CXX=clang++
export QMAKESPEC=unsupported/linux-clang
echo CC has been modified: $CC
echo CXX has been modified: $CXX
echo QMAKESPEC has been modified: $QMAKESPEC
. ./scripts/setenv-linbuild.sh

View File

@ -1,34 +0,0 @@
# 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' every time you re-login
# and want to build or run openscad against custom libraries installed
# into BASEDIR.
# copy this file to your .bashrc if desired.
if [ ! $BASEDIR ]; then
BASEDIR=$HOME/openscad_deps
fi
DEPLOYDIR=$BASEDIR
export PATH=$BASEDIR/bin:$PATH
export LD_LIBRARY_PATH=$DEPLOYDIR/lib:$DEPLOYDIR/lib64
export LD_RUN_PATH=$DEPLOYDIR/lib:$DEPLOYDIR/lib64
export OPENSCAD_LIBRARIES=$DEPLOYDIR
export GLEWDIR=$DEPLOYDIR
echo BASEDIR: $BASEDIR
echo DEPLOYDIR: $DEPLOYDIR
echo PATH modified
echo LD_LIBRARY_PATH modified
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

View File

@ -0,0 +1,89 @@
# setup environment variables for building OpenSCAD against custom built
# dependency libraries. works on Linux/BSD.
#
# Please see the 'uni-build-dependencies.sh' file for usage information
#
setenv_common()
{
if [ ! $BASEDIR ]; then
if [ -f openscad.pro ]; then
# if in main openscad dir, put under $HOME
BASEDIR=$HOME/openscad_deps
else
# otherwise, assume its being run 'out of tree'. treat it somewhat like
# "configure" or "cmake", so you can build dependencies where u wish.
echo "Warning: Not in OpenSCAD src dir... using current directory as base of build"
BASEDIR=$PWD/openscad_deps
fi
fi
DEPLOYDIR=$BASEDIR
export BASEDIR
export PATH=$BASEDIR/bin:$PATH
export LD_LIBRARY_PATH=$DEPLOYDIR/lib:$DEPLOYDIR/lib64
export LD_RUN_PATH=$DEPLOYDIR/lib:$DEPLOYDIR/lib64
export OPENSCAD_LIBRARIES=$DEPLOYDIR
export GLEWDIR=$DEPLOYDIR
echo BASEDIR: $BASEDIR
echo DEPLOYDIR: $DEPLOYDIR
echo PATH modified
echo LD_LIBRARY_PATH modified
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
}
setenv_freebsd()
{
setenv_common
QMAKESPEC=freebsd-g++
QTDIR=/usr/local/share/qt4
}
setenv_netbsd()
{
setenv_common
QMAKESPEC=netbsd-g++
QTDIR=/usr/pkg/qt4
PATH=/usr/pkg/qt4/bin:$PATH
LD_LIBRARY_PATH=/usr/pkg/qt4/lib:/usr/X11R7/lib:$LD_LIBRARY_PATH
export QMAKESPEC
export QTDIR
export PATH
export LD_LIBRARY_PATH
}
setenv_linux_clang()
{
export CC=clang
export CXX=clang++
export QMAKESPEC=unsupported/linux-clang
echo CC has been modified: $CC
echo CXX has been modified: $CXX
echo QMAKESPEC has been modified: $QMAKESPEC
}
if [ "`uname | grep -i 'linux\|debian'`" ]; then
setenv_common
if [ "`echo $* | grep clang`" ]; then
setenv_linux_clang
fi
elif [ "`uname | grep -i freebsd`" ]; then
setenv_freebsd
elif [ "`uname | grep -i netbsd`" ]; then
setenv_netbsd
else
# guess
setenv_common
echo unknown system. guessed env variables. see 'setenv-unibuild.sh'
fi

View File

@ -1,33 +0,0 @@
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)"
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 \
libcgal-dev libopencsg-dev

442
scripts/uni-build-dependencies.sh Executable file
View File

@ -0,0 +1,442 @@
#!/bin/sh -e
# uni-build-dependencies by don bright 2012. copyright assigned to
# Marius Kintel and Clifford Wolf, 2012. released under the GPL 2, or
# later, as described in the file named 'COPYING' in OpenSCAD's project root.
# This script builds most dependencies, both libraries and binary tools,
# of OpenSCAD for Linux/BSD. It is based on macosx-build-dependencies.sh
#
# By default it builds under $HOME/openscad_deps. You can alter this by
# setting the BASEDIR environment variable or with the 'out of tree'
# feature
#
# Usage:
# cd openscad
# . ./scripts/setenv-unibuild.sh
# ./scripts/uni-build-dependencies.sh
#
# Out-of-tree usage:
#
# cd somepath
# . /path/to/openscad/scripts/setenv-unibuild.sh
# /path/to/openscad/scripts/uni-build-dependencies.sh
#
# Prerequisites:
# - wget or curl
# - Qt4
# - gcc
#
# Enable Clang (experimental, only works on linux):
#
# . ./scripts/setenv-unibuild.sh clang
#
printUsage()
{
echo "Usage: $0"
echo
}
build_bison()
{
version=$1
echo "Building bison" $version
cd $BASEDIR/src
rm -rf bison-$version
if [ ! -f bison-$version.tar.gz ]; then
curl --insecure -O http://ftp.gnu.org/gnu/bison/bison-$version.tar.gz
fi
tar zxf bison-$version.tar.gz
cd bison-$version
./configure --prefix=$DEPLOYDIR
make -j$NUMCPU
make install
}
build_git()
{
version=$1
echo "Building git" $version "..."
cd $BASEDIR/src
rm -rf git-$version
if [ ! -f git-$version.tar.gz ]; then
curl --insecure -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
echo "Building cmake" $version "..."
cd $BASEDIR/src
rm -rf cmake-$version
if [ ! -f cmake-$version.tar.gz ]; then
curl --insecure -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
if [ -e $DEPLOYDIR/include/gmp.h ]; then
echo "gmp already installed. not building"
return
fi
echo "Building gmp" $version "..."
cd $BASEDIR/src
rm -rf gmp-$version
if [ ! -f gmp-$version.tar.bz2 ]; then
curl --insecure -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
if [ -e $DEPLOYDIR/include/mpfr.h ]; then
echo "mpfr already installed. not building"
return
fi
echo "Building mpfr" $version "..."
cd $BASEDIR/src
rm -rf mpfr-$version
if [ ! -f mpfr-$version.tar.bz2 ]; then
curl --insecure -O http://www.mpfr.org/mpfr-$version/mpfr-$version.tar.bz2
fi
tar xjf mpfr-$version.tar.bz2
cd mpfr-$version
mkdir build
cd build
../configure --prefix=$DEPLOYDIR --with-gmp=$DEPLOYDIR
make install
cd ..
}
build_boost()
{
if [ -e $DEPLOYDIR/include/boost ]; then
echo "boost already installed. not building"
return
fi
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 --insecure -LO http://downloads.sourceforge.net/project/boost/boost/$version/boost_$bversion.tar.bz2
fi
tar xjf boost_$bversion.tar.bz2
cd boost_$bversion
if [ "`gcc --version|grep 4.7`" ]; then
if [ "`echo $version | grep 1.47`" ]; then
echo gcc 4.7 incompatible with boost 1.47. edit boost version in $0
exit
fi
fi
# We only need certain portions of boost
./bootstrap.sh --prefix=$DEPLOYDIR --with-libraries=thread,program_options,filesystem,system,regex
if [ $CXX ]; then
if [ $CXX = "clang++" ]; then
./b2 -j$NUMCPU toolset=clang install
# ./b2 -j$NUMCPU toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" install
fi
else
./b2 -j$NUMCPU
./b2 install
fi
}
build_cgal()
{
if [ -e $DEPLOYDIR/include/CGAL/version.h ]; then
echo "CGAL already installed. not building"
return
fi
version=$1
echo "Building CGAL" $version "..."
cd $BASEDIR/src
rm -rf CGAL-$version
if [ ! -f CGAL-$version.tar.* ]; then
#4.0.2
curl --insecure -O https://gforge.inria.fr/frs/download.php/31174/CGAL-$version.tar.bz2
# 4.0 curl --insecure -O https://gforge.inria.fr/frs/download.php/30387/CGAL-$version.tar.gz
# 3.9 curl --insecure -O https://gforge.inria.fr/frs/download.php/29125/CGAL-$version.tar.gz
# 3.8 curl --insecure -O https://gforge.inria.fr/frs/download.php/28500/CGAL-$version.tar.gz
# 3.7 curl --insecure -O https://gforge.inria.fr/frs/download.php/27641/CGAL-$version.tar.gz
fi
tar jxf CGAL-$version.tar.bz2
cd CGAL-$version
if [ "`echo $2 | grep 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
}
build_glew()
{
if [ -e $DEPLOYDIR/include/GL/glew.h ]; then
echo "glew already installed. not building"
return
fi
version=$1
echo "Building GLEW" $version "..."
cd $BASEDIR/src
rm -rf glew-$version
if [ ! -f glew-$version.tgz ]; then
curl --insecure -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's makefile is not built for Linux Multiarch. We aren't trying
# to fix everything here, just the test machines OScad normally runs on
# Fedora 64-bit
if [ "`uname -m | grep 64`" ]; then
if [ -e /usr/lib64/libXmu.so.6 ]; then
sed -ibak s/"\-lXmu"/"\-L\/usr\/lib64\/libXmu.so.6"/ config/Makefile.linux
fi
fi
# debian hurd i386
if [ "`uname -m | grep 386`" ]; then
if [ -e /usr/lib/i386-gnu/libXi.so.6 ]; then
sed -ibak s/"-lXi"/"\-L\/usr\/lib\/i386-gnu\/libXi.so.6"/ config/Makefile.gnu
fi
fi
# clang linux
if [ $CC ]; then
sed -ibak s/"CC = cc"/"# CC = cc"/ config/Makefile.linux
fi
MAKER=make
if [ "`uname | grep BSD`" ]; then
if [ "`command -v gmake`" ]; then
MAKER=gmake
else
echo "building glew on BSD requires gmake (gnu make)"
exit
fi
fi
GLEW_DEST=$DEPLOYDIR $MAKER -j$NUMCPU
GLEW_DEST=$DEPLOYDIR $MAKER install
}
build_opencsg()
{
if [ -e $DEPLOYDIR/include/opencsg.h ]; then
echo "OpenCSG already installed. not building"
return
fi
version=$1
echo "Building OpenCSG" $version "..."
cd $BASEDIR/src
rm -rf OpenCSG-$version
if [ ! -f OpenCSG-$version.tar.gz ]; then
curl --insecure -O http://www.opencsg.org/OpenCSG-$version.tar.gz
fi
tar xzf OpenCSG-$version.tar.gz
cd OpenCSG-$version
# modify the .pro file for qmake, then use qmake to
# manually rebuild the src/Makefile (some systems don't auto-rebuild it)
cp opencsg.pro opencsg.pro.bak
cat opencsg.pro.bak | sed s/example// > opencsg.pro
if [ "`command -v qmake-qt4`" ]; then
OPENCSG_QMAKE=qmake-qt4
elif [ "`command -v qmake4`" ]; then
OPENCSG_QMAKE=qmake4
else
OPENCSG_QMAKE=qmake
fi
cd $BASEDIR/src/OpenCSG-$version/src
$OPENCSG_QMAKE
cd $BASEDIR/src/OpenCSG-$version
$OPENCSG_QMAKE
make
ls lib/* include/*
if [ -e lib/.libs ]; then ls lib/.libs/*; fi # netbsd
echo "installing to -->" $DEPLOYDIR
mkdir -p $DEPLOYDIR/lib
mkdir -p $DEPLOYDIR/include
install lib/* $DEPLOYDIR/lib
install include/* $DEPLOYDIR/include
if [ -e lib/.libs ]; then install lib/.libs/* $DEPLOYDIR/lib; fi #netbsd
cd $BASEDIR
}
build_eigen()
{
version=$1
if [ -e $DEPLOYDIR/include/eigen2 ]; then
if [ `echo $version | grep 2....` ]; then
echo "Eigen2 already installed. not building"
return
fi
fi
if [ -e $DEPLOYDIR/include/eigen3 ]; then
if [ `echo $version | grep 3....` ]; then
echo "Eigen3 already installed. not building"
return
fi
fi
echo "Building eigen" $version "..."
cd $BASEDIR/src
rm -rf eigen-$version
EIGENDIR="none"
if [ $version = "2.0.17" ]; then EIGENDIR=eigen-eigen-b23437e61a07; fi
if [ $version = "3.1.1" ]; then EIGENDIR=eigen-eigen-43d9075b23ef; 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 --insecure -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
ln -s ./$EIGENDIR eigen-$version
cd eigen-$version
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$DEPLOYDIR -DEIGEN_TEST_NO_OPENGL=1 ..
make -j$NUMCPU
make install
}
# this section allows 'out of tree' builds, as long as the system has
# the 'dirname' command installed
if [ "`command -v dirname`" ]; then
OPENSCAD_SCRIPTDIR=`dirname $0`
else
if [ ! -f openscad.pro ]; then
echo "Must be run from the OpenSCAD source root directory (dont have 'dirname')"
exit 1
else
OPENSCAD_SCRIPTDIR=$PWD
fi
fi
. $OPENSCAD_SCRIPTDIR/setenv-unibuild.sh # '.' is equivalent to 'source'
SRCDIR=$BASEDIR/src
if [ ! $NUMCPU ]; then
echo "Note: The NUMCPU environment variable can be set for paralell builds"
NUMCPU=1
fi
if [ ! -d $BASEDIR/bin ]; then
mkdir -p $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
# this section builds some basic tools, if they are missing or outdated
# they are installed under $BASEDIR/bin which we have added to our PATH
if [ ! "`command -v curl`" ]; then
build_curl 7.26.0
fi
if [ ! "`command -v bison`" ]; then
build_bison 2.6.1
fi
# NB! For cmake, also update the actual download URL in the function
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" ]; then
build_cgal 4.0.2 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 3.1.1
build_gmp 5.0.5
build_mpfr 3.1.1
build_boost 1.49.0
# NB! For CGAL, also update the actual download URL in the function
build_cgal 4.0.2
build_glew 1.9.0
build_opencsg 1.3.2
echo "OpenSCAD dependencies built and installed to " $BASEDIR

90
scripts/uni-get-dependencies.sh Executable file
View File

@ -0,0 +1,90 @@
# auto-install dependency packages using the systems package manager.
# after running this, run ./script/check-dependencies.sh. see README.md
#
# this assumes you have sudo installed or are running as root.
#
get_fedora_deps()
{
sudo yum install qt-devel bison flex eigen2-devel \
boost-devel mpfr-devel gmp-devel glew-devel CGAL-devel gcc pkgconfig git
}
get_altlinux_deps()
{
for i in boost-devel boost-filesystem-devel gcc4.5 gcc4.5-c++ boost-program_options-devel \
boost-thread-devel boost-system-devel boost-regex-devel eigen2 libmpfr libgmp libgmp_cxx-devel qt4-devel libcgal-devel git-core \
libglew-devel flex bison; do sudo apt-get install $i; done
}
get_freebsd_deps()
{
pkg_add -r bison boost-libs cmake git bash eigen2 flex gmake gmp mpfr \
xorg libGLU libXmu libXi xorg-vfbserver glew \
qt4-corelib qt4-gui qt4-moc qt4-opengl qt4-qmake qt4-rcc qt4-uic \
opencsg cgal
}
get_netbsd_deps()
{
sudo pkgin install bison boost cmake git bash eigen flex gmake gmp mpfr \
qt4 glew cgal opencsg modular-xorg
}
get_opensuse_deps()
{
sudo zypper install libeigen2-devel mpfr-devel gmp-devel boost-devel \
libqt4-devel glew-devel cmake git bison flex cgal-devel opencsg-devel
}
get_mageia_deps()
{
sudo urpmi ctags
sudo urpmi task-c-devel task-c++-devel libqt4-devel libgmp-devel \
libmpfr-devel libboost-devel eigen3-devel libglew-devel bison flex \
cmake imagemagick python curl git
}
get_debian_deps()
{
for pkg in build-essential libqt4-dev libqt4-opengl-dev \
libxmu-dev cmake bison flex git-core libboost-all-dev \
libXi-dev libmpfr-dev libboost-dev libglew-dev libeigen2-dev \
libeigen3-dev libcgal-dev libopencsg-dev libgmp3-dev libgmp-dev; do
sudo apt-get -y install $pkg;
done
}
unknown()
{
echo "Unknown system type. Please install the dependency packages listed"
echo "in README.md using your system's package manager."
}
if [ -e /etc/issue ]; then
if [ "`grep -i ubuntu /etc/issue`" ]; then
get_debian_deps
elif [ "`grep -i debian /etc/issue`" ]; then
get_debian_deps
elif [ "`grep -i suse /etc/issue`" ]; then
get_opensuse_deps
elif [ "`grep -i fedora /etc/issue`" ]; then
get_fedora_deps
elif [ "`grep -i red.hat /etc/issue`" ]; then
get_fedora_deps
elif [ "`grep -i mageia /etc/issue`" ]; then
get_mageia_deps
elif [ "`command -v rpm`" ]; then
if [ "`rpm -qa | grep altlinux`" ]; then
get_altlinux_deps
fi
fi
elif [ "`uname | grep -i freebsd `" ]; then
get_freebsd_deps
elif [ "`uname | grep -i netbsd`" ]; then
get_netbsd_deps
else
unknown
fi

View File

@ -16,6 +16,9 @@ public:
this->aboutText->setOpenExternalLinks(true);
QUrl flattr_qurl(":icons/flattr.png" );
this->aboutText->loadResource( QTextDocument::ImageResource, flattr_qurl );
QString tmp = this->aboutText->toHtml();
tmp.replace("__VERSION__",QString(TOSTRING(OPENSCAD_VERSION)));
this->aboutText->setHtml(tmp);
}
};

View File

@ -1,77 +1,142 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://flattr.com/submit/auto?user_id=openscad&amp;url=http://openscad.org&amp;title=OpenSCAD&amp;language=&amp;tags=github&amp;category=software"><img src=":icons/flattr.png" /></a></p>
<p align="right" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.openscad.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">OpenSCAD</span></a><span style=" font-size:10pt;"> is Copyright (C) 2009-2012 </span><a href="https://github.com/kintel"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Marius Kintel </span></a><span style=" font-size:10pt;"> &lt;marius@kintel.net&gt; and </span><a href="http://clifford.at"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Clifford Wolf</span></a><span style=" font-size:10pt;"> &lt;clifford@clifford.at&gt;</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">License</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt; font-weight:600;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please visit this link for a copy of the license: </span><a href="http://www.gnu.org/licenses/gpl-2.0.html"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">GPL 2.0</span></a></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">Tools &amp; Libraries used</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt; font-weight:600;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gmplib.org/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">GNU GMP</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.mpfr.org/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">GNU MPFR</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.cgal.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">CGAL</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://eigen.tuxfamily.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Eigen2</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.opencsg.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">OpenCSG</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.opengl.org/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">OpenGL</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://glew.sourceforge.net"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">GLEW</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://qt.nokia.com"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Qt Toolkit</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.boost.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Boost</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.gnu.org/software/bison/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Bison</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://flex.sourceforge.net/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Flex</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.cmake.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">CMake</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://lodev.org/lodepng/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">LodePNG</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.mingw.org/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">MingW</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.mxe.cc"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">MXE</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.linux.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Linux</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.apple.com/osx/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Mac OSX</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.stroustrup.com/C++.html"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">C++</span></a><span style=" font-size:10pt; font-weight:600;">, </span><a href="http://gcc.gnu.org/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">GCC</span></a><span style=" font-size:10pt; font-weight:600;">, </span><a href="http://clang.llvm.org/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">clang</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.python.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">python</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://nsis.sourceforge.net/Main_Page"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Nullsoft installer</span></a></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">Acknowledgements</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.github.com/openscad"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">OpenSCAD Github Project</span></a><span style=" font-size:10pt;"> members (public):</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/kintel"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Marius Kintel </span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://clifford.at"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Clifford Wolf</span></a><span style=" font-size:10pt;"> </span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.github.com/GilesBathgate"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Giles Bathgate</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/brad"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Brad Pitcher</span></a></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.debian.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Debian </span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">maintainer:</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://christian.amsuess.com/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Christian M. Amsüss</span></a></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Patches:</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/meta23"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">meta23</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/jasonblewis"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">jasonblewis</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"> </span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/gregjurman"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">gregjurman</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/brianolson"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">brianolson</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/tjhowse"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">tjhowse</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"> </span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/logxen"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">logxen</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"> (Mark A Cooper)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/iamwilhelm"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">iamwilhelm</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"> (Wil Chung)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/clothbot"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">clothbot</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"> (Andrew Plumb)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/colah"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">colah</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"> (Christopher Olah)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;"> </span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Bug reports:</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;"> </span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">nop head, Triffid Hunter, Len Trigg, </span><span style=" font-family:'Ubuntu'; font-size:11pt;">Kliment Yanev, Christian Siefkes, Whosawhatsis, MichaelAtOz, mrhdias, ibyte8bits, Koen Kooi, Tomas Mudrunka, knuds, cadr, mshearn, Hans L, Brett Sutton, hmnapier, Eero af Heurlin, caliston, 5263, ghost, 42loop, uniqx, Michael Thomson, Michael Ivko, Pierre Doucet, myglc2, Alan Cox, Peter Falke, Michael Ambrus, Gordon Wrigley, Ed Nisley, Stony Smith, Pasca Andrei, David Goodenough, William A Adams ... and many others</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; font-style:italic;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">Hosting &amp; resources</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.github.com"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Github</span></a><span style=" font-size:10pt;"> source repository</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://rocklinux.net/pipermail/openscad/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Rock Linux</span></a><span style=" font-size:10pt;"> mailing list</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.thingiverse.com"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Thingiverse</span></a></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"> </span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://guerby.org/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Laurent Guerby</span></a><span style=" font-size:10pt;"> and the </span><a href="http://gcc.gnu.org/wiki/CompileFarm"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">GCC Compile Farm,</span></a><span style=" font-size:10pt;"> with </span><a href="http://osuosl.org/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">OSUOSL,</span></a><span style=" font-size:10pt;"> </span><a href="http://www.ibm.com"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">IBM</span></a><span style=" font-size:10pt;">, </span><a href="http://www.irill.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">IRILL,</span></a><span style=" font-size:10pt;"> </span><a href="http://www.intel.com"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">Intel</span></a><span style=" font-size:10pt;">, </span><a href="http://www.fsffrance.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">FSF France,</span></a><span style=" font-size:10pt;"> and </span><a href="http://www.amd.com"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">AMD</span></a><span style=" font-size:10pt;">.</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Apologies to anyone accidentally left out. </span></p></body></html>
<html>
<!-- Please note that Qt's TextBrowser renders things slightly unusually, so
a normal browser alone is not a sufficient test. Just edit this file and rerun
make to do your testing. -->
<head>
<meta name="qrichtext" content="1" />
</head>
<body style="font-family:'Arial'; font-size:13pt;">
<p>
<a align=right href="https://flattr.com/submit/auto?user_id=openscad&amp;url=http://openscad.org&amp;title=OpenSCAD&amp;language=&amp;tags=github&amp;category=software"><img align=right src=":icons/flattr.png" /></a>
</p>
<p>
<a href="http://www.openscad.org">OpenSCAD</a> version __VERSION__
</p>
<p>
Copyright (C) 2009-2012 <a href="https://github.com/kintel">Marius Kintel</a> &lt;marius@kintel.net&gt; and <a href="http://clifford.at">Clifford Wolf</a> &lt;clifford@clifford.at&gt;
</p>
<p>
<b>License</b>
</p>
<p>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
</p>
<p>
Please visit this link for a copy of the license: <a href="http://www.gnu.org/licenses/gpl-2.0.html">GPL 2.0</a>
</p>
<p>
<b>Tools &amp; Libraries used</b>
</p>
<lu>
<li><a href="http://gmplib.org/">GNU GMP</a>
<li><a href="http://www.mpfr.org/">GNU MPFR</a>
<li><a href="http://www.cgal.org">CGAL</a>
<li><a href="http://eigen.tuxfamily.org">Eigen2</a>
<li><a href="http://www.opencsg.org">OpenCSG</a>
<li><a href="http://www.opengl.org/">OpenGL</a>
<li><a href="http://glew.sourceforge.net">GLEW</a>
<li><a href="http://qt.nokia.com">Qt Toolkit</a>
<li><a href="http://www.boost.org">Boost</a>
<li><a href="http://www.gnu.org/software/bison/">Bison</a>
<li><a href="http://flex.sourceforge.net/">Flex</a>
<li><a href="http://www.cmake.org">CMake</a>
<li><a href="http://www.mingw.org/">MingW</a>
<li><a href="http://lodev.org/lodepng/">LodePNG</a>
<li><a href="http://www.mxe.cc">MXE</a>
<li><a href="http://www.linux.org">Linux</a>
<li><a href="http://www.apple.com/osx/">Mac OSX</a>
<li><a href="http://www.stroustrup.com/C++.html">C++</a>, <a href="http://gcc.gnu.org/">GCC</a>, <a href="http://clang.llvm.org/">clang</a>
<li><a href="http://www.python.org">python</a>
<li><a href="http://nsis.sourceforge.net/Main_Page">Nullsoft installer</a>
</lu>
</p>
<p>
<b>Acknowledgements</b>
</p>
<p>
<b>OpenSCAD Github Project members (public)</b>
</p>
<lu>
<li><a href="https://github.com/kintel">Marius Kintel </a>
<li><a href="http://clifford.at">Clifford Wolf</a>
<li><a href="http://www.github.com/GilesBathgate">Giles Bathgate</a>
<li><a href="https://github.com/brad">Brad Pitcher</a>
<li><a href="https://github.com/donbright">Don Bright</a>
</lu>
<p>
<b><a href="http://www.debian.org">Debian</a> maintainer:</b>
<a href="http://christian.amsuess.com/">Christian M. Amsuess</a>
</p>
<p>
<b>Patches</b>
</p>
<lu>
<li><a href="https://github.com/meta23">meta23</a>
<li><a href="https://github.com/jasonblewis">jasonblewis</a>
<li><a href="https://github.com/gregjurman">gregjurman</a>
<li><a href="https://github.com/brianolson">brianolson</a>
<li><a href="https://github.com/tjhowse">tjhowse</a>
<li><a href="https://github.com/logxen">logxen</a>
<li><a href="https://github.com/iamwilhelm">iamwilhelm</a>
<li><a href="https://github.com/clothbot">clothbot</a>
<li><a href="https://github.com/colah">colah</a>
</lu>
<p>
<b>Mailing list, bug reports, testing, &c</b>
</p>
nop head, Triffid Hunter, Len Trigg, Kliment Yanev, Christian Siefkes,
Whosawhatsis, MichaelAtOz, Tony Buser, mrhdias, ibyte8bits, Koen Kooi,
Tomas Mudrunka, knuds, cadr, mshearn, Hans L, Brett Sutton, hmnapier,
Eero af Heurlin, caliston, 5263, ghost, 42loop, uniqx, Michael Thomson,
Michael Ivko, Pierre Doucet, myglc2, Alan Cox, Peter Falke, Michael
Ambrus, Gordon Wrigley, Ed Nisley, Stony Smith, Pasca Andrei, David
Goodenough, William A Adams ... and many others
<p>
<b>Hosting &amp; resources</b>
</p>
<lu>
<li><a href="http://www.github.com">Github</a>
<li><a href="http://rocklinux.net/pipermail/openscad/">Rock Linux</a>
<li><a href="http://www.thingiverse.com">Thingiverse</a>
</lu>
<p>
<a href="http://guerby.org/">Laurent Guerby</a> and the
<a href="http://gcc.gnu.org/wiki/CompileFarm">GCC Compile Farm,</a> with
<a href="http://osuosl.org/">OSUOSL,</a> <a href="http://www.irill.org">IRILL,</a>
<a href="http://www.fsffrance.org">FSF France,</a> <a href="http://www.amd.com">AMD</a>,
<a href="http://www.intel.com">Intel</a>, <a href="http://www.ibm.com">IBM</a>, &c.
</p>
<p>
Apologies to anyone left out. Please file an issue on OpenSCAD's github if you know of someone who belongs here.
</p>
</body>
</html>

View File

@ -217,7 +217,7 @@
</widget>
<widget class="QMenu" name="menuHelp">
<property name="title">
<string>Help</string>
<string>&amp;Help</string>
</property>
<addaction name="helpActionAbout"/>
<addaction name="helpActionHomepage"/>

View File

@ -1,6 +1,6 @@
// boosty.h copyright 2012 don bright. released under the GPL 2, or later,
// as described in the file named 'COPYING' in OpenSCAD's project root.
// permission is given to Marius Kintel & Clifford Wolf to change this license.
// boosty.h by don bright 2012. Copyright assigned to Marius Kintel and
// Clifford Wolf 2012. Released under the GPL 2, or later, as described in
// the file named 'COPYING' in OpenSCAD's project root.
#ifndef boosty_h_
#define boosty_h_

View File

@ -1,12 +1,12 @@
// 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.
// permission to change this license is given to Marius Kintel & Clifford Wolf
// version_check.h by don bright 2012. Copyright assigned to Marius Kintel and
// Clifford Wolf 2012. 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
qmake CONFIG+=skip-version-check
Otherwise they will be guided to README.md and an -build-dependencies script.
@ -66,6 +66,9 @@ a time, to avoid confusion.
#warning "."
#warning "."
#warning "======================="
#ifdef __clang__
#error For Clang to work, CGAL must be >= 4.0.2
#endif
#endif // CGAL_VERSION_NR < 10400010000
#endif //ENABLE_CGAL

View File

@ -1,8 +1,8 @@
#!/usr/bin/python
# test_pretty_print copyright 2012 don bright. released under the GPL 2, or
# later, as described in the file named 'COPYING' in OpenSCAD's project root.
# permission to change this license is given to Marius Kintel & Clifford Wolf
# test_pretty_print by don bright 2012. Copyright assigned to Marius Kintel and
# Clifford Wolf 2012. Released under the GPL 2, or later, as described in
# the file named 'COPYING' in OpenSCAD's project root.
#
# This program 'pretty prints' the ctest output, namely