~hrg/hrg-packaging/openhrp3

« back to all changes in this revision

Viewing changes to cmake_modules/FindLapack.cmake

  • Committer: nakaoka
  • Date: 2008-07-06 15:26:51 UTC
  • Revision ID: git-v1:fbb3ce756bbcedb021fed5d474b58ef092ea8b42
コンパイルに cmake を使用するようにし、MakefileをCMakeLists.txt で置き換えた。

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
# @author Shin'ichiro Nakaoka
 
3
 
 
4
include(CheckFunctionExists)
 
5
 
 
6
if(NOT LAPACK_LIBRARY_DIRS)
 
7
 
 
8
  find_library(
 
9
    LAPACK_LIBRARY lapack
 
10
    PATHS /usr/lib/atlas
 
11
    NO_DEFAULT_PATH)
 
12
 
 
13
  if(NOT LAPACK_LIBRARY)
 
14
    find_library(LAPACK_LIBRARY lapack)
 
15
  endif()
 
16
 
 
17
  if(LAPACK_LIBRARY)
 
18
    get_filename_component(LAPACK_LIBRARY_DIRS ${LAPACK_LIBRARY} PATH)
 
19
    message(STATUS "detected ${LAPACK_LIBRARY}")
 
20
  endif()
 
21
 
 
22
endif()
 
23
 
 
24
if(NOT LAPACK_LIBRARIES AND LAPACK_LIBRARY_DIRS)
 
25
 
 
26
  find_library(
 
27
    BLAS_LIBRARY cblas
 
28
    PATHS ${LAPACK_LIBRARY_DIRS}
 
29
    NO_DEFAULT_PATH)
 
30
 
 
31
  if(NOT BLAS_LIBRARY)
 
32
    find_library(
 
33
      BLAS_LIBRARY blas
 
34
      PATHS ${LAPACK_LIBRARY_DIRS}
 
35
      NO_DEFAULT_PATH)
 
36
  endif()
 
37
 
 
38
  find_library(
 
39
    LAPACK_LIBRARY lapack
 
40
    PATH ${LAPACK_LIBRARY_DIRS}
 
41
    NO_DEFAULT_PATH)
 
42
 
 
43
  if(BLAS_LIBRARY AND LAPACK_LIBRARY)
 
44
    list(APPEND LAPACK_LIBRARIES ${BLAS_LIBRARY} ${LAPACK_LIBRARY})
 
45
  endif()
 
46
 
 
47
  find_library(
 
48
    G2C_LIBRARY g2c
 
49
    PATH ${LAPACK_LIBRARY_DIRS}
 
50
    NO_DEFAULT_PATH)
 
51
 
 
52
  if(G2C_LIBRARY)
 
53
    list(APPEND LAPACK_LIBRARIES ${G2C_LIBRARY})
 
54
  endif()
 
55
 
 
56
endif()
 
57
 
 
58
 
 
59
if(NOT LAPACK_INCLUDE_DIRS)
 
60
 
 
61
  if(BLAS_LIBRARY)
 
62
    get_filename_component(BLAS_LIBRARY_DIR ${BLAS_LIBRARY} PATH)
 
63
    string(REGEX REPLACE "/lib/?" "" BLAS_DIR ${BLAS_LIBRARY_DIR})
 
64
    find_file(CBLAS_H_FILE cblas.h
 
65
      PATHS ${BLAS_DIR}/include /usr/local/include /usr/include)
 
66
    if(CBLAS_H_FILE)
 
67
      get_filename_component(BLAS_INCLUDE_DIR ${CBLAS_H_FILE} PATH)
 
68
      list(APPEND LAPACK_INCLUDE_DIRS ${BLAS_INCLUDE_DIR})
 
69
    endif()
 
70
  endif()
 
71
 
 
72
  if(LAPACK_LIBRARY)
 
73
    get_filename_component(LAPACK_LIBRARY_DIR ${LAPACK_LIBRARY} PATH)
 
74
    string(REGEX REPLACE "/lib/?" "" LAPACK_DIR ${LAPACK_LIBRARY_DIR})
 
75
    find_file(CLAPACK_H_FILE clapack.h
 
76
      PATHS ${LAPACK_DIR}/include /usr/local/include /usr/include)
 
77
    if(CLAPACK_H_FILE)
 
78
      get_filename_component(LAPACK_INCLUDE_DIR ${CLAPACK_H_FILE} PATH)
 
79
      list(APPEND LAPACK_INCLUDE_DIRS ${LAPACK_INCLUDE_DIR})
 
80
    endif()
 
81
  endif()
 
82
 
 
83
endif()
 
84
 
 
85
 
 
86
if(LAPACK_LIBRARIES)
 
87
  set(LAPACK_FOUND TRUE)
 
88
 
 
89
  set(CMAKE_REQUIRED_INCLUDES ${LAPACK_INCLUDE_DIRS})
 
90
  set(CMAKE_REQUIRED_LIBRARIES ${LAPACK_LIBRARIES})
 
91
 
 
92
  CHECK_FUNCTION_EXISTS(clapack_dgesv clapack_dgesv_found)
 
93
  if(clapack_dgesv_found)
 
94
    set(USE_CLAPACK_INTERFACE TRUE)
 
95
    message(STATUS "use C interface for Lapack")
 
96
  endif()
 
97
 
 
98
  CHECK_FUNCTION_EXISTS(cblas_ddot cblas_ddot_found)
 
99
  if(cblas_ddot_found)
 
100
    set(USE_CBLAS_INTERFACE TRUE)
 
101
    message(STATUS "use c interaface for Blas")
 
102
  endif()
 
103
endif()
 
104
 
 
105
 
 
106
set(LAPACK_INCLUDE_DIRS ${LAPACK_INCLUDE_DIRS} CACHE PATH "Directories containing Lapack header files")
 
107
set(LAPACK_LIBRARY_DIRS ${LAPACK_LIBRARY_DIRS} CACHE PATH "Directories containing Lapack library files")
 
108
set(LAPACK_LIBRARIES ${LAPACK_LIBRARIES} CACHE PATH "Lapack library files to link")
 
109
 
 
110
 
 
111
if(LAPACK_FOUND)
 
112
  if(NOT Lapack_FIND_QUIETLY)
 
113
    message(STATUS "Found ${LAPACK_LIBRARIES} in ${LAPACK_LIBRARY_DIRS}")
 
114
  endif()
 
115
else()
 
116
  if(NOT Lapack_FIND_QUIETLY)
 
117
    if(Lapack_FIND_REQUIRED)
 
118
      message(FATAL_ERROR "Blas and Lapack required, please specify it's location.")
 
119
    endif()
 
120
  endif()
 
121
endif()