aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/boringssl
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/boringssl')
-rw-r--r--vcpkg/ports/boringssl/0001-static-gtest.patch13
-rw-r--r--vcpkg/ports/boringssl/0002-remove-WX-Werror.patch28
-rw-r--r--vcpkg/ports/boringssl/0003-fix-shared-symbol-visibility.patch37
-rw-r--r--vcpkg/ports/boringssl/install-pc-files.cmake51
-rw-r--r--vcpkg/ports/boringssl/openssl.pc.in6
-rw-r--r--vcpkg/ports/boringssl/portfile.cmake61
-rw-r--r--vcpkg/ports/boringssl/usage4
-rw-r--r--vcpkg/ports/boringssl/vcpkg.json18
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
+ }
+ ]
+}