summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Sun2018-07-31 08:42:47 -0400
committerAndrew Sun2018-07-31 08:42:47 -0400
commita4941e5139672861421b7694312ce74a5ae079da (patch)
treea27f76fed877babd47b1d45c9c939b3895519ea0
downloadaur-a4941e5139672861421b7694312ce74a5ae079da.tar.gz
add mingw-w64-crypto++ (version 7.0.0)
-rw-r--r--.SRCINFO26
-rw-r--r--PKGBUILD69
-rw-r--r--cryptopp-5.6.5-cmake.patch445
-rw-r--r--fix-test-linking.patch18
-rw-r--r--libcrypto++.pc12
5 files changed, 570 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..7af538fa74f6
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,26 @@
+pkgbase = mingw-w64-crypto++
+ pkgdesc = A free C++ class library of cryptographic schemes (mingw-w64)
+ pkgver = 7.0.0
+ pkgrel = 1
+ url = https://www.cryptopp.com/
+ arch = any
+ license = custom
+ makedepends = mingw-w64-cmake
+ makedepends = unzip
+ makedepends = dos2unix
+ depends = mingw-w64-crt
+ noextract = cryptopp700.zip
+ options = !strip
+ options = !buildflags
+ options = staticlibs
+ source = https://www.cryptopp.com/cryptopp700.zip
+ source = libcrypto++.pc
+ source = cryptopp-5.6.5-cmake.patch
+ source = fix-test-linking.patch
+ sha256sums = a4bc939910edd3d29fb819a6fc0dfdc293f686fa62326f61c56d72d0a366ceb0
+ sha256sums = baea2372d9f490fa79d0431cd4f8eea515501b5553c6b4ed4a1cbbf3879ca5f3
+ sha256sums = 0486178005a7fe8a0659f59d3c4fafafa39d870f6e9f812bcf9131ce4758c914
+ sha256sums = 99e5bb3ba211c6155a19a170b7e498b904bf821f7d2aa46be06d08a87846fa17
+
+pkgname = mingw-w64-crypto++
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..2965367002f6
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,69 @@
+# Maintainer: Andrew Sun <adsun701@gmail.com>
+
+pkgname=mingw-w64-crypto++
+_pkgname=crypto++
+pkgver=7.0.0
+_srcver=${pkgver//./}
+pkgrel=1
+pkgdesc="A free C++ class library of cryptographic schemes (mingw-w64)"
+arch=('any')
+url="https://www.cryptopp.com/"
+license=('custom')
+depends=('mingw-w64-crt')
+makedepends=('mingw-w64-cmake' 'unzip' 'dos2unix')
+options=('!strip' '!buildflags' 'staticlibs')
+source=("https://www.cryptopp.com/cryptopp${pkgver//./}.zip"
+ libcrypto++.pc
+ cryptopp-5.6.5-cmake.patch
+ fix-test-linking.patch)
+sha256sums=('a4bc939910edd3d29fb819a6fc0dfdc293f686fa62326f61c56d72d0a366ceb0'
+ 'baea2372d9f490fa79d0431cd4f8eea515501b5553c6b4ed4a1cbbf3879ca5f3'
+ '0486178005a7fe8a0659f59d3c4fafafa39d870f6e9f812bcf9131ce4758c914'
+ '99e5bb3ba211c6155a19a170b7e498b904bf821f7d2aa46be06d08a87846fa17')
+noextract=(cryptopp${pkgver//./}.zip)
+
+_architectures="i686-w64-mingw32 x86_64-w64-mingw32"
+
+
+prepare() {
+ cd ${srcdir}
+ unzip cryptopp${pkgver//./}.zip -d ${_pkgname}
+
+ cd ${_pkgname}
+ find . -type f -exec dos2unix {} \;
+ sed -i -e 's/^CXXFLAGS/#CXXFLAGS/' GNUmakefile
+ patch -p1 -i ${srcdir}/cryptopp-5.6.5-cmake.patch
+ patch -p1 -i ${srcdir}/fix-test-linking.patch
+}
+
+build() {
+ cd "${srcdir}/${_pkgname}/"
+ for _arch in ${_architectures}; do
+ mkdir -p build-${_arch} && pushd build-${_arch}
+ ${_arch}-cmake \
+ -DDISABLE_SSSE3=ON \
+ ..
+ make
+ popd
+ done
+}
+
+package() {
+ for _arch in ${_architectures}; do
+ cd "${srcdir}/${_pkgname}/build-${_arch}"
+ make DESTDIR="${pkgdir}" install
+
+ # pkgconfig file
+ mkdir -p "${pkgdir}/usr/${_arch}/lib/pkgconfig"
+ install -m644 "${srcdir}/libcrypto++.pc" "${pkgdir}/usr/${_arch}/lib/pkgconfig/libcrypto++.pc"
+ sed -s "s|/usr|/usr/${_arch}|g" -i "${pkgdir}/usr/${_arch}/lib/pkgconfig/libcrypto++.pc"
+
+ # Remove cryptest.exe and test files, only needed for check() and bloats the package
+ # because cryptest.exe is linked statically.
+ rm "${pkgdir}/usr/${_arch}/bin/cryptest.exe"
+ rm -r "${pkgdir}/usr/${_arch}/share/cryptopp/"
+
+ ${_arch}-strip --strip-unneeded "$pkgdir"/usr/${_arch}/bin/*.dll
+ ${_arch}-strip -g "$pkgdir"/usr/${_arch}/lib/*.a
+ done
+}
diff --git a/cryptopp-5.6.5-cmake.patch b/cryptopp-5.6.5-cmake.patch
new file mode 100644
index 000000000000..178499d18b6f
--- /dev/null
+++ b/cryptopp-5.6.5-cmake.patch
@@ -0,0 +1,445 @@
+--- /dev/null 2017-01-31 14:21:37.000000000 +0300
++++ b/CMakeLists.txt 2017-01-31 14:20:54.392223500 +0300
+@@ -0,0 +1,438 @@
++# Please ensure your changes or patch meets minimum requirements.
++# The minimum requirements are 2.8.5. They roughly equate to Ubuntu 12.04 LTS
++# Please do not check in something for 2.8.12 or 3.5.0. To test your changes,
++# please set up a Ubuntu 12.04 LTS system. Then, manually install Cmake 2.8.5
++# from http://cmake.org/Wiki/CMake_Released_Versions.
++
++cmake_minimum_required(VERSION 2.8.5 FATAL_ERROR)
++
++project(cryptopp)
++
++# Make RelWithDebInfo the default (it does e.g. add '-O2 -g -DNDEBUG' for GNU)
++# If not in multi-configuration environments, no explicit build type or CXX
++# flags are set by the user and if we are the root CMakeLists.txt file.
++if (NOT CMAKE_CONFIGURATION_TYPES AND
++ NOT CMAKE_NO_BUILD_TYPE AND
++ NOT CMAKE_BUILD_TYPE AND
++ NOT CMAKE_CXX_FLAGS AND
++ CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
++ set(CMAKE_BUILD_TYPE RelWithDebInfo)
++endif()
++
++set(cryptopp_VERSION_MAJOR 5)
++set(cryptopp_VERSION_MINOR 7)
++set(cryptopp_VERSION_PATCH 0)
++
++include(GNUInstallDirs)
++include(TestBigEndian)
++include(CheckCXXCompilerFlag)
++
++#============================================================================
++# Settable options
++#============================================================================
++
++option(BUILD_STATIC "Build static library" ON)
++option(BUILD_SHARED "Build shared library" ON)
++option(BUILD_TESTING "Build library tests" ON)
++option(BUILD_DOCUMENTATION "Use Doxygen to create the HTML based API documentation" OFF)
++option(USE_INTERMEDIATE_OBJECTS_TARGET "Use a common intermediate objects target for the static and shared library targets" ON)
++
++if(CMAKE_VERSION VERSION_LESS 2.8.8 AND USE_INTERMEDIATE_OBJECTS_TARGET)
++ message(STATUS "Forcing USE_INTERMEDIATE_OBJECTS_TARGET to OFF - requires CMake >= 2.8.8")
++ set(USE_INTERMEDIATE_OBJECTS_TARGET OFF CACHE BOOL "Use a common intermediate objects target for the static and shared library targets" FORCE)
++endif()
++
++option(DISABLE_ASM "Disable ASM" OFF)
++option(DISABLE_SSSE3 "Disable SSSE3" OFF)
++option(DISABLE_AESNI "Disable AES-NI" OFF)
++option(DISABLE_CXXFLAGS_OPTIMIZATIONS "Disable CXXFLAGS optimizations" OFF)
++set(CRYPTOPP_DATA_DIR "" CACHE PATH "Crypto++ test data directory")
++
++#============================================================================
++# Internal compiler options
++#============================================================================
++
++# Stop hiding the damn output...
++# set(CMAKE_VERBOSE_MAKEFILE on)
++
++# Always 1 ahead in Master. Also see http://groups.google.com/forum/#!topic/cryptopp-users/SFhqLDTQPG4
++set(LIB_VER ${cryptopp_VERSION_MAJOR}${cryptopp_VERSION_MINOR}${cryptopp_VERSION_PATCH})
++
++# Only set when cross-compiling, http://www.vtk.org/Wiki/CMake_Cross_Compiling
++if (NOT (CMAKE_SYSTEM_VERSION AND CMAKE_SYSTEM_PROCESSOR))
++ set(CRYPTOPP_CROSS_COMPILE 1)
++else()
++ set(CRYPTOPP_CROSS_COMPILE 0)
++endif()
++
++# Don't use RPATH's. The resulting binary could fail a security audit.
++if (NOT CMAKE_VERSION VERSION_LESS 2.8.12)
++ set(CMAKE_MACOSX_RPATH 0)
++endif()
++
++if(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
++ add_definitions(-wd68 -wd186 -wd279 -wd327 -wd161 -wd3180)
++endif()
++
++# Endianness
++TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
++if(IS_BIG_ENDIAN)
++ add_definitions(-DIS_BIG_ENDIAN)
++endif()
++
++if(DISABLE_ASM)
++ add_definitions(-DCRYPTOPP_DISABLE_ASM)
++endif()
++if(DISABLE_SSSE3)
++ add_definitions(-DCRYPTOPP_DISABLE_SSSE3)
++endif()
++if(DISABLE_AESNI)
++ add_definitions(-DCRYPTOPP_DISABLE_AESNI)
++endif()
++if(NOT CRYPTOPP_DATA_DIR STREQUAL "")
++ add_definitions(-DCRYPTOPP_DATA_DIR="${CRYPTOPP_DATA_DIR}")
++endif()
++
++# We need the output 'uname -s' for Unix and Linux system detection
++if (NOT CRYPTOPP_CROSS_COMPILE)
++ set (UNAME_CMD "uname")
++ set (UNAME_ARG "-s")
++ execute_process(COMMAND ${UNAME_CMD} ${UNAME_ARG}
++ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
++ RESULT_VARIABLE UNAME_RESULT
++ OUTPUT_VARIABLE UNAME_SYSTEM)
++ string(REGEX REPLACE "\n$" "" UNAME_SYSTEM "${UNAME_SYSTEM}")
++endif()
++
++# We need the output 'uname -m' for Unix and Linux platform detection
++if (NOT CRYPTOPP_CROSS_COMPILE)
++ set (UNAME_CMD "uname")
++ set (UNAME_ARG "-m")
++ execute_process(COMMAND ${UNAME_CMD} ${UNAME_ARG}
++ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
++ RESULT_VARIABLE UNAME_RESULT
++ OUTPUT_VARIABLE UNAME_MACHINE)
++ string(REGEX REPLACE "\n$" "" UNAME_MACHINE "${UNAME_MACHINE}")
++endif()
++
++if(WINDOWS_STORE OR WINDOWS_PHONE)
++ if("${CMAKE_SYSTEM_VERSION}" MATCHES "10\\.0.*")
++ SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D\"_WIN32_WINNT=0x0A00\"" )
++ endif()
++ SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FI\"winapifamily.h\"" )
++endif()
++
++# Enable PIC for all targets except Windows and 32-bit x86.
++# Avoid on 32-bit x86 due to register pressures.
++if ((NOT CRYPTOPP_CROSS_COMPILE) AND (NOT (WINDOWS OR WINDOWS_STORE OR WINDOWS_PHONE)))
++ # Use Regex; match i386, i486, i586 and i686
++ if (NOT (${UNAME_MACHINE} MATCHES "i.86"))
++ SET(CMAKE_POSITION_INDEPENDENT_CODE 1)
++ endif()
++endif()
++
++# -march=native for GCC, Clang and ICC in any version that does support it.
++if ((NOT DISABLE_CXXFLAGS_OPTIMIZATIONS) AND (NOT CRYPTOPP_CROSS_COMPILE) AND (CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU|Intel"))
++ CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_OPT_ARCH_NATIVE_SUPPORTED)
++ if (COMPILER_OPT_ARCH_NATIVE_SUPPORTED AND NOT CMAKE_CXX_FLAGS MATCHES "-march=")
++ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
++ endif()
++endif()
++
++# Solaris specific
++if ((NOT CRYPTOPP_CROSS_COMPILE) AND "${UNAME_SYSTEM}" STREQUAL "SunOS")
++ if (NOT DISABLE_CXXFLAGS_OPTIMIZATIONS)
++ # SunCC needs -native
++ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "SunPro")
++ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -native")
++ endif()
++
++ # Determine 32-bit vs 64-bit
++ set (ISA_CMD "isainfo")
++ set (ISA_ARG "-b")
++ execute_process(COMMAND ${ISA_CMD} ${ISA_ARG}
++ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
++ RESULT_VARIABLE ISA_RESULT
++ OUTPUT_VARIABLE ISA_INFO)
++ string(REGEX REPLACE "\n$" "" ISA_INFO "${ISA_INFO}")
++
++ # Set 64-bit or 32-bit
++ if ("${ISA_INFO}" STREQUAL "64")
++ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
++ else()
++ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
++ endif()
++ endif()
++
++ # GCC needs to enable use of '/'
++ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
++ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,--divide")
++ endif()
++
++ # SunCC needs -native
++ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "SunPro")
++ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -template=no%extdef")
++ endif()
++endif()
++
++# Link is driven through the compiler, but CXXFLAGS are not used. Also see
++# http://public.kitware.com/pipermail/cmake/2003-June/003967.html
++if (NOT (WINDOWS OR WINDOWS_STORE OR WINDOWS_PHONE))
++ SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_FLAGS}")
++endif()
++
++#============================================================================
++# Sources & headers
++#============================================================================
++
++# Library headers
++file(GLOB cryptopp_HEADERS *.h)
++
++# Test sources. You can use the GNUmakefile to generate the list: `make sources`.
++file(GLOB cryptopp_SOURCES_TEST test.cpp bench1.cpp bench2.cpp validat0.cpp validat1.cpp validat2.cpp validat3.cpp validat4.cpp adhoc.cpp datatest.cpp regtest.cpp fipsalgt.cpp dlltest.cpp fipstest.cpp)
++
++# Library sources. You can use the GNUmakefile to generate the list: `make sources`.
++file(GLOB cryptopp_SOURCES *.cpp)
++list(REMOVE_ITEM cryptopp_SOURCES
++ ${CMAKE_CURRENT_SOURCE_DIR}/cryptlib.cpp
++ ${CMAKE_CURRENT_SOURCE_DIR}/cpu.cpp
++ ${CMAKE_CURRENT_SOURCE_DIR}/integer.cpp
++ ${CMAKE_CURRENT_SOURCE_DIR}/pch.cpp
++ ${CMAKE_CURRENT_SOURCE_DIR}/simple.cpp
++ ${CMAKE_CURRENT_SOURCE_DIR}/winpipes.cpp
++ ${CMAKE_CURRENT_SOURCE_DIR}/cryptlib_bds.cpp
++ ${cryptopp_SOURCES_TEST}
++ )
++set(cryptopp_SOURCES
++ ${CMAKE_CURRENT_SOURCE_DIR}/cryptlib.cpp
++ ${CMAKE_CURRENT_SOURCE_DIR}/cpu.cpp
++ ${CMAKE_CURRENT_SOURCE_DIR}/integer.cpp
++ ${cryptopp_SOURCES}
++ )
++
++if(MINGW OR WIN32)
++ list(APPEND cryptopp_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/winpipes.cpp)
++endif()
++
++if(MSVC AND NOT DISABLE_ASM)
++ if(${CMAKE_GENERATOR} MATCHES ".*ARM")
++ message(STATUS "Disabling ASM because ARM is specified as target platform.")
++ else()
++ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
++ list(APPEND cryptopp_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/x64dll.asm)
++ list(APPEND cryptopp_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/x64masm.asm)
++ set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/x64dll.asm PROPERTIES COMPILE_FLAGS "/D_M_X64")
++ set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/x64masm.asm PROPERTIES COMPILE_FLAGS "/D_M_X64")
++ set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/rdrand.asm PROPERTIES COMPILE_FLAGS "/D_M_X64")
++ else()
++ set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/x64dll.asm PROPERTIES COMPILE_FLAGS "/D_M_X86 /safeseh")
++ set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/x64masm.asm PROPERTIES COMPILE_FLAGS "/D_M_X86 /safeseh")
++ set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/rdrand.asm PROPERTIES COMPILE_FLAGS "/D_M_X86 /safeseh")
++ endif()
++ list(APPEND cryptopp_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/rdrand.asm)
++ enable_language(ASM_MASM)
++ endif()
++endif()
++
++#============================================================================
++# Compile targets
++#============================================================================
++
++# Set global includes BEFORE adding any targets for legacy CMake versions
++if(CMAKE_VERSION VERSION_LESS 2.8.12)
++ include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
++endif()
++
++if(USE_INTERMEDIATE_OBJECTS_TARGET)
++ add_library(cryptopp-object OBJECT ${cryptopp_SOURCES})
++endif()
++
++if (BUILD_STATIC)
++ if(USE_INTERMEDIATE_OBJECTS_TARGET)
++ add_library(cryptopp-static STATIC $<TARGET_OBJECTS:cryptopp-object>)
++ else()
++ add_library(cryptopp-static STATIC ${cryptopp_SOURCES})
++ endif()
++
++ #target_compile_definitions(cryptopp-static PUBLIC CRYPTOPP_IMPORTS)
++ if (NOT CMAKE_VERSION VERSION_LESS 2.8.12)
++ target_include_directories(cryptopp-static PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:include/cryptopp>)
++ endif()
++endif()
++
++if (BUILD_SHARED)
++ if(USE_INTERMEDIATE_OBJECTS_TARGET)
++ add_library(cryptopp-shared SHARED $<TARGET_OBJECTS:cryptopp-object>)
++ else()
++ add_library(cryptopp-shared SHARED ${cryptopp_SOURCES})
++ endif()
++
++ #target_compile_definitions(cryptopp-shared PUBLIC CRYPTOPP_EXPORTS)
++ if (NOT CMAKE_VERSION VERSION_LESS 2.8.12)
++ target_include_directories(cryptopp-shared PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:include/cryptopp>)
++ endif()
++endif()
++
++# Set filenames for targets to be "cryptopp"
++if(NOT MSVC)
++ set(COMPAT_VERSION ${cryptopp_VERSION_MAJOR}.${cryptopp_VERSION_MINOR})
++
++ if (BUILD_STATIC)
++ set_target_properties(cryptopp-static
++ PROPERTIES
++ OUTPUT_NAME cryptopp)
++ endif()
++ if (BUILD_SHARED)
++ set_target_properties(cryptopp-shared
++ PROPERTIES
++ SOVERSION ${COMPAT_VERSION}
++ OUTPUT_NAME cryptopp)
++ endif()
++endif()
++
++# Targets, compatible with Crypto++ GNUMakefile
++if (BUILD_STATIC)
++ add_custom_target(static)
++ add_dependencies(static cryptopp-static)
++endif()
++if (BUILD_SHARED)
++ add_custom_target(dynamic)
++ add_dependencies(dynamic cryptopp-shared)
++endif()
++
++#============================================================================
++# Third-party libraries
++#============================================================================
++
++if(WIN32)
++ if (BUILD_STATIC)
++ target_link_libraries(cryptopp-static ws2_32)
++ endif()
++ if (BUILD_SHARED)
++ target_link_libraries(cryptopp-shared ws2_32)
++ endif()
++endif()
++
++# This may need to be expanded to "Solaris"
++if ("${UNAME_SYSTEM}" STREQUAL "SunOS")
++ if (BUILD_STATIC)
++ target_link_libraries(cryptopp-static nsl socket)
++ endif()
++ if (BUILD_SHARED)
++ target_link_libraries(cryptopp-shared nsl socket)
++ endif()
++endif()
++
++find_package(Threads)
++if (BUILD_STATIC)
++ target_link_libraries(cryptopp-static ${CMAKE_THREAD_LIBS_INIT})
++endif()
++if (BUILD_SHARED)
++ target_link_libraries(cryptopp-shared ${CMAKE_THREAD_LIBS_INIT})
++endif()
++
++#============================================================================
++# Tests
++#============================================================================
++
++enable_testing()
++if(BUILD_TESTING)
++ add_executable(cryptest ${cryptopp_SOURCES_TEST})
++ target_link_libraries(cryptest cryptopp-static)
++
++ # Setting "cryptest" binary name to "cryptest.exe"
++ if(NOT WIN32)
++ set_target_properties(cryptest PROPERTIES OUTPUT_NAME cryptest.exe)
++ endif()
++ if(NOT TARGET cryptest.exe)
++ add_custom_target(cryptest.exe)
++ add_dependencies(cryptest.exe cryptest)
++ endif()
++
++ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/TestData DESTINATION ${PROJECT_BINARY_DIR})
++ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/TestVectors DESTINATION ${PROJECT_BINARY_DIR})
++
++ add_test(NAME build_cryptest COMMAND "${CMAKE_COMMAND}" --build ${CMAKE_BINARY_DIR} --target cryptest)
++ add_test(NAME cryptest COMMAND $<TARGET_FILE:cryptest> v)
++ set_tests_properties(cryptest PROPERTIES DEPENDS build_cryptest)
++endif()
++
++#============================================================================
++# Doxygen documentation
++#============================================================================
++
++if(BUILD_DOCUMENTATION)
++ find_package(Doxygen REQUIRED)
++
++ set(in_source_DOCS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/html-docs")
++ set(out_source_DOCS_DIR "${PROJECT_BINARY_DIR}/html-docs")
++
++ add_custom_target(docs ALL
++ COMMAND ${DOXYGEN_EXECUTABLE} Doxyfile -d CRYPTOPP_DOXYGEN_PROCESSING
++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
++ SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile
++ )
++
++ if(NOT ${in_source_DOCS_DIR} STREQUAL ${out_source_DOCS_DIR})
++ add_custom_command(
++ TARGET docs POST_BUILD
++ COMMAND ${CMAKE_COMMAND} -E copy_directory "${in_source_DOCS_DIR}" "${out_source_DOCS_DIR}"
++ COMMAND ${CMAKE_COMMAND} -E remove_directory "${in_source_DOCS_DIR}"
++ )
++ endif()
++endif()
++
++#============================================================================
++# Install
++#============================================================================
++
++set(export_name "cryptopp-targets")
++
++# Runtime package
++if (BUILD_SHARED)
++ install(
++ TARGETS cryptopp-shared
++ EXPORT ${export_name}
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ )
++endif()
++
++# Development package
++if (BUILD_STATIC)
++ install(TARGETS cryptopp-static EXPORT ${export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR})
++endif()
++install(FILES ${cryptopp_HEADERS} DESTINATION include/cryptopp)
++
++# CMake Package
++if(NOT CMAKE_VERSION VERSION_LESS 2.8.8) # CMakePackageConfigHelpers is supported from 2.8.8
++ include(CMakePackageConfigHelpers)
++ write_basic_package_version_file("${PROJECT_BINARY_DIR}/cryptopp-config-version.cmake" VERSION ${cryptopp_VERSION_MAJOR}.${cryptopp_VERSION_MINOR}.${cryptopp_VERSION_PATCH} COMPATIBILITY SameMajorVersion)
++ install(FILES cryptopp-config.cmake ${PROJECT_BINARY_DIR}/cryptopp-config-version.cmake DESTINATION "lib/cmake/cryptopp")
++ install(EXPORT ${export_name} DESTINATION "lib/cmake/cryptopp")
++endif()
++
++# Tests
++if(BUILD_TESTING)
++ install(TARGETS cryptest DESTINATION ${CMAKE_INSTALL_BINDIR})
++ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/TestData DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cryptopp)
++ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/TestVectors DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cryptopp)
++endif()
++
++# Documentation
++if(BUILD_DOCUMENTATION)
++ install(DIRECTORY "${out_source_DOCS_DIR}" DESTINATION ${CMAKE_INSTALL_DOCDIR})
++endif()
++
++# Print a configuration summary. We want CXX and CXXFLAGS, but they are not includd in ALL.
++if (NOT CMAKE_VERSION VERSION_LESS 3.0.2)
++ include(FeatureSummary)
++ message(STATUS "Compiler: ${CXX}")
++ message(STATUS "Flags: ${CMAKE_CXX_FLAGS}")
++ message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
++ feature_summary(WHAT ALL
++ VAR cryptoppFeatures)
++ message(STATUS "${cryptoppFeatures}")
++endif()
+--- /dev/null 2017-01-31 14:30:09.000000000 +0300
++++ b/cryptopp-config.cmake 2017-01-31 14:30:01.415511400 +0300
+@@ -0,0 +1 @@
++include("${CMAKE_CURRENT_LIST_DIR}/cryptopp-targets.cmake")
diff --git a/fix-test-linking.patch b/fix-test-linking.patch
new file mode 100644
index 000000000000..d854978efceb
--- /dev/null
+++ b/fix-test-linking.patch
@@ -0,0 +1,18 @@
+--- a/winpipes.h 2015-07-24 12:17:47.681944900 +0300
++++ b/winpipes.h 2015-07-24 12:17:58.280460900 +0300
+@@ -116,7 +116,6 @@
+ NetworkSource::GetWaitObjects;
+
+ private:
+- HANDLE GetHandle() const {return WindowsHandle::GetHandle();}
+ NetworkReceiver & AccessReceiver() {return *this;}
+ };
+
+@@ -131,7 +130,6 @@
+ NetworkSink::GetWaitObjects;
+
+ private:
+- HANDLE GetHandle() const {return WindowsHandle::GetHandle();}
+ NetworkSender & AccessSender() {return *this;}
+ };
+
diff --git a/libcrypto++.pc b/libcrypto++.pc
new file mode 100644
index 000000000000..de20f88115e7
--- /dev/null
+++ b/libcrypto++.pc
@@ -0,0 +1,12 @@
+# Written by Alexander Rødseth <rodseth@gmail.com>
+
+prefix=/usr
+libdir=${prefix}/lib
+includedir=${prefix}/include
+
+Name: libcrypto++
+Description: Description: Crypto++ cryptographic library
+URL: https://cryptopp.com/
+Version: 7.0.0
+Libs: -L${libdir} -lcryptopp
+Cflags: -I${includedir} \ No newline at end of file