aboutsummaryrefslogtreecommitdiff
path: root/ports/openssl
diff options
context:
space:
mode:
authorAlexander Saprykin <xelfium@gmail.com>2018-05-26 13:27:14 +0200
committerGitHub <noreply@github.com>2018-05-26 13:27:14 +0200
commit4ce5f064282c3a8d8d710aa82af7aa346b0c6dd5 (patch)
treed95c9490352eb73f078d34a33bc4bb44ac9fa48b /ports/openssl
parentfb689bd13dd6ba563a885d71fff1dd2b32a615db (diff)
parent2ac7527b40b1dbeb7856b9f763362c1e139e2ca9 (diff)
downloadvcpkg-4ce5f064282c3a8d8d710aa82af7aa346b0c6dd5.tar.gz
vcpkg-4ce5f064282c3a8d8d710aa82af7aa346b0c6dd5.zip
Merge pull request #1 from Microsoft/master
Update vcpkg from upstream
Diffstat (limited to 'ports/openssl')
-rw-r--r--ports/openssl/CMakeLists.txt130
-rw-r--r--ports/openssl/CONTROL2
-rw-r--r--ports/openssl/EmbedSymbolsInStaticLibsZ7.patch25
-rw-r--r--ports/openssl/PerlScriptSpaceInPathFixes.patch35
-rw-r--r--ports/openssl/make-openssl.bat9
-rw-r--r--ports/openssl/portfile-nonwindows.cmake37
-rw-r--r--ports/openssl/portfile-uwp.cmake79
-rw-r--r--ports/openssl/portfile.cmake117
-rw-r--r--ports/openssl/remove-deps.cmake7
-rw-r--r--ports/openssl/usage4
-rw-r--r--ports/openssl/vcpkg-cmake-wrapper.cmake10
11 files changed, 333 insertions, 122 deletions
diff --git a/ports/openssl/CMakeLists.txt b/ports/openssl/CMakeLists.txt
new file mode 100644
index 000000000..a2d863452
--- /dev/null
+++ b/ports/openssl/CMakeLists.txt
@@ -0,0 +1,130 @@
+cmake_minimum_required(VERSION 3.9)
+project(openssl C)
+
+if(NOT SOURCE_PATH)
+ message(FATAL_ERROR "Requires SOURCE_PATH")
+endif()
+
+if(CMAKE_SYSTEM_NAME STREQUAL "Android")
+ set(PLATFORM android)
+elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
+ set(PLATFORM linux-generic64)
+ else()
+ set(PLATFORM linux-generic32)
+ endif()
+elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+ set(PLATFORM darwin64-x86_64-cc)
+elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+ set(PLATFORM BSD-generic64)
+else()
+ message(FATAL_ERROR "Unknown platform")
+endif()
+
+get_filename_component(COMPILER_ROOT "${CMAKE_C_COMPILER}" DIRECTORY)
+
+message("CMAKE_C_COMPILER=${CMAKE_C_COMPILER}")
+message("COMPILER_ROOT=${COMPILER_ROOT}")
+message("CMAKE_SYSROOT=${CMAKE_SYSROOT}")
+message("CMAKE_C_FLAGS=${CMAKE_C_FLAGS}")
+message("CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}")
+message("CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}")
+message("CMAKE_INCLUDE_SYSTEM_FLAG_C=${CMAKE_INCLUDE_SYSTEM_FLAG_C}")
+
+set(CFLAGS "${CMAKE_C_FLAGS}")
+if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ set(CFLAGS "-Wno-error=unused-command-line-argument ${CMAKE_C_FLAGS}")
+endif()
+if(CMAKE_C_COMPILER_TARGET)
+ set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_TARGET} ${CMAKE_C_COMPILER_TARGET}")
+endif()
+if(CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN)
+ set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN} ${CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN}")
+endif()
+if(CMAKE_SYSROOT AND CMAKE_C_COMPILE_OPTIONS_SYSROOT)
+ set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_SYSROOT}${CMAKE_SYSROOT}")
+endif()
+
+file(TO_NATIVE_PATH ENV_PATH "${COMPILER_ROOT};$ENV{PATH}")
+set(ENV{ANDROID_DEV} "${CMAKE_SYSROOT}/usr")
+set(ENV{CC} "${CMAKE_C_COMPILER}")
+
+message("ENV{ANDROID_DEV}=$ENV{ANDROID_DEV}")
+
+get_filename_component(SOURCE_PATH_NAME "${SOURCE_PATH}" NAME)
+set(BUILDDIR "${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_PATH_NAME}")
+
+if(NOT EXISTS "${BUILDDIR}")
+ file(COPY ${SOURCE_PATH} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+endif()
+
+get_filename_component(MSYS_BIN_DIR "${MAKE}" DIRECTORY)
+
+
+file(READ "${BUILDDIR}/Configure" _contents)
+string(REPLACE "-mandroid" "" _contents "${_contents}")
+file(WRITE "${BUILDDIR}/Configure" "${_contents}")
+
+if(BUILD_SHARED_LIBS)
+ set(SHARED shared)
+else()
+ set(SHARED no-shared)
+endif()
+
+if(CMAKE_HOST_WIN32)
+ set(ENV_COMMAND set)
+ set(PATH_VAR ";%PATH%")
+else()
+ set(ENV_COMMAND export)
+ set(PATH_VAR ":$ENV{PATH}")
+endif()
+
+add_custom_command(
+ OUTPUT "${BUILDDIR}/Makefile"
+ COMMAND ${ENV_COMMAND} CC=${CMAKE_C_COMPILER}
+ COMMAND ${ENV_COMMAND} AR=${CMAKE_AR}
+ COMMAND ${ENV_COMMAND} LD=${CMAKE_LINKER}
+ COMMAND ${ENV_COMMAND} RANLIB=${CMAKE_RANLIB}
+ COMMAND ${ENV_COMMAND} MAKE=${MAKE}
+ COMMAND ${ENV_COMMAND} MAKEDEPPROG=${CMAKE_C_COMPILER}
+ COMMAND ${ENV_COMMAND} "PATH=${MSYS_BIN_DIR}${PATH_VAR}"
+ COMMAND "${PERL}" Configure
+ ${SHARED}
+ enable-static-engine
+ no-ssl2
+ no-krb5
+ no-idea
+ no-bf
+ no-cast
+ no-seed
+ no-md2
+ ${PLATFORM}
+ "--prefix=${CMAKE_INSTALL_PREFIX}"
+ "--openssldir=${CMAKE_INSTALL_PREFIX}"
+ ${CFLAGS}
+ COMMAND "${CMAKE_COMMAND}" "-DDIR=${BUILDDIR}" -P "${CMAKE_CURRENT_LIST_DIR}/remove-deps.cmake"
+ VERBATIM
+ WORKING_DIRECTORY "${BUILDDIR}"
+)
+
+add_custom_target(depend
+ COMMAND ${ENV_COMMAND} "PATH=${MSYS_BIN_DIR}${PATH_VAR}"
+ COMMAND "${MAKE}" links # depend MAKEDEPPROG=${CMAKE_C_COMPILER}
+ VERBATIM
+ WORKING_DIRECTORY "${BUILDDIR}"
+ DEPENDS "${BUILDDIR}/Makefile"
+)
+add_custom_target(build_libs ALL
+ COMMAND ${ENV_COMMAND} "PATH=${MSYS_BIN_DIR}${PATH_VAR}"
+ COMMAND "${CMAKE_COMMAND}" -E touch "${BUILDDIR}/krb5.h"
+ COMMAND "${MAKE}" build_libs
+ VERBATIM
+ WORKING_DIRECTORY "${BUILDDIR}"
+ DEPENDS depend
+ BYPRODUCTS "${BUILDDIR}/libssl.a" "${BUILDDIR}/libcrypto.a"
+)
+
+install(
+ FILES "${BUILDDIR}/libssl.a" "${BUILDDIR}/libcrypto.a"
+ DESTINATION lib
+)
diff --git a/ports/openssl/CONTROL b/ports/openssl/CONTROL
index 6fb520404..fe7ea5c01 100644
--- a/ports/openssl/CONTROL
+++ b/ports/openssl/CONTROL
@@ -1,3 +1,3 @@
Source: openssl
-Version: 1.0.2k-2
+Version: 1.0.2o-2
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/EmbedSymbolsInStaticLibsZ7.patch b/ports/openssl/EmbedSymbolsInStaticLibsZ7.patch
new file mode 100644
index 000000000..1a8de2c4b
--- /dev/null
+++ b/ports/openssl/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/PerlScriptSpaceInPathFixes.patch b/ports/openssl/PerlScriptSpaceInPathFixes.patch
deleted file mode 100644
index 1dcf8a991..000000000
--- a/ports/openssl/PerlScriptSpaceInPathFixes.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff --git a/util/copy.pl b/util/copy.pl
-index eba6d58..5d971a2 100644
---- a/util/copy.pl
-+++ b/util/copy.pl
-@@ -19,7 +19,7 @@ foreach $arg (@ARGV) {
- next;
- }
- $arg =~ s|\\|/|g; # compensate for bug/feature in cygwin glob...
-- foreach (glob $arg)
-+ foreach (glob qq("$arg"))
- {
- push @filelist, $_;
- }
-diff --git a/util/mk1mf.pl b/util/mk1mf.pl
-index 128a405..fd853da 100644
---- a/util/mk1mf.pl
-+++ b/util/mk1mf.pl
-@@ -428,7 +428,7 @@ EOF
- {
- $extra_install .= <<"EOF"
- \$(MKDIR) \"\$(INSTALLTOP)${o}lib${o}engines\"
-- \$(CP) \"\$(E_SHLIB)\" \"\$(INSTALLTOP)${o}lib${o}engines\"
-+ \$(CP) \$(E_SHLIB) \"\$(INSTALLTOP)${o}lib${o}engines\"
- EOF
- }
- }
-@@ -608,7 +608,7 @@ install: all
- \$(MKDIR) \"\$(INSTALLTOP)${o}include${o}openssl\"
- \$(MKDIR) \"\$(INSTALLTOP)${o}lib\"
- \$(CP) \"\$(INCO_D)${o}*.\[ch\]\" \"\$(INSTALLTOP)${o}include${o}openssl\"
-- \$(CP) \"\$(BIN_D)$o\$(E_EXE)$exep \$(INSTALLTOP)${o}bin\"
-+ \$(CP) \"\$(BIN_D)$o\$(E_EXE)$exep\" \"\$(INSTALLTOP)${o}bin\"
- \$(MKDIR) \"\$(OPENSSLDIR)\"
- \$(CP) apps${o}openssl.cnf \"\$(OPENSSLDIR)\"
- $extra_install
diff --git a/ports/openssl/make-openssl.bat b/ports/openssl/make-openssl.bat
index 4c038094d..4f6488e8d 100644
--- a/ports/openssl/make-openssl.bat
+++ b/ports/openssl/make-openssl.bat
@@ -1,10 +1,15 @@
set build=%1
-perl Configure no-asm no-hw no-dso VC-WINUNIVERSAL
+perl Configure no-asm no-hw no-dso VC-WINUNIVERSAL -FS -FIWindows.h
+
+for /D %%f in ("%WindowsSdkDir%References\%WindowsSDKLibVersion%Windows.Foundation.FoundationContract\*") do set LibPath=%LibPath%;%%f\
+for /D %%f in ("%WindowsSdkDir%References\%WindowsSDKLibVersion%Windows.Foundation.UniversalApiContract\*") do set LibPath=%LibPath%;%%f\
call ms\do_winuniversal.bat
-call ms\setVSvars.bat universal10.0%build%
+mkdir inc32\openssl
+jom -j %NUMBER_OF_PROCESSORS% -k -f ms\ntdll.mak
+REM due to a race condition in the build, we need to have a second single-threaded pass.
nmake -f ms\ntdll.mak
diff --git a/ports/openssl/portfile-nonwindows.cmake b/ports/openssl/portfile-nonwindows.cmake
new file mode 100644
index 000000000..c324b132a
--- /dev/null
+++ b/ports/openssl/portfile-nonwindows.cmake
@@ -0,0 +1,37 @@
+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()
diff --git a/ports/openssl/portfile-uwp.cmake b/ports/openssl/portfile-uwp.cmake
index cf2f1e7ca..0331e0f77 100644
--- a/ports/openssl/portfile-uwp.cmake
+++ b/ports/openssl/portfile-uwp.cmake
@@ -7,7 +7,8 @@
#
if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
- message(FATAL_ERROR "Static building not supported yet")
+ set(VCPKG_LIBRARY_LINKAGE dynamic)
+ message("Static building not supported yet")
endif()
if (NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
@@ -26,16 +27,18 @@ endif()
include(vcpkg_common_functions)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/openssl-OpenSSL_1_0_2k_WinRT)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/openssl-OpenSSL_1_0_2l_WinRT)
vcpkg_find_acquire_program(PERL)
+vcpkg_find_acquire_program(JOM)
+get_filename_component(JOM_EXE_PATH ${JOM} DIRECTORY)
get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
-set(ENV{PATH} "$ENV{PATH};${PERL_EXE_PATH}")
+set(ENV{PATH} "$ENV{PATH};${PERL_EXE_PATH};${JOM_EXE_PATH}")
vcpkg_download_distfile(ARCHIVE
- URLS "https://github.com/Microsoft/openssl/archive/OpenSSL_1_0_2k_WinRT.zip"
- FILENAME "openssl-microsoft-1.0.2k_WinRT.zip"
- SHA512 afb434ef69c399f690f7ce723fabb228f77a12428f19062c5df3b8b841a2a7881c01150fdcfd2fab23867e3963292874a08ad227b37d168907b507fb1d7fede7
+ URLS "https://github.com/Microsoft/openssl/archive/OpenSSL_1_0_2l_WinRT.zip"
+ FILENAME "openssl-microsoft-1.0.2l_WinRT.zip"
+ SHA512 238b3daad7f1a2486e09d47e6d1bd4b0aa8e8a896358c6dfe11a77c2654da1b29d3c7612f9d200d5be5a020f33d96fe39cd75b99aa35aa4129feb756f7f98ee8
)
vcpkg_extract_source_archive(${ARCHIVE})
@@ -44,66 +47,48 @@ file(REMOVE_RECURSE ${SOURCE_PATH}/tmp32dll)
file(REMOVE_RECURSE ${SOURCE_PATH}/out32dll)
file(REMOVE_RECURSE ${SOURCE_PATH}/inc32dll)
-file(COPY
-${CMAKE_CURRENT_LIST_DIR}/make-openssl.bat
-DESTINATION ${SOURCE_PATH})
+file(
+ COPY ${CMAKE_CURRENT_LIST_DIR}/make-openssl.bat
+ DESTINATION ${SOURCE_PATH}
+)
message(STATUS "Build ${TARGET_TRIPLET}")
-
vcpkg_execute_required_process(
- COMMAND ${SOURCE_PATH}/make-openssl.bat ${UWP_PLATFORM}
+ COMMAND ${SOURCE_PATH}/make-openssl.bat ${UWP_PLATFORM}
WORKING_DIRECTORY ${SOURCE_PATH}
LOGNAME make-openssl-${TARGET_TRIPLET}
)
-
-
message(STATUS "Build ${TARGET_TRIPLET} done")
-
-
file(
COPY ${SOURCE_PATH}/inc32/openssl
DESTINATION ${CURRENT_PACKAGES_DIR}/include
)
-file(INSTALL ${SOURCE_PATH}/out32dll/libeay32.dll
- DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
-
-file(INSTALL ${SOURCE_PATH}/out32dll/libeay32.pdb
- DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
-
-file(INSTALL ${SOURCE_PATH}/out32dll/libeay32.lib
- DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
-
-file(INSTALL ${SOURCE_PATH}/out32dll/ssleay32.dll
- DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
-
-file(INSTALL ${SOURCE_PATH}/out32dll/ssleay32.pdb
+file(INSTALL
+ ${SOURCE_PATH}/out32dll/libeay32.dll
+ ${SOURCE_PATH}/out32dll/libeay32.pdb
+ ${SOURCE_PATH}/out32dll/ssleay32.dll
+ ${SOURCE_PATH}/out32dll/ssleay32.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
-file(INSTALL ${SOURCE_PATH}/out32dll/ssleay32.lib
+file(INSTALL
+ ${SOURCE_PATH}/out32dll/libeay32.lib
+ ${SOURCE_PATH}/out32dll/ssleay32.lib
DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
-
-
-file(INSTALL ${SOURCE_PATH}/out32dll/libeay32.dll
- DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
-
-file(INSTALL ${SOURCE_PATH}/out32dll/libeay32.pdb
- DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
-
-file(INSTALL ${SOURCE_PATH}/out32dll/libeay32.lib
- DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
-
-file(INSTALL ${SOURCE_PATH}/out32dll/ssleay32.dll
- DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
-
-file(INSTALL ${SOURCE_PATH}/out32dll/ssleay32.pdb
+file(INSTALL
+ ${SOURCE_PATH}/out32dll/libeay32.dll
+ ${SOURCE_PATH}/out32dll/libeay32.pdb
+ ${SOURCE_PATH}/out32dll/ssleay32.dll
+ ${SOURCE_PATH}/out32dll/ssleay32.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
-file(INSTALL ${SOURCE_PATH}/out32dll/ssleay32.lib
+file(INSTALL
+ ${SOURCE_PATH}/out32dll/libeay32.lib
+ ${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(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
diff --git a/ports/openssl/portfile.cmake b/ports/openssl/portfile.cmake
index b325432b0..a6e5fd110 100644
--- a/ports/openssl/portfile.cmake
+++ b/ports/openssl/portfile.cmake
@@ -4,54 +4,72 @@ if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
endif()
include(vcpkg_common_functions)
-set(OPENSSL_VERSION 1.0.2k)
+set(OPENSSL_VERSION 1.0.2o)
set(MASTER_COPY_SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/openssl-${OPENSSL_VERSION})
+
vcpkg_find_acquire_program(PERL)
-find_program(NMAKE nmake)
get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
-set(ENV{PATH} "${PERL_EXE_PATH};$ENV{PATH}")
+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"
+ 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 0d314b42352f4b1df2c40ca1094abc7e9ad684c5c35ea997efdd58204c70f22a1abcb17291820f0fff3769620a4e06906034203d31eb1a4d540df3e0db294016
+ SHA512 8a2c93657c85143e76785bb32ee836908c31a6f5f8db993fa9777acba6079e630cdddd03edbad65d1587199fc13a1507789eacf038b56eb99139c2091d9df7fd
)
vcpkg_extract_source_archive(${OPENSSL_SOURCE_ARCHIVE})
vcpkg_apply_patches(
SOURCE_PATH ${MASTER_COPY_SOURCE_PATH}
- PATCHES ${CMAKE_CURRENT_LIST_DIR}/PerlScriptSpaceInPathFixes.patch
- ${CMAKE_CURRENT_LIST_DIR}/ConfigureIncludeQuotesFix.patch
+ 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-asm
no-ssl2
+ -utf-8
)
-if(TARGET_TRIPLET MATCHES "x86-windows")
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(OPENSSL_ARCH VC-WIN32)
- set(OPENSSL_DO "ms\\do_ms.bat")
-elseif(TARGET_TRIPLET MATCHES "x64")
+ 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 triplet: ${TARGET_TRIPLET}")
+ 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)
-message(STATUS "Build ${TARGET_TRIPLET}-rel")
+
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}"
+ 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
)
@@ -60,27 +78,33 @@ vcpkg_execute_required_process(
WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
LOGNAME configure-do-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-rel
)
+message(STATUS "Configure ${TARGET_TRIPLET}-rel done")
-if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
- vcpkg_execute_required_process(COMMAND ${NMAKE} -f ms\\ntdll.mak install
- WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
- LOGNAME build-${TARGET_TRIPLET}-rel)
-else()
- vcpkg_execute_required_process(COMMAND ${NMAKE} -f ms\\nt.mak install
- WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
- LOGNAME build-${TARGET_TRIPLET}-rel)
-endif()
-
+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 "Build ${TARGET_TRIPLET}-dbg")
+
+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}"
+ 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
)
@@ -89,27 +113,36 @@ vcpkg_execute_required_process(
WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
LOGNAME configure-do-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-dbg
)
+message(STATUS "Configure ${TARGET_TRIPLET}-dbg done")
-if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
- vcpkg_execute_required_process(COMMAND ${NMAKE} -f ms\\ntdll.mak install
- WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
- LOGNAME build-${TARGET_TRIPLET}-dbg)
-else()
- vcpkg_execute_required_process(COMMAND ${NMAKE} -f ms\\nt.mak install
- WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
- LOGNAME build-${TARGET_TRIPLET}-dbg)
-endif()
+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}/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)
@@ -118,4 +151,14 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin/)
endif()
-vcpkg_copy_pdbs() \ No newline at end of file
+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})
diff --git a/ports/openssl/remove-deps.cmake b/ports/openssl/remove-deps.cmake
new file mode 100644
index 000000000..a57c70fe9
--- /dev/null
+++ b/ports/openssl/remove-deps.cmake
@@ -0,0 +1,7 @@
+file(GLOB_RECURSE MAKEFILES ${DIR}/*/Makefile)
+foreach(MAKEFILE ${MAKEFILES})
+ message("removing deps from ${MAKEFILE}")
+ file(READ "${MAKEFILE}" _contents)
+ string(REGEX REPLACE "\n# DO NOT DELETE THIS LINE.*" "" _contents "${_contents}")
+ file(WRITE "${MAKEFILE}" "${_contents}")
+endforeach()
diff --git a/ports/openssl/usage b/ports/openssl/usage
new file mode 100644
index 000000000..f535cb6a4
--- /dev/null
+++ b/ports/openssl/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/vcpkg-cmake-wrapper.cmake b/ports/openssl/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 000000000..82313bdab
--- /dev/null
+++ b/ports/openssl/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,10 @@
+_find_package(${ARGS})
+if(OPENSSL_FOUND)
+ find_library(OPENSSL_DL_LIBRARY NAMES dl)
+ if(OPENSSL_DL_LIBRARY)
+ list(APPEND OPENSSL_LIBRARIES "dl")
+ if(TARGET OpenSSL::Crypto)
+ set_property(TARGET OpenSSL::Crypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES "dl")
+ endif()
+ endif()
+endif()