1*bf2c3715SXin Li### 2*bf2c3715SXin Li# 3*bf2c3715SXin Li# @copyright (c) 2009-2014 The University of Tennessee and The University 4*bf2c3715SXin Li# of Tennessee Research Foundation. 5*bf2c3715SXin Li# All rights reserved. 6*bf2c3715SXin Li# @copyright (c) 2012-2016 Inria. All rights reserved. 7*bf2c3715SXin Li# @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved. 8*bf2c3715SXin Li# 9*bf2c3715SXin Li### 10*bf2c3715SXin Li# 11*bf2c3715SXin Li# - Find BLAS EXTENDED for MORSE projects: find include dirs and libraries 12*bf2c3715SXin Li# 13*bf2c3715SXin Li# This module allows to find BLAS libraries by calling the official FindBLAS module 14*bf2c3715SXin Li# and handles the creation of different library lists whether the user wishes to link 15*bf2c3715SXin Li# with a sequential BLAS or a multihreaded (BLAS_SEQ_LIBRARIES and BLAS_PAR_LIBRARIES). 16*bf2c3715SXin Li# BLAS is detected with a FindBLAS call then if the BLAS vendor is Intel10_64lp, ACML 17*bf2c3715SXin Li# or IBMESSLMT then the module attempts to find the corresponding multithreaded libraries. 18*bf2c3715SXin Li# 19*bf2c3715SXin Li# The following variables have been added to manage links with sequential or multithreaded 20*bf2c3715SXin Li# versions: 21*bf2c3715SXin Li# BLAS_INCLUDE_DIRS - BLAS include directories 22*bf2c3715SXin Li# BLAS_LIBRARY_DIRS - Link directories for BLAS libraries 23*bf2c3715SXin Li# BLAS_SEQ_LIBRARIES - BLAS component libraries to be linked (sequential) 24*bf2c3715SXin Li# BLAS_PAR_LIBRARIES - BLAS component libraries to be linked (multithreaded) 25*bf2c3715SXin Li 26*bf2c3715SXin Li#============================================================================= 27*bf2c3715SXin Li# Copyright 2012-2013 Inria 28*bf2c3715SXin Li# Copyright 2012-2013 Emmanuel Agullo 29*bf2c3715SXin Li# Copyright 2012-2013 Mathieu Faverge 30*bf2c3715SXin Li# Copyright 2012 Cedric Castagnede 31*bf2c3715SXin Li# Copyright 2013-2016 Florent Pruvost 32*bf2c3715SXin Li# 33*bf2c3715SXin Li# Distributed under the OSI-approved BSD License (the "License"); 34*bf2c3715SXin Li# see accompanying file MORSE-Copyright.txt for details. 35*bf2c3715SXin Li# 36*bf2c3715SXin Li# This software is distributed WITHOUT ANY WARRANTY; without even the 37*bf2c3715SXin Li# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 38*bf2c3715SXin Li# See the License for more information. 39*bf2c3715SXin Li#============================================================================= 40*bf2c3715SXin Li# (To distribute this file outside of Morse, substitute the full 41*bf2c3715SXin Li# License text for the above reference.) 42*bf2c3715SXin Li 43*bf2c3715SXin Li# macro to factorize this call 44*bf2c3715SXin Liinclude(CMakeFindDependencyMacro) 45*bf2c3715SXin Limacro(find_package_blas) 46*bf2c3715SXin Li if(BLASEXT_FIND_REQUIRED) 47*bf2c3715SXin Li if(BLASEXT_FIND_QUIETLY) 48*bf2c3715SXin Li find_dependency(BLAS REQUIRED QUIET) 49*bf2c3715SXin Li else() 50*bf2c3715SXin Li find_dependency(BLAS REQUIRED) 51*bf2c3715SXin Li endif() 52*bf2c3715SXin Li else() 53*bf2c3715SXin Li if(BLASEXT_FIND_QUIETLY) 54*bf2c3715SXin Li find_dependency(BLAS QUIET) 55*bf2c3715SXin Li else() 56*bf2c3715SXin Li find_dependency(BLAS) 57*bf2c3715SXin Li endif() 58*bf2c3715SXin Li endif() 59*bf2c3715SXin Liendmacro() 60*bf2c3715SXin Li 61*bf2c3715SXin Li# add a cache variable to let the user specify the BLAS vendor 62*bf2c3715SXin Liset(BLA_VENDOR "" CACHE STRING "list of possible BLAS vendor: 63*bf2c3715SXin Li Open, Eigen, Goto, ATLAS PhiPACK, CXML, DXML, SunPerf, SCSL, SGIMATH, IBMESSL, IBMESSLMT, 64*bf2c3715SXin Li Intel10_32 (intel mkl v10 32 bit), 65*bf2c3715SXin Li Intel10_64lp (intel mkl v10 64 bit, lp thread model, lp64 model), 66*bf2c3715SXin Li Intel10_64lp_seq (intel mkl v10 64 bit, sequential code, lp64 model), 67*bf2c3715SXin Li Intel( older versions of mkl 32 and 64 bit), 68*bf2c3715SXin Li ACML, ACML_MP, ACML_GPU, Apple, NAS, Generic") 69*bf2c3715SXin Li 70*bf2c3715SXin Liif(NOT BLASEXT_FIND_QUIETLY) 71*bf2c3715SXin Li message(STATUS "In FindBLASEXT") 72*bf2c3715SXin Li message(STATUS "If you want to force the use of one specific library, " 73*bf2c3715SXin Li "\n please specify the BLAS vendor by setting -DBLA_VENDOR=blas_vendor_name" 74*bf2c3715SXin Li "\n at cmake configure.") 75*bf2c3715SXin Li message(STATUS "List of possible BLAS vendor: Goto, ATLAS PhiPACK, CXML, " 76*bf2c3715SXin Li "\n DXML, SunPerf, SCSL, SGIMATH, IBMESSL, IBMESSLMT, Intel10_32 (intel mkl v10 32 bit)," 77*bf2c3715SXin Li "\n Intel10_64lp (intel mkl v10 64 bit, lp thread model, lp64 model)," 78*bf2c3715SXin Li "\n Intel10_64lp_seq (intel mkl v10 64 bit, sequential code, lp64 model)," 79*bf2c3715SXin Li "\n Intel( older versions of mkl 32 and 64 bit)," 80*bf2c3715SXin Li "\n ACML, ACML_MP, ACML_GPU, Apple, NAS, Generic") 81*bf2c3715SXin Liendif() 82*bf2c3715SXin Li 83*bf2c3715SXin Liif (NOT BLAS_FOUND) 84*bf2c3715SXin Li # First try to detect two cases: 85*bf2c3715SXin Li # 1: only SEQ libs are handled 86*bf2c3715SXin Li # 2: both SEQ and PAR libs are handled 87*bf2c3715SXin Li find_package_blas() 88*bf2c3715SXin Liendif () 89*bf2c3715SXin Li 90*bf2c3715SXin Li# detect the cases where SEQ and PAR libs are handled 91*bf2c3715SXin Liif(BLA_VENDOR STREQUAL "All" AND 92*bf2c3715SXin Li (BLAS_mkl_core_LIBRARY OR BLAS_mkl_core_dll_LIBRARY) 93*bf2c3715SXin Li ) 94*bf2c3715SXin Li set(BLA_VENDOR "Intel") 95*bf2c3715SXin Li if(BLAS_mkl_intel_LIBRARY) 96*bf2c3715SXin Li set(BLA_VENDOR "Intel10_32") 97*bf2c3715SXin Li endif() 98*bf2c3715SXin Li if(BLAS_mkl_intel_lp64_LIBRARY) 99*bf2c3715SXin Li set(BLA_VENDOR "Intel10_64lp") 100*bf2c3715SXin Li endif() 101*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 102*bf2c3715SXin Li message(STATUS "A BLAS library has been found (${BLAS_LIBRARIES}) but we" 103*bf2c3715SXin Li "\n have also potentially detected some multithreaded BLAS libraries from the MKL." 104*bf2c3715SXin Li "\n We try to find both libraries lists (Sequential/Multithreaded).") 105*bf2c3715SXin Li endif() 106*bf2c3715SXin Li set(BLAS_FOUND "") 107*bf2c3715SXin Lielseif(BLA_VENDOR STREQUAL "All" AND BLAS_acml_LIBRARY) 108*bf2c3715SXin Li set(BLA_VENDOR "ACML") 109*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 110*bf2c3715SXin Li message(STATUS "A BLAS library has been found (${BLAS_LIBRARIES}) but we" 111*bf2c3715SXin Li "\n have also potentially detected some multithreaded BLAS libraries from the ACML." 112*bf2c3715SXin Li "\n We try to find both libraries lists (Sequential/Multithreaded).") 113*bf2c3715SXin Li endif() 114*bf2c3715SXin Li set(BLAS_FOUND "") 115*bf2c3715SXin Lielseif(BLA_VENDOR STREQUAL "All" AND BLAS_essl_LIBRARY) 116*bf2c3715SXin Li set(BLA_VENDOR "IBMESSL") 117*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 118*bf2c3715SXin Li message(STATUS "A BLAS library has been found (${BLAS_LIBRARIES}) but we" 119*bf2c3715SXin Li "\n have also potentially detected some multithreaded BLAS libraries from the ESSL." 120*bf2c3715SXin Li "\n We try to find both libraries lists (Sequential/Multithreaded).") 121*bf2c3715SXin Li endif() 122*bf2c3715SXin Li set(BLAS_FOUND "") 123*bf2c3715SXin Liendif() 124*bf2c3715SXin Li 125*bf2c3715SXin Li# Intel case 126*bf2c3715SXin Liif(BLA_VENDOR MATCHES "Intel*") 127*bf2c3715SXin Li 128*bf2c3715SXin Li ### 129*bf2c3715SXin Li # look for include path if the BLAS vendor is Intel 130*bf2c3715SXin Li ### 131*bf2c3715SXin Li 132*bf2c3715SXin Li # gather system include paths 133*bf2c3715SXin Li unset(_inc_env) 134*bf2c3715SXin Li if(WIN32) 135*bf2c3715SXin Li string(REPLACE ":" ";" _inc_env "$ENV{INCLUDE}") 136*bf2c3715SXin Li else() 137*bf2c3715SXin Li string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") 138*bf2c3715SXin Li list(APPEND _inc_env "${_path_env}") 139*bf2c3715SXin Li string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") 140*bf2c3715SXin Li list(APPEND _inc_env "${_path_env}") 141*bf2c3715SXin Li string(REPLACE ":" ";" _path_env "$ENV{CPATH}") 142*bf2c3715SXin Li list(APPEND _inc_env "${_path_env}") 143*bf2c3715SXin Li string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") 144*bf2c3715SXin Li list(APPEND _inc_env "${_path_env}") 145*bf2c3715SXin Li endif() 146*bf2c3715SXin Li list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") 147*bf2c3715SXin Li list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") 148*bf2c3715SXin Li set(ENV_MKLROOT "$ENV{MKLROOT}") 149*bf2c3715SXin Li if (ENV_MKLROOT) 150*bf2c3715SXin Li list(APPEND _inc_env "${ENV_MKLROOT}/include") 151*bf2c3715SXin Li endif() 152*bf2c3715SXin Li list(REMOVE_DUPLICATES _inc_env) 153*bf2c3715SXin Li 154*bf2c3715SXin Li # find mkl.h inside known include paths 155*bf2c3715SXin Li set(BLAS_mkl.h_INCLUDE_DIRS "BLAS_mkl.h_INCLUDE_DIRS-NOTFOUND") 156*bf2c3715SXin Li if(BLAS_INCDIR) 157*bf2c3715SXin Li set(BLAS_mkl.h_INCLUDE_DIRS "BLAS_mkl.h_INCLUDE_DIRS-NOTFOUND") 158*bf2c3715SXin Li find_path(BLAS_mkl.h_INCLUDE_DIRS 159*bf2c3715SXin Li NAMES mkl.h 160*bf2c3715SXin Li HINTS ${BLAS_INCDIR}) 161*bf2c3715SXin Li else() 162*bf2c3715SXin Li if(BLAS_DIR) 163*bf2c3715SXin Li set(BLAS_mkl.h_INCLUDE_DIRS "BLAS_mkl.h_INCLUDE_DIRS-NOTFOUND") 164*bf2c3715SXin Li find_path(BLAS_mkl.h_INCLUDE_DIRS 165*bf2c3715SXin Li NAMES mkl.h 166*bf2c3715SXin Li HINTS ${BLAS_DIR} 167*bf2c3715SXin Li PATH_SUFFIXES include) 168*bf2c3715SXin Li else() 169*bf2c3715SXin Li set(BLAS_mkl.h_INCLUDE_DIRS "BLAS_mkl.h_INCLUDE_DIRS-NOTFOUND") 170*bf2c3715SXin Li find_path(BLAS_mkl.h_INCLUDE_DIRS 171*bf2c3715SXin Li NAMES mkl.h 172*bf2c3715SXin Li HINTS ${_inc_env}) 173*bf2c3715SXin Li endif() 174*bf2c3715SXin Li endif() 175*bf2c3715SXin Li mark_as_advanced(BLAS_mkl.h_INCLUDE_DIRS) 176*bf2c3715SXin Li ## Print status if not found 177*bf2c3715SXin Li ## ------------------------- 178*bf2c3715SXin Li #if (NOT BLAS_mkl.h_INCLUDE_DIRS AND MORSE_VERBOSE) 179*bf2c3715SXin Li # Print_Find_Header_Status(blas mkl.h) 180*bf2c3715SXin Li #endif () 181*bf2c3715SXin Li set(BLAS_INCLUDE_DIRS "") 182*bf2c3715SXin Li if(BLAS_mkl.h_INCLUDE_DIRS) 183*bf2c3715SXin Li list(APPEND BLAS_INCLUDE_DIRS "${BLAS_mkl.h_INCLUDE_DIRS}" ) 184*bf2c3715SXin Li endif() 185*bf2c3715SXin Li 186*bf2c3715SXin Li ### 187*bf2c3715SXin Li # look for libs 188*bf2c3715SXin Li ### 189*bf2c3715SXin Li # if Intel 10 64 bit -> look for sequential and multithreaded versions 190*bf2c3715SXin Li if(BLA_VENDOR MATCHES "Intel10_64lp*") 191*bf2c3715SXin Li 192*bf2c3715SXin Li ## look for the sequential version 193*bf2c3715SXin Li set(BLA_VENDOR "Intel10_64lp_seq") 194*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 195*bf2c3715SXin Li message(STATUS "Look for the sequential version Intel10_64lp_seq") 196*bf2c3715SXin Li endif() 197*bf2c3715SXin Li find_package_blas() 198*bf2c3715SXin Li if(BLAS_FOUND) 199*bf2c3715SXin Li set(BLAS_SEQ_LIBRARIES "${BLAS_LIBRARIES}") 200*bf2c3715SXin Li else() 201*bf2c3715SXin Li set(BLAS_SEQ_LIBRARIES "${BLAS_SEQ_LIBRARIES-NOTFOUND}") 202*bf2c3715SXin Li endif() 203*bf2c3715SXin Li 204*bf2c3715SXin Li ## look for the multithreaded version 205*bf2c3715SXin Li set(BLA_VENDOR "Intel10_64lp") 206*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 207*bf2c3715SXin Li message(STATUS "Look for the multithreaded version Intel10_64lp") 208*bf2c3715SXin Li endif() 209*bf2c3715SXin Li find_package_blas() 210*bf2c3715SXin Li if(BLAS_FOUND) 211*bf2c3715SXin Li set(BLAS_PAR_LIBRARIES "${BLAS_LIBRARIES}") 212*bf2c3715SXin Li else() 213*bf2c3715SXin Li set(BLAS_PAR_LIBRARIES "${BLAS_PAR_LIBRARIES-NOTFOUND}") 214*bf2c3715SXin Li endif() 215*bf2c3715SXin Li 216*bf2c3715SXin Li else() 217*bf2c3715SXin Li 218*bf2c3715SXin Li if(BLAS_FOUND) 219*bf2c3715SXin Li set(BLAS_SEQ_LIBRARIES "${BLAS_LIBRARIES}") 220*bf2c3715SXin Li else() 221*bf2c3715SXin Li set(BLAS_SEQ_LIBRARIES "${BLAS_SEQ_LIBRARIES-NOTFOUND}") 222*bf2c3715SXin Li endif() 223*bf2c3715SXin Li 224*bf2c3715SXin Li endif() 225*bf2c3715SXin Li 226*bf2c3715SXin Li # ACML case 227*bf2c3715SXin Lielseif(BLA_VENDOR MATCHES "ACML*") 228*bf2c3715SXin Li 229*bf2c3715SXin Li ## look for the sequential version 230*bf2c3715SXin Li set(BLA_VENDOR "ACML") 231*bf2c3715SXin Li find_package_blas() 232*bf2c3715SXin Li if(BLAS_FOUND) 233*bf2c3715SXin Li set(BLAS_SEQ_LIBRARIES "${BLAS_LIBRARIES}") 234*bf2c3715SXin Li else() 235*bf2c3715SXin Li set(BLAS_SEQ_LIBRARIES "${BLAS_SEQ_LIBRARIES-NOTFOUND}") 236*bf2c3715SXin Li endif() 237*bf2c3715SXin Li 238*bf2c3715SXin Li ## look for the multithreaded version 239*bf2c3715SXin Li set(BLA_VENDOR "ACML_MP") 240*bf2c3715SXin Li find_package_blas() 241*bf2c3715SXin Li if(BLAS_FOUND) 242*bf2c3715SXin Li set(BLAS_PAR_LIBRARIES "${BLAS_LIBRARIES}") 243*bf2c3715SXin Li else() 244*bf2c3715SXin Li set(BLAS_PAR_LIBRARIES "${BLAS_PAR_LIBRARIES-NOTFOUND}") 245*bf2c3715SXin Li endif() 246*bf2c3715SXin Li 247*bf2c3715SXin Li # IBMESSL case 248*bf2c3715SXin Lielseif(BLA_VENDOR MATCHES "IBMESSL*") 249*bf2c3715SXin Li 250*bf2c3715SXin Li ## look for the sequential version 251*bf2c3715SXin Li set(BLA_VENDOR "IBMESSL") 252*bf2c3715SXin Li find_package_blas() 253*bf2c3715SXin Li if(BLAS_FOUND) 254*bf2c3715SXin Li set(BLAS_SEQ_LIBRARIES "${BLAS_LIBRARIES}") 255*bf2c3715SXin Li else() 256*bf2c3715SXin Li set(BLAS_SEQ_LIBRARIES "${BLAS_SEQ_LIBRARIES-NOTFOUND}") 257*bf2c3715SXin Li endif() 258*bf2c3715SXin Li 259*bf2c3715SXin Li ## look for the multithreaded version 260*bf2c3715SXin Li set(BLA_VENDOR "IBMESSLMT") 261*bf2c3715SXin Li find_package_blas() 262*bf2c3715SXin Li if(BLAS_FOUND) 263*bf2c3715SXin Li set(BLAS_PAR_LIBRARIES "${BLAS_LIBRARIES}") 264*bf2c3715SXin Li else() 265*bf2c3715SXin Li set(BLAS_PAR_LIBRARIES "${BLAS_PAR_LIBRARIES-NOTFOUND}") 266*bf2c3715SXin Li endif() 267*bf2c3715SXin Li 268*bf2c3715SXin Lielse() 269*bf2c3715SXin Li 270*bf2c3715SXin Li if(BLAS_FOUND) 271*bf2c3715SXin Li # define the SEQ libs as the BLAS_LIBRARIES 272*bf2c3715SXin Li set(BLAS_SEQ_LIBRARIES "${BLAS_LIBRARIES}") 273*bf2c3715SXin Li else() 274*bf2c3715SXin Li set(BLAS_SEQ_LIBRARIES "${BLAS_SEQ_LIBRARIES-NOTFOUND}") 275*bf2c3715SXin Li endif() 276*bf2c3715SXin Li set(BLAS_PAR_LIBRARIES "${BLAS_PAR_LIBRARIES-NOTFOUND}") 277*bf2c3715SXin Li 278*bf2c3715SXin Liendif() 279*bf2c3715SXin Li 280*bf2c3715SXin Li 281*bf2c3715SXin Liif(BLAS_SEQ_LIBRARIES) 282*bf2c3715SXin Li set(BLAS_LIBRARIES "${BLAS_SEQ_LIBRARIES}") 283*bf2c3715SXin Liendif() 284*bf2c3715SXin Li 285*bf2c3715SXin Li# extract libs paths 286*bf2c3715SXin Li# remark: because it is not given by find_package(BLAS) 287*bf2c3715SXin Liset(BLAS_LIBRARY_DIRS "") 288*bf2c3715SXin Listring(REPLACE " " ";" BLAS_LIBRARIES "${BLAS_LIBRARIES}") 289*bf2c3715SXin Liforeach(blas_lib ${BLAS_LIBRARIES}) 290*bf2c3715SXin Li if (EXISTS "${blas_lib}") 291*bf2c3715SXin Li get_filename_component(a_blas_lib_dir "${blas_lib}" PATH) 292*bf2c3715SXin Li list(APPEND BLAS_LIBRARY_DIRS "${a_blas_lib_dir}" ) 293*bf2c3715SXin Li else() 294*bf2c3715SXin Li string(REPLACE "-L" "" blas_lib "${blas_lib}") 295*bf2c3715SXin Li if (EXISTS "${blas_lib}") 296*bf2c3715SXin Li list(APPEND BLAS_LIBRARY_DIRS "${blas_lib}" ) 297*bf2c3715SXin Li else() 298*bf2c3715SXin Li get_filename_component(a_blas_lib_dir "${blas_lib}" PATH) 299*bf2c3715SXin Li if (EXISTS "${a_blas_lib_dir}") 300*bf2c3715SXin Li list(APPEND BLAS_LIBRARY_DIRS "${a_blas_lib_dir}" ) 301*bf2c3715SXin Li endif() 302*bf2c3715SXin Li endif() 303*bf2c3715SXin Li endif() 304*bf2c3715SXin Liendforeach() 305*bf2c3715SXin Liif (BLAS_LIBRARY_DIRS) 306*bf2c3715SXin Li list(REMOVE_DUPLICATES BLAS_LIBRARY_DIRS) 307*bf2c3715SXin Liendif () 308*bf2c3715SXin Li 309*bf2c3715SXin Li# check that BLAS has been found 310*bf2c3715SXin Li# --------------------------------- 311*bf2c3715SXin Liinclude(FindPackageHandleStandardArgs) 312*bf2c3715SXin Liif(BLA_VENDOR MATCHES "Intel*") 313*bf2c3715SXin Li if(BLA_VENDOR MATCHES "Intel10_64lp*") 314*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 315*bf2c3715SXin Li message(STATUS "BLAS found is Intel MKL:" 316*bf2c3715SXin Li "\n we manage two lists of libs, one sequential and one parallel if found" 317*bf2c3715SXin Li "\n (see BLAS_SEQ_LIBRARIES and BLAS_PAR_LIBRARIES)") 318*bf2c3715SXin Li message(STATUS "BLAS sequential libraries stored in BLAS_SEQ_LIBRARIES") 319*bf2c3715SXin Li endif() 320*bf2c3715SXin Li find_package_handle_standard_args(BLASEXT DEFAULT_MSG 321*bf2c3715SXin Li BLAS_SEQ_LIBRARIES 322*bf2c3715SXin Li BLAS_LIBRARY_DIRS 323*bf2c3715SXin Li BLAS_INCLUDE_DIRS) 324*bf2c3715SXin Li if(BLAS_PAR_LIBRARIES) 325*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 326*bf2c3715SXin Li message(STATUS "BLAS parallel libraries stored in BLAS_PAR_LIBRARIES") 327*bf2c3715SXin Li endif() 328*bf2c3715SXin Li find_package_handle_standard_args(BLASEXT DEFAULT_MSG 329*bf2c3715SXin Li BLAS_PAR_LIBRARIES) 330*bf2c3715SXin Li endif() 331*bf2c3715SXin Li else() 332*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 333*bf2c3715SXin Li message(STATUS "BLAS sequential libraries stored in BLAS_SEQ_LIBRARIES") 334*bf2c3715SXin Li endif() 335*bf2c3715SXin Li find_package_handle_standard_args(BLASEXT DEFAULT_MSG 336*bf2c3715SXin Li BLAS_SEQ_LIBRARIES 337*bf2c3715SXin Li BLAS_LIBRARY_DIRS 338*bf2c3715SXin Li BLAS_INCLUDE_DIRS) 339*bf2c3715SXin Li endif() 340*bf2c3715SXin Lielseif(BLA_VENDOR MATCHES "ACML*") 341*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 342*bf2c3715SXin Li message(STATUS "BLAS found is ACML:" 343*bf2c3715SXin Li "\n we manage two lists of libs, one sequential and one parallel if found" 344*bf2c3715SXin Li "\n (see BLAS_SEQ_LIBRARIES and BLAS_PAR_LIBRARIES)") 345*bf2c3715SXin Li message(STATUS "BLAS sequential libraries stored in BLAS_SEQ_LIBRARIES") 346*bf2c3715SXin Li endif() 347*bf2c3715SXin Li find_package_handle_standard_args(BLASEXT DEFAULT_MSG 348*bf2c3715SXin Li BLAS_SEQ_LIBRARIES 349*bf2c3715SXin Li BLAS_LIBRARY_DIRS) 350*bf2c3715SXin Li if(BLAS_PAR_LIBRARIES) 351*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 352*bf2c3715SXin Li message(STATUS "BLAS parallel libraries stored in BLAS_PAR_LIBRARIES") 353*bf2c3715SXin Li endif() 354*bf2c3715SXin Li find_package_handle_standard_args(BLASEXT DEFAULT_MSG 355*bf2c3715SXin Li BLAS_PAR_LIBRARIES) 356*bf2c3715SXin Li endif() 357*bf2c3715SXin Lielseif(BLA_VENDOR MATCHES "IBMESSL*") 358*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 359*bf2c3715SXin Li message(STATUS "BLAS found is ESSL:" 360*bf2c3715SXin Li "\n we manage two lists of libs, one sequential and one parallel if found" 361*bf2c3715SXin Li "\n (see BLAS_SEQ_LIBRARIES and BLAS_PAR_LIBRARIES)") 362*bf2c3715SXin Li message(STATUS "BLAS sequential libraries stored in BLAS_SEQ_LIBRARIES") 363*bf2c3715SXin Li endif() 364*bf2c3715SXin Li find_package_handle_standard_args(BLASEXT DEFAULT_MSG 365*bf2c3715SXin Li BLAS_SEQ_LIBRARIES 366*bf2c3715SXin Li BLAS_LIBRARY_DIRS) 367*bf2c3715SXin Li if(BLAS_PAR_LIBRARIES) 368*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 369*bf2c3715SXin Li message(STATUS "BLAS parallel libraries stored in BLAS_PAR_LIBRARIES") 370*bf2c3715SXin Li endif() 371*bf2c3715SXin Li find_package_handle_standard_args(BLASEXT DEFAULT_MSG 372*bf2c3715SXin Li BLAS_PAR_LIBRARIES) 373*bf2c3715SXin Li endif() 374*bf2c3715SXin Lielse() 375*bf2c3715SXin Li if(NOT BLASEXT_FIND_QUIETLY) 376*bf2c3715SXin Li message(STATUS "BLAS sequential libraries stored in BLAS_SEQ_LIBRARIES") 377*bf2c3715SXin Li endif() 378*bf2c3715SXin Li find_package_handle_standard_args(BLASEXT DEFAULT_MSG 379*bf2c3715SXin Li BLAS_SEQ_LIBRARIES 380*bf2c3715SXin Li BLAS_LIBRARY_DIRS) 381*bf2c3715SXin Liendif() 382*bf2c3715SXin Li 383*bf2c3715SXin Li# Callers expect BLAS_FOUND to be set as well. 384*bf2c3715SXin Liset(BLAS_FOUND BLASEXT_FOUND) 385