From 7ab1c98142abdbe47e9b4e209033af2cc417bed5 Mon Sep 17 00:00:00 2001 From: reyoung Date: Thu, 30 Mar 2017 10:54:55 +0800 Subject: [PATCH 1/4] Refine openblas find package. --- cmake/external/openblas.cmake | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cmake/external/openblas.cmake b/cmake/external/openblas.cmake index 00dde9a9fd..d7fd098312 100644 --- a/cmake/external/openblas.cmake +++ b/cmake/external/openblas.cmake @@ -29,7 +29,12 @@ IF(NOT ${CBLAS_FOUND}) IF(CMAKE_COMPILER_IS_GNUCC) ENABLE_LANGUAGE(Fortran) - LIST(APPEND CBLAS_LIBRARIES gfortran pthread) + find_library(GFORTRAN_LIBRARY NAMES gfortran) + if (NOT GFORTRAN_LIBRARY) + message(FATAL_ERROR "Cannot found gfortran library which it is used by openblas") + endif() + find_package(Threads REQUIRED) + LIST(APPEND CBLAS_LIBRARIES ${GFORTRAN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) ENDIF(CMAKE_COMPILER_IS_GNUCC) IF(NOT CMAKE_Fortran_COMPILER) From f19ee89057c7c2171a6153d78df837b8d51c48ea Mon Sep 17 00:00:00 2001 From: reyoung Date: Thu, 30 Mar 2017 13:25:33 +0800 Subject: [PATCH 2/4] Add correct fortran lib search path --- cmake/external/openblas.cmake | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cmake/external/openblas.cmake b/cmake/external/openblas.cmake index d7fd098312..58d70a27fd 100644 --- a/cmake/external/openblas.cmake +++ b/cmake/external/openblas.cmake @@ -29,7 +29,14 @@ IF(NOT ${CBLAS_FOUND}) IF(CMAKE_COMPILER_IS_GNUCC) ENABLE_LANGUAGE(Fortran) - find_library(GFORTRAN_LIBRARY NAMES gfortran) + string(REGEX MATCHALL "[0-9]+" Fortran_VERSION ${CMAKE_Fortran_COMPILER_VERSION}) + list(GET Fortran_VERSION 0 Fortran_MAJOR) + list(GET Fortran_VERSION 1 Fortran_MINOR) + find_library(GFORTRAN_LIBRARY NAMES gfortran PATHS + /lib + /usr/lib + /usr/lib/gcc/x86_64-linux-gnu/${Fortran_MAJOR}.${Fortran_MINOR}/ + /usr/lib/gcc/x86_64-linux-gnu/${Fortran_MAJOR}/) if (NOT GFORTRAN_LIBRARY) message(FATAL_ERROR "Cannot found gfortran library which it is used by openblas") endif() From d7303226f2df7ed6b1d2578ecaa94216a34c25ac Mon Sep 17 00:00:00 2001 From: reyoung Date: Thu, 30 Mar 2017 13:37:50 +0800 Subject: [PATCH 3/4] Adapt old cmake --- cmake/external/openblas.cmake | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmake/external/openblas.cmake b/cmake/external/openblas.cmake index 58d70a27fd..62ad2bbc23 100644 --- a/cmake/external/openblas.cmake +++ b/cmake/external/openblas.cmake @@ -29,6 +29,10 @@ IF(NOT ${CBLAS_FOUND}) IF(CMAKE_COMPILER_IS_GNUCC) ENABLE_LANGUAGE(Fortran) + if (NOT CMAKE_Fortran_COMPILER_VERSION) + # cmake version is too old, we cannot get fortran version, using CXX version instead. + set(CMAKE_Fortran_COMPILER_VERSION ${CMAKE_CXX_COMPILER_VERSION}) + endif() string(REGEX MATCHALL "[0-9]+" Fortran_VERSION ${CMAKE_Fortran_COMPILER_VERSION}) list(GET Fortran_VERSION 0 Fortran_MAJOR) list(GET Fortran_VERSION 1 Fortran_MINOR) From 61bc9e3e5683883047ebda0bc87d576ded75782f Mon Sep 17 00:00:00 2001 From: reyoung Date: Thu, 30 Mar 2017 13:49:15 +0800 Subject: [PATCH 4/4] Get Fortran version correctly --- cmake/external/openblas.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/external/openblas.cmake b/cmake/external/openblas.cmake index 62ad2bbc23..a11d18617b 100644 --- a/cmake/external/openblas.cmake +++ b/cmake/external/openblas.cmake @@ -30,8 +30,9 @@ IF(NOT ${CBLAS_FOUND}) IF(CMAKE_COMPILER_IS_GNUCC) ENABLE_LANGUAGE(Fortran) if (NOT CMAKE_Fortran_COMPILER_VERSION) - # cmake version is too old, we cannot get fortran version, using CXX version instead. - set(CMAKE_Fortran_COMPILER_VERSION ${CMAKE_CXX_COMPILER_VERSION}) + # cmake < 3.4 cannot get CMAKE_Fortran_COMPILER_VERSION directly. + execute_process(COMMAND ${CMAKE_Fortran_COMPILER} -dumpversion + OUTPUT_VARIABLE CMAKE_Fortran_COMPILER_VERSION) endif() string(REGEX MATCHALL "[0-9]+" Fortran_VERSION ${CMAKE_Fortran_COMPILER_VERSION}) list(GET Fortran_VERSION 0 Fortran_MAJOR)