[intel-mkl] install mkl instead of requesting the user to install it (#29437)

* [intel-mkl] install mkl instead of requesting the user to install it

* windows and linux stuff

* add openmp stuff

* fix mixing basepath2

* remove x64 windows

* add openmp -> libiomp rename

* retry linux

* portfile adjustment

* adjust stuff for arrayfire

* fix linkage

* update baseline

* add a warning message

* format manifest

* bump port version

* v db

* - install usage
- change interface to ilp64 (default for x64)
- remove debug output

* v db

* cleanup ci baseline

* new try for arrayfire

* retry

* actually pass the option.

* v db

* guard settings with cpu feature

* v db

* cleanup from CR

* v db
This commit is contained in:
Alexander Neumann 2023-03-20 09:27:15 +01:00 committed by GitHub
parent 391313b9de
commit 0526b9cb22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 326 additions and 57 deletions

View File

@ -47,6 +47,16 @@ set(AF_DEFAULT_VCPKG_CMAKE_FLAGS
-DAF_BUILD_FORGE=OFF -DAF_BUILD_FORGE=OFF
) )
if("cpu" IN_LIST FEATURES)
if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_CRT_LINKAGE STREQUAL "static")
list(APPEND AF_DEFAULT_VCPKG_CMAKE_FLAGS "-DMKL_THREAD_LAYER=Sequential")
endif()
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
list(APPEND AF_DEFAULT_VCPKG_CMAKE_FLAGS "-DINT_SIZE=8")
# This seems scary but only selects the MKL interface. 4 = lp; 8 = ilp; Since x64 has ilp as the default use it!
endif()
endif()
# bin/dll directory for Windows non-static builds for the unified backend dll # bin/dll directory for Windows non-static builds for the unified backend dll
if (VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_LIBRARY_LINKAGE STREQUAL "static") if (VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_LIBRARY_LINKAGE STREQUAL "static")
set(AF_BIN_DIR ${CURRENT_PACKAGES_DIR}) set(AF_BIN_DIR ${CURRENT_PACKAGES_DIR})

View File

@ -1,7 +1,7 @@
{ {
"name": "arrayfire", "name": "arrayfire",
"version-semver": "3.8.0", "version-semver": "3.8.0",
"port-version": 2, "port-version": 3,
"description": "ArrayFire is a general-purpose library that simplifies the process of developing software that targets parallel and massively-parallel architectures including CPUs, GPUs, and other hardware acceleration devices.", "description": "ArrayFire is a general-purpose library that simplifies the process of developing software that targets parallel and massively-parallel architectures including CPUs, GPUs, and other hardware acceleration devices.",
"homepage": "https://github.com/arrayfire/arrayfire", "homepage": "https://github.com/arrayfire/arrayfire",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",

View File

@ -1,40 +1,277 @@
# Due to the complexity involved, this package doesn't install MKL. It instead verifies that MKL is installed. # This package installs Intel MKL on Linux and Windows for x64 and on other platforms tries to search for it.
# Other packages can depend on this package to declare a dependency on MKL. # The installation for the platforms are:
# If this package is installed, we assume that MKL is properly installed. # - Windows: ilp64, intel_thread (!static_crt), sequential(static_crt)
# - Linux: ilp64, intel_thread
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
set(MKL_REQUIRED_VERSION "20200000")
set(MKL_REQUIRED_VERSION "20200000")
set(ProgramFilesx86 "ProgramFiles(x86)")
set(INTEL_ROOT $ENV{${ProgramFilesx86}}/IntelSWTools/compilers_and_libraries/windows) # https://registrationcenter-download.intel.com/akdlm/IRC_NAS/19150/w_onemkl_p_2023.0.0.25930_offline.exe # windows
set(ONEMKL_ROOT $ENV{${ProgramFilesx86}}/Intel/oneAPI/mkl/latest) # https://registrationcenter-download.intel.com/akdlm/IRC_NAS/19116/m_onemkl_p_2023.0.0.25376_offline.dmg # macos
# https://registrationcenter-download.intel.com/akdlm/irc_nas/19138/l_onemkl_p_2023.0.0.25398_offline.sh # linux
find_path(MKL_ROOT include/mkl.h set(sha "")
PATHS if(VCPKG_TARGET_IS_WINDOWS)
$ENV{MKLROOT} set(filename w_onemkl_p_2023.0.0.25930_offline.exe)
${INTEL_ROOT}/mkl set(magic_number 19150)
$ENV{ONEAPI_ROOT}/mkl/latest set(sha a3eb6b75241a2eccb73ed73035ff111172c55d3fa51f545c7542277a155df84ff72fc826621711153e683f84058e64cb549c030968f9f964531db76ca8a3ed46)
${ONEMKL_ROOT} elseif(VCPKG_TARGET_IS_OSX AND 0)
DOC set(filename m_onemkl_p_2023.0.0.25376_offline.dmg)
"Folder contains MKL") set(magic_number 19116)
set(sha 7b9b8c004054603e6830fb9b9c049d5a4cfc0990c224cb182ac5262ab9f1863775a67491413040e3349c590e2cca58edcfc704db9f3b9f9faa8b5b09022cd2af)
if (MKL_ROOT STREQUAL "MKL_ROOT-NOTFOUND") # This is a disk image: If somebody knows how to extract it please do so.
message(FATAL_ERROR "Could not find MKL. Before continuing, please download and install MKL (${MKL_REQUIRED_VERSION} or higher) from:" elseif(VCPKG_TARGET_IS_LINUX)
"\n https://registrationcenter.intel.com/en/products/download/3178/\n" set(filename l_onemkl_p_2023.0.0.25398_offline.sh)
"\nAlso ensure vcpkg has been rebuilt with the latest version (v0.0.104 or later)") set(magic_number 19138)
endif() set(sha b5f2f464675f0fd969dde2faf2e622b834eb1cc406c4a867148116f6c24ba5c709d98b678840f4a89a1778e12cde0ff70ce2ef59faeef3d3f3aa1d0329c71af1)
else()
# file(STRINGS ${MKL_ROOT}/include/mkl_version.h MKL_VERSION_DEFINITION REGEX "__INTEL_MKL((_MINOR)|(_UPDATE))?__") set(ProgramFilesx86 "ProgramFiles(x86)")
# string(REGEX MATCHALL "([0-9]+)" MKL_VERSION ${MKL_VERSION_DEFINITION}) set(INTEL_ROOT $ENV{${ProgramFilesx86}}/IntelSWTools/compilers_and_libraries/windows)
# list(GET MKL_VERSION 0 MKL_VERSION_MAJOR) set(ONEMKL_ROOT $ENV{${ProgramFilesx86}}/Intel/oneAPI/mkl/latest)
# list(GET MKL_VERSION 1 MKL_VERSION_MINOR)
# list(GET MKL_VERSION 2 MKL_VERSION_UPDATE) find_path(MKL_ROOT include/mkl.h
PATHS
file(STRINGS ${MKL_ROOT}/include/mkl_version.h MKL_VERSION_DEFINITION REGEX "INTEL_MKL_VERSION") $ENV{MKLROOT}
string(REGEX MATCH "([0-9]+)" MKL_VERSION ${MKL_VERSION_DEFINITION}) ${INTEL_ROOT}/mkl
$ENV{ONEAPI_ROOT}/mkl/latest
if (MKL_VERSION LESS MKL_REQUIRED_VERSION) ${ONEMKL_ROOT}
message(FATAL_ERROR "MKL ${MKL_VERSION} is found but ${MKL_REQUIRED_VERSION} is required. Please download and install a more recent version of MKL from:" DOC
"\n https://registrationcenter.intel.com/en/products/download/3178/\n") "Folder contains MKL")
endif()
if (MKL_ROOT STREQUAL "MKL_ROOT-NOTFOUND")
message(FATAL_ERROR "Could not find MKL. Before continuing, please download and install MKL (${MKL_REQUIRED_VERSION} or higher) from:"
"\n https://registrationcenter.intel.com/en/products/download/3178/\n"
"\nAlso ensure vcpkg has been rebuilt with the latest version (v0.0.104 or later)")
endif()
file(STRINGS "${MKL_ROOT}/include/mkl_version.h" MKL_VERSION_DEFINITION REGEX "INTEL_MKL_VERSION")
string(REGEX MATCH "([0-9]+)" MKL_VERSION ${MKL_VERSION_DEFINITION})
if (MKL_VERSION LESS MKL_REQUIRED_VERSION)
message(FATAL_ERROR "MKL ${MKL_VERSION} is found but ${MKL_REQUIRED_VERSION} is required. Please download and install a more recent version of MKL from:"
"\n https://registrationcenter.intel.com/en/products/download/3178/\n")
endif()
endif()
if(sha)
vcpkg_download_distfile(archive_path
URLS "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/${magic_number}/${filename}"
FILENAME "${filename}"
SHA512 ${sha}
)
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}")
# Note: intel_thread and lp64 are the defaults.
set(interface "ilp64") # or ilp64; ilp == 64 bit int api
#https://www.intel.com/content/www/us/en/develop/documentation/onemkl-linux-developer-guide/top/linking-your-application-with-onemkl/linking-in-detail/linking-with-interface-libraries/using-the-ilp64-interface-vs-lp64-interface.html
if(VCPKG_CRT_LINKAGE STREQUAL "dynamic")
set(threading "intel_thread") #sequential or intel_thread or tbb_thread or pgi_thread
else()
set(threading "sequential")
endif()
if(threading STREQUAL "intel_thread")
set(short_thread "iomp")
else()
string(SUBSTRING "${threading}" "0" "3" short_thread)
endif()
if(VCPKG_TARGET_IS_WINDOWS)
vcpkg_find_acquire_program(7Z)
vcpkg_execute_in_download_mode(
COMMAND "${7Z}" x "${archive_path}" "-o${CURRENT_PACKAGES_DIR}/intel-extract" "-y" "-bso0" "-bsp0"
WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}"
)
set(packages
"intel.oneapi.win.mkl.devel,v=2023.0.0-25930/oneapi-mkl-devel-for-installer_p_2023.0.0.25930.msi" # has the required libs.
"intel.oneapi.win.mkl.runtime,v=2023.0.0-25930/oneapi-mkl-for-installer_p_2023.0.0.25930.msi" # has the required DLLs
#"intel.oneapi.win.compilers-common-runtime,v=2023.0.0-25922" # SVML
"intel.oneapi.win.openmp,v=2023.0.0-25922/oneapi-comp-openmp-for-installer_p_2023.0.0.25922.msi" # OpenMP
#"intel.oneapi.win.tbb.runtime,v=2021.8.0-25874" #TBB
)
set(output_path "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") # vcpkg.cmake adds everything in /tools to CMAKE_PROGRAM_PATH. That is not desired
file(MAKE_DIRECTORY "${output_path}")
foreach(pack IN LISTS packages)
set(archive_path "${CURRENT_PACKAGES_DIR}/intel-extract/packages/${pack}")
cmake_path(GET pack STEM LAST_ONLY packstem)
cmake_path(NATIVE_PATH archive_path archive_path_native)
vcpkg_execute_in_download_mode(
COMMAND "${LESSMSI}" x "${archive_path_native}" # Using output_path here does not work in bash
WORKING_DIRECTORY "${output_path}"
OUTPUT_FILE "${CURRENT_BUILDTREES_DIR}/lessmsi-${TARGET_TRIPLET}-out.log"
ERROR_FILE "${CURRENT_BUILDTREES_DIR}/lessmsi-${TARGET_TRIPLET}-err.log"
RESULT_VARIABLE error_code
)
file(COPY "${output_path}/${packstem}/SourceDir/" DESTINATION "${output_path}")
file(REMOVE_RECURSE "${output_path}/${packstem}")
endforeach()
set(basepath "${output_path}/Intel/Compiler/12.0/mkl/2023.0.0/")
set(basepath2 "${output_path}/Intel/Compiler/12.0/compiler/2023.0.0/")
file(REMOVE_RECURSE "${output_path}/Intel/shared files"
"${output_path}/Intel/Compiler/12.0/conda_channel"
"${basepath}tools"
"${basepath}interfaces"
"${basepath}examples"
"${basepath}bin"
"${basepath}benchmarks"
)
file(COPY "${basepath}/include/" DESTINATION "${CURRENT_PACKAGES_DIR}/include")
# see https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html for linking
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
set(files "mkl_core_dll.lib" "mkl_${threading}_dll.lib" "mkl_intel_${interface}_dll.lib" "mkl_blas95_${interface}.lib" "mkl_lapack95_${interface}.lib") # "mkl_rt.lib" single dynamic lib with dynamic dispatch
file(COPY "${basepath}redist/intel64/" DESTINATION "${CURRENT_PACKAGES_DIR}/bin") # Could probably be reduced instead of copying all
if(NOT VCPKG_BUILD_TYPE)
file(COPY "${basepath}redist/intel64/" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin")
endif()
else()
set(files "mkl_core.lib" "mkl_${threading}.lib" "mkl_intel_${interface}.lib" "mkl_blas95_${interface}.lib" "mkl_lapack95_${interface}.lib")
endif()
foreach(file ${files})
file(COPY "${basepath}lib/intel64/${file}" DESTINATION "${CURRENT_PACKAGES_DIR}/lib/intel64") # instead of manual-link keep normal structure
if(NOT VCPKG_BUILD_TYPE)
file(COPY "${basepath}lib/intel64/${file}" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib/intel64")
endif()
endforeach()
configure_file("${basepath}lib/pkgconfig/mkl-${VCPKG_LIBRARY_LINKAGE}-${interface}-${short_thread}.pc" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/mkl.pc" @ONLY)
if(NOT VCPKG_BUILD_TYPE)
configure_file("${basepath}lib/pkgconfig/mkl-${VCPKG_LIBRARY_LINKAGE}-${interface}-${short_thread}.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/mkl.pc" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/mkl.pc" "/include" "/../include")
endif()
if(threading STREQUAL "intel_thread")
file(COPY "${basepath2}windows/redist/intel64_win/compiler/" DESTINATION "${CURRENT_PACKAGES_DIR}/bin")
file(COPY "${basepath2}windows/compiler/lib/intel64_win/" DESTINATION "${CURRENT_PACKAGES_DIR}/lib/intel64")
configure_file("${basepath2}lib/pkgconfig/openmp.pc" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libiomp5.pc" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libiomp5.pc" "/windows/compiler/lib/intel64_win/" "/lib/intel64/")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libiomp5.pc" "Cflags: -I \${includedir}" "")
if(NOT VCPKG_BUILD_TYPE)
file(COPY "${basepath2}windows/redist/intel64_win/compiler/" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin")
file(COPY "${basepath2}windows/compiler/lib/intel64_win/" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib/intel64")
configure_file("${basepath2}lib/pkgconfig/openmp.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/libiomp5.pc" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/libiomp5.pc" "/windows/compiler/lib/intel64_win/" "/lib/intel64/")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/libiomp5.pc" "Cflags: -I \${includedir}" "")
endif()
configure_file("${basepath}lib/pkgconfig/mkl-${VCPKG_LIBRARY_LINKAGE}-${interface}-${short_thread}.pc" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/mkl.pc" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/mkl.pc" "openmp" "libiomp5")
if(NOT VCPKG_BUILD_TYPE)
configure_file("${basepath}lib/pkgconfig/mkl-${VCPKG_LIBRARY_LINKAGE}-${interface}-${short_thread}.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/mkl.pc" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/mkl.pc" "openmp" "libiomp5")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/mkl.pc" "/include" "/../include")
endif()
endif()
file(COPY "${basepath}lib/cmake/" DESTINATION "${CURRENT_PACKAGES_DIR}/share/")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/mkl/MKLConfig.cmake" "MKL_CMAKE_PATH}/../../../" "MKL_CMAKE_PATH}/../../")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/mkl/MKLConfig.cmake" "redist/\${MKL_ARCH}/" "bin")
#TODO: Hardcode settings from portfile in config.cmake
#TODO. Give lapack/blas information about the correct BLA_VENDOR depending on settings.
file(INSTALL "${CURRENT_PACKAGES_DIR}/intel-extract/packages/intel.oneapi.win.mkl.product,v=2023.0.0-25930/licenses/license.htm" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
file(INSTALL "${basepath}licensing" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
elseif(VCPKG_TARGET_IS_LINUX)
message(WARNING "This port is still a work on progress on linux. E.g. it is not correctly filtering the libraries in accordance with VCPKG_LIBRARY_LINKAGE. Furthermore it is using the default threading which is Intel OpenMP which is known to segfault if GNU OpenMP is also used elsewhere!")
#./l_onemkl_p_2023.0.0.25398_offline.sh --extract-only -a -s
# cmake -E tar -xf <payload>
set(output_path "${CURRENT_PACKAGES_DIR}/intel-extract")
message(STATUS "${archive_path}")
file(MAKE_DIRECTORY "${output_path}")
vcpkg_execute_in_download_mode(
COMMAND "bash" "--verbose" "--noprofile" "${archive_path}" "--extract-only" "--extract-folder" "${output_path}"
WORKING_DIRECTORY "${output_path}"
OUTPUT_FILE "${CURRENT_BUILDTREES_DIR}/extract-${TARGET_TRIPLET}-out.log"
ERROR_FILE "${CURRENT_BUILDTREES_DIR}/extract-${TARGET_TRIPLET}-err.log"
)
set(packages
"intel.oneapi.lin.mkl.devel,v=2023.0.0-25398" # has the required staic libs.
"intel.oneapi.lin.mkl.runtime,v=2023.0.0-25398" # has the required dynamic so.
"intel.oneapi.lin.openmp,v=2023.0.0-25370" #OpenMP
)
foreach(pack IN LISTS packages)
set(archive_path "${output_path}/l_onemkl_p_2023.0.0.25398_offline/packages/${pack}")
vcpkg_execute_in_download_mode(
COMMAND "${CMAKE_COMMAND}" "-E" "tar" "-xf" "${archive_path}/cupPayload.cup"
WORKING_DIRECTORY "${output_path}"
OUTPUT_FILE "${CURRENT_BUILDTREES_DIR}/mkl-extract-${TARGET_TRIPLET}-out.log"
ERROR_FILE "${CURRENT_BUILDTREES_DIR}/mkl-extract-${TARGET_TRIPLET}-err.log"
)
endforeach()
set(basepath "${output_path}/_installdir/mkl/2023.0.0/")
set(basepath2 "${output_path}/_installdir/compiler/2023.0.0/")
file(REMOVE_RECURSE "${basepath}../../conda_channel/"
"${basepath}tools"
"${basepath}interfaces"
"${basepath}examples"
"${basepath}bin"
"${basepath}benchmarks"
"${basepath}env"
"${basepath}modulefiles"
)
file(COPY "${basepath}include/" DESTINATION "${CURRENT_PACKAGES_DIR}/include")
file(COPY "${basepath}lib/intel64/" DESTINATION "${CURRENT_PACKAGES_DIR}/lib/intel64")
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
set(to_remove_suffix .a)
else()
set(to_remove_suffix .so)
endif()
file(GLOB_RECURSE files_to_remove "${CURRENT_PACKAGES_DIR}/lib/intel64/*${to_remove_suffix}" "${CURRENT_PACKAGES_DIR}/lib/intel64/*${to_remove_suffix}.?")
file(REMOVE ${files_to_remove})
configure_file("${basepath}lib/pkgconfig/mkl-${VCPKG_LIBRARY_LINKAGE}-${interface}-${short_thread}.pc" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/mkl.pc" @ONLY)
if(NOT VCPKG_BUILD_TYPE)
configure_file("${basepath}lib/pkgconfig/mkl-${VCPKG_LIBRARY_LINKAGE}-${interface}-${short_thread}.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/mkl.pc" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/mkl.pc" "/lib/intel64" "/../lib/intel64")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/mkl.pc" "/include" "/../include")
endif()
if(threading STREQUAL "intel_thread")
file(COPY "${basepath2}linux/compiler/lib/intel64_lin/" DESTINATION "${CURRENT_PACKAGES_DIR}/lib/intel64")
configure_file("${basepath2}lib/pkgconfig/openmp.pc" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libiomp5.pc" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libiomp5.pc" "/linux/compiler/lib/intel64/" "/lib/intel64/")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libiomp5.pc" "Cflags: -I \${includedir}" "")
if(NOT VCPKG_BUILD_TYPE)
configure_file("${basepath2}lib/pkgconfig/openmp.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/libiomp5.pc" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/libiomp5.pc" "/linux/compiler/lib/intel64/" "/../lib/intel64/")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/libiomp5.pc" "Cflags: -I \${includedir}" "")
endif()
configure_file("${basepath}lib/pkgconfig/mkl-${VCPKG_LIBRARY_LINKAGE}-${interface}-${short_thread}.pc" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/mkl.pc" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/mkl.pc" "openmp" "libiomp5")
if(NOT VCPKG_BUILD_TYPE)
configure_file("${basepath}lib/pkgconfig/mkl-${VCPKG_LIBRARY_LINKAGE}-${interface}-${short_thread}.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/mkl.pc" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/mkl.pc" "openmp" "libiomp5")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/mkl.pc" "/include" "/../include")
endif()
endif()
file(COPY "${basepath}lib/cmake/" DESTINATION "${CURRENT_PACKAGES_DIR}/share/")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/mkl/MKLConfig.cmake" "MKL_CMAKE_PATH}/../../../" "MKL_CMAKE_PATH}/../../")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/mkl/MKLConfig.cmake" "redist/\${MKL_ARCH}/" "bin")
#TODO: Hardcode settings from portfile in config.cmake
file(INSTALL "${basepath}licensing/license.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
file(INSTALL "${basepath}licensing" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/intel-extract"
"${CURRENT_PACKAGES_DIR}/manual-tools"
)
endif()
if(NOT sha)
configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY)
configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/mkl/vcpkg-cmake-wrapper.cmake" @ONLY)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/mkl/MKLConfig.cmake" "bin\${MKL_DLL_GLOB" "bin/\${MKL_DLL_GLOB")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/mkl/MKLConfig.cmake" [["../bincompiler" "../compiler/lib"]] [["bin" "../bincompiler" "../compiler/lib"]])
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
endif()

4
ports/intel-mkl/usage Normal file
View File

@ -0,0 +1,4 @@
intel-mkl provides CMake targets:
find_package(MKL CONFIG REQUIRED)
target_link_libraries(main PRIVATE MKL::MKL)

View File

@ -0,0 +1,6 @@
set(MKL_THREADING "@threading@")
if("@VCPKG_TARGET_ARCHITECTURE@" STREQUAL "x64")
set(MKL_INTERFACE "@interface@")
endif()
_find_package(${ARGS})

View File

@ -0,0 +1 @@
set(ENV{MKLROOT} "${CURRENT_INSTALLED_DIR}")

View File

@ -1,6 +1,15 @@
{ {
"name": "intel-mkl", "name": "intel-mkl",
"version": "2020.0.0", "version": "2023.0.0",
"port-version": 2, "description": "Intel® Math Kernel Library (Intel® MKL) accelerates math processing routines, increases application performance, and reduces development time on Intel® processors.",
"description": "Intel® Math Kernel Library (Intel® MKL) accelerates math processing routines, increases application performance, and reduces development time on Intel® processors. Due to the complexity involved, this package doesn't install MKL. It instead verifies that MKL is installed. Please download and install MKL from https://registrationcenter.intel.com/en/products/download/3178/ manually before using it in vcpkg." "homepage": "https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html",
"license": null,
"supports": "(windows | linux) & x64",
"dependencies": [
{
"name": "vcpkg-tool-lessmsi",
"host": true,
"platform": "windows"
}
]
} }

View File

@ -217,6 +217,8 @@ fastrtps:arm-uwp=fail
fastrtps:x64-uwp=fail fastrtps:x64-uwp=fail
fastrtps:x64-windows-static=fail fastrtps:x64-windows-static=fail
fastrtps:x64-windows-static-md=fail fastrtps:x64-windows-static-md=fail
flashlight-cpu:x64-linux=fail
flashlight-cuda:x64-linux=fail
# fluidlite conflicts with fluidsynth; we test fluidsynth rather than fluidlite because # fluidlite conflicts with fluidsynth; we test fluidsynth rather than fluidlite because
# fluidlite has no dependencies and thus is less likely to be broken by another package. # fluidlite has no dependencies and thus is less likely to be broken by another package.
fluidlite:arm-uwp=skip fluidlite:arm-uwp=skip
@ -336,16 +338,6 @@ ijg-libjpeg:x64-uwp = skip
ijg-libjpeg:x64-windows = skip ijg-libjpeg:x64-windows = skip
ijg-libjpeg:x64-windows-static = skip ijg-libjpeg:x64-windows-static = skip
ijg-libjpeg:x86-windows = skip ijg-libjpeg:x86-windows = skip
intel-mkl:arm64-windows=fail
intel-mkl:arm-uwp=fail
intel-mkl:x64-linux=fail
intel-mkl:x64-osx=fail
intel-mkl:arm64-osx=fail
intel-mkl:x64-uwp=fail
intel-mkl:x64-windows=fail
intel-mkl:x64-windows-static=fail
intel-mkl:x64-windows-static-md=fail
intel-mkl:x86-windows=fail
irrlicht:arm64-windows=fail irrlicht:arm64-windows=fail
irrlicht:arm-uwp=fail irrlicht:arm-uwp=fail
irrlicht:x64-uwp=fail irrlicht:x64-uwp=fail

View File

@ -1,5 +1,10 @@
{ {
"versions": [ "versions": [
{
"git-tree": "ad19da32c793c60f4f40241792cee65d3c225d10",
"version-semver": "3.8.0",
"port-version": 3
},
{ {
"git-tree": "9ce1cae30cfcfd85b9858f5f46a59136cce97e59", "git-tree": "9ce1cae30cfcfd85b9858f5f46a59136cce97e59",
"version-semver": "3.8.0", "version-semver": "3.8.0",

View File

@ -214,7 +214,7 @@
}, },
"arrayfire": { "arrayfire": {
"baseline": "3.8.0", "baseline": "3.8.0",
"port-version": 2 "port-version": 3
}, },
"arrow": { "arrow": {
"baseline": "10.0.1", "baseline": "10.0.1",
@ -3281,8 +3281,8 @@
"port-version": 0 "port-version": 0
}, },
"intel-mkl": { "intel-mkl": {
"baseline": "2020.0.0", "baseline": "2023.0.0",
"port-version": 2 "port-version": 0
}, },
"intelrdfpmathlib": { "intelrdfpmathlib": {
"baseline": "20U2", "baseline": "20U2",

View File

@ -1,5 +1,10 @@
{ {
"versions": [ "versions": [
{
"git-tree": "e5a15d03509e3eaf676a2e3ec935acff7fbb9285",
"version": "2023.0.0",
"port-version": 0
},
{ {
"git-tree": "f2d5b828df130d8b1106aa0c076eb9cb79e50ea9", "git-tree": "f2d5b828df130d8b1106aa0c076eb9cb79e50ea9",
"version": "2020.0.0", "version": "2020.0.0",