|
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