mirror of https://github.com/vitalif/openscad
Merge branch 'master' of github.com:openscad/openscad into cmake_workaround
Conflicts: tests/virtualfb.shfelipesanches-svg
commit
44cddd0b3c
|
@ -130,5 +130,12 @@ if [ "`echo $* | grep qt5`" ]; then
|
|||
setenv_qt5
|
||||
fi
|
||||
|
||||
if [ -e $DEPLOYDIR/include/Qt ]; then
|
||||
echo "Qt found under $DEPLOYDIR ... "
|
||||
QTDIR=$DEPLOYDIR
|
||||
export QTDIR
|
||||
echo "QTDIR modified to $DEPLOYDIR"
|
||||
fi
|
||||
|
||||
clean_note
|
||||
|
||||
|
|
|
@ -24,14 +24,25 @@
|
|||
#
|
||||
# Prerequisites:
|
||||
# - wget or curl
|
||||
# - Qt4
|
||||
# - OpenGL (GL/gl.h)
|
||||
# - GLU (GL/glu.h)
|
||||
# - gcc
|
||||
# - Qt4
|
||||
#
|
||||
# Enable Clang (experimental, only works on linux):
|
||||
# If your system lacks qt4, build like this:
|
||||
#
|
||||
# ./scripts/uni-build-dependencies.sh qt4
|
||||
# . ./scripts/setenv-unibuild.sh
|
||||
#
|
||||
# If your system lacks glu, try to build like this:
|
||||
#
|
||||
# ./scripts/uni-build-dependencies.sh glu
|
||||
#
|
||||
# If you want to try Clang compiler (experimental, only works on linux):
|
||||
#
|
||||
# . ./scripts/setenv-unibuild.sh clang
|
||||
#
|
||||
# Enable Qt5 (experimental)
|
||||
# If you want to try Qt5 (experimental)
|
||||
#
|
||||
# . ./scripts/setenv-unibuild.sh qt5
|
||||
#
|
||||
|
@ -42,6 +53,51 @@ printUsage()
|
|||
echo
|
||||
}
|
||||
|
||||
build_glu()
|
||||
{
|
||||
version=$1
|
||||
if [ -e $DEPLOYDIR/lib/libGLU.so ]; then
|
||||
echo "GLU already installed. not building"
|
||||
return
|
||||
fi
|
||||
echo "Building GLU" $version "..."
|
||||
cd $BASEDIR/src
|
||||
rm -rf glu-$version
|
||||
if [ ! -f glu-$version.tar.gz ]; then
|
||||
curl -O http://cgit.freedesktop.org/mesa/glu/snapshot/glu-$version.tar.gz
|
||||
fi
|
||||
tar xzf glu-$version.tar.gz
|
||||
cd glu-$version
|
||||
./autogen.sh --prefix=$DEPLOYDIR
|
||||
make -j$NUMCPU
|
||||
make install
|
||||
}
|
||||
|
||||
build_qt4()
|
||||
{
|
||||
version=$1
|
||||
if [ -e $DEPLOYDIR/include/Qt ]; then
|
||||
echo "qt already installed. not building"
|
||||
return
|
||||
fi
|
||||
echo "Building Qt" $version "..."
|
||||
cd $BASEDIR/src
|
||||
rm -rf qt-everywhere-opensource-src-$version
|
||||
if [ ! -f qt-everywhere-opensource-src-$version.tar.gz ]; then
|
||||
curl -O http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-$version.tar.gz
|
||||
fi
|
||||
tar xzf qt-everywhere-opensource-src-$version.tar.gz
|
||||
cd qt-everywhere-opensource-src-$version
|
||||
./configure -prefix $DEPLOYDIR -opensource -confirm-license -fast -no-qt3support -no-svg -no-phonon -no-audio-backend -no-multimedia -no-javascript-jit -no-script -no-scripttools -no-declarative -no-xmlpatterns -nomake demos -nomake examples -nomake docs -nomake translations -no-webkit
|
||||
make -j$NUMCPU
|
||||
make install
|
||||
QTDIR=$DEPLOYDIR
|
||||
export QTDIR
|
||||
echo "----------"
|
||||
echo " Please set QTDIR to $DEPLOYDIR ( or run '. scripts/setenv-unibuild.sh' )"
|
||||
echo "----------"
|
||||
}
|
||||
|
||||
build_bison()
|
||||
{
|
||||
version=$1
|
||||
|
@ -196,7 +252,12 @@ build_boost()
|
|||
fi
|
||||
else
|
||||
$BJAMBIN -j$NUMCPU
|
||||
$BJAMBIN install
|
||||
if [ $? = 0 ]; then
|
||||
$BJAMBIN install
|
||||
else
|
||||
echo boost build failed
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -211,19 +272,28 @@ build_cgal()
|
|||
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
|
||||
# 4.1
|
||||
curl --insecure -O https://gforge.inria.fr/frs/download.php/31640/CGAL-$version.tar.bz2
|
||||
# 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 #4.0
|
||||
# 3.9 curl --insecure -O https://gforge.inria.fr/frs/download.php/29125/CGAL-$version.tar.gz #3.9
|
||||
# 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
|
||||
tar xf 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
|
||||
mkdir bin
|
||||
cd bin
|
||||
rm -rf ./*
|
||||
if [ "`uname -a| grep ppc64`" ]; then
|
||||
CGAL_BUILDTYPE="Release" # avoid assertion violation
|
||||
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
|
||||
CGAL_BUILDTYPE="Debug"
|
||||
fi
|
||||
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=$CGAL_BUILDTYPE ..
|
||||
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=$CGAL_BUILD_TYPE ..
|
||||
fi
|
||||
make -j$NUMCPU
|
||||
make install
|
||||
|
@ -284,7 +354,7 @@ build_glew()
|
|||
|
||||
build_opencsg()
|
||||
{
|
||||
if [ -e $DEPLOYDIR/include/opencsg.h ]; then
|
||||
if [ -e $DEPLOYDIR/lib/libopencsg.so ]; then
|
||||
echo "OpenCSG already installed. not building"
|
||||
return
|
||||
fi
|
||||
|
@ -438,6 +508,16 @@ if [ $1 ]; then
|
|||
build_opencsg 1.3.2
|
||||
exit
|
||||
fi
|
||||
if [ $1 == "qt4" ]; then
|
||||
# such a huge build, put here by itself
|
||||
build_qt4 4.8.4
|
||||
exit
|
||||
fi
|
||||
if [ $1 == "glu" ]; then
|
||||
# Mesa and GLU split in late 2012, so it's not on some systems
|
||||
build_glu 9.0.0
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
@ -445,13 +525,12 @@ 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_cgal 4.1
|
||||
build_glew 1.9.0
|
||||
build_opencsg 1.3.2
|
||||
|
||||
|
|
|
@ -52,6 +52,9 @@ namespace fs = boost::filesystem;
|
|||
using namespace boost::assign; // bring 'operator+=()' into scope
|
||||
#include "boosty.h"
|
||||
|
||||
#include <boost/detail/endian.hpp>
|
||||
#include <boost/cstdint.hpp>
|
||||
|
||||
class ImportModule : public AbstractModule
|
||||
{
|
||||
public:
|
||||
|
@ -112,6 +115,47 @@ AbstractNode *ImportModule::evaluate(const Context *ctx, const ModuleInstantiati
|
|||
return node;
|
||||
}
|
||||
|
||||
#define STL_FACET_NUMBYTES 4*3*4+2
|
||||
// as there is no 'float32_t' standard, we assume the systems 'float'
|
||||
// is a 'binary32' aka 'single' standard IEEE 32-bit floating point type
|
||||
union stl_facet {
|
||||
uint8_t data8[ STL_FACET_NUMBYTES ];
|
||||
uint32_t data32[4*3];
|
||||
struct facet_data {
|
||||
float i, j, k;
|
||||
float x1, y1, z1;
|
||||
float x2, y2, z2;
|
||||
float x3, y3, z3;
|
||||
uint16_t attribute_byte_count;
|
||||
} data;
|
||||
};
|
||||
|
||||
void uint32_byte_swap( uint32_t &x )
|
||||
{
|
||||
#if defined(__GNUC__) || defined(__clang__)
|
||||
x = __builtin_bswap32( x );
|
||||
#elif defined(_MSC_VER)
|
||||
x = _byteswap_ulong( x );
|
||||
#else
|
||||
uint32_t b1 = ( 0x000000FF & x ) << 24;
|
||||
uint32_t b2 = ( 0x0000FF00 & x ) << 8;
|
||||
uint32_t b3 = ( 0x00FF0000 & x ) >> 8;
|
||||
uint32_t b4 = ( 0xFF000000 & x ) >> 24;
|
||||
x = b1 | b2 | b3 | b4;
|
||||
#endif
|
||||
}
|
||||
|
||||
void read_stl_facet( std::ifstream &f, stl_facet &facet )
|
||||
{
|
||||
f.read( (char*)facet.data8, STL_FACET_NUMBYTES );
|
||||
#ifdef BOOST_BIG_ENDIAN
|
||||
for ( int i = 0; i < 12; i++ ) {
|
||||
uint32_byte_swap( facet.data32[ i ] );
|
||||
}
|
||||
// we ignore attribute byte count
|
||||
#endif
|
||||
}
|
||||
|
||||
PolySet *ImportNode::evaluate_polyset(class PolySetEvaluator *) const
|
||||
{
|
||||
PolySet *p = NULL;
|
||||
|
@ -137,9 +181,11 @@ PolySet *ImportNode::evaluate_polyset(class PolySetEvaluator *) const
|
|||
int file_size = f.tellg();
|
||||
f.seekg(80);
|
||||
if (!f.eof()) {
|
||||
int facenum = 0;
|
||||
// FIXME: Assumes little endian
|
||||
f.read((char *)&facenum, sizeof(int));
|
||||
uint32_t facenum = 0;
|
||||
f.read((char *)&facenum, sizeof(uint32_t));
|
||||
#ifdef BOOST_BIG_ENDIAN
|
||||
uint32_byte_swap( facenum );
|
||||
#endif
|
||||
if (file_size == 80 + 4 + 50*facenum) binary = true;
|
||||
}
|
||||
f.seekg(0);
|
||||
|
@ -186,32 +232,14 @@ PolySet *ImportNode::evaluate_polyset(class PolySetEvaluator *) const
|
|||
else
|
||||
{
|
||||
f.ignore(80-5+4);
|
||||
// FIXME: Assumes little endian
|
||||
while (1) {
|
||||
#ifdef _MSC_VER
|
||||
#pragma pack(push,1)
|
||||
#endif
|
||||
struct {
|
||||
float i, j, k;
|
||||
float x1, y1, z1;
|
||||
float x2, y2, z2;
|
||||
float x3, y3, z3;
|
||||
unsigned short acount;
|
||||
}
|
||||
#ifdef __GNUC__
|
||||
__attribute__ ((packed))
|
||||
#endif
|
||||
stldata;
|
||||
#ifdef _MSC_VER
|
||||
#pragma pack(pop)
|
||||
#endif
|
||||
|
||||
f.read((char*)&stldata, sizeof(stldata));
|
||||
stl_facet facet;
|
||||
read_stl_facet( f, facet );
|
||||
if (f.eof()) break;
|
||||
p->append_poly();
|
||||
p->append_vertex(stldata.x1, stldata.y1, stldata.z1);
|
||||
p->append_vertex(stldata.x2, stldata.y2, stldata.z2);
|
||||
p->append_vertex(stldata.x3, stldata.y3, stldata.z3);
|
||||
p->append_vertex(facet.data.x1, facet.data.y1, facet.data.z1);
|
||||
p->append_vertex(facet.data.x2, facet.data.y2, facet.data.z2);
|
||||
p->append_vertex(facet.data.x3, facet.data.y3, facet.data.z3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -179,6 +179,11 @@ endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|||
|
||||
set(CMAKE_INCLUDE_DIRECTORIES_BEFORE ON)
|
||||
find_package(OpenGL REQUIRED)
|
||||
if ( "${OPENGL_glu_LIBRARY}" MATCHES "NOTFOUND" )
|
||||
# GLU and Mesa split in late 2012 so some systems dont have GLU
|
||||
find_library(OPENGL_glu_LIBRARY GLU HINTS "$ENV{OPENSCAD_LIBRARIES}/lib" REQUIRED)
|
||||
set( OPENGL_LIBRARY ${OPENGL_glu_LIBRARY} ${OPENGL_LIBRARY} )
|
||||
endif()
|
||||
|
||||
if (MINGW_CROSS_ENV_DIR)
|
||||
mingw_cross_env_find_qt()
|
||||
|
|
|
@ -36,8 +36,10 @@ if( __cmake_system_name__ MATCHES "Linux|BSD")
|
|||
message("Process ID of vfb: ${VFB_PID}")
|
||||
endif()
|
||||
if ("${VFB_DISPLAY}" STREQUAL "" OR "${VFB_PID}" STREQUAL "")
|
||||
message("Virtual framebuffer had a problem starting.")
|
||||
execute_process("cat virtualfblog")
|
||||
set(VFBLOG "virtualfb.log")
|
||||
message("Virtual framebuffer had a problem starting. Printing ${VFBLOG}")
|
||||
execute_process(COMMAND cat virtualfb.log OUTPUT_VARIABLE VFBLOGTXT)
|
||||
message("Log: ${VFBLOGTXT}")
|
||||
else()
|
||||
message("Virtual framebuffer started. DISPLAY=${VFB_DISPLAY}, PID=${VFB_PID}")
|
||||
endif()
|
||||
|
|
|
@ -101,7 +101,7 @@ def compare_png(resultfilename):
|
|||
msg += '\n expected image: ' + expectedfilename + '\n'
|
||||
print >> sys.stderr, msg
|
||||
if not resultfilename:
|
||||
print >> sys.stderr, "Error: OpenSCAD did not generate an image to test"
|
||||
print >> sys.stderr, "Error: OpenSCAD error during test image generation"
|
||||
return False
|
||||
print >> sys.stderr, ' actual image: ', resultfilename
|
||||
|
||||
|
|
Loading…
Reference in New Issue