aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2018-07-17 16:07:52 -0700
committerRobert Schumacher <roschuma@microsoft.com>2018-07-17 16:09:12 -0700
commitb4422a1b7ec3c0728108972c07f4daeaa2c9b2a8 (patch)
treee65ae338893770d97bf6fb2c8230cd47c3cf2cd1
parentc2f96eb79ac11be000b7b26134ff89946bfa6458 (diff)
downloadvcpkg-b4422a1b7ec3c0728108972c07f4daeaa2c9b2a8.tar.gz
vcpkg-b4422a1b7ec3c0728108972c07f4daeaa2c9b2a8.zip
[openssl] Split openssl into multiple ports per platform
-rw-r--r--ports/openssl-unix/CMakeLists.txt (renamed from ports/openssl/CMakeLists.txt)2
-rw-r--r--ports/openssl-unix/CONTROL3
-rw-r--r--ports/openssl-unix/ConfigureIncludeQuotesFix.patch (renamed from ports/openssl/ConfigureIncludeQuotesFix.patch)0
-rw-r--r--ports/openssl-unix/EmbedSymbolsInStaticLibsZ7.patch (renamed from ports/openssl/EmbedSymbolsInStaticLibsZ7.patch)0
-rw-r--r--ports/openssl-unix/STRINGIFYPatch.patch (renamed from ports/openssl/STRINGIFYPatch.patch)0
-rw-r--r--ports/openssl-unix/portfile.cmake (renamed from ports/openssl/portfile-nonwindows.cmake)98
-rw-r--r--ports/openssl-unix/remove-deps.cmake (renamed from ports/openssl/remove-deps.cmake)0
-rw-r--r--ports/openssl-unix/usage (renamed from ports/openssl/usage)0
-rw-r--r--ports/openssl-unix/vcpkg-cmake-wrapper.cmake (renamed from ports/openssl/vcpkg-cmake-wrapper.cmake)0
-rw-r--r--ports/openssl-uwp/CONTROL3
-rw-r--r--ports/openssl-uwp/fix-uwp-rs4.patch (renamed from ports/openssl/fix-uwp-rs4.patch)0
-rw-r--r--ports/openssl-uwp/make-openssl.bat (renamed from ports/openssl/make-openssl.bat)0
-rw-r--r--ports/openssl-uwp/portfile.cmake (renamed from ports/openssl/portfile-uwp.cmake)11
-rw-r--r--ports/openssl-uwp/usage4
-rw-r--r--ports/openssl-windows/CONTROL3
-rw-r--r--ports/openssl-windows/ConfigureIncludeQuotesFix.patch13
-rw-r--r--ports/openssl-windows/EmbedSymbolsInStaticLibsZ7.patch25
-rw-r--r--ports/openssl-windows/STRINGIFYPatch.patch23
-rw-r--r--ports/openssl-windows/portfile.cmake157
-rw-r--r--ports/openssl-windows/usage4
-rw-r--r--ports/openssl/CONTROL3
-rw-r--r--ports/openssl/LICENSE127
-rw-r--r--ports/openssl/portfile.cmake165
23 files changed, 302 insertions, 339 deletions
diff --git a/ports/openssl/CMakeLists.txt b/ports/openssl-unix/CMakeLists.txt
index a2d863452..f9c6e7e7c 100644
--- a/ports/openssl/CMakeLists.txt
+++ b/ports/openssl-unix/CMakeLists.txt
@@ -45,6 +45,8 @@ if(CMAKE_SYSROOT AND CMAKE_C_COMPILE_OPTIONS_SYSROOT)
set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_SYSROOT}${CMAKE_SYSROOT}")
endif()
+string(REGEX REPLACE "^ " "" CFLAGS "${CFLAGS}")
+
file(TO_NATIVE_PATH ENV_PATH "${COMPILER_ROOT};$ENV{PATH}")
set(ENV{ANDROID_DEV} "${CMAKE_SYSROOT}/usr")
set(ENV{CC} "${CMAKE_C_COMPILER}")
diff --git a/ports/openssl-unix/CONTROL b/ports/openssl-unix/CONTROL
new file mode 100644
index 000000000..fb2909bec
--- /dev/null
+++ b/ports/openssl-unix/CONTROL
@@ -0,0 +1,3 @@
+Source: openssl-unix
+Version: 1.0.2o
+Description: OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.
diff --git a/ports/openssl/ConfigureIncludeQuotesFix.patch b/ports/openssl-unix/ConfigureIncludeQuotesFix.patch
index 09494f565..09494f565 100644
--- a/ports/openssl/ConfigureIncludeQuotesFix.patch
+++ b/ports/openssl-unix/ConfigureIncludeQuotesFix.patch
diff --git a/ports/openssl/EmbedSymbolsInStaticLibsZ7.patch b/ports/openssl-unix/EmbedSymbolsInStaticLibsZ7.patch
index 1a8de2c4b..1a8de2c4b 100644
--- a/ports/openssl/EmbedSymbolsInStaticLibsZ7.patch
+++ b/ports/openssl-unix/EmbedSymbolsInStaticLibsZ7.patch
diff --git a/ports/openssl/STRINGIFYPatch.patch b/ports/openssl-unix/STRINGIFYPatch.patch
index dd8f9c297..dd8f9c297 100644
--- a/ports/openssl/STRINGIFYPatch.patch
+++ b/ports/openssl-unix/STRINGIFYPatch.patch
diff --git a/ports/openssl/portfile-nonwindows.cmake b/ports/openssl-unix/portfile.cmake
index c324b132a..49561ccde 100644
--- a/ports/openssl/portfile-nonwindows.cmake
+++ b/ports/openssl-unix/portfile.cmake
@@ -1,37 +1,61 @@
-if(CMAKE_HOST_WIN32)
- vcpkg_acquire_msys(MSYS_ROOT PACKAGES make)
- set(BASH ${MSYS_ROOT}/usr/bin/bash.exe)
- set(MAKE ${MSYS_ROOT}/usr/bin/make.exe)
-else()
- find_program(MAKE make)
- if(NOT MAKE)
- message(FATAL_ERROR "Could not find make. Please install it through your package manager.")
- endif()
-endif()
-
-vcpkg_configure_cmake(
- SOURCE_PATH ${CMAKE_CURRENT_LIST_DIR}
- PREFER_NINJA
- OPTIONS
- -DSOURCE_PATH=${MASTER_COPY_SOURCE_PATH}
- -DPERL=${PERL}
- -DMAKE=${MAKE}
- OPTIONS_RELEASE
- -DINSTALL_HEADERS=ON
-)
-
-vcpkg_install_cmake()
-
-file(GLOB HEADERS ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/*/include/openssl/*.h)
-set(RESOLVED_HEADERS)
-foreach(HEADER ${HEADERS})
- get_filename_component(X "${HEADER}" REALPATH)
- list(APPEND RESOLVED_HEADERS "${X}")
-endforeach()
-
-file(INSTALL ${RESOLVED_HEADERS} DESTINATION ${CURRENT_PACKAGES_DIR}/include/openssl)
-file(INSTALL ${MASTER_COPY_SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openssl RENAME copyright)
-
-if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
- file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/openssl)
-endif()
+if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR NOT VCPKG_CMAKE_SYSTEM_NAME)
+ message(FATAL_ERROR "This port is only for openssl on Unix-like systems")
+endif()
+
+include(vcpkg_common_functions)
+set(OPENSSL_VERSION 1.0.2o)
+set(MASTER_COPY_SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/openssl-${OPENSSL_VERSION})
+
+vcpkg_find_acquire_program(PERL)
+
+vcpkg_download_distfile(OPENSSL_SOURCE_ARCHIVE
+ URLS "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz" "https://www.openssl.org/source/old/1.0.2/openssl-${OPENSSL_VERSION}.tar.gz"
+ FILENAME "openssl-${OPENSSL_VERSION}.tar.gz"
+ SHA512 8a2c93657c85143e76785bb32ee836908c31a6f5f8db993fa9777acba6079e630cdddd03edbad65d1587199fc13a1507789eacf038b56eb99139c2091d9df7fd
+)
+
+vcpkg_extract_source_archive(${OPENSSL_SOURCE_ARCHIVE})
+vcpkg_apply_patches(
+ SOURCE_PATH ${MASTER_COPY_SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/ConfigureIncludeQuotesFix.patch
+ ${CMAKE_CURRENT_LIST_DIR}/STRINGIFYPatch.patch
+ ${CMAKE_CURRENT_LIST_DIR}/EmbedSymbolsInStaticLibsZ7.patch
+)
+
+if(CMAKE_HOST_WIN32)
+ vcpkg_acquire_msys(MSYS_ROOT PACKAGES make)
+ set(BASH ${MSYS_ROOT}/usr/bin/bash.exe)
+ set(MAKE ${MSYS_ROOT}/usr/bin/make.exe)
+else()
+ find_program(MAKE make)
+ if(NOT MAKE)
+ message(FATAL_ERROR "Could not find make. Please install it through your package manager.")
+ endif()
+endif()
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${CMAKE_CURRENT_LIST_DIR}
+ PREFER_NINJA
+ OPTIONS
+ -DSOURCE_PATH=${MASTER_COPY_SOURCE_PATH}
+ -DPERL=${PERL}
+ -DMAKE=${MAKE}
+ OPTIONS_RELEASE
+ -DINSTALL_HEADERS=ON
+)
+
+vcpkg_install_cmake()
+
+file(GLOB HEADERS ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/*/include/openssl/*.h)
+set(RESOLVED_HEADERS)
+foreach(HEADER ${HEADERS})
+ get_filename_component(X "${HEADER}" REALPATH)
+ list(APPEND RESOLVED_HEADERS "${X}")
+endforeach()
+
+file(INSTALL ${RESOLVED_HEADERS} DESTINATION ${CURRENT_PACKAGES_DIR}/include/openssl)
+file(INSTALL ${MASTER_COPY_SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openssl-unix RENAME copyright)
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/openssl)
+endif()
diff --git a/ports/openssl/remove-deps.cmake b/ports/openssl-unix/remove-deps.cmake
index a57c70fe9..a57c70fe9 100644
--- a/ports/openssl/remove-deps.cmake
+++ b/ports/openssl-unix/remove-deps.cmake
diff --git a/ports/openssl/usage b/ports/openssl-unix/usage
index f535cb6a4..f535cb6a4 100644
--- a/ports/openssl/usage
+++ b/ports/openssl-unix/usage
diff --git a/ports/openssl/vcpkg-cmake-wrapper.cmake b/ports/openssl-unix/vcpkg-cmake-wrapper.cmake
index 82313bdab..82313bdab 100644
--- a/ports/openssl/vcpkg-cmake-wrapper.cmake
+++ b/ports/openssl-unix/vcpkg-cmake-wrapper.cmake
diff --git a/ports/openssl-uwp/CONTROL b/ports/openssl-uwp/CONTROL
new file mode 100644
index 000000000..4b4871f3c
--- /dev/null
+++ b/ports/openssl-uwp/CONTROL
@@ -0,0 +1,3 @@
+Source: openssl-uwp
+Version: 1.0.2l-winrt
+Description: OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.
diff --git a/ports/openssl/fix-uwp-rs4.patch b/ports/openssl-uwp/fix-uwp-rs4.patch
index d5a33909e..d5a33909e 100644
--- a/ports/openssl/fix-uwp-rs4.patch
+++ b/ports/openssl-uwp/fix-uwp-rs4.patch
diff --git a/ports/openssl/make-openssl.bat b/ports/openssl-uwp/make-openssl.bat
index 6f6166a24..6f6166a24 100644
--- a/ports/openssl/make-openssl.bat
+++ b/ports/openssl-uwp/make-openssl.bat
diff --git a/ports/openssl/portfile-uwp.cmake b/ports/openssl-uwp/portfile.cmake
index 6aef52695..167d98658 100644
--- a/ports/openssl/portfile-uwp.cmake
+++ b/ports/openssl-uwp/portfile.cmake
@@ -1,11 +1,3 @@
-# Common Ambient Variables:
-# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
-# TARGET_TRIPLET is the current triplet (x86-windows, etc)
-# PORT is the current port name (zlib, etc)
-# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
-# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
-#
-
if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
set(VCPKG_LIBRARY_LINKAGE dynamic)
message("Static building not supported yet")
@@ -94,6 +86,5 @@ file(INSTALL
${SOURCE_PATH}/out32dll/ssleay32.lib
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
-file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openssl RENAME copyright)
-
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
diff --git a/ports/openssl-uwp/usage b/ports/openssl-uwp/usage
new file mode 100644
index 000000000..f535cb6a4
--- /dev/null
+++ b/ports/openssl-uwp/usage
@@ -0,0 +1,4 @@
+The package openssl is compatible with built-in CMake targets:
+
+ find_package(OpenSSL REQUIRED)
+ target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto)
diff --git a/ports/openssl-windows/CONTROL b/ports/openssl-windows/CONTROL
new file mode 100644
index 000000000..a9c10c583
--- /dev/null
+++ b/ports/openssl-windows/CONTROL
@@ -0,0 +1,3 @@
+Source: openssl-windows
+Version: 1.0.2o
+Description: OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.
diff --git a/ports/openssl-windows/ConfigureIncludeQuotesFix.patch b/ports/openssl-windows/ConfigureIncludeQuotesFix.patch
new file mode 100644
index 000000000..09494f565
--- /dev/null
+++ b/ports/openssl-windows/ConfigureIncludeQuotesFix.patch
@@ -0,0 +1,13 @@
+diff --git a/Configure b/Configure
+index c98107a..77ad9d3 100644
+--- a/Configure
++++ b/Configure
+@@ -972,7 +972,7 @@ PROCESS_ARGS:
+ }
+ elsif (/^--with-zlib-include=(.*)$/)
+ {
+- $withargs{"zlib-include"}="-I$1";
++ $withargs{"zlib-include"}="-I\"$1\"";
+ }
+ elsif (/^--with-fipsdir=(.*)$/)
+ {
diff --git a/ports/openssl-windows/EmbedSymbolsInStaticLibsZ7.patch b/ports/openssl-windows/EmbedSymbolsInStaticLibsZ7.patch
new file mode 100644
index 000000000..1a8de2c4b
--- /dev/null
+++ b/ports/openssl-windows/EmbedSymbolsInStaticLibsZ7.patch
@@ -0,0 +1,25 @@
+diff --git a/util/pl/VC-32.pl b/util/pl/VC-32.pl
+index dba96cb..5722f6e 100644
+--- a/util/pl/VC-32.pl
++++ b/util/pl/VC-32.pl
+@@ -154,9 +154,17 @@ else
+ $cflags=$opt_cflags.$base_cflags;
+ }
+
+-# generate symbols.pdb unconditionally
+-$app_cflag.=" /Zi /Fd\$(TMP_D)/app";
+-$lib_cflag.=" /Zi /Fd\$(TMP_D)/lib";
++# generate symbols.pdb when building dlls and embed symbols when building static libs
++if ($shlib)
++ {
++ $app_cflag.=" /Zi /Fd\$(TMP_D)/app.pdb";
++ $lib_cflag.=" /Zi /Fd\$(TMP_D)/lib.pdb";
++ }
++else
++ {
++ $app_cflag.=" /Z7";
++ $lib_cflag.=" /Z7";
++ }
+ $lflags.=" /debug";
+
+ $obj='.obj';
diff --git a/ports/openssl-windows/STRINGIFYPatch.patch b/ports/openssl-windows/STRINGIFYPatch.patch
new file mode 100644
index 000000000..dd8f9c297
--- /dev/null
+++ b/ports/openssl-windows/STRINGIFYPatch.patch
@@ -0,0 +1,23 @@
+diff --git a/crypto/cversion.c b/crypto/cversion.c
+index bfff699..17b7912 100644
+--- a/crypto/cversion.c
++++ b/crypto/cversion.c
+@@ -56,6 +56,9 @@
+ * [including the GNU Public Licence.]
+ */
+
++#define STRINGIFY2(x) #x
++#define STRINGIFY(x) STRINGIFY2(x)
++
+ #include "cryptlib.h"
+
+ #ifndef NO_WINDOWS_BRAINDEATH
+@@ -79,7 +82,7 @@ const char *SSLeay_version(int t)
+ }
+ if (t == SSLEAY_CFLAGS) {
+ #ifdef CFLAGS
+- return (CFLAGS);
++ return STRINGIFY(CFLAGS);
+ #else
+ return ("compiler: information not available");
+ #endif
diff --git a/ports/openssl-windows/portfile.cmake b/ports/openssl-windows/portfile.cmake
new file mode 100644
index 000000000..22a6a2a28
--- /dev/null
+++ b/ports/openssl-windows/portfile.cmake
@@ -0,0 +1,157 @@
+if(VCPKG_CMAKE_SYSTEM_NAME)
+ message(FATAL_ERROR "This port is only for building openssl on Windows Desktop")
+endif()
+
+include(vcpkg_common_functions)
+set(OPENSSL_VERSION 1.0.2o)
+set(MASTER_COPY_SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/openssl-${OPENSSL_VERSION})
+
+vcpkg_find_acquire_program(PERL)
+
+get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
+set(ENV{PATH} "$ENV{PATH};${PERL_EXE_PATH}")
+
+vcpkg_download_distfile(OPENSSL_SOURCE_ARCHIVE
+ URLS "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz" "https://www.openssl.org/source/old/1.0.2/openssl-${OPENSSL_VERSION}.tar.gz"
+ FILENAME "openssl-${OPENSSL_VERSION}.tar.gz"
+ SHA512 8a2c93657c85143e76785bb32ee836908c31a6f5f8db993fa9777acba6079e630cdddd03edbad65d1587199fc13a1507789eacf038b56eb99139c2091d9df7fd
+)
+
+vcpkg_extract_source_archive(${OPENSSL_SOURCE_ARCHIVE})
+vcpkg_apply_patches(
+ SOURCE_PATH ${MASTER_COPY_SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/ConfigureIncludeQuotesFix.patch
+ ${CMAKE_CURRENT_LIST_DIR}/STRINGIFYPatch.patch
+ ${CMAKE_CURRENT_LIST_DIR}/EmbedSymbolsInStaticLibsZ7.patch
+)
+
+vcpkg_find_acquire_program(NASM)
+get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY)
+set(ENV{PATH} "${NASM_EXE_PATH};$ENV{PATH}")
+
+vcpkg_find_acquire_program(JOM)
+
+set(CONFIGURE_COMMAND ${PERL} Configure
+ enable-static-engine
+ enable-capieng
+ no-ssl2
+ -utf-8
+)
+
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ set(OPENSSL_ARCH VC-WIN32)
+ set(OPENSSL_DO "ms\\do_nasm.bat")
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(OPENSSL_ARCH VC-WIN64A)
+ set(OPENSSL_DO "ms\\do_win64a.bat")
+else()
+ message(FATAL_ERROR "Unsupported target architecture: ${VCPKG_TARGET_ARCHITECTURE}")
+endif()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
+ set(OPENSSL_MAKEFILE "ms\\ntdll.mak")
+else()
+ set(OPENSSL_MAKEFILE "ms\\nt.mak")
+endif()
+
+file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
+
+
+file(COPY ${MASTER_COPY_SOURCE_PATH} DESTINATION ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
+set(SOURCE_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/openssl-${OPENSSL_VERSION})
+set(OPENSSLDIR_RELEASE ${CURRENT_PACKAGES_DIR})
+
+message(STATUS "Configure ${TARGET_TRIPLET}-rel")
+vcpkg_execute_required_process(
+ COMMAND ${CONFIGURE_COMMAND} ${OPENSSL_ARCH} "--prefix=${OPENSSLDIR_RELEASE}" "--openssldir=${OPENSSLDIR_RELEASE}" -FS
+ WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
+ LOGNAME configure-perl-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-rel
+)
+vcpkg_execute_required_process(
+ COMMAND ${OPENSSL_DO}
+ WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
+ LOGNAME configure-do-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-rel
+)
+message(STATUS "Configure ${TARGET_TRIPLET}-rel done")
+
+message(STATUS "Build ${TARGET_TRIPLET}-rel")
+# Openssl's buildsystem has a race condition which will cause JOM to fail at some point.
+# This is ok; we just do as much work as we can in parallel first, then follow up with a single-threaded build.
+make_directory(${SOURCE_PATH_RELEASE}/inc32/openssl)
+execute_process(
+ COMMAND ${JOM} -k -j $ENV{NUMBER_OF_PROCESSORS} -f ${OPENSSL_MAKEFILE}
+ WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
+ OUTPUT_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-rel-0-out.log
+ ERROR_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-rel-0-err.log
+)
+vcpkg_execute_required_process(
+ COMMAND nmake -f ${OPENSSL_MAKEFILE} install
+ WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
+ LOGNAME build-${TARGET_TRIPLET}-rel-1)
+
+message(STATUS "Build ${TARGET_TRIPLET}-rel done")
+
+
+message(STATUS "Configure ${TARGET_TRIPLET}-dbg")
+file(COPY ${MASTER_COPY_SOURCE_PATH} DESTINATION ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
+set(SOURCE_PATH_DEBUG ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/openssl-${OPENSSL_VERSION})
+set(OPENSSLDIR_DEBUG ${CURRENT_PACKAGES_DIR}/debug)
+
+vcpkg_execute_required_process(
+ COMMAND ${CONFIGURE_COMMAND} debug-${OPENSSL_ARCH} "--prefix=${OPENSSLDIR_DEBUG}" "--openssldir=${OPENSSLDIR_DEBUG}" -FS
+ WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
+ LOGNAME configure-perl-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-dbg
+)
+vcpkg_execute_required_process(
+ COMMAND ${OPENSSL_DO}
+ WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
+ LOGNAME configure-do-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-dbg
+)
+message(STATUS "Configure ${TARGET_TRIPLET}-dbg done")
+
+message(STATUS "Build ${TARGET_TRIPLET}-dbg")
+make_directory(${SOURCE_PATH_DEBUG}/inc32/openssl)
+execute_process(
+ COMMAND ${JOM} -k -j $ENV{NUMBER_OF_PROCESSORS} -f ${OPENSSL_MAKEFILE}
+ WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
+ OUTPUT_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-dbg-0-out.log
+ ERROR_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-dbg-0-err.log
+)
+vcpkg_execute_required_process(
+ COMMAND nmake -f ${OPENSSL_MAKEFILE} install
+ WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
+ LOGNAME build-${TARGET_TRIPLET}-dbg-1)
+
+message(STATUS "Build ${TARGET_TRIPLET}-dbg done")
+
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+file(REMOVE
+ ${CURRENT_PACKAGES_DIR}/debug/bin/openssl.exe
+ ${CURRENT_PACKAGES_DIR}/debug/openssl.cnf
+ ${CURRENT_PACKAGES_DIR}/openssl.cnf
+)
+
+file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/openssl/)
+file(RENAME ${CURRENT_PACKAGES_DIR}/bin/openssl.exe ${CURRENT_PACKAGES_DIR}/tools/openssl/openssl.exe)
+
+vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/openssl)
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ # They should be empty, only the exes deleted above were in these directories
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin/)
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin/)
+endif()
+
+file(READ "${CURRENT_PACKAGES_DIR}/include/openssl/dtls1.h" _contents)
+string(REPLACE "<winsock.h>" "<winsock2.h>" _contents "${_contents}")
+file(WRITE "${CURRENT_PACKAGES_DIR}/include/openssl/dtls1.h" "${_contents}")
+
+file(READ "${CURRENT_PACKAGES_DIR}/include/openssl/rand.h" _contents)
+string(REPLACE "# include <windows.h>" "#ifndef _WINSOCKAPI_\n#define _WINSOCKAPI_\n#endif\n# include <windows.h>" _contents "${_contents}")
+file(WRITE "${CURRENT_PACKAGES_DIR}/include/openssl/rand.h" "${_contents}")
+
+vcpkg_copy_pdbs()
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
+file(INSTALL ${MASTER_COPY_SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/openssl-windows/usage b/ports/openssl-windows/usage
new file mode 100644
index 000000000..f535cb6a4
--- /dev/null
+++ b/ports/openssl-windows/usage
@@ -0,0 +1,4 @@
+The package openssl is compatible with built-in CMake targets:
+
+ find_package(OpenSSL REQUIRED)
+ target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto)
diff --git a/ports/openssl/CONTROL b/ports/openssl/CONTROL
index ed9ccf48b..4d81a1962 100644
--- a/ports/openssl/CONTROL
+++ b/ports/openssl/CONTROL
@@ -1,3 +1,4 @@
Source: openssl
-Version: 1.0.2o-3
+Version: 0
Description: OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.
+Build-Depends: openssl-windows (windows), openssl-uwp (uwp), openssl-unix (!uwp&!windows)
diff --git a/ports/openssl/LICENSE b/ports/openssl/LICENSE
deleted file mode 100644
index e47d101f1..000000000
--- a/ports/openssl/LICENSE
+++ /dev/null
@@ -1,127 +0,0 @@
-
- LICENSE ISSUES
- ==============
-
- The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
- the OpenSSL License and the original SSLeay license apply to the toolkit.
- See below for the actual license texts. Actually both licenses are BSD-style
- Open Source licenses. In case of any license issues related to OpenSSL
- please contact openssl-core@openssl.org.
-
- OpenSSL License
- ---------------
-
-/* ====================================================================
- * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- * software must display the following acknowledgment:
- * "This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
- *
- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For written permission, please contact
- * openssl-core@openssl.org.
- *
- * 5. Products derived from this software may not be called "OpenSSL"
- * nor may "OpenSSL" appear in their names without prior written
- * permission of the OpenSSL Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * ====================================================================
- *
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com). This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com).
- *
- */
-
- Original SSLeay License
- -----------------------
-
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- *
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to. The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code. The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * "This product includes cryptographic software written by
- * Eric Young (eay@cryptsoft.com)"
- * The word 'cryptographic' can be left out if the rouines from the library
- * being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
- * the apps directory (application code) you must include an acknowledgement:
- * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed. i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
diff --git a/ports/openssl/portfile.cmake b/ports/openssl/portfile.cmake
index a6e5fd110..065116c27 100644
--- a/ports/openssl/portfile.cmake
+++ b/ports/openssl/portfile.cmake
@@ -1,164 +1 @@
-if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
- include(${CMAKE_CURRENT_LIST_DIR}/portfile-uwp.cmake)
- return()
-endif()
-
-include(vcpkg_common_functions)
-set(OPENSSL_VERSION 1.0.2o)
-set(MASTER_COPY_SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/openssl-${OPENSSL_VERSION})
-
-vcpkg_find_acquire_program(PERL)
-
-get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
-set(ENV{PATH} "$ENV{PATH};${PERL_EXE_PATH}")
-
-vcpkg_download_distfile(OPENSSL_SOURCE_ARCHIVE
- URLS "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz" "https://www.openssl.org/source/old/1.0.2/openssl-${OPENSSL_VERSION}.tar.gz"
- FILENAME "openssl-${OPENSSL_VERSION}.tar.gz"
- SHA512 8a2c93657c85143e76785bb32ee836908c31a6f5f8db993fa9777acba6079e630cdddd03edbad65d1587199fc13a1507789eacf038b56eb99139c2091d9df7fd
-)
-
-vcpkg_extract_source_archive(${OPENSSL_SOURCE_ARCHIVE})
-vcpkg_apply_patches(
- SOURCE_PATH ${MASTER_COPY_SOURCE_PATH}
- PATCHES ${CMAKE_CURRENT_LIST_DIR}/ConfigureIncludeQuotesFix.patch
- ${CMAKE_CURRENT_LIST_DIR}/STRINGIFYPatch.patch
- ${CMAKE_CURRENT_LIST_DIR}/EmbedSymbolsInStaticLibsZ7.patch
-)
-
-if(VCPKG_CMAKE_SYSTEM_NAME)
- include(${CMAKE_CURRENT_LIST_DIR}/portfile-nonwindows.cmake)
- return()
-endif()
-
-vcpkg_find_acquire_program(NASM)
-get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY)
-set(ENV{PATH} "${NASM_EXE_PATH};$ENV{PATH}")
-
-vcpkg_find_acquire_program(JOM)
-
-set(CONFIGURE_COMMAND ${PERL} Configure
- enable-static-engine
- enable-capieng
- no-ssl2
- -utf-8
-)
-
-if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
- set(OPENSSL_ARCH VC-WIN32)
- set(OPENSSL_DO "ms\\do_nasm.bat")
-elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
- set(OPENSSL_ARCH VC-WIN64A)
- set(OPENSSL_DO "ms\\do_win64a.bat")
-else()
- message(FATAL_ERROR "Unsupported target architecture: ${VCPKG_TARGET_ARCHITECTURE}")
-endif()
-
-if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
- set(OPENSSL_MAKEFILE "ms\\ntdll.mak")
-else()
- set(OPENSSL_MAKEFILE "ms\\nt.mak")
-endif()
-
-file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
-
-
-file(COPY ${MASTER_COPY_SOURCE_PATH} DESTINATION ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
-set(SOURCE_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/openssl-${OPENSSL_VERSION})
-set(OPENSSLDIR_RELEASE ${CURRENT_PACKAGES_DIR})
-
-message(STATUS "Configure ${TARGET_TRIPLET}-rel")
-vcpkg_execute_required_process(
- COMMAND ${CONFIGURE_COMMAND} ${OPENSSL_ARCH} "--prefix=${OPENSSLDIR_RELEASE}" "--openssldir=${OPENSSLDIR_RELEASE}" -FS
- WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
- LOGNAME configure-perl-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-rel
-)
-vcpkg_execute_required_process(
- COMMAND ${OPENSSL_DO}
- WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
- LOGNAME configure-do-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-rel
-)
-message(STATUS "Configure ${TARGET_TRIPLET}-rel done")
-
-message(STATUS "Build ${TARGET_TRIPLET}-rel")
-# Openssl's buildsystem has a race condition which will cause JOM to fail at some point.
-# This is ok; we just do as much work as we can in parallel first, then follow up with a single-threaded build.
-make_directory(${SOURCE_PATH_RELEASE}/inc32/openssl)
-execute_process(
- COMMAND ${JOM} -k -j $ENV{NUMBER_OF_PROCESSORS} -f ${OPENSSL_MAKEFILE}
- WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
- OUTPUT_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-rel-0-out.log
- ERROR_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-rel-0-err.log
-)
-vcpkg_execute_required_process(
- COMMAND nmake -f ${OPENSSL_MAKEFILE} install
- WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
- LOGNAME build-${TARGET_TRIPLET}-rel-1)
-
-message(STATUS "Build ${TARGET_TRIPLET}-rel done")
-
-
-message(STATUS "Configure ${TARGET_TRIPLET}-dbg")
-file(COPY ${MASTER_COPY_SOURCE_PATH} DESTINATION ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
-set(SOURCE_PATH_DEBUG ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/openssl-${OPENSSL_VERSION})
-set(OPENSSLDIR_DEBUG ${CURRENT_PACKAGES_DIR}/debug)
-
-vcpkg_execute_required_process(
- COMMAND ${CONFIGURE_COMMAND} debug-${OPENSSL_ARCH} "--prefix=${OPENSSLDIR_DEBUG}" "--openssldir=${OPENSSLDIR_DEBUG}" -FS
- WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
- LOGNAME configure-perl-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-dbg
-)
-vcpkg_execute_required_process(
- COMMAND ${OPENSSL_DO}
- WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
- LOGNAME configure-do-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-dbg
-)
-message(STATUS "Configure ${TARGET_TRIPLET}-dbg done")
-
-message(STATUS "Build ${TARGET_TRIPLET}-dbg")
-make_directory(${SOURCE_PATH_DEBUG}/inc32/openssl)
-execute_process(
- COMMAND ${JOM} -k -j $ENV{NUMBER_OF_PROCESSORS} -f ${OPENSSL_MAKEFILE}
- WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
- OUTPUT_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-dbg-0-out.log
- ERROR_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-dbg-0-err.log
-)
-vcpkg_execute_required_process(
- COMMAND nmake -f ${OPENSSL_MAKEFILE} install
- WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
- LOGNAME build-${TARGET_TRIPLET}-dbg-1)
-
-message(STATUS "Build ${TARGET_TRIPLET}-dbg done")
-
-
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
-file(REMOVE
- ${CURRENT_PACKAGES_DIR}/debug/bin/openssl.exe
- ${CURRENT_PACKAGES_DIR}/debug/openssl.cnf
- ${CURRENT_PACKAGES_DIR}/openssl.cnf
-)
-
-file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/${PORT}/)
-file(RENAME ${CURRENT_PACKAGES_DIR}/bin/openssl.exe ${CURRENT_PACKAGES_DIR}/tools/${PORT}/openssl.exe)
-
-vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT})
-
-file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openssl RENAME copyright)
-
-if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
- # They should be empty, only the exes deleted above were in these directories
- file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin/)
- file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin/)
-endif()
-
-file(READ "${CURRENT_PACKAGES_DIR}/include/openssl/dtls1.h" _contents)
-string(REPLACE "<winsock.h>" "<winsock2.h>" _contents "${_contents}")
-file(WRITE "${CURRENT_PACKAGES_DIR}/include/openssl/dtls1.h" "${_contents}")
-
-file(READ "${CURRENT_PACKAGES_DIR}/include/openssl/rand.h" _contents)
-string(REPLACE "# include <windows.h>" "#ifndef _WINSOCKAPI_\n#define _WINSOCKAPI_\n#endif\n# include <windows.h>" _contents "${_contents}")
-file(WRITE "${CURRENT_PACKAGES_DIR}/include/openssl/rand.h" "${_contents}")
-
-vcpkg_copy_pdbs()
-
-file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
+set(VCPKG_POLICY_EMPTY_PACKAGE enabled)