Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions ports/openssl3/detect_platform.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
if(VCPKG_TARGET_IS_ANDROID)
# ${SOURCE_PATH}/Configuration/15-android.conf
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
set(PLATFORM "android-arm64")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
set(PLATFORM "android-arm")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(PLATFORM "android-x86_64")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(PLATFORM "android-x86")
endif()

elseif(VCPKG_TARGET_IS_LINUX)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
set(PLATFORM "linux-aarch64")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
set(PLATFORM "linux-armv4")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(PLATFORM "linux-x86_64")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(PLATFORM "linux-x86")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "ppc64le")
set(PLATFORM "linux-ppc64le")
endif()

elseif(VCPKG_TARGET_IS_IOS)
# ${SOURCE_PATH}/Configuration/15-ios.conf
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
set(PLATFORM "ios64-xcrun")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
set(PLATFORM "ios-xcrun")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" OR
VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(PLATFORM "iossimulator-xcrun")
endif()

elseif(VCPKG_TARGET_IS_OSX)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
set(PLATFORM "darwin64-arm64-cc")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(PLATFORM "darwin64-x86_64-cc")
endif()

elseif(VCPKG_TARGET_IS_FREEBSD OR VCPKG_TARGET_IS_OPENBSD)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(PLATFORM "BSD-x86_64")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(PLATFORM "BSD-x86")
endif()

elseif(VCPKG_TARGET_IS_MINGW)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(PLATFORM "mingw64")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(PLATFORM "mingw")
endif()

elseif(VCPKG_TARGET_IS_UWP)
# https://github.com/microsoft/msquic/blob/main/submodules/CMakeLists.txt#L26
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(PLATFORM "VC-WIN32-ONECORE")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(PLATFORM "VC-WIN64A-ONECORE")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
set(PLATFORM "VC-WIN32-ARM")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
set(PLATFORM "VC-WIN64-ARM")
endif()

elseif(VCPKG_TARGET_IS_WINDOWS)
# ${SOURCE_PATH}/Configuration/50-win-onecore.conf
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(PLATFORM "VC-WIN32")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(PLATFORM "VC-WIN64A")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
set(PLATFORM "VC-WIN32-ARM")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
set(PLATFORM "VC-WIN64-ARM")
endif()

endif()

if(NOT DEFINED PLATFORM)
message(FATAL_ERROR "PLATFORM is unknown for the target platform/architecture")
endif()
181 changes: 181 additions & 0 deletions ports/openssl3/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
if(EXISTS ${CURRENT_INSTALLED_DIR}/include/openssl/ssl.h)
message(FATAL_ERROR "Can't build '${PORT}' if another SSL library is installed. Please remove existing one and try install '${PORT}' again if you need it.")
endif()

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO openssl/openssl
REF openssl-3.0.0
SHA512 50b4fefa3e5a3359e7b06bfbc4ecc525ef9d76e13d087aa8e2d29880f08f74cc9d0c76b9bf1895c118def2bb0e4db0095e799a752b64b60721a423bd2cf989da
)

if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
list(APPEND CONFIGURE_OPTIONS shared)
else()
list(APPEND CONFIGURE_OPTIONS no-shared)
endif()

# see ${SOURCE_PATH}/INSTALL.md
list(APPEND CONFIGURE_OPTIONS
no-zlib
no-ui-console # Don't build with the User Interface (UI) console method
no-module # Don't build any dynamically loadable engines
no-makedepend # Don't generate dependencies
no-tests # Don't build test programs or run any tests
)
if(VCPKG_TARGET_IS_UWP)
list(APPEND CONFIGURE_OPTIONS no-async)
endif()
if(VCPKG_TARGET_IS_WINDOWS)
# jom will build in parallel mode, we need /FS for PDB access
list(APPEND CONFIGURE_OPTIONS -utf-8 -FS)

elseif(VCPKG_TARGET_IS_IOS)
# see https://github.com/microsoft/vcpkg PR 12527
# disable that makes linkage error (e.g. require stderr usage)
list(APPEND CONFIGURE_OPTIONS no-stdio no-ui no-asm)

endif()

# Option: platform/architecture
include(${CMAKE_CURRENT_LIST_DIR}/detect_platform.cmake)

# Clean & copy source files for working directories
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
)
get_filename_component(SOURCE_DIR_NAME ${SOURCE_PATH} NAME)
file(COPY ${SOURCE_PATH}
DESTINATION ${CURRENT_BUILDTREES_DIR})
file(RENAME ${CURRENT_BUILDTREES_DIR}/${SOURCE_DIR_NAME}
${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
file(COPY ${SOURCE_PATH}
DESTINATION ${CURRENT_BUILDTREES_DIR})
file(RENAME ${CURRENT_BUILDTREES_DIR}/${SOURCE_DIR_NAME}
${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)

# see ${SOURCE_PATH}/NOTES-PERL.md
vcpkg_find_acquire_program(PERL)
get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
vcpkg_add_to_path(${PERL_EXE_PATH})

if(NOT VCPKG_HOST_IS_WINDOWS)
# see ${SOURCE_PATH}/NOTES-UNIX.md
find_program(MAKE make)
get_filename_component(MAKE_EXE_PATH ${MAKE} DIRECTORY)
endif()

if(VCPKG_TARGET_IS_WINDOWS)
# see ${SOURCE_PATH}/NOTES-WINDOWS.md
vcpkg_find_acquire_program(NASM)
get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY)
vcpkg_add_to_path(PREPEND ${NASM_EXE_PATH})
# note: jom is not for `vcpkg_add_to_path`
vcpkg_find_acquire_program(JOM)

elseif(VCPKG_TARGET_IS_ANDROID)
# see ${SOURCE_PATH}/NOTES-ANDROID.md
if(NOT DEFINED ENV{ANDROID_NDK_ROOT} AND DEFINED ENV{ANDROID_NDK_HOME})
message(STATUS "ENV{ANDROID_NDK_ROOT} will be set to $ENV{ANDROID_NDK_HOME}")
set(ENV{ANDROID_NDK_ROOT} $ENV{ANDROID_NDK_HOME})
endif()
if(NOT DEFINED ENV{ANDROID_NDK_ROOT})
message(FATAL_ERROR "ENV{ANDROID_NDK_ROOT} is required by ${SOURCE_PATH}/Configurations/15-android.conf")
endif()
if(VCPKG_HOST_IS_LINUX)
set(NDK_HOST_TAG "linux-x86_64")
elseif(VCPKG_HOST_IS_OSX)
set(NDK_HOST_TAG "darwin-x86_64")
elseif(VCPKG_HOST_IS_WINDOWS)
set(NDK_HOST_TAG "windows-x86_64")
else()
message(FATAL_ERROR "Unknown NDK host platform")
endif()
get_filename_component(NDK_TOOL_PATH $ENV{ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${NDK_HOST_TAG}/bin ABSOLUTE)
vcpkg_add_to_path(PREPEND ${NDK_TOOL_PATH})

endif()

# Configure / Install
# note: we need a PERL so can't use `vcpkg_configure_make` directly...
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
vcpkg_execute_required_process(
COMMAND ${PERL} Configure ${OPENSSL_SHARED} ${CONFIGURE_OPTIONS}
${PLATFORM}
"--prefix=${CURRENT_PACKAGES_DIR}/debug"
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
LOGNAME configure-perl-${TARGET_TRIPLET}-dbg
)
message(STATUS "Configuring ${TARGET_TRIPLET}-rel")
vcpkg_execute_required_process(
COMMAND ${PERL} Configure ${OPENSSL_SHARED} ${CONFIGURE_OPTIONS}
${PLATFORM}
"--prefix=${CURRENT_PACKAGES_DIR}"
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
LOGNAME configure-perl-${TARGET_TRIPLET}-rel
)

if(VCPKG_TARGET_IS_UWP OR VCPKG_TARGET_IS_WINDOWS)
message(STATUS "Building ${TARGET_TRIPLET}-dbg")
vcpkg_execute_required_process(
COMMAND ${JOM} /K /J ${VCPKG_CONCURRENCY} /F makefile install_dev
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
LOGNAME install-${TARGET_TRIPLET}-dbg
)
message(STATUS "Building ${TARGET_TRIPLET}-rel")
vcpkg_execute_required_process(
COMMAND ${JOM} /K /J ${VCPKG_CONCURRENCY} /F makefile install_dev
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
LOGNAME install-${TARGET_TRIPLET}-rel
)
vcpkg_copy_pdbs()

else()
message(STATUS "Building ${TARGET_TRIPLET}-dbg")
vcpkg_execute_required_process(
COMMAND ${MAKE} -j ${VCPKG_CONCURRENCY} install_dev
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
LOGNAME install-${TARGET_TRIPLET}-dbg
)
message(STATUS "Building ${TARGET_TRIPLET}-rel")
vcpkg_execute_required_process(
COMMAND ${MAKE} -j ${VCPKG_CONCURRENCY} install_dev
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
LOGNAME install-${TARGET_TRIPLET}-rel
)
if(VCPKG_TARGET_IS_ANDROID AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
# install_dev copies symbolic link. overwrite them with the actual shared objects
file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/libcrypto.so
${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/libssl.so
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib
)
file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/libcrypto.so
${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/libssl.so
DESTINATION ${CURRENT_PACKAGES_DIR}/lib
)
endif()
vcpkg_fixup_pkgconfig()

endif()

if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/lib/libcrypto.a
${CURRENT_PACKAGES_DIR}/debug/lib/libssl.a
${CURRENT_PACKAGES_DIR}/lib/libcrypto.a
${CURRENT_PACKAGES_DIR}/lib/libssl.a
)
else()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin
${CURRENT_PACKAGES_DIR}/bin
)
if(VCPKG_TARGET_IS_WINDOWS)
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/lib/ossl_static.pdb
${CURRENT_PACKAGES_DIR}/lib/ossl_static.pdb
)
endif()
endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)

file(INSTALL ${SOURCE_PATH}/LICENSE.txt
DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright
)
7 changes: 7 additions & 0 deletions ports/openssl3/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "openssl3",
"version-semver": "3.0.0",
"description": "TLS/SSL and crypto library",
"homepage": "https://www.openssl.org/",
"license": "Apache-2.0"
}
4 changes: 4 additions & 0 deletions versions/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -4884,6 +4884,10 @@
"baseline": "1.1.1h",
"port-version": 2
},
"openssl3": {
"baseline": "3.0.0",
"port-version": 0
},
"opensubdiv": {
"baseline": "3.4.3",
"port-version": 2
Expand Down
9 changes: 9 additions & 0 deletions versions/o-/openssl3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "bd94d7a10f5e486511054c861252ed8e8dfdd0a6",
"version-semver": "3.0.0",
"port-version": 0
}
]
}