diff options
Diffstat (limited to 'vcpkg/ports/libressl')
| -rw-r--r-- | vcpkg/ports/libressl/aarch64-windows.diff | 42 | ||||
| -rw-r--r-- | vcpkg/ports/libressl/pkgconfig.diff | 13 | ||||
| -rw-r--r-- | vcpkg/ports/libressl/portfile.cmake | 56 | ||||
| -rw-r--r-- | vcpkg/ports/libressl/vcpkg-cmake-wrapper.cmake.in | 75 | ||||
| -rw-r--r-- | vcpkg/ports/libressl/vcpkg.json | 26 |
5 files changed, 212 insertions, 0 deletions
diff --git a/vcpkg/ports/libressl/aarch64-windows.diff b/vcpkg/ports/libressl/aarch64-windows.diff new file mode 100644 index 0000000..a1cbe9a --- /dev/null +++ b/vcpkg/ports/libressl/aarch64-windows.diff @@ -0,0 +1,42 @@ +diff --git a/crypto/arch/aarch64/crypto_cpu_caps_windows.c b/crypto/arch/aarch64/crypto_cpu_caps_windows.c +new file mode 100644 +index 0000000..e7cdded +--- /dev/null ++++ b/crypto/arch/aarch64/crypto_cpu_caps_windows.c +@@ -0,0 +1,36 @@ ++/* $OpenBSD: crypto_cpu_caps.c,v 1.2 2024/11/12 13:52:31 jsing Exp $ */ ++/* ++ * Copyright (c) 2025 Brent Cook <bcook@openbsd.org> ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include <windows.h> ++ ++#include "crypto_arch.h" ++ ++/* Machine dependent CPU capabilities. */ ++uint64_t crypto_cpu_caps_aarch64; ++ ++void ++crypto_cpu_caps_init(void) ++{ ++ crypto_cpu_caps_aarch64 = 0; ++ ++ if (IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE)) { ++ crypto_cpu_caps_aarch64 |= CRYPTO_CPU_CAPS_AARCH64_AES; ++ crypto_cpu_caps_aarch64 |= CRYPTO_CPU_CAPS_AARCH64_PMULL; ++ crypto_cpu_caps_aarch64 |= CRYPTO_CPU_CAPS_AARCH64_SHA1; ++ crypto_cpu_caps_aarch64 |= CRYPTO_CPU_CAPS_AARCH64_SHA2; ++ } ++} diff --git a/vcpkg/ports/libressl/pkgconfig.diff b/vcpkg/ports/libressl/pkgconfig.diff new file mode 100644 index 0000000..ee08c9f --- /dev/null +++ b/vcpkg/ports/libressl/pkgconfig.diff @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9c3d0d4..cc0e904 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -512,7 +512,7 @@ if(ENABLE_LIBRESSL_INSTALL) + DESTINATION "${LIBRESSL_INSTALL_CMAKEDIR}" + ) + +- if(NOT MSVC) ++ if(1) + # Create pkgconfig files. + set(prefix ${CMAKE_INSTALL_PREFIX}) + set(exec_prefix \${prefix}) diff --git a/vcpkg/ports/libressl/portfile.cmake b/vcpkg/ports/libressl/portfile.cmake new file mode 100644 index 0000000..73b7220 --- /dev/null +++ b/vcpkg/ports/libressl/portfile.cmake @@ -0,0 +1,56 @@ +if(EXISTS "${CURRENT_INSTALLED_DIR}/include/openssl/ssl.h")
+ message(FATAL_ERROR "Can't build libressl if openssl is installed. Please remove openssl, and try install libressl again if you need it.")
+endif()
+
+vcpkg_download_distfile(
+ LIBRESSL_SOURCE_ARCHIVE
+ URLS "https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/${PORT}-${VERSION}.tar.gz"
+ "https://github.com/libressl/portable/releases/download/v${VERSION}/${PORT}-${VERSION}.tar.gz"
+ FILENAME "${PORT}-${VERSION}.tar.gz"
+ SHA512 b06eccff7b332da38efbc5a039d8ee54bd26437f3d5957f59ac2d93b4464f181c9a665a2c957272be5d9f91f447720f6dfa29b4b72407279ac8a7722c322dac0
+)
+
+vcpkg_extract_source_archive(
+ SOURCE_PATH
+ ARCHIVE "${LIBRESSL_SOURCE_ARCHIVE}"
+ PATCHES
+ pkgconfig.diff
+ aarch64-windows.diff
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ "tools" LIBRESSL_APPS
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DLIBRESSL_INSTALL_CMAKEDIR=share/${PORT}
+ -DLIBRESSL_TESTS=OFF
+ OPTIONS_DEBUG
+ -DLIBRESSL_APPS=OFF
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_fixup_pkgconfig()
+vcpkg_cmake_config_fixup()
+
+# libressl as openssl replacement
+configure_file("${CURRENT_PORT_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/openssl/vcpkg-cmake-wrapper.cmake" @ONLY)
+
+if("tools" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES ocspcheck openssl DESTINATION "${CURRENT_PACKAGES_DIR}/tools/openssl" AUTO_CLEAN)
+endif()
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/etc/ssl/certs"
+ "${CURRENT_PACKAGES_DIR}/debug/etc/ssl/certs"
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+ "${CURRENT_PACKAGES_DIR}/share/man"
+)
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
diff --git a/vcpkg/ports/libressl/vcpkg-cmake-wrapper.cmake.in b/vcpkg/ports/libressl/vcpkg-cmake-wrapper.cmake.in new file mode 100644 index 0000000..70be9cc --- /dev/null +++ b/vcpkg/ports/libressl/vcpkg-cmake-wrapper.cmake.in @@ -0,0 +1,75 @@ +cmake_policy(PUSH) +cmake_policy(SET CMP0012 NEW) +cmake_policy(SET CMP0054 NEW) +cmake_policy(SET CMP0057 NEW) + +# opensslv.h: OPENSSL_VERSION_NUMBER 0x20000000L, "These will never change" +set(OPENSSL_VERSION_MAJOR 2) +set(OPENSSL_VERSION_MINOR 0) +set(OPENSSL_VERSION_FIX 0) + +if(OPENSSL_USE_STATIC_LIBS) + if("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "dynamic") + message(WARNING "OPENSSL_USE_STATIC_LIBS is set, but vcpkg port openssl was built with dynamic linkage") + endif() + set(OPENSSL_USE_STATIC_LIBS_BAK "${OPENSSL_USE_STATIC_LIBS}") + set(OPENSSL_USE_STATIC_LIBS FALSE) +endif() + +if(DEFINED OPENSSL_ROOT_DIR) + set(OPENSSL_ROOT_DIR_BAK "${OPENSSL_ROOT_DIR}") +endif() +get_filename_component(OPENSSL_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}" DIRECTORY) +get_filename_component(OPENSSL_ROOT_DIR "${OPENSSL_ROOT_DIR}" DIRECTORY) +find_path(OPENSSL_INCLUDE_DIR NAMES openssl/ssl.h PATH "${OPENSSL_ROOT_DIR}/include" NO_DEFAULT_PATH) +if(MSVC) + find_library(LIB_EAY_DEBUG NAMES crypto PATHS "${OPENSSL_ROOT_DIR}/debug/lib" NO_DEFAULT_PATH) + find_library(LIB_EAY_RELEASE NAMES crypto PATHS "${OPENSSL_ROOT_DIR}/lib" NO_DEFAULT_PATH) + find_library(SSL_EAY_DEBUG NAMES ssl PATHS "${OPENSSL_ROOT_DIR}/debug/lib" NO_DEFAULT_PATH) + find_library(SSL_EAY_RELEASE NAMES ssl PATHS "${OPENSSL_ROOT_DIR}/lib" NO_DEFAULT_PATH) +elseif(WIN32) + find_library(LIB_EAY NAMES libcrypto crypto NAMES_PER_DIR) + find_library(SSL_EAY NAMES libssl ssl NAMES_PER_DIR) +else() + find_library(OPENSSL_CRYPTO_LIBRARY NAMES crypto) + find_library(OPENSSL_SSL_LIBRARY NAMES ssl) +endif() + +_find_package(${ARGS}) + +unset(OPENSSL_ROOT_DIR) +if(DEFINED OPENSSL_ROOT_DIR_BAK) + set(OPENSSL_ROOT_DIR "${OPENSSL_ROOT_DIR_BAK}") + unset(OPENSSL_ROOT_DIR_BAK) +endif() + +if(DEFINED OPENSSL_USE_STATIC_LIBS_BAK) + set(OPENSSL_USE_STATIC_LIBS "${OPENSSL_USE_STATIC_LIBS_BAK}") + unset(OPENSSL_USE_STATIC_LIBS_BAK) +endif() + +if(OPENSSL_FOUND AND "@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static") + if(WIN32) + list(APPEND OPENSSL_LIBRARIES ws2_32 ntdll bcrypt) + if(TARGET OpenSSL::Crypto) + set_property(TARGET OpenSSL::Crypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES "ws2_32;ntdll;bcrypt") + endif() + if(TARGET OpenSSL::SSL) + set_property(TARGET OpenSSL::SSL APPEND PROPERTY INTERFACE_LINK_LIBRARIES "ws2_32;ntdll;bcrypt") + endif() + else() + if("REQUIRED" IN_LIST ARGS) + find_package(Threads REQUIRED) + else() + find_package(Threads) + endif() + list(APPEND OPENSSL_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) + if(TARGET OpenSSL::Crypto) + set_property(TARGET OpenSSL::Crypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES "Threads::Threads") + endif() + if(TARGET OpenSSL::SSL) + set_property(TARGET OpenSSL::SSL APPEND PROPERTY INTERFACE_LINK_LIBRARIES "Threads::Threads") + endif() + endif() +endif() +cmake_policy(POP) diff --git a/vcpkg/ports/libressl/vcpkg.json b/vcpkg/ports/libressl/vcpkg.json new file mode 100644 index 0000000..79e6c83 --- /dev/null +++ b/vcpkg/ports/libressl/vcpkg.json @@ -0,0 +1,26 @@ +{ + "name": "libressl", + "version": "4.2.0", + "description": [ + "LibreSSL is a TLS/crypto stack.", + "It was forked from OpenSSL in 2014 by the OpenBSD project, with goals of modernizing the codebase, improving security, and applying best practice development processes.", + "LibreSSL provides much of the OpenSSL 1.1 API. Incompatibilities between the projects exist and are unavoidable since both evolve with different goals and priorities." + ], + "homepage": "https://www.libressl.org", + "license": "ISC", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "tools": { + "description": "Build openssl and ocspcheck executables" + } + } +} |