From 2e110d26c621ba2536de7f47708bf1bf16f5159d Mon Sep 17 00:00:00 2001 From: Vitalii Koshura Date: Sat, 5 Sep 2020 05:14:17 +0200 Subject: [PATCH] [rappture] Add new port (#13321) --- ports/rappture/CMakeLists.txt | 110 ++++++++++++++++++++++++++++++++++ ports/rappture/CONTROL | 4 ++ ports/rappture/portfile.cmake | 36 +++++++++++ ports/rappture/rappture.patch | 89 +++++++++++++++++++++++++++ 4 files changed, 239 insertions(+) create mode 100644 ports/rappture/CMakeLists.txt create mode 100644 ports/rappture/CONTROL create mode 100644 ports/rappture/portfile.cmake create mode 100644 ports/rappture/rappture.patch diff --git a/ports/rappture/CMakeLists.txt b/ports/rappture/CMakeLists.txt new file mode 100644 index 00000000000..57d7739258e --- /dev/null +++ b/ports/rappture/CMakeLists.txt @@ -0,0 +1,110 @@ +cmake_minimum_required(VERSION 3.11) +cmake_policy(VERSION 3.11) + +project (rappture) + +set(SRC_RAPPTURE_CORE + src/core/scew_extras.c + src/core/RpBindingsDict.cc + src/core/RpBuffer.cc + src/core/RpBufferCInterface.cc + src/core/RpDXWriter.cc + src/core/RpDXWriterFInterface.cc + src/core/RpEncode.cc + src/core/RpEntityRef.cc + src/core/RpFortranCommon.cc + src/core/RpLibrary.cc + src/core/RpLibraryCInterface.cc + src/core/RpLibraryFInterface.cc + src/core/RpOutcome.cc + src/core/RpOutcomeCInterface.cc + src/core/RpPtr.cc + src/core/RpResult.cc + src/core/RpUnits.cc + src/core/RpUnitsCInterface.cc + src/core/RpUnitsFInterface.cc + src/core/RpUnitsStd.cc + src/core/RpUtils.cc + src/core/RpUtilsCInterface.cc + src/core/RpUtilsFInterface.cc + src/core/b64/cdecode.c + src/core/b64/cencode.c + src/core/scew/attribute.c + src/core/scew/element.c + src/core/scew/error.c + src/core/scew/parser.c + src/core/scew/str.c + src/core/scew/tree.c + src/core/scew/writer.c + src/core/scew/xattribute.c + src/core/scew/xerror.c + src/core/scew/xhandler.c + src/core/scew/xparser.c + src/core/scew/xprint.c +) + +set(HEADERS + src/core/rappture.h + src/core/RpBindingsDict.h + src/core/RpBuffer.h + src/core/RpBufferCHelper.h + src/core/RpBufferCInterface.h + src/core/RpDict.h + src/core/RpDXWriter.h + src/core/RpDXWriterFInterface.h + src/core/RpDXWriterFStubs.h + src/core/RpEncode.h + src/core/RpEntityRef.h + src/core/RpFortranCommon.h + src/core/RpLibrary.h + src/core/RpLibraryCInterface.h + src/core/RpLibraryFInterface.h + src/core/RpLibraryFStubs.h + src/core/RpOutcome.h + src/core/RpOutcomeCHelper.h + src/core/RpOutcomeCInterface.h + src/core/RpPtr.h + src/core/RpSimpleBuffer.h + src/core/RpUnits.h + src/core/RpUnitsCInterface.h + src/core/RpUnitsFInterface.h + src/core/RpUnitsFStubs.h + src/core/RpUnitsStd.h + src/core/RpUtils.h + src/core/RpUtilsCInterface.h + src/core/RpUtilsFInterface.h + src/core/RpUtilsFStubs.h + src/core/scew_extras.h + +) + +add_library(rappture ${SRC_RAPPTURE_CORE} ${HEADERS}) + +target_include_directories(rappture PUBLIC + $ + $ +) + +find_package(expat CONFIG REQUIRED) +find_package(ZLIB REQUIRED) + +target_compile_definitions(rappture PUBLIC + -D_CRT_SECURE_NO_WARNINGS + -DRAPPTURE_VERSION=1.9 + -DSVN_VERSION=6713 + -D_USE_MATH_DEFINES +) + +target_link_libraries(rappture PRIVATE + expat::expat + ZLIB::ZLIB +) + +install(TARGETS rappture EXPORT rappture-config + RUNTIME DESTINATION bin + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + ) + +install(FILES ${HEADERS} DESTINATION include/rappture) +install(EXPORT rappture-config NAMESPACE unofficial::rappture:: DESTINATION share/rappture) diff --git a/ports/rappture/CONTROL b/ports/rappture/CONTROL new file mode 100644 index 00000000000..611bda78a82 --- /dev/null +++ b/ports/rappture/CONTROL @@ -0,0 +1,4 @@ +Source: rappture +Version: 1.9 +Description: Rappture is a toolkit supporting Rapid application infrastructure, making it quick and easy to develop powerful scientific applications. +Build-Depends: expat, zlib diff --git a/ports/rappture/portfile.cmake b/ports/rappture/portfile.cmake new file mode 100644 index 00000000000..00bde7d3a97 --- /dev/null +++ b/ports/rappture/portfile.cmake @@ -0,0 +1,36 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_download_distfile(ARCHIVE + URLS "https://nanohub.org/app/site/downloads/rappture/rappture-src-20130903.tar.gz" + FILENAME "rappture-src-20130903.tar.gz" + SHA512 3b42569d056c5e80762eada3aff23d230d4ba8f6f0078de44d8571a713dde91e31e66fe3c37ceb66e934a1410b338fb481aeb5a29ef56b53da4ad2e8a2a2ae59 +) + +vcpkg_extract_source_archive_ex( + OUT_SOURCE_PATH SOURCE_PATH + ARCHIVE ${ARCHIVE} + PATCHES + "${CMAKE_CURRENT_LIST_DIR}/rappture.patch" +) + +file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA +) + +vcpkg_install_cmake() + +vcpkg_fixup_cmake_targets() + +vcpkg_copy_pdbs() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) + +file( + INSTALL ${SOURCE_PATH}/license.terms + DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} + RENAME copyright +) diff --git a/ports/rappture/rappture.patch b/ports/rappture/rappture.patch new file mode 100644 index 00000000000..d8c7ff6c8ca --- /dev/null +++ b/ports/rappture/rappture.patch @@ -0,0 +1,89 @@ +diff --git a/src/core/RpBuffer.cc b/src/core/RpBuffer.cc +index 6d439fe..ec45405 100644 +--- a/src/core/RpBuffer.cc ++++ b/src/core/RpBuffer.cc +@@ -16,7 +16,6 @@ + #include + #include + #include +-#include + #include + #include + #include "b64/encode.h" +@@ -24,6 +23,11 @@ + #include "RpBuffer.h" + #include "RpEncode.h" + ++#if defined(_MSC_VER) ++#include ++typedef SSIZE_T ssize_t; ++#endif ++ + namespace Rappture { + + /** +@@ -109,6 +113,9 @@ Buffer::operator+=(const Buffer& b) + Buffer::~Buffer() + {} + ++#ifndef _WIN32 ++# define _fileno fileno ++#endif + + bool + Buffer::load (Outcome &status, const char *path) +@@ -123,7 +130,7 @@ Buffer::load (Outcome &status, const char *path) + } + + struct stat stat; +- if (fstat(fileno(f), &stat) < 0) { ++ if (fstat(_fileno(f), &stat) < 0) { + status.addError("can't stat \"%s\": %s", path, strerror(errno)); + return false; + } +diff --git a/src/core/RpDXWriter.cc b/src/core/RpDXWriter.cc +index e4748b3..8990c0f 100644 +--- a/src/core/RpDXWriter.cc ++++ b/src/core/RpDXWriter.cc +@@ -18,6 +18,12 @@ + #include + #include + #include ++ ++#if defined(_MSC_VER) ++#include ++typedef SSIZE_T ssize_t; ++#endif ++ + using namespace Rappture; + + DXWriter::DXWriter() : +diff --git a/src/core/RpLibrary.cc b/src/core/RpLibrary.cc +index 2b9a540..4da787b 100644 +--- a/src/core/RpLibrary.cc ++++ b/src/core/RpLibrary.cc +@@ -11,7 +11,6 @@ + * ====================================================================== + */ + +-#include "config.h" + #include "scew/scew.h" + #include "scew_extras.h" + #include "RpLibrary.h" +diff --git a/src/core/scew/scew.h b/src/core/scew/scew.h +index 9741ed5..e335c2d 100644 +--- a/src/core/scew/scew.h ++++ b/src/core/scew/scew.h +@@ -61,12 +61,6 @@ + # define SCEW_LIB_D + # endif /* _DEBUG */ + +-# if defined(SCEW_LIB_U) || defined(SCEW_LIB_S) || defined(SCEW_LIB_D) +-# pragma comment( lib, "scew_" SCEW_LIB_U SCEW_LIB_S SCEW_LIB_D ".lib" ) +-# else +-# pragma comment( lib, "scew.lib" ) +-# endif +- + #endif /* _WIN32 */ + + #endif /* SCEW_H_ALEIX0211250134 */