1# Detect eigen3
2#
3# Priority
4# 0. EIGENDIR if set
5# 1. OPENSCAD_LIBRARIES eigen3
6# 3. system's standard include paths for eigen3
7
8# read environment variables
9OPENSCAD_LIBRARIES_DIR = $$(OPENSCAD_LIBRARIES)
10EIGEN_DIR = $$(EIGENDIR)
11
12# Optionally specify location of Eigen3 using the
13# OPENSCAD_LIBRARIES env. variable
14!isEmpty(OPENSCAD_LIBRARIES_DIR) {
15  isEmpty(EIGEN_INCLUDEPATH) {
16    exists($$OPENSCAD_LIBRARIES_DIR/include/eigen3) {
17      EIGEN_INCLUDEPATH = $$OPENSCAD_LIBRARIES_DIR/include/eigen3
18    }
19  }
20}
21
22!isEmpty(EIGEN_DIR) {
23  EIGEN_INCLUDEPATH = $$EIGEN_DIR
24  message("User set EIGEN location: $$EIGEN_INCLUDEPATH")
25}
26
27isEmpty(EIGEN_INCLUDEPATH) {
28  linux*|hurd*|unix: EIGEN_INCLUDEPATH = /usr/include/eigen3
29  freebsd-g++: EIGEN_INCLUDEPATH = /usr/local/include/eigen3
30  netbsd*: EIGEN_INCLUDEPATH = /usr/pkg/include/eigen3
31  macx: EIGEN_INCLUDEPATH = /opt/local/include/eigen3
32}
33
34!exists($$EIGEN_INCLUDEPATH/Eigen/Core) {
35  EIGEN_CFLAGS = $$system("$$PKG_CONFIG --cflags eigen3")
36  EIGEN_INCLUDEPATH = $$replace(EIGEN_CFLAGS,"-I","")
37}
38
39# disable Eigen SIMD optimizations for platforms where it breaks compilation
40!macx {
41  !freebsd-g++ {
42    QMAKE_CXXFLAGS += -DEIGEN_DONT_ALIGN
43  }
44}
45
46# EIGEN being under 'include/eigen3' needs special prepending
47has_qt5 {
48  QMAKE_INCDIR = $$EIGEN_INCLUDEPATH $$QMAKE_INCDIR
49} else {
50  QMAKE_INCDIR_QT = $$EIGEN_INCLUDEPATH $$QMAKE_INCDIR_QT
51}
52
53# qmakespecs on netbsd prepend system includes, we need eigen first.
54netbsd* {
55  QMAKE_CXXFLAGS = -I$$EIGEN_INCLUDEPATH $$QMAKE_CXXFLAGS
56}
57
58