From 6ea5808fd9c09f8aafc4824e555bb3a8dc3fdba9 Mon Sep 17 00:00:00 2001 From: myd7349 Date: Wed, 27 May 2020 13:36:51 +0800 Subject: [PATCH] [symengine] Add new port (#8752) * [symengine] Add new port * [symengine] Fix boost.math dependency boost.lexical_cast depends on boost.math. * [symengine] Fix linux build * [symengine] Modernize * [symengine] Update to 2019-11-30 * [symengine] Disable dynamic build on Windows [symengine] Modernize * [symengine] Update to 2020-05-12 * [symengine] Update to 2020-05-23 * [symengine] Let us give uwp a try * [symengine] Dynamic library support * [symengine] Update * [symengine] INTERFACE_INCLUDE_DIRECTORIES * [symengine] Add feature tcmalloc * [symengine] Update to 2020-05-25 --- ports/symengine/CONTROL | 30 +++++++++++++++++ ports/symengine/portfile.cmake | 61 ++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 ports/symengine/CONTROL create mode 100644 ports/symengine/portfile.cmake diff --git a/ports/symengine/CONTROL b/ports/symengine/CONTROL new file mode 100644 index 000000000..4e829ba5b --- /dev/null +++ b/ports/symengine/CONTROL @@ -0,0 +1,30 @@ +Source: symengine +Version: 2020-05-25 +Description: SymEngine is a fast symbolic manipulation library +Homepage: https://github.com/symengine/symengine +Build-Depends: boost-math, boost-random +Default-Features: integer-class-boostmp + +Feature: arb +Description: Build with arb +Build-Depends: arb + +Feature: flint +Description: Build with flint +Build-Depends: flint + +Feature: mpfr +Description: Build with mpfr +Build-Depends: mpfr + +Feature: integer-class-boostmp +Description: Use Boost.multiprecision integer class +Build-Depends: boost-multiprecision + +Feature: integer-class-flint +Description: Use flint integer class +Build-Depends: flint, gmp + +Feature: tcmalloc +Description: Build with tcmalloc +Build-Depends: gperftools diff --git a/ports/symengine/portfile.cmake b/ports/symengine/portfile.cmake new file mode 100644 index 000000000..d61271d68 --- /dev/null +++ b/ports/symengine/portfile.cmake @@ -0,0 +1,61 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO symengine/symengine + REF 4f669d5954977e86f4da0f53cb5110d2eb6320b6 + SHA512 091ebc83240d3823fb73e0f65f80732d2a85e55f19c8e1a3d1435f05cfa0d1b95d893e8a3c432e1698953a35c56a6af78044ee59db04f03706cf33e0798a02c7 + HEAD_REF master +) + +vcpkg_check_features( + OUT_FEATURE_OPTIONS FEATURE_OPTIONS + arb WITH_ARB + flint WITH_FLINT + mpfr WITH_MPFR + tcmalloc WITH_TCMALLOC +) + +if(integer-class-boostmp IN_LIST FEATURES) + set(INTEGER_CLASS boostmp) + + if(integer-class-flint IN_LIST FEATURES) + message(WARNING "Both boostmp and flint are given for integer class, will use boostmp only.") + endif() +elseif(integer-class-flint IN_LIST FEATURES) + set(INTEGER_CLASS flint) +endif() + +if(VCPKG_TARGET_IS_UWP) + set(VCPKG_C_FLAGS "${VCPKG_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE") + set(VCPKG_CXX_FLAGS "${VCPKG_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE") +endif() + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" MSVC_USE_MT) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DINTEGER_CLASS=${INTEGER_CLASS} + -DBUILD_BENCHMARKS=no + -DBUILD_TESTS=no + -DMSVC_WARNING_LEVEL=3 + -DMSVC_USE_MT=${MSVC_USE_MT} + -DWITH_SYMENGINE_RCP=yes + -DWITH_SYMENGINE_TEUCHOS=no + -DINTEGER_CLASS=${INTEGER_CLASS} + ${FEATURE_OPTIONS} +) + +vcpkg_install_cmake() + +if(EXISTS ${CURRENT_PACKAGES_DIR}/CMake) + vcpkg_fixup_cmake_targets(CONFIG_PATH CMake) +elseif(EXISTS ${CURRENT_PACKAGES_DIR}/lib/cmake/${PORT}) + vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/${PORT}) +endif() + +vcpkg_copy_pdbs() + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) + +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)