blob: c534a0f77530aa15ef837f39a26ed1d41d4d9007 [file] [log] [blame]
Gael Guennebaud20c11bc2008-12-02 12:59:10 +00001project(Eigen)
Benoit Jacob24fd14d2009-01-12 16:14:13 +00002set(EIGEN_VERSION_NUMBER "2.0-beta6")
Benoit Jacob252e0c42008-08-27 06:43:42 +00003
4#if the svnversion program is absent, this will leave the SVN_REVISION string empty,
5#but won't stop CMake.
Gael Guennebaud20c11bc2008-12-02 12:59:10 +00006execute_process(COMMAND svnversion -n ${CMAKE_SOURCE_DIR}
Benoit Jacob0e5c6402009-01-04 17:32:20 +00007 OUTPUT_VARIABLE EIGEN_SVNVERSION_OUTPUT)
8
9#we only want EIGEN_SVN_REVISION if it is an actual revision number, not a string like "exported"
10string(REGEX MATCH "^[0-9]+.*" EIGEN_SVN_REVISION "${EIGEN_SVNVERSION_OUTPUT}")
Benoit Jacob252e0c42008-08-27 06:43:42 +000011
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000012if(EIGEN_SVN_REVISION)
13 set(EIGEN_VERSION "${EIGEN_VERSION_NUMBER} (SVN revision ${EIGEN_SVN_REVISION})")
14else(EIGEN_SVN_REVISION)
15 set(EIGEN_VERSION "${EIGEN_VERSION_NUMBER}")
16endif(EIGEN_SVN_REVISION)
Benoit Jacob252e0c42008-08-27 06:43:42 +000017
Benoit Jacobbe646192009-01-04 16:19:12 +000018cmake_minimum_required(VERSION 2.6.2)
Gael Guennebaud64169382008-05-31 23:21:49 +000019
Gael Guennebaud2f6815d2008-08-23 17:40:52 +000020set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
Gael Guennebaudda5e6442008-08-23 17:25:54 +000021
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000022option(EIGEN_BUILD_TESTS "Build tests" OFF)
23option(EIGEN_BUILD_DEMOS "Build demos" OFF)
24if(NOT WIN32)
25 option(EIGEN_BUILD_LIB "Build the binary shared library" OFF)
26endif(NOT WIN32)
27option(EIGEN_BUILD_BTL "Build benchmark suite" OFF)
Gael Guennebaud28539e72008-07-09 14:04:48 +000028
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000029if(EIGEN_BUILD_LIB)
30 option(EIGEN_TEST_LIB "Build the unit tests using the library (disable -pedantic)" OFF)
31endif(EIGEN_BUILD_LIB)
Benoit Jacob47b935f2007-05-30 06:57:40 +000032
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000033set(CMAKE_INCLUDE_CURRENT_DIR ON)
Benoit Jacob47b935f2007-05-30 06:57:40 +000034
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000035if(CMAKE_COMPILER_IS_GNUCXX)
36 if(CMAKE_SYSTEM_NAME MATCHES Linux)
Gael Guennebaud6e138d02008-12-17 18:37:04 +000037 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wextra -fno-exceptions -fno-check-new -fno-common -fstrict-aliasing")
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000038 if(NOT EIGEN_TEST_LIB)
39 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
40 endif(NOT EIGEN_TEST_LIB)
Gael Guennebaud93f8d562008-12-18 09:07:36 +000041
42 option(EIGEN_TEST_SSE2 "Enable/Disable SSE2 in tests/examples" OFF)
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000043 if(EIGEN_TEST_SSE2)
44 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2")
45 message("Enabling SSE2 in tests/examples")
46 endif(EIGEN_TEST_SSE2)
Gael Guennebaud93f8d562008-12-18 09:07:36 +000047
48 option(EIGEN_TEST_SSE3 "Enable/Disable SSE3 in tests/examples" OFF)
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000049 if(EIGEN_TEST_SSE3)
50 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse3")
51 message("Enabling SSE3 in tests/examples")
52 endif(EIGEN_TEST_SSE3)
Gael Guennebaud93f8d562008-12-18 09:07:36 +000053
54 option(EIGEN_TEST_SSSE3 "Enable/Disable SSSE3 in tests/examples" OFF)
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000055 if(EIGEN_TEST_SSSE3)
56 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mssse3")
57 message("Enabling SSSE3 in tests/examples")
58 endif(EIGEN_TEST_SSSE3)
Gael Guennebaud93f8d562008-12-18 09:07:36 +000059
60 option(EIGEN_TEST_ALTIVEC "Enable/Disable altivec in tests/examples" OFF)
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000061 if(EIGEN_TEST_ALTIVEC)
62 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maltivec -mabi=altivec")
63 message("Enabling AltiVec in tests/examples")
64 endif(EIGEN_TEST_ALTIVEC)
Gael Guennebaud93f8d562008-12-18 09:07:36 +000065
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000066 endif(CMAKE_SYSTEM_NAME MATCHES Linux)
67endif(CMAKE_COMPILER_IS_GNUCXX)
Benoit Jacob47b935f2007-05-30 06:57:40 +000068
Gael Guennebaud93f8d562008-12-18 09:07:36 +000069if(MSVC)
70 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ")
71
72 option(EIGEN_TEST_SSE2 "Enable/Disable SSE2 in tests/examples" OFF)
73 if(EIGEN_TEST_SSE2)
74 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2")
75 message("Enabling SSE2 in tests/examples")
76 endif(EIGEN_TEST_SSE2)
77endif(MSVC)
78
Gael Guennebaudc4c70662009-01-14 14:24:10 +000079option(EIGEN_TEST_NO_EXPLICIT_VECTORIZATION "Disable explicit vectorization in tests/examples" OFF)
80if(EIGEN_TEST_NO_EXPLICIT_VECTORIZATION)
Gael Guennebaud4f33fbf2009-01-15 08:26:40 +000081 add_definitions(-DEIGEN_DONT_VECTORIZE=1)
Gael Guennebaudc4c70662009-01-14 14:24:10 +000082 message("Disabling vectorization in tests/examples")
83endif(EIGEN_TEST_NO_EXPLICIT_VECTORIZATION)
84
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000085include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
Benoit Jacob47b935f2007-05-30 06:57:40 +000086
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000087add_subdirectory(Eigen)
Gael Guennebaud28539e72008-07-09 14:04:48 +000088
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000089if(EIGEN_BUILD_TESTS)
Gael Guennebaudaf27fb72009-01-08 11:53:21 +000090 include(CTest)
Gael Guennebaud20c11bc2008-12-02 12:59:10 +000091 add_subdirectory(test)
92endif(EIGEN_BUILD_TESTS)
93
94add_subdirectory(doc)
95
96if(EIGEN_BUILD_DEMOS)
97 add_subdirectory(demos)
98endif(EIGEN_BUILD_DEMOS)
99
100if(EIGEN_BUILD_BTL)
101 add_subdirectory(bench/btl)
102endif(EIGEN_BUILD_BTL)