You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.5 KiB
61 lines
2.5 KiB
3 years ago
|
include(FetchContent)
|
||
|
|
||
2 years ago
|
set(OpenBLAS_SOURCE_DIR ${fc_patch}/openblas-src)
|
||
|
set(OpenBLAS_PREFIX ${fc_patch}/openblas-prefix)
|
||
3 years ago
|
|
||
|
# ######################################################################################################################
|
||
|
# OPENBLAS https://github.com/lattice/quda/blob/develop/CMakeLists.txt#L575
|
||
|
# ######################################################################################################################
|
||
|
enable_language(Fortran)
|
||
2 years ago
|
|
||
|
include(FortranCInterface)
|
||
|
|
||
|
# # Clang doesn't have a Fortran compiler in its suite (yet),
|
||
|
# # so detect libraries for gfortran; we need equivalents to
|
||
|
# # libgfortran and libquadmath, which are implicitly
|
||
|
# # linked by flags in CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES
|
||
|
# include(FindGFortranLibs REQUIRED)
|
||
|
# # Add directory containing libgfortran and libquadmath to
|
||
|
# # linker. Should also contain libgomp, if not using
|
||
|
# # Intel OpenMP runtime
|
||
|
# link_directories(${GFORTRAN_LIBRARIES_DIR})
|
||
|
# # gfortan dir in the docker.
|
||
|
# link_directories(/usr/local/gcc-8.2/lib64)
|
||
|
# # if you are working with C and Fortran
|
||
|
# FortranCInterface_VERIFY()
|
||
|
|
||
|
# # if you are working with C++ and Fortran
|
||
|
# FortranCInterface_VERIFY(CXX)
|
||
|
|
||
|
|
||
3 years ago
|
#TODO: switch to CPM
|
||
|
include(GNUInstallDirs)
|
||
|
ExternalProject_Add(
|
||
|
OPENBLAS
|
||
|
GIT_REPOSITORY https://github.com/xianyi/OpenBLAS.git
|
||
|
GIT_TAG v0.3.10
|
||
|
GIT_SHALLOW YES
|
||
|
PREFIX ${OpenBLAS_PREFIX}
|
||
|
SOURCE_DIR ${OpenBLAS_SOURCE_DIR}
|
||
|
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||
|
CMAKE_GENERATOR "Unix Makefiles")
|
||
3 years ago
|
|
||
|
|
||
3 years ago
|
# https://cmake.org/cmake/help/latest/module/ExternalProject.html?highlight=externalproject_get_property#external-project-definition
|
||
|
ExternalProject_Get_Property(OPENBLAS INSTALL_DIR)
|
||
2 years ago
|
message(STATUS "OPENBLAS install dir: ${INSTALL_DIR}")
|
||
3 years ago
|
set(OpenBLAS_INSTALL_PREFIX ${INSTALL_DIR})
|
||
|
add_library(openblas STATIC IMPORTED)
|
||
|
add_dependencies(openblas OPENBLAS)
|
||
|
set_target_properties(openblas PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES Fortran)
|
||
|
# ${CMAKE_INSTALL_LIBDIR} lib
|
||
|
set_target_properties(openblas PROPERTIES IMPORTED_LOCATION ${OpenBLAS_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libopenblas.a)
|
||
|
|
||
|
|
||
|
# https://cmake.org/cmake/help/latest/command/install.html?highlight=cmake_install_libdir#installing-targets
|
||
|
# ${CMAKE_INSTALL_LIBDIR} lib
|
||
|
# ${CMAKE_INSTALL_INCLUDEDIR} include
|
||
|
link_directories(${OpenBLAS_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
|
||
2 years ago
|
# include_directories(${OpenBLAS_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR})
|
||
|
# fix for can not find `cblas.h`
|
||
|
include_directories(${OpenBLAS_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/openblas)
|