summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordon bright <hugh.m.bright@gmail.com>2011-10-10 23:01:51 (GMT)
committerdon bright <hugh.m.bright@gmail.com>2011-10-10 23:01:51 (GMT)
commita1c698f422fceeadcf50e2ad456d5e43a01c8feb (patch)
tree5b21483b358f6fc1905f865f7c29f3228cc4c4a6
parent6251fc326842b657feb4926c9a4fbb51f152248c (diff)
enable build of cgalpngtest under windowsXP
-rw-r--r--cgal.pri3
-rw-r--r--openscad.pro5
-rw-r--r--src/dxfdata.h8
-rw-r--r--src/func.cc1
-rw-r--r--src/linalg.h4
-rw-r--r--src/linearextrude.cc1
-rw-r--r--tests/CMakeLists.txt24
-rw-r--r--tests/OffscreenView.cc2
-rw-r--r--tests/OffscreenView.h8
-rw-r--r--tests/cgalpngtest.cc18
-rw-r--r--tests/cgaltest.cc2
-rw-r--r--tests/csgtestcore.cc2
-rw-r--r--tests/imageutils.cc4
13 files changed, 67 insertions, 15 deletions
diff --git a/cgal.pri b/cgal.pri
index 49e44de..36afa48 100644
--- a/cgal.pri
+++ b/cgal.pri
@@ -17,6 +17,7 @@ cgal {
LIBS += $$CGAL_DIR/auxiliary/gmp/lib/libmpfr-4.lib -lCGAL-vc90-mt-s
} else {
LIBS += -lgmp -lmpfr -lCGAL
+ QMAKE_CXXFLAGS += -frounding-math # visual C++ doesn't have this
}
- QMAKE_CXXFLAGS += -frounding-math
+
}
diff --git a/openscad.pro b/openscad.pro
index 3a41800..35f65ab 100644
--- a/openscad.pro
+++ b/openscad.pro
@@ -42,6 +42,11 @@ win32:DEFINES += _USE_MATH_DEFINES NOMINMAX _CRT_SECURE_NO_WARNINGS YY_NO_UNISTD
#disable warning about too long decorated names
win32:QMAKE_CXXFLAGS += -wd4503
+#disable warning about casting int to bool
+win32:QMAKE_CXXFLAGS += -wd4800
+
+#disable warning about CGAL's unreferenced formal parameters
+win32:QMAKE_CXXFLAGS += -wd4100
TEMPLATE = app
RESOURCES = openscad.qrc
diff --git a/src/dxfdata.h b/src/dxfdata.h
index d8dc3dd..04bcdd0 100644
--- a/src/dxfdata.h
+++ b/src/dxfdata.h
@@ -1,10 +1,14 @@
#ifndef DXFDATA_H_
#define DXFDATA_H_
+// workaround Eigen SIMD alignment problems
#ifndef __APPLE__
#define EIGEN_DONT_VECTORIZE 1
#define EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT 1
#endif
+#ifdef _MSC_VER
+#define EIGEN_DONT_ALIGN
+#endif
#include <Eigen/Dense>
#include <vector>
@@ -35,7 +39,11 @@ public:
}
};
+#ifdef _MSC_VER
+ std::vector<Vector2d> points;
+#else
std::vector<Vector2d, Eigen::aligned_allocator<Vector2d> > points;
+#endif
std::vector<Path> paths;
std::vector<Dim> dims;
diff --git a/src/func.cc b/src/func.cc
index b011a27..75e90df 100644
--- a/src/func.cc
+++ b/src/func.cc
@@ -34,6 +34,7 @@
#include <algorithm>
#include "stl-utils.h"
#include <boost/foreach.hpp>
+#include "openscad.h" //M_PI
AbstractFunction::~AbstractFunction()
{
diff --git a/src/linalg.h b/src/linalg.h
index 02fa17f..b1e1409 100644
--- a/src/linalg.h
+++ b/src/linalg.h
@@ -1,10 +1,14 @@
#ifndef LINALG_H_
#define LINALG_H_
+// workaround Eigen SIMD alignment problems
#ifndef __APPLE__
#define EIGEN_DONT_VECTORIZE 1
#define EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT 1
#endif
+#ifdef _MSC_VER
+#define EIGEN_DONT_ALIGN
+#endif
#include <Eigen/Core>
#include <Eigen/Geometry>
diff --git a/src/linearextrude.cc b/src/linearextrude.cc
index 5c3b684..9c3557b 100644
--- a/src/linearextrude.cc
+++ b/src/linearextrude.cc
@@ -32,6 +32,7 @@
#include "builtin.h"
#include "PolySetEvaluator.h"
#include "openscad.h" // get_fragments_from_r()
+#include "mathc99.h"
#include <sstream>
#include <boost/assign/std/vector.hpp>
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 9e6640e..d102f6b 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -8,6 +8,16 @@ if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif()
+# Disable some warnings in Windows
+if(WIN32)
+ # too long decorated names
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4503")
+ # int cast to bool in CGAL
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800")
+ # unreferenced parameters in CGAL
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4100")
+endif()
+
#
# Build test apps
#
@@ -59,7 +69,7 @@ include_directories(${OPENCSG_INCLUDE_DIR})
# GLEW
-if (NOT $ENV{MACOSX_DEPLOY_DIR} STREQUAL "")
+if ()
set(GLEW_DIR "$ENV{MACOSX_DEPLOY_DIR}")
endif()
find_package(GLEW REQUIRED)
@@ -69,7 +79,10 @@ include_directories(${GLEW_INCLUDE_PATH})
find_package(BISON)
find_package(FLEX)
# The COMPILE_FLAGS and forced C++ compiler is just to be compatible with qmake
-FLEX_TARGET(OpenSCADlexer ../src/lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp COMPILE_FLAGS "-Plexer")
+if (WIN32)
+ set(FLEX_UNISTD_FLAG "-DYY_NO_UNISTD_H")
+endif()
+FLEX_TARGET(OpenSCADlexer ../src/lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp COMPILE_FLAGS "-Plexer ${FLEX_UNISTD_FLAG}")
BISON_TARGET(OpenSCADparser ../src/parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser_yacc.c COMPILE_FLAGS "-p parser")
ADD_FLEX_BISON_DEPENDENCY(OpenSCADlexer OpenSCADparser)
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/parser_yacc.c PROPERTIES LANGUAGE "CXX")
@@ -81,6 +94,7 @@ include_directories(../src)
add_definitions(-DOPENSCAD_VERSION=test -DOPENSCAD_YEAR=2011 -DOPENSCAD_MONTH=10)
set(COMMON_SOURCES
+ ../src/mathc99.cc
../src/handle_dep.cc
../src/qhash.cc
../src/export.cc
@@ -121,10 +135,12 @@ set(COMMON_SOURCES
#
# Offscreen OpenGL context source code
#
-if (NOT $ENV{MACOSX_DEPLOY_DIR} STREQUAL "")
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(OFFSCREEN_CTX_SOURCE "OffscreenContext.mm")
-else()
+elseif(UNIX)
set(OFFSCREEN_CTX_SOURCE "OffscreenContext.cc")
+elseif(WIN32)
+ set(OFFSCREEN_CTX_SOURCE "OffscreenContextWGL.cc")
endif()
#
diff --git a/tests/OffscreenView.cc b/tests/OffscreenView.cc
index d188d0d..e34fbce 100644
--- a/tests/OffscreenView.cc
+++ b/tests/OffscreenView.cc
@@ -186,7 +186,7 @@ void OffscreenView::paintGL()
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
- glClearColor(1.0, 1.0, 0.92, 1.0);
+ glClearColor(1.0f, 1.0f, 0.92f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
diff --git a/tests/OffscreenView.h b/tests/OffscreenView.h
index dd52a81..c57f07e 100644
--- a/tests/OffscreenView.h
+++ b/tests/OffscreenView.h
@@ -1,15 +1,21 @@
#ifndef OFFSCREENVIEW_H_
#define OFFSCREENVIEW_H_
-#ifndef __APPLE__ // Eigen SIMD alignment
+// workaround Eigen SIMD alignment problems
+#ifndef __APPLE__
#define EIGEN_DONT_VECTORIZE 1
#define EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT 1
#endif
+#ifdef _MSC_VER
+#define EIGEN_DONT_ALIGN
+#endif
#include "OffscreenContext.h"
#include <Eigen/Core>
#include <Eigen/Geometry>
+#ifndef _MSC_VER
#include <stdint.h>
+#endif
class OffscreenView
{
diff --git a/tests/cgalpngtest.cc b/tests/cgalpngtest.cc
index 447df45..fee44e8 100644
--- a/tests/cgalpngtest.cc
+++ b/tests/cgalpngtest.cc
@@ -23,6 +23,10 @@
*
*/
+#ifdef _MSC_VER
+#define EIGEN_DONT_ALIGN
+#endif
+
#include "myqhash.h"
#include "openscad.h"
#include "node.h"
@@ -47,7 +51,9 @@
#include <QDir>
#include <QSet>
#include <QTextStream>
+#ifndef _MSC_VER
#include <getopt.h>
+#endif
#include <iostream>
#include <assert.h>
#include <sstream>
@@ -182,7 +188,7 @@ int main(int argc, char **argv)
try {
csgInfo.glview = new OffscreenView(512,512);
} catch (int error) {
- fprintf(stderr,"Can't create OpenGL OffscreenView. exiting.\n");
+ fprintf(stderr,"Can't create OpenGL OffscreenView. Code: %i. Exiting.\n", error);
exit(1);
}
@@ -211,19 +217,21 @@ int main(int argc, char **argv)
CGALRenderer cgalRenderer(N);
- BoundingBox bbox;
+/* Eigen::AlignedBox<double, 3> bbox;
if (cgalRenderer.polyhedron) {
CGAL::Bbox_3 cgalbbox = cgalRenderer.polyhedron->bbox();
bbox = BoundingBox(Vector3d(cgalbbox.xmin(), cgalbbox.ymin(), cgalbbox.zmin()),
- Vector3d(cgalbbox.xmax(), cgalbbox.ymax(), cgalbbox.zmax()));
+ Vector3d(cgalbbox.xmax(), cgalbbox.ymax(), cgalbbox.zmax()));
}
else if (cgalRenderer.polyset) {
bbox = cgalRenderer.polyset->getBoundingBox();
}
+
Vector3d center = (bbox.min() + bbox.max()) / 2;
double radius = (bbox.max() - bbox.min()).norm() / 2;
-
-
+*/
+ Vector3d center(0,0,0);
+ double radius = 5.0;
Vector3d cameradir(1, 1, -0.5);
Vector3d camerapos = center - radius*2*cameradir;
csgInfo.glview->setCamera(camerapos, center);
diff --git a/tests/cgaltest.cc b/tests/cgaltest.cc
index 8dfb63c..2c83cc8 100644
--- a/tests/cgaltest.cc
+++ b/tests/cgaltest.cc
@@ -42,7 +42,9 @@
#include <QDir>
#include <QSet>
#include <QTextStream>
+#ifndef _MSC_VER
#include <getopt.h>
+#endif
#include <iostream>
#include <assert.h>
#include <sstream>
diff --git a/tests/csgtestcore.cc b/tests/csgtestcore.cc
index 2e28bf6..11ff695 100644
--- a/tests/csgtestcore.cc
+++ b/tests/csgtestcore.cc
@@ -221,7 +221,7 @@ int csgtestcore(int argc, char *argv[], test_type_e test_type)
try {
csgInfo.glview = new OffscreenView(512,512);
} catch (int error) {
- fprintf(stderr,"Can't create OpenGL OffscreenView. exiting.\n");
+ fprintf(stderr,"Can't create OpenGL OffscreenView. Code: %i. Exiting.\n", error);
exit(1);
}
BoundingBox bbox = csgInfo.root_chain->getBoundingBox();
diff --git a/tests/imageutils.cc b/tests/imageutils.cc
index 7358674..e15ba2b 100644
--- a/tests/imageutils.cc
+++ b/tests/imageutils.cc
@@ -1,11 +1,11 @@
#include "imageutils.h"
-#include <strings.h>
+#include <string.h>
void flip_image(const unsigned char *src, unsigned char *dst, size_t pixelsize, size_t width, size_t height)
{
size_t rowBytes = pixelsize * width;
for (size_t i = 0 ; i < height ; i++) {
- bcopy(src + i * rowBytes, dst + (height - i - 1) * rowBytes, rowBytes);
+ memmove(dst + (height - i - 1) * rowBytes, src + i * rowBytes, rowBytes);
}
}
contact: Jan Huwald // Impressum