diff options
| -rw-r--r-- | ports/json-spirit/dll-wins.patch | 281 | ||||
| -rw-r--r-- | ports/json-spirit/portfile.cmake | 9 |
2 files changed, 287 insertions, 3 deletions
diff --git a/ports/json-spirit/dll-wins.patch b/ports/json-spirit/dll-wins.patch new file mode 100644 index 000000000..18c60e580 --- /dev/null +++ b/ports/json-spirit/dll-wins.patch @@ -0,0 +1,281 @@ +diff --git a/.travis.yml b/.travis.yml +index e5b56eb..87f2926 100644 +--- a/.travis.yml ++++ b/.travis.yml +@@ -14,4 +14,4 @@ script: + - cmake --build . --target all -- + + after_script: +- - ctest ++ - ctest +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fb24877..a10a49f 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -60,15 +60,17 @@ endif() +
+ message(${CMAKE_INSTALL_INCLUDEDIR})
+
+- ++
+ set(CPACK_PACKAGE_VERSION_MAJOR 4)
+ set(CPACK_PACKAGE_VERSION_MINOR 0)
+ set(CPACK_PACKAGE_VERSION_PATCH 8)
+ set(CPACK_PACKAGE_DESCRIPTION "A C++ JSON Parser/Generator Implemented with Boost Spirit")
+ include(CPack)
+- ++
++set(EXPORT_HEADERS )
+ INSTALL(
+ FILES
++ json_spirit/json_spirit_global.h
+ json_spirit/json_spirit.h
+ json_spirit/json_spirit_error_position.h
+ json_spirit/json_spirit_reader.h
+@@ -80,4 +82,4 @@ INSTALL( + json_spirit/json_spirit_writer_template.h
+ json_spirit/json_spirit_writer_options.h
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/json_spirit)
+- ++
+diff --git a/json_spirit/CMakeLists.txt b/json_spirit/CMakeLists.txt +index 23da64c..10d4e2b 100755 +--- a/json_spirit/CMakeLists.txt ++++ b/json_spirit/CMakeLists.txt +@@ -15,13 +15,19 @@ SET(JSON_SPIRIT_SRCS + FIND_PACKAGE(Boost 1.34 REQUIRED)
+ INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
+
+- ++
+ OPTION(BUILD_STATIC_LIBS "Build static libraries" OFF)
+
+ if(BUILD_STATIC_LIBS)
+ ADD_LIBRARY(json_spirit STATIC ${JSON_SPIRIT_SRCS})
+- install(TARGETS json_spirit ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
++ install(TARGETS json_spirit ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ else(BUILD_STATIC_LIBS)
+ ADD_LIBRARY(json_spirit SHARED ${JSON_SPIRIT_SRCS})
+- install(TARGETS json_spirit LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
++ if(WIN32)
++ install(TARGETS json_spirit RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
++ install(TARGETS json_spirit ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
++ else()
++ install(TARGETS json_spirit LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
++ endif()
++
+ endif(BUILD_STATIC_LIBS)
+diff --git a/json_spirit/json_spirit_global.h b/json_spirit/json_spirit_global.h +new file mode 100644 +index 0000000..07a7d2c +--- /dev/null ++++ b/json_spirit/json_spirit_global.h +@@ -0,0 +1,18 @@ ++#ifndef JSON_SPIRIT_GLOBAL_H ++#define JSON_SPIRIT_GLOBAL_H ++ ++#if (defined _WIN32) || (defined _WIN64) ++ #define DECL_EXPORT __declspec(dllexport) ++ #define DECL_IMPORT __declspec(dllimport) ++#else ++ #define DECL_EXPORT ++ #define DECL_IMPORT ++#endif ++ ++#if defined(json_spirit_EXPORTS) ++# define json_spirit_EXPORT DECL_EXPORT ++#else ++# define json_spirit_EXPORT DECL_IMPORT ++#endif ++ ++#endif +\ No newline at end of file +diff --git a/json_spirit/json_spirit_reader.h b/json_spirit/json_spirit_reader.h +index a6cfac7..50cc6f5 100755 +--- a/json_spirit/json_spirit_reader.h ++++ b/json_spirit/json_spirit_reader.h +@@ -11,6 +11,7 @@ + # pragma once
+ #endif
+
++#include "json_spirit_global.h"
+ #include "json_spirit_value.h"
+ #include "json_spirit_error_position.h"
+ #include <iostream>
+@@ -20,43 +21,43 @@ namespace json_spirit + // functions to reads a JSON values
+
+ #ifdef JSON_SPIRIT_VALUE_ENABLED
+- bool read( const std::string& s, Value& value );
+- bool read( std::istream& is, Value& value );
+- bool read( std::string::const_iterator& begin, std::string::const_iterator end, Value& value );
++ json_spirit_EXPORT bool read( const std::string& s, Value& value );
++ json_spirit_EXPORT bool read( std::istream& is, Value& value );
++ json_spirit_EXPORT bool read( std::string::const_iterator& begin, std::string::const_iterator end, Value& value );
+
+- void read_or_throw( const std::string& s, Value& value );
+- void read_or_throw( std::istream& is, Value& value );
+- void read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, Value& value );
++ json_spirit_EXPORT void read_or_throw( const std::string& s, Value& value );
++ json_spirit_EXPORT void read_or_throw( std::istream& is, Value& value );
++ json_spirit_EXPORT void read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, Value& value );
+ #endif
+
+ #if defined( JSON_SPIRIT_WVALUE_ENABLED ) && !defined( BOOST_NO_STD_WSTRING )
+- bool read( const std::wstring& s, wValue& value );
+- bool read( std::wistream& is, wValue& value );
+- bool read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value );
++ json_spirit_EXPORT bool read( const std::wstring& s, wValue& value );
++ json_spirit_EXPORT bool read( std::wistream& is, wValue& value );
++ json_spirit_EXPORT bool read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value );
+
+- void read_or_throw( const std::wstring& s, wValue& value );
+- void read_or_throw( std::wistream& is, wValue& value );
+- void read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value );
++ json_spirit_EXPORT void read_or_throw( const std::wstring& s, wValue& value );
++ json_spirit_EXPORT void read_or_throw( std::wistream& is, wValue& value );
++ json_spirit_EXPORT void read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value );
+ #endif
+
+ #ifdef JSON_SPIRIT_MVALUE_ENABLED
+- bool read( const std::string& s, mValue& value );
+- bool read( std::istream& is, mValue& value );
+- bool read( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value );
++ json_spirit_EXPORT bool read( const std::string& s, mValue& value );
++ json_spirit_EXPORT bool read( std::istream& is, mValue& value );
++ json_spirit_EXPORT bool read( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value );
+
+- void read_or_throw( const std::string& s, mValue& value );
+- void read_or_throw( std::istream& is, mValue& value );
+- void read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value );
++ json_spirit_EXPORT void read_or_throw( const std::string& s, mValue& value );
++ json_spirit_EXPORT void read_or_throw( std::istream& is, mValue& value );
++ json_spirit_EXPORT void read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value );
+ #endif
+
+ #if defined( JSON_SPIRIT_WMVALUE_ENABLED ) && !defined( BOOST_NO_STD_WSTRING )
+- bool read( const std::wstring& s, wmValue& value );
+- bool read( std::wistream& is, wmValue& value );
+- bool read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value );
++ json_spirit_EXPORT bool read( const std::wstring& s, wmValue& value );
++ json_spirit_EXPORT bool read( std::wistream& is, wmValue& value );
++ json_spirit_EXPORT bool read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value );
+
+- void read_or_throw( const std::wstring& s, wmValue& value );
+- void read_or_throw( std::wistream& is, wmValue& value );
+- void read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value );
++ json_spirit_EXPORT void read_or_throw( const std::wstring& s, wmValue& value );
++ json_spirit_EXPORT void read_or_throw( std::wistream& is, wmValue& value );
++ json_spirit_EXPORT void read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value );
+ #endif
+ }
+
+diff --git a/json_spirit/json_spirit_writer.h b/json_spirit/json_spirit_writer.h +index 2722780..f60dc07 100755 +--- a/json_spirit/json_spirit_writer.h ++++ b/json_spirit/json_spirit_writer.h +@@ -11,6 +11,7 @@ + # pragma once
+ #endif
+
++#include "json_spirit_global.h"
+ #include "json_spirit_value.h"
+ #include "json_spirit_writer_options.h"
+ #include <iostream>
+@@ -20,44 +21,44 @@ namespace json_spirit + // these functions to convert JSON Values to text
+
+ #ifdef JSON_SPIRIT_VALUE_ENABLED
+- void write( const Value& value, std::ostream& os, unsigned int options = 0 );
+- std::string write( const Value& value, unsigned int options = 0 );
++ json_spirit_EXPORT void write( const Value& value, std::ostream& os, unsigned int options = 0 );
++ json_spirit_EXPORT std::string write( const Value& value, unsigned int options = 0 );
+ #endif
+
+ #ifdef JSON_SPIRIT_MVALUE_ENABLED
+- void write( const mValue& value, std::ostream& os, unsigned int options = 0 );
+- std::string write( const mValue& value, unsigned int options = 0 );
++ json_spirit_EXPORT void write( const mValue& value, std::ostream& os, unsigned int options = 0 );
++ json_spirit_EXPORT std::string write( const mValue& value, unsigned int options = 0 );
+ #endif
+
+ #if defined( JSON_SPIRIT_WVALUE_ENABLED ) && !defined( BOOST_NO_STD_WSTRING )
+- void write( const wValue& value, std::wostream& os, unsigned int options = 0 );
+- std::wstring write( const wValue& value, unsigned int options = 0 );
++ json_spirit_EXPORT void write( const wValue& value, std::wostream& os, unsigned int options = 0 );
++ json_spirit_EXPORT std::wstring write( const wValue& value, unsigned int options = 0 );
+ #endif
+
+ #if defined( JSON_SPIRIT_WMVALUE_ENABLED ) && !defined( BOOST_NO_STD_WSTRING )
+- void write( const wmValue& value, std::wostream& os, unsigned int options = 0 );
+- std::wstring write( const wmValue& value, unsigned int options = 0 );
++ json_spirit_EXPORT void write( const wmValue& value, std::wostream& os, unsigned int options = 0 );
++ json_spirit_EXPORT std::wstring write( const wmValue& value, unsigned int options = 0 );
+ #endif
+
+ // these "formatted" versions of the "write" functions are the equivalent of the above functions
+ // with option "pretty_print"
+
+ #ifdef JSON_SPIRIT_VALUE_ENABLED
+- void write_formatted( const Value& value, std::ostream& os );
+- std::string write_formatted( const Value& value );
++ json_spirit_EXPORT void write_formatted( const Value& value, std::ostream& os );
++ json_spirit_EXPORT std::string write_formatted( const Value& value );
+ #endif
+ #ifdef JSON_SPIRIT_MVALUE_ENABLED
+- void write_formatted( const mValue& value, std::ostream& os );
+- std::string write_formatted( const mValue& value );
++ json_spirit_EXPORT void write_formatted( const mValue& value, std::ostream& os );
++ json_spirit_EXPORT std::string write_formatted( const mValue& value );
+ #endif
+
+ #if defined( JSON_SPIRIT_WVALUE_ENABLED ) && !defined( BOOST_NO_STD_WSTRING )
+- void write_formatted( const wValue& value, std::wostream& os );
+- std::wstring write_formatted( const wValue& value );
++ json_spirit_EXPORT void write_formatted( const wValue& value, std::wostream& os );
++ json_spirit_EXPORT std::wstring write_formatted( const wValue& value );
+ #endif
+ #if defined( JSON_SPIRIT_WMVALUE_ENABLED ) && !defined( BOOST_NO_STD_WSTRING )
+- void write_formatted( const wmValue& value, std::wostream& os );
+- std::wstring write_formatted( const wmValue& value );
++ json_spirit_EXPORT void write_formatted( const wmValue& value, std::wostream& os );
++ json_spirit_EXPORT std::wstring write_formatted( const wmValue& value );
+ #endif
+ }
+
+diff --git a/json_test/json_spirit_value_test.cpp b/json_test/json_spirit_value_test.cpp +index e055dae..faab022 100755 +--- a/json_test/json_spirit_value_test.cpp ++++ b/json_test/json_spirit_value_test.cpp +@@ -381,9 +381,15 @@ namespace + Container_constructor_runner() + { + vector< double > vd = list_of( 1.2 )( 1.3 ); test_container_constructor( vd ); ++ #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900) ++ vector< int > vi = { 1 }; test_container_constructor( vi ); ++ vi = { 1, 2 }; test_container_constructor( vi ); ++ vi = { 1, 2, 3 }; test_container_constructor( vi ); ++ #else + vector< int > vi = list_of( 1 ); test_container_constructor( vi ); + vi = list_of( 1 )( 2 ); test_container_constructor( vi ); + vi = list_of( 1 )( 2 )( 3 ); test_container_constructor( vi ); ++ #endif + list< double > ld = list_of( 1.2 )( 1.3 ); test_container_constructor( ld ); + list< int > li = list_of( 1 ); test_container_constructor( li ); + li = list_of( 1 )( 2 ); test_container_constructor( li ); +@@ -447,9 +453,15 @@ namespace + } + + vector< double > vd = list_of( 1.2 )( 1.3 ); test_variant_array_constructor< double > ( vd ); ++ #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900) ++ vector< int > vi = { 1 }; test_variant_array_constructor< int >( vi ); ++ vi = { 1, 2 }; test_variant_array_constructor< int >( vi ); ++ vi = { 1, 2, 3 }; test_variant_array_constructor< int >( vi ); ++ #else + vector< int > vi = list_of( 1 ); test_variant_array_constructor< int >( vi ); + vi = list_of( 1 )( 2 ); test_variant_array_constructor< int >( vi ); + vi = list_of( 1 )( 2 )( 3 ); test_variant_array_constructor< int >( vi ); ++ #endif + list< double > ld = list_of( 1.2 )( 1.3 ); test_variant_array_constructor< double >( ld ); + list< int > li = list_of( 1 ); test_variant_array_constructor< int >( li ); + li = list_of( 1 )( 2 ); test_variant_array_constructor< int >( li ); diff --git a/ports/json-spirit/portfile.cmake b/ports/json-spirit/portfile.cmake index d33737d79..05be540b3 100644 --- a/ports/json-spirit/portfile.cmake +++ b/ports/json-spirit/portfile.cmake @@ -1,7 +1,5 @@ include(vcpkg_common_functions)
-vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
-
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO png85/json_spirit
@@ -10,10 +8,15 @@ vcpkg_from_github( HEAD_REF master
)
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/dll-wins.patch
+)
+
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
- OPTIONS -DBUILD_STATIC_LIBS=on -DJSON_SPIRIT_DEMOS=off -DJSON_SPIRIT_TESTS=off)
+ OPTIONS -DBUILD_STATIC_LIBS=off -DJSON_SPIRIT_DEMOS=off -DJSON_SPIRIT_TESTS=off)
vcpkg_install_cmake()
|
