summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordon bright <hugh.m.bright@gmail.com>2012-08-19 12:58:30 (GMT)
committerdon bright <hugh.m.bright@gmail.com>2012-08-19 12:58:30 (GMT)
commita9045315baac2e8bd24428668cfa88f116984af7 (patch)
treea59e5c7672b50e074a58feda7ee7a2310725a0c1
parent702525f69c0c9b7dbeb9f07efd4d9acaf9ead65d (diff)
rewrite Eigen detection in CMakelists. cleanup files for pull request.
-rw-r--r--eigen.pri4
-rwxr-xr-xscripts/linux-build-dependencies.sh3
-rw-r--r--src/dxfdata.cc1
-rw-r--r--src/dxfdim.cc2
-rw-r--r--src/dxftess-cgal.cc6
-rw-r--r--tests/CMakeLists.txt92
6 files changed, 49 insertions, 59 deletions
diff --git a/eigen.pri b/eigen.pri
index 4d9ab90..6f11a53 100644
--- a/eigen.pri
+++ b/eigen.pri
@@ -22,12 +22,12 @@ CONFIG(mingw-cross-env) {
# Optionally specify location of Eigen3 using the
# OPENSCAD_LIBRARIES env. variable
!isEmpty(OPENSCAD_LIBRARIES_DIR) {
- isEmpty(EIGEN_INCLUDEPATH) {
+ isEmpty(EIGEN_INCLUDEPATH) {
exists($$OPENSCAD_LIBRARIES_DIR/include/eigen3) {
EIGEN_INCLUDEPATH = $$OPENSCAD_LIBRARIES_DIR/include/eigen3
}
}
- isEmpty(EIGEN_INCLUDEPATH) {
+ isEmpty(EIGEN_INCLUDEPATH) {
exists($$OPENSCAD_LIBRARIES_DIR/include/eigen2) {
EIGEN_INCLUDEPATH = $$OPENSCAD_LIBRARIES_DIR/include/eigen2
}
diff --git a/scripts/linux-build-dependencies.sh b/scripts/linux-build-dependencies.sh
index a5e2bcc..be678d3 100755
--- a/scripts/linux-build-dependencies.sh
+++ b/scripts/linux-build-dependencies.sh
@@ -268,6 +268,7 @@ build_eigen()
make install
}
+
OPENSCADDIR=$PWD
if [ ! -f $OPENSCADDIR/openscad.pro ]; then
echo "Must be run from the OpenSCAD source root directory"
@@ -329,7 +330,7 @@ fi
build_eigen 3.1.1
build_gmp 5.0.5
build_mpfr 3.1.1
-build_boost 1.50.0
+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
diff --git a/src/dxfdata.cc b/src/dxfdata.cc
index 0e18dd0..4258a4c 100644
--- a/src/dxfdata.cc
+++ b/src/dxfdata.cc
@@ -39,6 +39,7 @@
#include <boost/algorithm/string.hpp>
#include <algorithm>
#include <sstream>
+#include <map>
#include <QDir>
#include "value.h"
diff --git a/src/dxfdim.cc b/src/dxfdim.cc
index 872637b..1ed37fa 100644
--- a/src/dxfdim.cc
+++ b/src/dxfdim.cc
@@ -183,7 +183,9 @@ Value builtin_dxf_cross(const Context *ctx, const std::vector<std::string> &argn
return dxf_cross_cache[key] = Value(ret);
}
}
+
PRINTB("WARNING: Can't find cross in '%s', layer '%s'!", filename % layername);
+
return Value();
}
diff --git a/src/dxftess-cgal.cc b/src/dxftess-cgal.cc
index fb5bf50..f221e3a 100644
--- a/src/dxftess-cgal.cc
+++ b/src/dxftess-cgal.cc
@@ -107,10 +107,8 @@ void dxf_tesselate(PolySet *ps, DxfData &dxf, double rot, bool up, bool /* do_tr
std::vector<struct triangle> tri;
Grid2d<point_info_t> point_info(GRID_FINE);
-// boost::unordered_map<edge_t,int> edge_to_triangle;
-// boost::unordered_map<edge_t,int> edge_to_path;
- std::map<edge_t,int> edge_to_triangle;
- std::map<edge_t,int> edge_to_path;
+ boost::unordered_map<edge_t,int> edge_to_triangle;
+ boost::unordered_map<edge_t,int> edge_to_path;
CGAL::Failure_behaviour old_behaviour = CGAL::set_error_behaviour(CGAL::THROW_EXCEPTION);
try {
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 4942259..63e265f 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -178,74 +178,62 @@ if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
endif()
endif()
-# First try to find Eigen3. If it's not there, fallback to Eigen2
+# Priority
+# 3. EIGEN3DIR / EIGEN2DIR if set
+# 1. OPENSCAD_LIBRARIES eigen3
+# 2. OPENSCAD_LIBRARIES eigen2
+# 4. system's standard include paths for eigen3
+# 5. system's standard include paths for eigen2
-# Eigen3
+set(EIGEN3_DIR "$ENV{EIGEN3DIR}")
+set(EIGEN2_DIR "$ENV{EIGEN2DIR}")
+set(OPENSCAD_LIBDIR "$ENV{OPENSCAD_LIBRARIES}")
-if (NOT $ENV{EIGEN3DIR} STREQUAL "")
- set(EIGEN3_DIR "$ENV{EIGEN3DIR}")
-elseif (NOT $ENV{OPENSCAD_LIBRARIES} STREQUAL "")
- set(EIGEN3_DIR "$ENV{OPENSCAD_LIBRARIES}")
+if (EIGEN3_DIR)
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS "${EIGEN3_DIR}/include/eigen3" "${EIGEN3_DIR}")
+endif()
+if (EIGEN2_DIR)
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS "${EIGEN2_DIR}/include/eigen2" "${EIGEN2_DIR}")
endif()
-if (NOT EIGEN3_INCLUDE_DIR)
- if (EIGEN3_DIR)
- set(EIGEN3_FIND_HINTS "${EIGEN3_DIR}/include/eigen3")
- endif()
+if (NOT EIGEN_INCLUDE_DIR)
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS ${OPENSCAD_LIBDIR}/include/eigen3)
+endif()
+if (NOT EIGEN_INCLUDE_DIR)
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS ${OPENSCAD_LIBDIR}/include/eigen2)
+endif()
+
+if (NOT EIGEN_INCLUDE_DIR)
if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
- set(EIGEN3_FIND_PATHS /usr/local/include/eigen3)
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS /usr/local/include/eigen3)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
- set(EIGEN3_FIND_PATHS /usr/pkg/include/eigen3)
- else()
- set(EIGEN3_FIND_PATHS /opt/local/include/eigen3 /usr/include/eigen3)
- endif()
- find_path(EIGEN3_INCLUDE_DIR
- Eigen/Core
- HINTS ${EIGEN3_FIND_HINTS}
- PATHS ${EIGEN3_FIND_PATHS})
- if (NOT EIGEN3_INCLUDE_DIR)
- message(STATUS "Eigen3 not found, will attempt to find Eigen2")
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS /usr/pkg/include/eigen3)
+ elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS /opt/local/include/eigen3)
else()
- message(STATUS "Eigen3 found in " ${EIGEN3_INCLUDE_DIR})
- inclusion(EIGEN3_DIR EIGEN3_INCLUDE_DIR)
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS /usr/include/eigen3)
endif()
endif()
-
-# Eigen2
-
-if (NOT EIGEN3_INCLUDE_DIR)
-
-if (NOT $ENV{EIGEN2DIR} STREQUAL "")
- set(EIGEN2_DIR "$ENV{EIGEN2DIR}")
-elseif (NOT $ENV{OPENSCAD_LIBRARIES} STREQUAL "")
- set(EIGEN2_DIR "$ENV{OPENSCAD_LIBRARIES}")
-endif()
-
-if (NOT EIGEN2_INCLUDE_DIR)
- if (EIGEN2_DIR)
- set(EIGEN2_FIND_HINTS "${EIGEN2_DIR}/include/eigen2")
- endif()
+if (NOT EIGEN_INCLUDE_DIR)
if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
- set(EIGEN2_FIND_PATHS /usr/local/include/eigen2)
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS /usr/local/include/eigen2)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
- set(EIGEN2_FIND_PATHS /usr/pkg/include/eigen2)
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS /usr/pkg/include/eigen2)
+ elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS /opt/local/include/eigen2)
else()
- set(EIGEN2_FIND_PATHS /opt/local/include/eigen2 /usr/include/eigen2)
- endif()
- find_path(EIGEN2_INCLUDE_DIR
- Eigen/Core
- HINTS ${EIGEN2_FIND_HINTS}
- PATHS ${EIGEN2_FIND_PATHS})
- if (NOT EIGEN2_INCLUDE_DIR)
- message(FATAL_ERROR "Eigen2 not found")
- else()
- message(STATUS "Eigen2 found in " ${EIGEN2_INCLUDE_DIR})
+ find_path(EIGEN_INCLUDE_DIR Eigen/Core HINTS /usr/include/eigen2)
endif()
endif()
-inclusion(EIGEN2_DIR EIGEN2_INCLUDE_DIR)
-endif() # if (NOT EIGEN3_INCLUDE_DIR)
+if (NOT EIGEN_INCLUDE_DIR)
+ message(STATUS "Eigen not found")
+else()
+ message(STATUS "Eigen found in " ${EIGEN_INCLUDE_DIR})
+ inclusion(EIGEN_DIR EIGEN_INCLUDE_DIR)
+endif()
+
# OpenCSG
if (NOT $ENV{OPENCSGDIR} STREQUAL "")
contact: Jan Huwald // Impressum