diff --git a/CMakeLists.txt b/CMakeLists.txt index 09558963f..c3db80e33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,7 @@ project(eigen2) +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") + OPTION(BUILD_TESTS "Build tests" OFF) OPTION(BUILD_EXAMPLES "Build examples" OFF) diff --git a/cmake/CheckComplex.cmake b/cmake/CheckComplex.cmake new file mode 100644 index 000000000..6b667f486 --- /dev/null +++ b/cmake/CheckComplex.cmake @@ -0,0 +1,22 @@ +INCLUDE(CheckCXXSourceCompiles) + +MACRO (CHECK_COMPLEX _RESULT) + +SET(_CHECK_COMPLEX_SOURCE_CODE " + +#include + +using namespace std; + +int main(int argc, char *argv[]) +{ + complex x(1.0, 1.0); + complex y(1.0f, 1.0f); + return 0; +} + +") + +CHECK_CXX_SOURCE_COMPILES("${_CHECK_COMPLEX_SOURCE_CODE}" ${_RESULT}) + +ENDMACRO (CHECK_COMPLEX) diff --git a/cmake/CheckComplexMath1.cmake b/cmake/CheckComplexMath1.cmake new file mode 100644 index 000000000..52024288d --- /dev/null +++ b/cmake/CheckComplexMath1.cmake @@ -0,0 +1,23 @@ +INCLUDE(CheckCXXSourceCompiles) + +MACRO (CHECK_COMPLEX_MATH1 _RESULT) + +SET(_CHECK_COMPLEX_MATH1_SOURCE_CODE " + +#include + +using namespace std; + +int main(int argc, char *argv[]) +{ + complex x(1.0, 1.0), y(1.0, 1.0); + cos(x); cosh(x); exp(x); log(x); pow(x,1); pow(x,double(2.0)); + pow(x, y); pow(double(2.0), x); sin(x); sinh(x); sqrt(x); tan(x); tanh(x); + return 0; +} + +") + +CHECK_CXX_SOURCE_COMPILES("${_CHECK_COMPLEX_MATH1_SOURCE_CODE}" ${_RESULT}) + +ENDMACRO (CHECK_COMPLEX_MATH1) diff --git a/cmake/CheckComplexMath2.cmake b/cmake/CheckComplexMath2.cmake new file mode 100644 index 000000000..68ed74417 --- /dev/null +++ b/cmake/CheckComplexMath2.cmake @@ -0,0 +1,22 @@ +INCLUDE(CheckCXXSourceCompiles) + +MACRO (CHECK_COMPLEX_MATH2 _RESULT) + +SET(_CHECK_COMPLEX_MATH2_SOURCE_CODE " + +#include + +using namespace std; + +int main(int argc, char *argv[]) +{ + complex x(1.0, 1.0), y(1.0, 1.0); + acos(x); asin(x); atan(x); atan2(x,y); atan2(x, double(3.0)); + atan2(double(3.0), x); log10(x); return 0; +} + +") + +CHECK_CXX_SOURCE_COMPILES("${_CHECK_COMPLEX_MATH2_SOURCE_CODE}" ${_RESULT}) + +ENDMACRO (CHECK_COMPLEX_MATH2) diff --git a/cmake/CheckIeeeMath.cmake b/cmake/CheckIeeeMath.cmake new file mode 100644 index 000000000..13bc6ac61 --- /dev/null +++ b/cmake/CheckIeeeMath.cmake @@ -0,0 +1,30 @@ +INCLUDE(CheckCXXSourceCompiles) + +MACRO (CHECK_IEEE_MATH _RESULT) + +SET(_CHECK_IEEE_MATH_SOURCE_CODE " + +#include + +int main(int argc, char *argv[]) +{ + double x = 1.0; double y = 1.0; + acosh(x); asinh(x); atanh(x); + expm1(x); + erf(x); erfc(x); + // finite(x); + isnan(x); + j0(x); j1(x); + lgamma(x); + logb(x); log1p(x); + rint(x); + // trunc(x); + y0(x); y1(x); + return 0; +} + +") + +CHECK_CXX_SOURCE_COMPILES("${_CHECK_IEEE_MATH_SOURCE_CODE}" ${_RESULT}) + +ENDMACRO (CHECK_IEEE_MATH) diff --git a/cmake/CheckSysvMath.cmake b/cmake/CheckSysvMath.cmake new file mode 100644 index 000000000..d4542bc59 --- /dev/null +++ b/cmake/CheckSysvMath.cmake @@ -0,0 +1,34 @@ +INCLUDE(CheckCXXSourceCompiles) + +MACRO (CHECK_SYSV_MATH _RESULT) + +SET(_CHECK_SYSV_MATH_SOURCE_CODE " + +#include + +int main(int argc, char *argv[]) +{ + double x = 1.0; double y = 1.0; + _class(x); + ilogb(x); + itrunc(x); + nearest(x); + rsqrt(x); + uitrunc(x); + + copysign(x,y); + drem(x,y); + fmod(x,y); + hypot(x,y); + nextafter(x,y); + remainder(x,y); + scalb(x,y); + unordered(x,y); + return 0; +} + +") + +CHECK_CXX_SOURCE_COMPILES("${_CHECK_SYSV_MATH_SOURCE_CODE}" ${_RESULT}) + +ENDMACRO (CHECK_SYSV_MATH) diff --git a/tvmet-1.7.1/include/tvmet/CMakeLists.txt b/tvmet-1.7.1/include/tvmet/CMakeLists.txt index 46c251ac4..f97573531 100644 --- a/tvmet-1.7.1/include/tvmet/CMakeLists.txt +++ b/tvmet-1.7.1/include/tvmet/CMakeLists.txt @@ -1,4 +1,9 @@ INCLUDE (CheckIncludeFiles) +INCLUDE (CheckComplex) +INCLUDE (CheckComplexMath1) +INCLUDE (CheckComplexMath2) +INCLUDE (CheckIeeeMath) +INCLUDE (CheckSysvMath) # the following are directories where stuff will be installed to set(INCLUDE_INSTALL_DIR @@ -7,14 +12,20 @@ set(INCLUDE_INSTALL_DIR "The subdirectory to the header prefix" FORCE) -FILE(GLOB gmm_header_SRCS "*.h") +FILE(GLOB tvmet_header_SRCS "*.h") CHECK_INCLUDE_FILES (dlfcn.h TVMET_HAVE_DLFCN_H) +CHECK_COMPLEX (TVMET_HAVE_COMPLEX) +CHECK_COMPLEX_MATH1 (TVMET_HAVE_COMPLEX_MATH1) +CHECK_COMPLEX_MATH2 (TVMET_HAVE_COMPLEX_MATH2) +CHECK_IEEE_MATH (TVMET_HAVE_IEEE_MATH) +CHECK_SYSV_MATH (TVMET_HAVE_SYSV_MATH) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${INCLUDE_INSTALL_DIR}/config.h) install(FILES - ${gmm_header_SRCS} + ${tvmet_header_SRCS} DESTINATION ${INCLUDE_INSTALL_DIR} )