From c23105e854ae67a2daa1987f0ab2be6db7676a73 Mon Sep 17 00:00:00 2001 From: NancyLi1013 Date: Wed, 29 May 2019 00:53:00 -0700 Subject: [itpp] Add new port --- ports/itpp/CONTROL | 3 + ports/itpp/fix-uwp.patch | 12 ++ ports/itpp/msvc2013.patch | 284 ++++++++++++++++++++++++++++++++++++++++++++++ ports/itpp/portfile.cmake | 40 +++++++ 4 files changed, 339 insertions(+) create mode 100644 ports/itpp/CONTROL create mode 100644 ports/itpp/fix-uwp.patch create mode 100644 ports/itpp/msvc2013.patch create mode 100644 ports/itpp/portfile.cmake diff --git a/ports/itpp/CONTROL b/ports/itpp/CONTROL new file mode 100644 index 000000000..623b2fc6b --- /dev/null +++ b/ports/itpp/CONTROL @@ -0,0 +1,3 @@ +Source: itpp +Version: 4.3.1 +Description: IT++ is a C++ library of mathematical, signal processing and communication classes and functions. Its main use is in simulation of communication systems and for performing research in the area of communications. \ No newline at end of file diff --git a/ports/itpp/fix-uwp.patch b/ports/itpp/fix-uwp.patch new file mode 100644 index 000000000..18e5fe4eb --- /dev/null +++ b/ports/itpp/fix-uwp.patch @@ -0,0 +1,12 @@ +diff --git a/itpp/base/timing.cpp b/itpp/base/timing.cpp +index 58178e4..47d662e 100644 +--- a/itpp/base/timing.cpp ++++ b/itpp/base/timing.cpp +@@ -51,6 +51,7 @@ + + #if defined(_WIN32) && !defined(__CYGWIN__) + #include ++#include + + int gettimeofday(struct timeval* p, void*) + { diff --git a/ports/itpp/msvc2013.patch b/ports/itpp/msvc2013.patch new file mode 100644 index 000000000..9cd35e851 --- /dev/null +++ b/ports/itpp/msvc2013.patch @@ -0,0 +1,284 @@ + CMakeLists.txt | 2 ++ + itpp/base/algebra/eigen.cpp | 1 + + itpp/base/algebra/ls_solve.cpp | 2 +- + itpp/base/algebra/qr.cpp | 1 + + itpp/base/algebra/svd.cpp | 2 +- + itpp/base/bessel/gamma.cpp | 5 +++++ + itpp/base/itcompat.cpp | 11 ++++++++++- + itpp/base/itcompat.h | 14 ++++++++++++-- + itpp/base/matfunc.h | 1 + + itpp/base/svec.h | 1 + + itpp/comm/siso_dem.cpp | 6 ++++++ + itpp/comm/siso_eq.cpp | 6 ++++++ + itpp/comm/siso_mud.cpp | 7 +++++++ + itpp/comm/siso_nsc.cpp | 6 ++++++ + itpp/comm/siso_rsc.cpp | 7 +++++++ + 15 files changed, 67 insertions(+), 5 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9f6a9a6..2360f86 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -122,7 +122,9 @@ CHECK_CXX_SYMBOL_EXISTS ( isnan "cmath" HAVE_DECL_ISNAN ) + CHECK_CXX_SYMBOL_EXISTS ( signgam "cmath" HAVE_DECL_SIGNGAM ) + + #check for functions ++if( NOT MSVC ) + set(CMAKE_REQUIRED_LIBRARIES m) ++endif() + include (CheckFunctionExists) + CHECK_FUNCTION_EXISTS ( acosh HAVE_ACOSH ) + CHECK_FUNCTION_EXISTS ( asinh HAVE_ASINH ) +diff --git a/itpp/base/algebra/eigen.cpp b/itpp/base/algebra/eigen.cpp +index 8c0c36b..54ae3e1 100644 +--- a/itpp/base/algebra/eigen.cpp ++++ b/itpp/base/algebra/eigen.cpp +@@ -39,6 +39,7 @@ + #include + #include + ++#include + + namespace itpp + { +diff --git a/itpp/base/algebra/ls_solve.cpp b/itpp/base/algebra/ls_solve.cpp +index dae38fc..95abf0a 100644 +--- a/itpp/base/algebra/ls_solve.cpp ++++ b/itpp/base/algebra/ls_solve.cpp +@@ -37,7 +37,7 @@ + #endif + + #include +- ++#include + + namespace itpp + { +diff --git a/itpp/base/algebra/qr.cpp b/itpp/base/algebra/qr.cpp +index 91dfb2b..0b47294 100644 +--- a/itpp/base/algebra/qr.cpp ++++ b/itpp/base/algebra/qr.cpp +@@ -39,6 +39,7 @@ + #include + #include + ++#include + + namespace itpp + { +diff --git a/itpp/base/algebra/svd.cpp b/itpp/base/algebra/svd.cpp +index aa21e36..b2e499c 100644 +--- a/itpp/base/algebra/svd.cpp ++++ b/itpp/base/algebra/svd.cpp +@@ -37,7 +37,7 @@ + #endif + + #include +- ++#include + + namespace itpp + { +diff --git a/itpp/base/bessel/gamma.cpp b/itpp/base/bessel/gamma.cpp +index 162c4ae..9405507 100644 +--- a/itpp/base/bessel/gamma.cpp ++++ b/itpp/base/bessel/gamma.cpp +@@ -34,6 +34,11 @@ + #include + #include + ++#if _MSC_VER ++//suppress warnings regarding the use infinity in fp arithmetic ++#pragma warning(disable: 4056) ++#pragma warning(disable: 4756) ++#endif + + /* + * Gamma function +diff --git a/itpp/base/itcompat.cpp b/itpp/base/itcompat.cpp +index f99ec81..aa34b28 100644 +--- a/itpp/base/itcompat.cpp ++++ b/itpp/base/itcompat.cpp +@@ -47,12 +47,21 @@ double tgamma(double x) + } + #endif + +-#if !defined(HAVE_LGAMMA) || (HAVE_DECL_SIGNGAM != 1) ++#if !defined(HAVE_LGAMMA) && (HAVE_DECL_SIGNGAM != 1) + // The sign of the Gamma function is returned in the external integer + // signgam declared in . It is 1 when the Gamma function is positive + // or zero, -1 when it is negative. However, MinGW definition of lgamma() + // function does not use the global signgam variable. ++//May 3rd 2015 (Andy Panov): ++//Nonetheless, I guess it would be smarter not to break the ODR rule and not to provide our own definition of lgamma ++//function when HAVE_LGAMMA is defined. If we still provide the definition, two definitions ++//of the same function will exist in the program (this is undefined behaviour, as C++ standard says), ++//so we can not ensure linker will choose our definition and user's code will work as expected. ++//I guess, error message from linker regarding the unresolved symbol is much better option, ++//since it clearly points to the math library limitations. Otherwise user can get a malfunctioning program ++//with really subtle error. + int signgam; ++ + // Logarithm of an absolute value of gamma function + double lgamma(double x) + { +diff --git a/itpp/base/itcompat.h b/itpp/base/itcompat.h +index e6be223..dcf2ed7 100644 +--- a/itpp/base/itcompat.h ++++ b/itpp/base/itcompat.h +@@ -41,8 +41,12 @@ + #if defined(_MSC_VER) + # include + # define finite(x) _finite(x) ++#ifndef HAVE_STD_ISFINITE + # define isfinite(x) _finite(x) ++#endif ++#ifndef HAVE_STD_ISNAN + # define isnan(x) _isnan(x) ++#endif + # define fpclass(x) _fpclass(x) + # define FP_NINF _FPCLASS_NINF + # define FP_PINF _FPCLASS_PINF +@@ -119,13 +123,19 @@ inline bool isfinite(double x) + double tgamma(double x); + #endif + +-#if !defined(HAVE_LGAMMA) || (HAVE_DECL_SIGNGAM != 1) ++#if !defined(HAVE_LGAMMA) && (HAVE_DECL_SIGNGAM != 1) ++//Provide own definitions if both conditions are met: ++//-lgammma is not defined ++//-signgam was not found ++//See ODR desicussion in itcompat.cpp ++ + //! Lograrithm of an absolute gamma function + double lgamma(double x); + //! Global variable needed by \c lgamma function + extern int signgam; + #endif + ++ + #ifndef HAVE_CBRT + //! Cubic root + double cbrt(double x); +@@ -141,7 +151,7 @@ inline double log1p(double x) { return std::log(1.0 + x); } + //! Base-2 logarithm + inline double log2(double x) + { +- static const double one_over_log2 = 1.0 / std::log(2.0); ++ const double one_over_log2 = 1.0 / std::log(2.0); + return std::log(x) * one_over_log2; + } + #endif +diff --git a/itpp/base/matfunc.h b/itpp/base/matfunc.h +index 8ae683e..60cf95f 100644 +--- a/itpp/base/matfunc.h ++++ b/itpp/base/matfunc.h +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include + + namespace itpp + { +diff --git a/itpp/base/svec.h b/itpp/base/svec.h +index d105b2f..3a2c15b 100644 +--- a/itpp/base/svec.h ++++ b/itpp/base/svec.h +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + + namespace itpp + { +diff --git a/itpp/comm/siso_dem.cpp b/itpp/comm/siso_dem.cpp +index 666f38c..4fa03fd 100644 +--- a/itpp/comm/siso_dem.cpp ++++ b/itpp/comm/siso_dem.cpp +@@ -32,6 +32,12 @@ + #define INFINITY std::numeric_limits::infinity() + #endif + ++#if _MSC_VER ++//suppress warnings regarding the use infinity in fp arithmetic ++#pragma warning(disable: 4056) ++#endif ++ ++ + namespace itpp + { + void SISO::find_half_const(int &select_half, itpp::vec &re_part, itpp::bmat &re_bin_part, itpp::vec &im_part, itpp::bmat &im_bin_part) +diff --git a/itpp/comm/siso_eq.cpp b/itpp/comm/siso_eq.cpp +index 856c01a..6553b33 100644 +--- a/itpp/comm/siso_eq.cpp ++++ b/itpp/comm/siso_eq.cpp +@@ -32,6 +32,12 @@ + #define INFINITY std::numeric_limits::infinity() + #endif + ++#if _MSC_VER ++//suppress warnings regarding the use infinity in fp arithmetic ++#pragma warning(disable: 4056) ++#pragma warning(disable: 4756) ++#endif ++ + namespace itpp + { + void SISO::gen_chtrellis(void) +diff --git a/itpp/comm/siso_mud.cpp b/itpp/comm/siso_mud.cpp +index 60aa6d3..a7ff735 100644 +--- a/itpp/comm/siso_mud.cpp ++++ b/itpp/comm/siso_mud.cpp +@@ -32,6 +32,13 @@ + #define INFINITY std::numeric_limits::infinity() + #endif + ++#if _MSC_VER ++//suppress warnings regarding the use infinity in fp arithmetic ++#pragma warning(disable: 4056) ++#pragma warning(disable: 4756) ++#endif ++ ++ + namespace itpp + { + void SISO::descrambler(itpp::vec &extrinsic_coded, itpp::vec &extrinsic_data, const itpp::vec &intrinsic_coded, const itpp::vec &apriori_data) +diff --git a/itpp/comm/siso_nsc.cpp b/itpp/comm/siso_nsc.cpp +index ca7d19a..12ca62a 100644 +--- a/itpp/comm/siso_nsc.cpp ++++ b/itpp/comm/siso_nsc.cpp +@@ -33,6 +33,12 @@ + #define INFINITY std::numeric_limits::infinity() + #endif + ++#if _MSC_VER ++//suppress warnings regarding the use infinity in fp arithmetic ++#pragma warning(disable: 4056) ++#pragma warning(disable: 4756) ++#endif ++ + namespace itpp + { + void SISO::gen_nsctrellis(void) +diff --git a/itpp/comm/siso_rsc.cpp b/itpp/comm/siso_rsc.cpp +index e5003c7..9e3eea1 100644 +--- a/itpp/comm/siso_rsc.cpp ++++ b/itpp/comm/siso_rsc.cpp +@@ -29,6 +29,13 @@ + #include + #include + #include ++ ++#if _MSC_VER ++//suppress warnings regarding the use infinity in fp arithmetic ++#pragma warning(disable: 4056) ++#pragma warning(disable: 4756) ++#endif ++ + #ifndef INFINITY + #define INFINITY std::numeric_limits::infinity() + #endif + + #Remove this patch if the source has fixed these issues. diff --git a/ports/itpp/portfile.cmake b/ports/itpp/portfile.cmake new file mode 100644 index 000000000..8e4f4121a --- /dev/null +++ b/ports/itpp/portfile.cmake @@ -0,0 +1,40 @@ +include(vcpkg_common_functions) + +set(ITPP_VERSION 4.3.1) +vcpkg_download_distfile(ARCHIVE + URLS "https://sourceforge.net/projects/itpp/files/itpp/4.3.1/itpp-${ITPP_VERSION}.tar.bz2" + FILENAME "itpp-${ITPP_VERSION}.tar.bz2" + SHA512 b46d048fa7f33e80d2291a5e38e205c159791ea200f92c70d69e8ad8447ac2f0c847fece566a99af739853a1643cb16e226b4200c8bf115417f324e6d38c66bd +) + +vcpkg_extract_source_archive_ex( + OUT_SOURCE_PATH SOURCE_PATH + ARCHIVE ${ARCHIVE} + REF ${ITPP_VERSION} + PATCHES + msvc2013.patch +) + +if(VCPKG_CMAKE_SYSTEM_NAME AND VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") +vcpkg_apply_patches( + SOURCE_PATH ${SOURCE_PATH} + PATCHES fix-uwp.patch +) +endif() + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA +) + +vcpkg_install_cmake() + +if(VCPKG_LIBRARY_LINKAGE STREQUAL static) + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) +endif() + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) +vcpkg_copy_pdbs() + +file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) \ No newline at end of file -- cgit v1.2.3 From 7f3e185316f2c96cfc3e1168e30c9f6662e8f130 Mon Sep 17 00:00:00 2001 From: NancyLi1013 Date: Wed, 29 May 2019 19:21:29 -0700 Subject: fix the port build failed on Linux(Ubuntu 18.04). --- ports/itpp/fix-linux.patch | 13 +++++++++++++ ports/itpp/portfile.cmake | 5 +++++ 2 files changed, 18 insertions(+) create mode 100644 ports/itpp/fix-linux.patch diff --git a/ports/itpp/fix-linux.patch b/ports/itpp/fix-linux.patch new file mode 100644 index 000000000..5e7bb64c0 --- /dev/null +++ b/ports/itpp/fix-linux.patch @@ -0,0 +1,13 @@ +diff --git a/itpp/base/random_dsfmt.h b/itpp/base/random_dsfmt.h +index ccbf182..a3d5472 100644 +--- a/itpp/base/random_dsfmt.h ++++ b/itpp/base/random_dsfmt.h +@@ -299,7 +299,7 @@ private: + */ + static void do_recursion(typename Context::w128_t *r, typename Context::w128_t *a, typename Context::w128_t *b, typename Context::w128_t *lung) { + #if defined(__SSE2__) +- const unsigned int SSE2_SHUFF = 0x1bU; ++#define SSE2_SHUFF 0x1bU + + __m128i x = a->si; + __m128i z = _mm_slli_epi64(x, SL1); diff --git a/ports/itpp/portfile.cmake b/ports/itpp/portfile.cmake index 8e4f4121a..2ea68da89 100644 --- a/ports/itpp/portfile.cmake +++ b/ports/itpp/portfile.cmake @@ -20,6 +20,11 @@ vcpkg_apply_patches( SOURCE_PATH ${SOURCE_PATH} PATCHES fix-uwp.patch ) +elseif(VCPKG_CMAKE_SYSTEM_NAME AND VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") +vcpkg_apply_patches( + SOURCE_PATH ${SOURCE_PATH} + PATCHES fix-linux.patch +) endif() vcpkg_configure_cmake( -- cgit v1.2.3 From af4671ea6472409f47568cd0459d145cafdbb6b4 Mon Sep 17 00:00:00 2001 From: grdowns Date: Tue, 4 Jun 2019 18:58:37 -0700 Subject: Replace use of hardcoded version; Formatting; Remove variable existence test --- ports/itpp/portfile.cmake | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/ports/itpp/portfile.cmake b/ports/itpp/portfile.cmake index 2ea68da89..10faf4882 100644 --- a/ports/itpp/portfile.cmake +++ b/ports/itpp/portfile.cmake @@ -2,7 +2,7 @@ include(vcpkg_common_functions) set(ITPP_VERSION 4.3.1) vcpkg_download_distfile(ARCHIVE - URLS "https://sourceforge.net/projects/itpp/files/itpp/4.3.1/itpp-${ITPP_VERSION}.tar.bz2" + URLS "https://sourceforge.net/projects/itpp/files/itpp/${ITPP_VERSION}/itpp-${ITPP_VERSION}.tar.bz2" FILENAME "itpp-${ITPP_VERSION}.tar.bz2" SHA512 b46d048fa7f33e80d2291a5e38e205c159791ea200f92c70d69e8ad8447ac2f0c847fece566a99af739853a1643cb16e226b4200c8bf115417f324e6d38c66bd ) @@ -15,16 +15,16 @@ vcpkg_extract_source_archive_ex( msvc2013.patch ) -if(VCPKG_CMAKE_SYSTEM_NAME AND VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") -vcpkg_apply_patches( - SOURCE_PATH ${SOURCE_PATH} - PATCHES fix-uwp.patch -) -elseif(VCPKG_CMAKE_SYSTEM_NAME AND VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") -vcpkg_apply_patches( - SOURCE_PATH ${SOURCE_PATH} - PATCHES fix-linux.patch -) +if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + vcpkg_apply_patches( + SOURCE_PATH ${SOURCE_PATH} + PATCHES fix-uwp.patch + ) +elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") + vcpkg_apply_patches( + SOURCE_PATH ${SOURCE_PATH} + PATCHES fix-linux.patch + ) endif() vcpkg_configure_cmake( @@ -42,4 +42,4 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) vcpkg_copy_pdbs() -file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) \ No newline at end of file +file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) -- cgit v1.2.3