|
1 | 1 | cmake_minimum_required(VERSION 3.2)
|
2 | 2 |
|
3 |
| -project(LAPACK Fortran C) |
| 3 | +project(LAPACK) |
4 | 4 |
|
5 | 5 | set(LAPACK_MAJOR_VERSION 3)
|
6 | 6 | set(LAPACK_MINOR_VERSION 11)
|
@@ -123,90 +123,6 @@ configure_file(
|
123 | 123 | include(PreventInSourceBuilds)
|
124 | 124 | include(PreventInBuildInstalls)
|
125 | 125 |
|
126 |
| -# Check if recursive flag exists |
127 |
| -include(CheckFortranCompilerFlag) |
128 |
| -if(CMAKE_Fortran_COMPILER_ID STREQUAL Flang) |
129 |
| - check_fortran_compiler_flag("-Mrecursive" _MrecursiveFlag) |
130 |
| -elseif(CMAKE_Fortran_COMPILER_ID STREQUAL GNU) |
131 |
| - check_fortran_compiler_flag("-frecursive" _frecursiveFlag) |
132 |
| -elseif(CMAKE_Fortran_COMPILER_ID STREQUAL Intel) |
133 |
| - check_fortran_compiler_flag("-recursive" _recursiveFlag) |
134 |
| -elseif(CMAKE_Fortran_COMPILER_ID STREQUAL XL) |
135 |
| - check_fortran_compiler_flag("-qrecur" _qrecurFlag) |
136 |
| -elseif(CMAKE_Fortran_COMPILER_ID STREQUAL NAG) |
137 |
| - check_fortran_compiler_flag("-recursive" _recursiveFlag) |
138 |
| -else() |
139 |
| - message(WARNING "Fortran local arrays should be allocated on the stack." |
140 |
| - " Please use a compiler which guarantees that feature." |
141 |
| - " See https://github.com/Reference-LAPACK/lapack/pull/188 and references therein.") |
142 |
| -endif() |
143 |
| - |
144 |
| -# Add recursive flag |
145 |
| -if(_MrecursiveFlag) |
146 |
| - string(REGEX MATCH "-Mrecursive" output_test <string> "${CMAKE_Fortran_FLAGS}") |
147 |
| - if(NOT output_test) |
148 |
| - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Mrecursive" |
149 |
| - CACHE STRING "Recursive flag must be set" FORCE) |
150 |
| - endif() |
151 |
| -elseif(_frecursiveFlag) |
152 |
| - string(REGEX MATCH "-frecursive" output_test <string> "${CMAKE_Fortran_FLAGS}") |
153 |
| - if(NOT output_test) |
154 |
| - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -frecursive" |
155 |
| - CACHE STRING "Recursive flag must be set" FORCE) |
156 |
| - endif() |
157 |
| -elseif(_recursiveFlag) |
158 |
| - string(REGEX MATCH "-recursive" output_test <string> "${CMAKE_Fortran_FLAGS}") |
159 |
| - if(NOT output_test) |
160 |
| - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -recursive" |
161 |
| - CACHE STRING "Recursive flag must be set" FORCE) |
162 |
| - endif() |
163 |
| -elseif(_qrecurFlag) |
164 |
| - string(REGEX MATCH "-qrecur" output_test <string> "${CMAKE_Fortran_FLAGS}") |
165 |
| - if(NOT output_test) |
166 |
| - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qrecur" |
167 |
| - CACHE STRING "Recursive flag must be set" FORCE) |
168 |
| - endif() |
169 |
| -endif() |
170 |
| - |
171 |
| -if(UNIX) |
172 |
| - if(CMAKE_Fortran_COMPILER_ID STREQUAL Intel) |
173 |
| - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fp-model strict") |
174 |
| - endif() |
175 |
| - if(CMAKE_Fortran_COMPILER_ID STREQUAL XL) |
176 |
| - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qnosave -qstrict") |
177 |
| - endif() |
178 |
| -# Delete libmtsk in linking sequence for Sun/Oracle Fortran Compiler. |
179 |
| -# This library is not present in the Sun package SolarisStudio12.3-linux-x86-bin |
180 |
| - string(REPLACE \;mtsk\; \; CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES "${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}") |
181 |
| -endif() |
182 |
| - |
183 |
| -if(CMAKE_Fortran_COMPILER_ID STREQUAL Compaq) |
184 |
| - if(WIN32) |
185 |
| - if(CMAKE_GENERATOR STREQUAL "NMake Makefiles") |
186 |
| - get_filename_component(CMAKE_Fortran_COMPILER_CMDNAM ${CMAKE_Fortran_COMPILER} NAME_WE) |
187 |
| - message(STATUS "Using Compaq Fortran compiler with command name ${CMAKE_Fortran_COMPILER_CMDNAM}") |
188 |
| - set(cmd ${CMAKE_Fortran_COMPILER_CMDNAM}) |
189 |
| - string(TOLOWER "${cmd}" cmdlc) |
190 |
| - if(cmdlc STREQUAL "df") |
191 |
| - message(STATUS "Assume the Compaq Visual Fortran Compiler is being used") |
192 |
| - set(CMAKE_Fortran_USE_RESPONSE_FILE_FOR_OBJECTS 1) |
193 |
| - set(CMAKE_Fortran_USE_RESPONSE_FILE_FOR_INCLUDES 1) |
194 |
| - #This is a workaround that is needed to avoid forward-slashes in the |
195 |
| - #filenames listed in response files from incorrectly being interpreted as |
196 |
| - #introducing compiler command options |
197 |
| - if(${BUILD_SHARED_LIBS}) |
198 |
| - message(FATAL_ERROR "Making of shared libraries with CVF has not been tested.") |
199 |
| - endif() |
200 |
| - set(str "NMake version 9 or later should be used. NMake version 6.0 which is\n") |
201 |
| - set(str "${str} included with the CVF distribution fails to build Lapack because\n") |
202 |
| - set(str "${str} the number of source files exceeds the limit for NMake v6.0\n") |
203 |
| - message(STATUS ${str}) |
204 |
| - set(CMAKE_Fortran_LINK_EXECUTABLE "LINK /out:<TARGET> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS>") |
205 |
| - endif() |
206 |
| - endif() |
207 |
| - endif() |
208 |
| -endif() |
209 |
| - |
210 | 126 | # Add option to enable flat namespace for symbol resolution on macOS
|
211 | 127 | if(APPLE)
|
212 | 128 | option(USE_FLAT_NAMESPACE "Use flat namespaces for symbol resolution during build and runtime." OFF)
|
@@ -264,26 +180,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LAPACK_BINARY_DIR}/bin)
|
264 | 180 | set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LAPACK_BINARY_DIR}/lib)
|
265 | 181 | set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LAPACK_BINARY_DIR}/lib)
|
266 | 182 |
|
267 |
| -# -------------------------------------------------- |
268 |
| -# Check for any necessary platform specific compiler flags |
269 |
| -include(CheckLAPACKCompilerFlags) |
270 |
| -CheckLAPACKCompilerFlags() |
271 |
| - |
272 |
| -# -------------------------------------------------- |
273 |
| -# Check second function |
274 |
| - |
275 |
| -include(CheckTimeFunction) |
276 |
| -set(TIME_FUNC NONE) |
277 |
| -CHECK_TIME_FUNCTION(NONE TIME_FUNC) |
278 |
| -CHECK_TIME_FUNCTION(INT_CPU_TIME TIME_FUNC) |
279 |
| -CHECK_TIME_FUNCTION(EXT_ETIME TIME_FUNC) |
280 |
| -CHECK_TIME_FUNCTION(EXT_ETIME_ TIME_FUNC) |
281 |
| -CHECK_TIME_FUNCTION(INT_ETIME TIME_FUNC) |
282 |
| -message(STATUS "--> Will use second_${TIME_FUNC}.f and dsecnd_${TIME_FUNC}.f as timing function.") |
283 |
| - |
284 |
| -set(SECOND_SRC ${LAPACK_SOURCE_DIR}/INSTALL/second_${TIME_FUNC}.f) |
285 |
| -set(DSECOND_SRC ${LAPACK_SOURCE_DIR}/INSTALL/dsecnd_${TIME_FUNC}.f) |
286 |
| - |
287 | 183 | # deprecated LAPACK and LAPACKE routines
|
288 | 184 | option(BUILD_DEPRECATED "Build deprecated routines" OFF)
|
289 | 185 | message(STATUS "Build deprecated routines: ${BUILD_DEPRECATED}")
|
@@ -395,6 +291,27 @@ endif()
|
395 | 291 | if(NOT LATESTLAPACK_FOUND)
|
396 | 292 | message(STATUS "Using supplied NETLIB LAPACK implementation")
|
397 | 293 | set(LAPACK_LIBRARIES ${LAPACKLIB})
|
| 294 | + |
| 295 | + enable_language(Fortran) |
| 296 | + |
| 297 | + # Check for any necessary platform specific compiler flags |
| 298 | + include(CheckLAPACKCompilerFlags) |
| 299 | + CheckLAPACKCompilerFlags() |
| 300 | + |
| 301 | + # Check second function |
| 302 | + include(CheckTimeFunction) |
| 303 | + set(TIME_FUNC NONE) |
| 304 | + CHECK_TIME_FUNCTION(NONE TIME_FUNC) |
| 305 | + CHECK_TIME_FUNCTION(INT_CPU_TIME TIME_FUNC) |
| 306 | + CHECK_TIME_FUNCTION(EXT_ETIME TIME_FUNC) |
| 307 | + CHECK_TIME_FUNCTION(EXT_ETIME_ TIME_FUNC) |
| 308 | + CHECK_TIME_FUNCTION(INT_ETIME TIME_FUNC) |
| 309 | + |
| 310 | + # Set second function |
| 311 | + message(STATUS "--> Will use second_${TIME_FUNC}.f and dsecnd_${TIME_FUNC}.f as timing function.") |
| 312 | + set(SECOND_SRC ${LAPACK_SOURCE_DIR}/INSTALL/second_${TIME_FUNC}.f) |
| 313 | + set(DSECOND_SRC ${LAPACK_SOURCE_DIR}/INSTALL/dsecnd_${TIME_FUNC}.f) |
| 314 | + |
398 | 315 | add_subdirectory(SRC)
|
399 | 316 | else()
|
400 | 317 | set(CMAKE_EXE_LINKER_FLAGS
|
@@ -430,6 +347,7 @@ if(BUILD_TESTING OR LAPACKE_WITH_TMG)
|
430 | 347 | if(LATESTLAPACK_FOUND AND LAPACKE_WITH_TMG)
|
431 | 348 | set(CMAKE_REQUIRED_LIBRARIES ${LAPACK_LIBRARIES})
|
432 | 349 | # Check if dlatms (part of tmg) is found
|
| 350 | + include(CheckFortranFunctionExists) |
433 | 351 | CHECK_FORTRAN_FUNCTION_EXISTS("dlatms" LAPACK_WITH_TMGLIB_FOUND)
|
434 | 352 | unset(CMAKE_REQUIRED_LIBRARIES)
|
435 | 353 | if(NOT LAPACK_WITH_TMGLIB_FOUND)
|
|
0 commit comments