diff options
| -rw-r--r-- | ports/eigen3/CONTROL | 3 | ||||
| -rw-r--r-- | ports/eigen3/fix-cuda-error.patch | 30 | ||||
| -rw-r--r-- | ports/eigen3/portfile.cmake | 14 |
3 files changed, 37 insertions, 10 deletions
diff --git a/ports/eigen3/CONTROL b/ports/eigen3/CONTROL index f76900517..9a60167d2 100644 --- a/ports/eigen3/CONTROL +++ b/ports/eigen3/CONTROL @@ -1,4 +1,5 @@ Source: eigen3 -Version: 3.3.7-5 +Version: 3.3.7 +Port-Version: 6 Homepage: http://eigen.tuxfamily.org Description: C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. diff --git a/ports/eigen3/fix-cuda-error.patch b/ports/eigen3/fix-cuda-error.patch new file mode 100644 index 000000000..9123806df --- /dev/null +++ b/ports/eigen3/fix-cuda-error.patch @@ -0,0 +1,30 @@ +diff --git a/Eigen/src/Core/arch/CUDA/Half.h b/Eigen/src/Core/arch/CUDA/Half.h +index 755e620..85e445b 100644 +--- a/Eigen/src/Core/arch/CUDA/Half.h ++++ b/Eigen/src/Core/arch/CUDA/Half.h +@@ -209,7 +209,11 @@ namespace half_impl { + // conversion steps back and forth. + + EIGEN_STRONG_INLINE __device__ half operator + (const half& a, const half& b) { ++#if defined(EIGEN_CUDACC_VER) && EIGEN_CUDACC_VER >= 90000 ++ return __hadd(::__half(a), ::__half(b)); ++#else + return __hadd(a, b); ++#endif + } + EIGEN_STRONG_INLINE __device__ half operator * (const half& a, const half& b) { + return __hmul(a, b); +@@ -218,9 +222,13 @@ EIGEN_STRONG_INLINE __device__ half operator - (const half& a, const half& b) { + return __hsub(a, b); + } + EIGEN_STRONG_INLINE __device__ half operator / (const half& a, const half& b) { ++#if defined(EIGEN_CUDACC_VER) && EIGEN_CUDACC_VER >= 90000 ++ return __hdiv(a, b); ++#else + float num = __half2float(a); + float denom = __half2float(b); + return __float2half(num / denom); ++#endif + } + EIGEN_STRONG_INLINE __device__ half operator - (const half& a) { + return __hneg(a); diff --git a/ports/eigen3/portfile.cmake b/ports/eigen3/portfile.cmake index 85b429558..dedfd026b 100644 --- a/ports/eigen3/portfile.cmake +++ b/ports/eigen3/portfile.cmake @@ -1,5 +1,3 @@ -include(vcpkg_common_functions) - vcpkg_buildpath_length_warning(37) vcpkg_from_gitlab( @@ -9,6 +7,7 @@ vcpkg_from_gitlab( REF 3.3.7 SHA512 4cc3717b9cbe78335e05f724919497214edd482d4812aeb1a9fd6da5b3f6d1b194bb93ed0dab9e734b4334a5b88e8f8c339c43c1b2044332286ef5e758f9ecf4 HEAD_REF master + PATCHES fix-cuda-error.patch # issue https://gitlab.com/libeigen/eigen/-/issues/1526 ) vcpkg_configure_cmake( @@ -29,16 +28,13 @@ vcpkg_install_cmake() file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share) -file(READ "${CURRENT_PACKAGES_DIR}/share/eigen3/Eigen3Targets.cmake" EIGEN_TARGETS) -string(REPLACE "set(_IMPORT_PREFIX " "get_filename_component(_IMPORT_PREFIX \"\${CMAKE_CURRENT_LIST_DIR}/../..\" ABSOLUTE) #" EIGEN_TARGETS "${EIGEN_TARGETS}") -file(WRITE "${CURRENT_PACKAGES_DIR}/share/eigen3/Eigen3Targets.cmake" "${EIGEN_TARGETS}") +vcpkg_replace_string(${CURRENT_PACKAGES_DIR}/share/eigen3/Eigen3Targets.cmake + "set(_IMPORT_PREFIX " "get_filename_component(_IMPORT_PREFIX \"\${CMAKE_CURRENT_LIST_DIR}/../..\" ABSOLUTE) #" +) vcpkg_fixup_pkgconfig() file(GLOB INCLUDES ${CURRENT_PACKAGES_DIR}/include/eigen3/*) -# Copy the eigen header files to conventional location for user-wide MSBuild integration file(COPY ${INCLUDES} DESTINATION ${CURRENT_PACKAGES_DIR}/include) -# Put the licence file where vcpkg expects it -file(COPY ${SOURCE_PATH}/COPYING.README DESTINATION ${CURRENT_PACKAGES_DIR}/share/eigen3) -file(RENAME ${CURRENT_PACKAGES_DIR}/share/eigen3/COPYING.README ${CURRENT_PACKAGES_DIR}/share/eigen3/copyright) +file(INSTALL ${SOURCE_PATH}/COPYING.README DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) |
