Use -O2 not -O3 on MinGW to workaround issue with Eigen.
- MinGW produces code that segfaults when performing matrix
multiplications in Eigen when compiled with -O3 (see below), as such
force the use of -O2 which works.
- http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556
Change-Id: I420e965d5033944374a5cc93490546c25e46bce5
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9b7c29a..2896788 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -660,6 +660,17 @@
SET (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CERES_CXX_FLAGS}")
+IF (MINGW)
+ # MinGW produces code that segfaults when performing matrix multiplications
+ # in Eigen when compiled with -O3 (see [1]), as such force the use of -O2
+ # which works.
+ #
+ # [1] http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556
+ MESSAGE("-- MinGW detected, forcing use of -O2 not -O3 in Release for Eigen.")
+ STRING(REPLACE "-O3" "-O2" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
+ UPDATE_CACHE_VARIABLE(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
+ENDIF (MINGW)
+
# After the tweaks for the compile settings, disable some warnings on MSVC.
IF (MSVC)
# Disable signed/unsigned int conversion warnings.