diff options
| author | zi-m <53815290+zi-m@users.noreply.github.com> | 2019-08-23 18:20:10 +0200 |
|---|---|---|
| committer | Curtis J Bezault <curtbezault@gmail.com> | 2019-08-23 09:20:10 -0700 |
| commit | bc5a1bf1a00d875da0440bd5dc5f80e19919688e (patch) | |
| tree | 0b07c4cf563eb141ec532a6fe4af42ed76463ea8 | |
| parent | 55f825071351985f37cac07d97e2ab2c7d3811bd (diff) | |
| download | vcpkg-bc5a1bf1a00d875da0440bd5dc5f80e19919688e.tar.gz vcpkg-bc5a1bf1a00d875da0440bd5dc5f80e19919688e.zip | |
[quickfix] Add new port (#7796)
* quickfix
* simplify patch and add _CRT_SECURE_NO_WARNINGS
* fix replace and add more _CRT_SECURE_NO_WARNINGS
* add _CRT_NONSTDC_NO_DEPRECATE
* win GetCurrentProcessId instead of getpid
* add _WINSOCK_DEPRECATED_NO_WARNINGS
* DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS for _M_ARM and _M_ARM64
| -rw-r--r-- | ports/quickfix/00001-fix-build.patch | 98 | ||||
| -rw-r--r-- | ports/quickfix/CONTROL | 5 | ||||
| -rw-r--r-- | ports/quickfix/portfile.cmake | 50 | ||||
| -rw-r--r-- | ports/quickfix/usage | 4 |
4 files changed, 157 insertions, 0 deletions
diff --git a/ports/quickfix/00001-fix-build.patch b/ports/quickfix/00001-fix-build.patch new file mode 100644 index 000000000..aa14d7b5c --- /dev/null +++ b/ports/quickfix/00001-fix-build.patch @@ -0,0 +1,98 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 48908ead..5022a019 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -96,9 +96,12 @@ add_subdirectory(UnitTest++) + endif() + + add_subdirectory(src) +-add_subdirectory(examples) ++#add_subdirectory(examples) + if( WIN32) +-add_subdirectory(test) ++#add_subdirectory(test) ++target_compile_definitions(TestUnitTest++ PRIVATE _CRT_SECURE_NO_WARNINGS) ++target_compile_definitions(UnitTest++ PRIVATE _CRT_SECURE_NO_WARNINGS) ++target_compile_definitions(ut PRIVATE _WINSOCK_DEPRECATED_NO_WARNINGS) + endif() + + install(DIRECTORY ${CMAKE_SOURCE_DIR}/spec/ DESTINATION share/quickfix +diff --git a/src/C++/CMakeLists.txt b/src/C++/CMakeLists.txt +index 07774c97..27692631 100644 +--- a/src/C++/CMakeLists.txt ++++ b/src/C++/CMakeLists.txt +@@ -1,3 +1,4 @@ ++project(quickfix) + set(quickfix_VERSION_MAJOR 16) + set(quickfix_VERSION_MINOR 0) + set(quickfix_VERSION_PATCH 1) +@@ -64,19 +65,22 @@ endif() + + if (WIN32) + add_library(${PROJECT_NAME} STATIC ${quickfix_SOURCES}) +- set_target_properties (${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX d) + target_link_libraries(${PROJECT_NAME} ${OPENSSL_LIBRARIES} ${MYSQL_CLIENT_LIBS} ${PostgreSQL_LIBRARIES} ws2_32) ++ target_compile_definitions(${PROJECT_NAME} PRIVATE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_DEPRECATE) + else() +- add_library(${PROJECT_NAME} SHARED ${quickfix_SOURCES}) ++ add_library(${PROJECT_NAME} STATIC ${quickfix_SOURCES}) + target_link_libraries(${PROJECT_NAME} ${OPENSSL_LIBRARIES} ${MYSQL_CLIENT_LIBS} ${PostgreSQL_LIBRARIES} pthread) + endif() + + target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/C++) ++target_include_directories(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>) + + set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${quickfix_VERSION} SOVERSION ${quickfix_VERSION_MAJOR} ) ++target_compile_definitions(${PROJECT_NAME} PUBLIC HAVE_STD_UNIQUE_PTR HAVE_STD_SHARED_PTR HAVE_SSL=1) + +-install(TARGETS ${PROJECT_NAME} DESTINATION lib) ++install(TARGETS ${PROJECT_NAME} EXPORT quickfix-config DESTINATION lib) + install(DIRECTORY ${CMAKE_SOURCE_DIR}/src/C++/ DESTINATION include/quickfix + FILES_MATCHING PATTERN "*.h" + PATTERN double-conversion EXCLUDE + PATTERN test EXCLUDE) ++install(EXPORT quickfix-config DESTINATION share/cmake/quickfix) +diff --git a/src/C++/Utility.h b/src/C++/Utility.h +index 0aa2cd3e..2829e110 100644 +--- a/src/C++/Utility.h ++++ b/src/C++/Utility.h +@@ -242,4 +242,10 @@ using std::strtol; + using std::strerror; + #endif + ++#ifdef __cpp_noexcept_function_type ++#define QUICKFIX_THROW(...) noexcept(false) ++#else ++#define QUICKFIX_THROW(...) throw(__VA_ARGS__) ++#endif ++ + #endif +diff --git a/src/C++/UtilitySSL.cpp b/src/C++/UtilitySSL.cpp +index a01606ac..aee41bbf 100644 +--- a/src/C++/UtilitySSL.cpp ++++ b/src/C++/UtilitySSL.cpp +@@ -498,7 +498,11 @@ static void ssl_rand_seed(void) + /* + * seed in the current process id (usually just 4 bytes) + */ ++#ifdef _MSC_VER ++ pid = GetCurrentProcessId(); ++#else + pid = getpid(); ++#endif + l = sizeof(pid); + RAND_seed((unsigned char *)&pid, l); + /* +diff --git a/src/C++/double-conversion/utils.h b/src/C++/double-conversion/utils.h +index aef2f166..779b8ab7 100644 +--- a/src/C++/double-conversion/utils.h ++++ b/src/C++/double-conversion/utils.h +@@ -61,7 +61,7 @@ + // disabled.) + // On Linux,x86 89255e-22 != Div_double(89255.0/1e22) + #if defined(_M_X64) || defined(__x86_64__) || \ +- defined(__ARMEL__) || defined(__avr32__) || \ ++ defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \ + defined(__hppa__) || defined(__ia64__) || \ + defined(__mips__) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ diff --git a/ports/quickfix/CONTROL b/ports/quickfix/CONTROL new file mode 100644 index 000000000..b0d8e7d6b --- /dev/null +++ b/ports/quickfix/CONTROL @@ -0,0 +1,5 @@ +Source: quickfix +Version: 1.15.1 +Build-Depends: openssl +Homepage: https://github.com/quickfix/quickfix +Description: QuickFIX is a free and open source implementation of the FIX protocol. diff --git a/ports/quickfix/portfile.cmake b/ports/quickfix/portfile.cmake new file mode 100644 index 000000000..e560bed94 --- /dev/null +++ b/ports/quickfix/portfile.cmake @@ -0,0 +1,50 @@ +include(vcpkg_common_functions) + +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO quickfix/quickfix + REF v1.15.1 + SHA512 6c3dc53f25932c9b7516ab9228f634511ae0f399719f87f0ec2b38c380c0a7d1c808f0f9a14a70a063e1956118550d1121222283a9139f23cd4f8f038f595f70 + HEAD_REF master + PATCHES 00001-fix-build.patch +) + +file(GLOB_RECURSE SRC_FILES RELATIVE ${SOURCE_PATH} + "${SOURCE_PATH}/src/*.cpp" + "${SOURCE_PATH}/src/*.h" +) + +list(REMOVE_ITEM SRC_FILES "src/C++/Utility.h") +list(REMOVE_ITEM SRC_FILES "src/C++/pugixml.cpp") + +foreach(SRC_FILE IN LISTS SRC_FILES) + file(READ "${SOURCE_PATH}/${SRC_FILE}" _contents) + string(REPLACE "throw(" "QUICKFIX_THROW(" _contents "${_contents}") + string(REPLACE "throw (" "QUICKFIX_THROW(" _contents "${_contents}") + file(WRITE "${SOURCE_PATH}/${SRC_FILE}" "${_contents}") +endforeach() + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + OPTIONS + -DHAVE_EMX=OFF + -DHAVE_MYSQL=OFF + -DHAVE_POSTGRESQL=OFF + -DHAVE_PYTHON=OFF + -DHAVE_PYTHON2=OFF + -DHAVE_PYTHON3=OFF + -DHAVE_SSL=ON + PREFER_NINJA +) + +vcpkg_install_cmake() +vcpkg_copy_pdbs() +vcpkg_fixup_cmake_targets(CONFIG_PATH share/cmake/quickfix) + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) + +configure_file(${SOURCE_PATH}/LICENSE ${CURRENT_PACKAGES_DIR}/share/quickfix/copyright COPYONLY) +file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/quickfix) diff --git a/ports/quickfix/usage b/ports/quickfix/usage new file mode 100644 index 000000000..2bed80460 --- /dev/null +++ b/ports/quickfix/usage @@ -0,0 +1,4 @@ +The package quickfix provides CMake targets: + + find_package(quickfix CONFIG REQUIRED) + target_link_libraries(main PRIVATE quickfix) |
