aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/eigen3/CONTROL3
-rw-r--r--ports/eigen3/fix-cuda-error.patch30
-rw-r--r--ports/eigen3/portfile.cmake14
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)