2020-08-13 01:28:41 +08:00
#TODO: Features to add:
# USE_XBLAS??? extended precision blas. needs xblas
# LAPACKE should be its own PORT
# USE_OPTIMIZED_LAPACK (Probably not what we want. Does a find_package(LAPACK): probably for LAPACKE only builds _> own port?)
# LAPACKE Builds LAPACKE
# LAPACKE_WITH_TMG Build LAPACKE with tmglib routines
2020-09-01 08:12:01 +08:00
if ( EXISTS "${CURRENT_INSTALLED_DIR}/share/clapack/copyright" )
message ( FATAL_ERROR "Can't build ${PORT} if clapack is installed. Please remove clapack:${TARGET_TRIPLET}, and try to install ${PORT}:${TARGET_TRIPLET} again." )
endif ( )
2020-08-13 01:28:41 +08:00
include ( vcpkg_find_fortran )
SET ( VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled )
set ( lapack_ver 3.8.0 )
vcpkg_from_github (
O U T _ S O U R C E _ P A T H S O U R C E _ P A T H
R E P O " R e f e r e n c e - L A P A C K / l a p a c k "
R E F " v $ { l a p a c k _ v e r } "
S H A 5 1 2 1 7 7 8 6 c b 7 3 0 6 f c c d c 9 b 4 a 2 4 2 d e 7 f 6 4 f c 2 6 1 e b e 6 a 1 0 b 6 e c 5 5 f 5 1 9 d e b 4 c b 6 7 3 c b 1 3 7 e 8 7 4 2 a a 5 6 9 8 f d 2 d c 5 2 f 1 c d 5 6 d 3 b d 1 1 6 a f 3 f 5 9 3 a 0 1 d c f 6 7 7 0 c 4 d c c 8 6 c 5 0 b 2 a 7 f
H E A D _ R E F m a s t e r
)
if ( NOT VCPKG_TARGET_IS_WINDOWS )
set ( ENV{FFLAGS} "$ENV{FFLAGS} -fPIC" )
endif ( )
set ( CBLAS OFF )
if ( "cblas" IN_LIST FEATURES )
set ( CBLAS ON )
2020-08-26 09:55:54 +08:00
if ( "noblas" IN_LIST FEATURES )
message ( FATAL_ERROR "Cannot built feature 'cblas' together with feature 'noblas'. cblas requires blas!" )
endif ( )
2020-08-13 01:28:41 +08:00
endif ( )
set ( USE_OPTIMIZED_BLAS OFF )
if ( "noblas" IN_LIST FEATURES )
set ( USE_OPTIMIZED_BLAS ON )
set ( pcfile "${CURRENT_INSTALLED_DIR}/lib/pkgconfig/openblas.pc" )
if ( EXISTS "${pcfile}" )
file ( CREATE_LINK "${pcfile}" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" COPY_ON_ERROR )
endif ( )
set ( pcfile "${CURRENT_INSTALLED_DIR}/debug/lib/pkgconfig/openblas.pc" )
if ( EXISTS "${pcfile}" )
file ( CREATE_LINK "${pcfile}" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" COPY_ON_ERROR )
endif ( )
endif ( )
set ( VCPKG_CRT_LINKAGE_BACKUP ${ VCPKG_CRT_LINKAGE } )
vcpkg_find_fortran ( FORTRAN_CMAKE )
if ( VCPKG_USE_INTERNAL_Fortran )
if ( VCPKG_CRT_LINKAGE_BACKUP STREQUAL static )
# If openblas has been built with static crt linkage we cannot use it with gfortran!
set ( USE_OPTIMIZED_BLAS OFF )
#Cannot use openblas from vcpkg if we are building with gfortran here.
if ( "noblas" IN_LIST FEATURES )
message ( FATAL_ERROR "Feature 'noblas' cannot be used without supplying an external fortran compiler" )
endif ( )
endif ( )
else ( )
set ( USE_OPTIMIZED_BLAS ON )
endif ( )
2021-08-28 08:02:02 +08:00
2020-08-13 01:28:41 +08:00
vcpkg_configure_cmake (
2021-08-28 08:02:02 +08:00
S O U R C E _ P A T H $ { S O U R C E _ P A T H }
P R E F E R _ N I N J A
O P T I O N S
" - D U S E _ O P T I M I Z E D _ B L A S = $ { U S E _ O P T I M I Z E D _ B L A S } "
" - D C B L A S = $ { C B L A S } "
$ { F O R T R A N _ C M A K E }
)
2020-08-13 01:28:41 +08:00
vcpkg_install_cmake ( )
2021-08-28 08:02:02 +08:00
vcpkg_cmake_config_fixup ( PACKAGE_NAME lapack- ${ lapack_ver } CONFIG_PATH lib/cmake/lapack- ${ lapack_ver } ) #Should the target path be lapack and not lapack-reference?
2020-08-13 01:28:41 +08:00
set ( pcfile "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" )
if ( EXISTS "${pcfile}" )
file ( READ "${pcfile}" _contents )
set ( _contents "prefix=${CURRENT_INSTALLED_DIR}\n${_contents}" )
file ( WRITE "${pcfile}" "${_contents}" )
endif ( )
set ( pcfile "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" )
if ( EXISTS "${pcfile}" )
file ( READ "${pcfile}" _contents )
set ( _contents "prefix=${CURRENT_INSTALLED_DIR}/debug\n${_contents}" )
file ( WRITE "${pcfile}" "${_contents}" )
endif ( )
2021-08-28 08:02:02 +08:00
if ( NOT USE_OPTIMIZED_BLAS AND NOT ( VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static" ) )
2020-08-13 01:28:41 +08:00
set ( pcfile "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" )
if ( EXISTS "${pcfile}" )
file ( READ "${pcfile}" _contents )
set ( _contents "prefix=${CURRENT_INSTALLED_DIR}\n${_contents}" )
file ( WRITE "${pcfile}" "${_contents}" )
endif ( )
set ( pcfile "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" )
if ( EXISTS "${pcfile}" )
file ( READ "${pcfile}" _contents )
set ( _contents "prefix=${CURRENT_INSTALLED_DIR}/debug\n${_contents}" )
file ( WRITE "${pcfile}" "${_contents}" )
endif ( )
endif ( )
2020-08-26 09:55:54 +08:00
if ( "cblas" IN_LIST FEATURES )
set ( pcfile "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/cblas.pc" )
if ( EXISTS "${pcfile}" )
file ( READ "${pcfile}" _contents )
set ( _contents "prefix=${CURRENT_INSTALLED_DIR}\n${_contents}" )
file ( WRITE "${pcfile}" "${_contents}" )
endif ( )
set ( pcfile "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/cblas.pc" )
if ( EXISTS "${pcfile}" )
file ( READ "${pcfile}" _contents )
set ( _contents "prefix=${CURRENT_INSTALLED_DIR}/debug\n${_contents}" )
file ( WRITE "${pcfile}" "${_contents}" )
endif ( )
endif ( )
2020-08-13 01:28:41 +08:00
vcpkg_fixup_pkgconfig ( )
# Handle copyright
file ( INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright )
2020-09-01 13:36:25 +08:00
# remove debug includes
2020-08-13 01:28:41 +08:00
file ( REMOVE_RECURSE ${ CURRENT_PACKAGES_DIR } /debug/include )
if ( VCPKG_TARGET_IS_WINDOWS )
if ( EXISTS "${CURRENT_PACKAGES_DIR}/lib/liblapack.lib" )
file ( RENAME "${CURRENT_PACKAGES_DIR}/lib/liblapack.lib" "${CURRENT_PACKAGES_DIR}/lib/lapack.lib" )
endif ( )
if ( EXISTS "${CURRENT_PACKAGES_DIR}/debug/lib/liblapack.lib" )
file ( RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/liblapack.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/lapack.lib" )
endif ( )
if ( NOT USE_OPTIMIZED_BLAS )
if ( EXISTS "${CURRENT_PACKAGES_DIR}/lib/libblas.lib" )
file ( RENAME "${CURRENT_PACKAGES_DIR}/lib/libblas.lib" "${CURRENT_PACKAGES_DIR}/lib/blas.lib" )
endif ( )
if ( EXISTS "${CURRENT_PACKAGES_DIR}/debug/lib/libblas.lib" )
file ( RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/libblas.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/blas.lib" )
endif ( )
endif ( )
endif ( )
2021-07-17 03:03:54 +08:00
file ( COPY ${ CMAKE_CURRENT_LIST_DIR } /vcpkg-cmake-wrapper.cmake DESTINATION ${ CURRENT_PACKAGES_DIR } /share/lapack )
file ( COPY ${ CMAKE_CURRENT_LIST_DIR } /FindLAPACK.cmake DESTINATION ${ CURRENT_PACKAGES_DIR } /share/lapack )