From ebfed5a51298fc03ad0c39c18b3ca723014d5c85 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 21 Sep 2011 10:27:38 +0200 Subject: Enable incomplete BLAS/Lapack builds when no fortran compiler has been found. Works here with gcc. Hopefully this will work for MSVC too. --- CMakeLists.txt | 16 +++++++--------- blas/CMakeLists.txt | 19 +++++++++++++++---- lapack/CMakeLists.txt | 9 ++++++--- unsupported/test/CMakeLists.txt | 14 +++++--------- 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c37c96e9..ab44f22c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -343,15 +343,13 @@ else() add_subdirectory(test EXCLUDE_FROM_ALL) endif() -if(NOT MSVC) - if(EIGEN_LEAVE_TEST_IN_ALL_TARGET) - add_subdirectory(blas) - add_subdirectory(lapack) - else() - add_subdirectory(blas EXCLUDE_FROM_ALL) - add_subdirectory(lapack EXCLUDE_FROM_ALL) - endif() -endif(NOT MSVC) +if(EIGEN_LEAVE_TEST_IN_ALL_TARGET) + add_subdirectory(blas) + add_subdirectory(lapack) +else() + add_subdirectory(blas EXCLUDE_FROM_ALL) + add_subdirectory(lapack EXCLUDE_FROM_ALL) +endif() add_subdirectory(unsupported) diff --git a/blas/CMakeLists.txt b/blas/CMakeLists.txt index 1811a18a7..03346a936 100644 --- a/blas/CMakeLists.txt +++ b/blas/CMakeLists.txt @@ -13,16 +13,25 @@ if( NOT DEFINED EIGEN_Fortran_COMPILER_WORKS OR EIGEN_Fortran_COMPILER_WORKS) endif() +add_custom_target(blas) + +set(EigenBlas_SRCS single.cpp double.cpp complex_single.cpp complex_double.cpp xerbla.cpp) + if(CMAKE_Fortran_COMPILER_WORKS) -add_custom_target(blas) +message(WARNING " No fortran compiler has been detected, the blas build will be incomplete.") -set(EigenBlas_SRCS single.cpp double.cpp complex_single.cpp complex_double.cpp xerbla.cpp +set(EigenBlas_SRCS ${EigenBlas_SRCS} complexdots.f srotm.f srotmg.f drotm.f drotmg.f - lsame.f chpr2.f ctbsv.f dspmv.f dtbmv.f dtpsv.f ssbmv.f sspr.f stpmv.f zhpr2.f ztbsv.f chbmv.f chpr.f ctpmv.f dspr2.f dtbsv.f sspmv.f stbmv.f stpsv.f zhbmv.f zhpr.f ztpmv.f chpmv.f ctbmv.f ctpsv.f dsbmv.f dspr.f dtpmv.f sspr2.f stbsv.f zhpmv.f ztbmv.f ztpsv.f + lsame.f chpr2.f ctbsv.f dspmv.f dtbmv.f dtpsv.f ssbmv.f sspr.f stpmv.f + zhpr2.f ztbsv.f chbmv.f chpr.f ctpmv.f dspr2.f dtbsv.f sspmv.f stbmv.f stpsv.f + zhbmv.f zhpr.f ztpmv.f chpmv.f ctbmv.f ctpsv.f dsbmv.f dspr.f dtpmv.f sspr2.f + stbsv.f zhpmv.f ztbmv.f ztpsv.f ) +endif(CMAKE_Fortran_COMPILER_WORKS) + add_library(eigen_blas_static ${EigenBlas_SRCS}) add_library(eigen_blas SHARED ${EigenBlas_SRCS}) @@ -38,6 +47,7 @@ install(TARGETS eigen_blas eigen_blas_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) +if(CMAKE_Fortran_COMPILER_WORKS) if(EIGEN_LEAVE_TEST_IN_ALL_TARGET) add_subdirectory(testing) # can't do EXCLUDE_FROM_ALL here, breaks CTest @@ -45,4 +55,5 @@ else() add_subdirectory(testing EXCLUDE_FROM_ALL) endif() -endif(CMAKE_Fortran_COMPILER_WORKS) +endif() + diff --git a/lapack/CMakeLists.txt b/lapack/CMakeLists.txt index 32fd6ad81..ad7c04274 100644 --- a/lapack/CMakeLists.txt +++ b/lapack/CMakeLists.txt @@ -13,15 +13,16 @@ if( NOT DEFINED EIGEN_Fortran_COMPILER_WORKS OR EIGEN_Fortran_COMPILER_WORKS) endif() -if(CMAKE_Fortran_COMPILER_WORKS) add_custom_target(lapack) include_directories(../blas) set(EigenLapack_SRCS -single.cpp double.cpp complex_single.cpp complex_double.cpp +single.cpp double.cpp complex_single.cpp complex_double.cpp ../blas/xerbla.cpp ) +if(CMAKE_Fortran_COMPILER_WORKS) + get_filename_component(eigen_full_path_to_reference_to_reference_lapack "./reference/" ABSOLUTE) if(EXISTS ${eigen_full_path_to_reference_to_reference_lapack}) set(EigenLapack_SRCS ${EigenLapack_SRCS} @@ -357,6 +358,8 @@ reference/ctbcon.f reference/dormhr.f reference/sla_ ) endif() +endif(CMAKE_Fortran_COMPILER_WORKS) + add_library(eigen_lapack_static ${EigenLapack_SRCS}) add_library(eigen_lapack SHARED ${EigenLapack_SRCS}) @@ -373,4 +376,4 @@ install(TARGETS eigen_lapack eigen_lapack_static ARCHIVE DESTINATION lib) # add_subdirectory(testing) -endif(CMAKE_Fortran_COMPILER_WORKS) + diff --git a/unsupported/test/CMakeLists.txt b/unsupported/test/CMakeLists.txt index cd50c48e1..c84cccc52 100644 --- a/unsupported/test/CMakeLists.txt +++ b/unsupported/test/CMakeLists.txt @@ -4,15 +4,11 @@ include_directories(../../test ../../unsupported ../../Eigen set(SPARSE_LIBS "") -# configure blas/lapack -if(CMAKE_Fortran_COMPILER_WORKS) - set(BLAS_FOUND TRUE) - set(LAPACK_FOUND TRUE) - set(BLAS_LIBRARIES eigen_blas_static) - set(LAPACK_LIBRARIES eigen_lapack_static) -else() - # TODO search for default blas/lapack -endif() +# configure blas/lapack (use Eigen's by default) +set(BLAS_FOUND TRUE) +set(LAPACK_FOUND TRUE) +set(BLAS_LIBRARIES eigen_blas) +set(LAPACK_LIBRARIES eigen_lapack) find_package(Cholmod) if(CHOLMOD_FOUND AND BLAS_FOUND AND LAPACK_FOUND) -- cgit v1.2.3