diff options
Diffstat (limited to 'vcpkg/ports/boringssl')
| -rw-r--r-- | vcpkg/ports/boringssl/0001-static-gtest.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/boringssl/0002-remove-WX-Werror.patch | 28 | ||||
| -rw-r--r-- | vcpkg/ports/boringssl/0003-fix-shared-symbol-visibility.patch | 37 | ||||
| -rw-r--r-- | vcpkg/ports/boringssl/install-pc-files.cmake | 51 | ||||
| -rw-r--r-- | vcpkg/ports/boringssl/openssl.pc.in | 6 | ||||
| -rw-r--r-- | vcpkg/ports/boringssl/portfile.cmake | 61 | ||||
| -rw-r--r-- | vcpkg/ports/boringssl/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/boringssl/vcpkg.json | 18 |
8 files changed, 218 insertions, 0 deletions
diff --git a/vcpkg/ports/boringssl/0001-static-gtest.patch b/vcpkg/ports/boringssl/0001-static-gtest.patch new file mode 100644 index 0000000..bd14bda --- /dev/null +++ b/vcpkg/ports/boringssl/0001-static-gtest.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 06ce07e..aa3381a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -485,7 +485,7 @@ if(BUILD_TESTING) + # Add minimal googletest targets. The provided one has many side-effects, and + # googletest has a very straightforward build. + add_library( +- boringssl_gtest ++ boringssl_gtest STATIC + third_party/googletest/googlemock/src/gmock-all.cc + third_party/googletest/googletest/src/gtest-all.cc + ) diff --git a/vcpkg/ports/boringssl/0002-remove-WX-Werror.patch b/vcpkg/ports/boringssl/0002-remove-WX-Werror.patch new file mode 100644 index 0000000..80408e7 --- /dev/null +++ b/vcpkg/ports/boringssl/0002-remove-WX-Werror.patch @@ -0,0 +1,28 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 06ce07e..1b00154 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -124,7 +124,7 @@ set(CMAKE_C_STANDARD_REQUIRED ON) + if(CMAKE_COMPILER_IS_GNUCXX OR CLANG) + # Note clang-cl is odd and sets both CLANG and MSVC. We base our configuration + # primarily on our normal Clang one. +- set(C_CXX_FLAGS "-fno-strict-aliasing -Werror -Wformat=2 -Wsign-compare -Wwrite-strings -Wvla -Wshadow -Wtype-limits -Wmissing-field-initializers") ++ set(C_CXX_FLAGS "-fno-strict-aliasing -Wformat=2 -Wsign-compare -Wwrite-strings -Wvla -Wshadow -Wtype-limits -Wmissing-field-initializers") + if(MSVC) + # clang-cl sets different default warnings than clang. It also treats -Wall + # as -Weverything, to match MSVC. Instead -W3 is the alias for -Wall. +@@ -213,12 +213,12 @@ elseif(MSVC) + ) + string(REPLACE "C" " -wd" MSVC_DISABLED_WARNINGS_STR + ${MSVC_DISABLED_WARNINGS_LIST}) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -utf-8 -W4 -WX ${MSVC_DISABLED_WARNINGS_STR}") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -utf-8 -W4 ${MSVC_DISABLED_WARNINGS_STR}") + # Without /Zc:__cplusplus, MSVC does not define the right value for + # __cplusplus. See https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ + # If this becomes too problematic for downstream code, we can look at + # _MSVC_LANG. +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -utf-8 -W4 -WX ${MSVC_DISABLED_WARNINGS_STR} -Zc:__cplusplus") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -utf-8 -W4 ${MSVC_DISABLED_WARNINGS_STR} -Zc:__cplusplus") + endif() + + if(WIN32) diff --git a/vcpkg/ports/boringssl/0003-fix-shared-symbol-visibility.patch b/vcpkg/ports/boringssl/0003-fix-shared-symbol-visibility.patch new file mode 100644 index 0000000..c1235c9 --- /dev/null +++ b/vcpkg/ports/boringssl/0003-fix-shared-symbol-visibility.patch @@ -0,0 +1,37 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 06ce07e..48fc755 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -253,8 +253,6 @@ if(FUZZ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address,fuzzer-no-link -fsanitize-coverage=edge,indirect-calls") + endif() + +-add_definitions(-DBORINGSSL_IMPLEMENTATION) +- + if(BUILD_SHARED_LIBS) + add_definitions(-DBORINGSSL_SHARED_LIBRARY) + # Enable position-independent code globally. This is needed because +@@ -618,6 +616,7 @@ target_include_directories(crypto PUBLIC + $<INSTALL_INTERFACE:include> + ) + set_property(TARGET crypto PROPERTY EXPORT_NAME Crypto) ++target_compile_definitions(crypto PRIVATE BORINGSSL_IMPLEMENTATION) + + if(FIPS_SHARED) + # Rewrite libcrypto.so to inject the correct module hash value. This assumes +@@ -663,6 +662,7 @@ add_library(ssl ${SSL_SOURCES}) + # here. + set_property(TARGET ssl PROPERTY EXPORT_NAME SSL) + target_link_libraries(ssl crypto) ++target_compile_definitions(ssl PRIVATE BORINGSSL_IMPLEMENTATION) + + add_library(decrepit ${DECREPIT_SOURCES}) + target_link_libraries(decrepit ssl crypto) +@@ -672,6 +672,7 @@ if(APPLE) + endif() + add_library(pki ${PKI_SOURCES}) + target_link_libraries(pki crypto) ++target_compile_definitions(pki PRIVATE BORINGSSL_IMPLEMENTATION) + target_compile_options(pki PRIVATE ${PKI_CXX_FLAGS}) + + if(BUILD_TESTING) diff --git a/vcpkg/ports/boringssl/install-pc-files.cmake b/vcpkg/ports/boringssl/install-pc-files.cmake new file mode 100644 index 0000000..47eab26 --- /dev/null +++ b/vcpkg/ports/boringssl/install-pc-files.cmake @@ -0,0 +1,51 @@ +function(install_pc_file name pc_data) + # fix platform-specific details + if (NOT VCPKG_TARGET_IS_WINDOWS) + string(REPLACE "-lcrypt32" "" pc_data "${pc_data}") + string(REPLACE "-lws2_32" "" pc_data "${pc_data}") + string(REPLACE "-llibssl" "-lssl" pc_data "${pc_data}") + string(REPLACE "-llibcrypto" "-lcrypto" pc_data "${pc_data}") + elseif (NOT VCPKG_TARGET_IS_MINGW) + string(REPLACE "-llibssl" "-lssl" pc_data "${pc_data}") + string(REPLACE "-llibcrypto" "-lcrypto" pc_data "${pc_data}") + endif() + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + configure_file("${CMAKE_CURRENT_LIST_DIR}/openssl.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/${name}.pc" @ONLY) + endif() + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + if(VCPKG_TARGET_IS_WINDOWS) + if (NOT VCPKG_TARGET_IS_MINGW) + string(REPLACE "-lssl" "-lssld" pc_data "${pc_data}") + string(REPLACE "-lcrypto" "-lcryptod" pc_data "${pc_data}") + else() + string(REPLACE "-llibssl" "-llibssld" pc_data "${pc_data}") + string(REPLACE "-llibcrypto" "-llibcryptod" pc_data "${pc_data}") + endif() + endif() + configure_file("${CMAKE_CURRENT_LIST_DIR}/openssl.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/${name}.pc" @ONLY) + endif() +endfunction() + +install_pc_file(openssl [[ +Name: BoringSSL +Description: Secure Sockets Layer and cryptography libraries and tools +Requires: libssl libcrypto +]]) + +install_pc_file(libssl [[ +Name: BoringSSL-libssl +Description: Secure Sockets Layer and cryptography libraries +Libs: -L"${libdir}" -llibssl +Requires: libcrypto +Cflags: -I"${includedir}" +]]) + +install_pc_file(libcrypto [[ +Name: BoringSSL-libcrypto +Description: OpenSSL cryptography library +Libs: -L"${libdir}" -llibcrypto +Libs.private: -lcrypt32 -lws2_32 +Cflags: -I"${includedir}" +]]) + +vcpkg_fixup_pkgconfig() diff --git a/vcpkg/ports/boringssl/openssl.pc.in b/vcpkg/ports/boringssl/openssl.pc.in new file mode 100644 index 0000000..3033e18 --- /dev/null +++ b/vcpkg/ports/boringssl/openssl.pc.in @@ -0,0 +1,6 @@ +prefix=${pcfiledir}/../.. +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include +Version: @OPENSSL_VERSION@ +@pc_data@ diff --git a/vcpkg/ports/boringssl/portfile.cmake b/vcpkg/ports/boringssl/portfile.cmake new file mode 100644 index 0000000..121de50 --- /dev/null +++ b/vcpkg/ports/boringssl/portfile.cmake @@ -0,0 +1,61 @@ +if(EXISTS "${CURRENT_INSTALLED_DIR}/include/openssl/ssl.h") + message(FATAL_ERROR "Can't build BoringSSL if OpenSSL is installed. Please remove OpenSSL, and try to install BoringSSL again if you need it. Build will continue since BoringSSL is a drop-in replacement for OpenSSL") +endif() + +vcpkg_find_acquire_program(PERL) +get_filename_component(PERL_EXE_PATH "${PERL}" DIRECTORY) +vcpkg_add_to_path("${PERL_EXE_PATH}") + +vcpkg_find_acquire_program(NASM) +get_filename_component(NASM_EXE_PATH "${NASM}" DIRECTORY) +vcpkg_add_to_path("${NASM_EXE_PATH}") + +vcpkg_find_acquire_program(GO) +get_filename_component(GO_EXE_PATH "${GO}" DIRECTORY) +vcpkg_add_to_path("${GO_EXE_PATH}") + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO google/boringssl + REF 0.20250818.0 + SHA512 49404ac5a5fd0fd4254f24b586e5d6ae139df48b9163f865a1a16a7e6c27b9a9373863ffc89b5b3be20bbe01cce788cc146c887692be332ae4f522482862ccac + HEAD_REF master + PATCHES + 0001-static-gtest.patch + 0002-remove-WX-Werror.patch + 0003-fix-shared-symbol-visibility.patch +) + +set(BORINGSSL_OPTIONS) +if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + # MSVC armasm64 expects MASM syntax; BoringSSL uses GNU asm on arm64, so force the C fallback. + list(APPEND BORINGSSL_OPTIONS "-DOPENSSL_NO_ASM=ON") +endif() + +if(VCPKG_TARGET_IS_WINDOWS) + # the FindOpenSSL.cmake script differentiates debug and release binaries using this suffix. + set(CMAKE_CONFIGURE_OPTIONS_DEBUG "-DCMAKE_DEBUG_POSTFIX=d") +endif() + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + ${BORINGSSL_OPTIONS} + OPTIONS_DEBUG + ${CMAKE_CONFIGURE_OPTIONS_DEBUG} +) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() +vcpkg_cmake_config_fixup(PACKAGE_NAME OpenSSL CONFIG_PATH lib/cmake/OpenSSL) + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +vcpkg_copy_tools(TOOL_NAMES bssl AUTO_CLEAN) +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") +endif() + +include("${CMAKE_CURRENT_LIST_DIR}/install-pc-files.cmake") + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/vcpkg/ports/boringssl/usage b/vcpkg/ports/boringssl/usage new file mode 100644 index 0000000..13ef247 --- /dev/null +++ b/vcpkg/ports/boringssl/usage @@ -0,0 +1,4 @@ +boringssl can be found via the built-in CMake find-module:
+
+ find_package(OpenSSL REQUIRED)
+ target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto)
\ No newline at end of file diff --git a/vcpkg/ports/boringssl/vcpkg.json b/vcpkg/ports/boringssl/vcpkg.json new file mode 100644 index 0000000..10cb351 --- /dev/null +++ b/vcpkg/ports/boringssl/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "boringssl", + "version-date": "2025-08-18", + "description": "BoringSSL is a fork of OpenSSL developed by Google", + "homepage": "https://boringssl.googlesource.com/boringssl", + "license": "Apache-2.0", + "supports": "!uwp", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |