mirror of
https://github.com/microsoft/vcpkg.git
synced 2026-01-18 01:11:23 +01:00
[vcpkg] Add platform support for Solaris and illumos (#45524)
This commit is contained in:
@@ -87,6 +87,8 @@ vcpkgCheckRepoTool()
|
||||
echo "On Alpine:"
|
||||
echo " apk add build-base cmake ninja zip unzip curl git"
|
||||
echo " (and export VCPKG_FORCE_SYSTEM_BINARIES=1)"
|
||||
echo "On Solaris and illumos distributions:"
|
||||
echo " pkg install web/curl compress/zip compress/unzip"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
@@ -154,12 +156,19 @@ vcpkgDownloadFile()
|
||||
mv "$downloadPath.part" "$downloadPath"
|
||||
}
|
||||
|
||||
vcpkgExtractTar()
|
||||
vcpkgExtractArchive()
|
||||
{
|
||||
archive=$1; toPath=$2
|
||||
rm -rf "$toPath" "$toPath.partial"
|
||||
mkdir -p "$toPath.partial"
|
||||
$(cd "$toPath.partial" && tar xzf "$archive")
|
||||
case "$archive" in
|
||||
*.tar.gz)
|
||||
mkdir -p "$toPath.partial"
|
||||
$(cd "$toPath.partial" && tar xzf "$archive")
|
||||
;;
|
||||
*.zip)
|
||||
unzip -qd "$toPath.partial" "$archive"
|
||||
;;
|
||||
esac
|
||||
mv "$toPath.partial" "$toPath"
|
||||
}
|
||||
|
||||
@@ -202,25 +211,25 @@ fi
|
||||
if [ "$vcpkgDownloadTool" = "ON" ]; then
|
||||
vcpkgDownloadFile "https://github.com/microsoft/vcpkg-tool/releases/download/$VCPKG_TOOL_RELEASE_TAG/$vcpkgToolName" "$vcpkgRootDir/vcpkg" $vcpkgToolReleaseSha
|
||||
else
|
||||
vcpkgToolReleaseTarball="$VCPKG_TOOL_RELEASE_TAG.tar.gz"
|
||||
vcpkgToolUrl="https://github.com/microsoft/vcpkg-tool/archive/$vcpkgToolReleaseTarball"
|
||||
vcpkgToolReleaseArchive="$VCPKG_TOOL_RELEASE_TAG.zip"
|
||||
vcpkgToolUrl="https://github.com/microsoft/vcpkg-tool/archive/$vcpkgToolReleaseArchive"
|
||||
baseBuildDir="$vcpkgRootDir/buildtrees/_vcpkg"
|
||||
buildDir="$baseBuildDir/build"
|
||||
tarballPath="$downloadsDir/$vcpkgToolReleaseTarball"
|
||||
archivePath="$downloadsDir/$vcpkgToolReleaseArchive"
|
||||
srcBaseDir="$baseBuildDir/src"
|
||||
srcDir="$srcBaseDir/vcpkg-tool-$VCPKG_TOOL_RELEASE_TAG"
|
||||
|
||||
if [ -e "$tarballPath" ]; then
|
||||
vcpkgCheckEqualFileHash "$vcpkgToolUrl" "$tarballPath" "$vcpkgToolReleaseSha"
|
||||
if [ -e "$archivePath" ]; then
|
||||
vcpkgCheckEqualFileHash "$vcpkgToolUrl" "$archivePath" "$vcpkgToolReleaseSha"
|
||||
else
|
||||
echo "Downloading vcpkg tool sources"
|
||||
vcpkgDownloadFile "$vcpkgToolUrl" "$tarballPath" "$vcpkgToolReleaseSha"
|
||||
vcpkgDownloadFile "$vcpkgToolUrl" "$archivePath" "$vcpkgToolReleaseSha"
|
||||
fi
|
||||
|
||||
echo "Building vcpkg-tool..."
|
||||
rm -rf "$baseBuildDir"
|
||||
mkdir -p "$buildDir"
|
||||
vcpkgExtractTar "$tarballPath" "$srcBaseDir"
|
||||
vcpkgExtractArchive "$archivePath" "$srcBaseDir"
|
||||
cmakeConfigOptions="-DCMAKE_BUILD_TYPE=Release -G 'Ninja' -DVCPKG_DEVELOPMENT_WARNINGS=OFF"
|
||||
|
||||
if [ "${VCPKG_MAX_CONCURRENCY}" != "" ] ; then
|
||||
|
||||
@@ -368,6 +368,8 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR (NOT CMAKE_SYSTEM_NAME AND CMAKE_
|
||||
set(Z_VCPKG_TARGET_TRIPLET_PLAT freebsd)
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD" OR (NOT CMAKE_SYSTEM_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "OpenBSD"))
|
||||
set(Z_VCPKG_TARGET_TRIPLET_PLAT openbsd)
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" OR (NOT CMAKE_SYSTEM_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "SunOS"))
|
||||
set(Z_VCPKG_TARGET_TRIPLET_PLAT solaris)
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Android" OR (NOT CMAKE_SYSTEM_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Android"))
|
||||
set(Z_VCPKG_TARGET_TRIPLET_PLAT android)
|
||||
endif()
|
||||
|
||||
@@ -23,6 +23,8 @@ elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||
set(VCPKG_TARGET_IS_FREEBSD ON)
|
||||
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
set(VCPKG_TARGET_IS_OPENBSD ON)
|
||||
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||
set(VCPKG_TARGET_IS_SOLARIS ON)
|
||||
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "MinGW")
|
||||
set(VCPKG_TARGET_IS_WINDOWS ON)
|
||||
set(VCPKG_TARGET_IS_MINGW ON)
|
||||
@@ -41,6 +43,8 @@ elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||
set(VCPKG_HOST_IS_FREEBSD ON)
|
||||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
set(VCPKG_HOST_IS_OPENBSD ON)
|
||||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "SunOS")
|
||||
set(VCPKG_HOST_IS_SOLARIS ON)
|
||||
endif()
|
||||
|
||||
#Helper variable to identify the host path separator.
|
||||
|
||||
@@ -17,7 +17,7 @@ endfunction()
|
||||
|
||||
function(z_vcpkg_get_visual_studio_generator)
|
||||
cmake_parse_arguments(PARSE_ARGV 0 arg "" "OUT_GENERATOR;OUT_ARCH" "")
|
||||
|
||||
|
||||
if (NOT DEFINED arg_OUT_GENERATOR)
|
||||
message(FATAL_ERROR "OUT_GENERATOR must be defined.")
|
||||
endif()
|
||||
@@ -81,6 +81,8 @@ function(z_vcpkg_select_default_vcpkg_chainload_toolchain)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/freebsd.cmake")
|
||||
elseif(VCPKG_TARGET_IS_OPENBSD)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/openbsd.cmake")
|
||||
elseif(VCPKG_TARGET_IS_SOLARIS)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/solaris.cmake")
|
||||
endif()
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE ${VCPKG_CHAINLOAD_TOOLCHAIN_FILE} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
@@ -902,6 +902,8 @@ function(vcpkg_configure_make)
|
||||
find_program(Z_VCPKG_MAKE make PATHS "${MSYS_ROOT}/usr/bin" NO_DEFAULT_PATH REQUIRED)
|
||||
elseif(VCPKG_HOST_IS_FREEBSD OR VCPKG_HOST_IS_OPENBSD)
|
||||
find_program(Z_VCPKG_MAKE gmake REQUIRED)
|
||||
elseif(VCPKG_HOST_IS_SOLARIS)
|
||||
find_program(Z_VCPKG_MAKE NAMES gmake make REQUIRED)
|
||||
else()
|
||||
find_program(Z_VCPKG_MAKE make REQUIRED)
|
||||
endif()
|
||||
|
||||
57
scripts/toolchains/solaris.cmake
Normal file
57
scripts/toolchains/solaris.cmake
Normal file
@@ -0,0 +1,57 @@
|
||||
if(NOT _VCPKG_SOLARIS_TOOLCHAIN)
|
||||
set(_VCPKG_SOLARIS_TOOLCHAIN 1)
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "SunOS")
|
||||
set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "")
|
||||
endif()
|
||||
set(CMAKE_SYSTEM_NAME SunOS CACHE STRING "")
|
||||
|
||||
if(NOT DEFINED CMAKE_SYSTEM_PROCESSOR)
|
||||
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
|
||||
set(CMAKE_SYSTEM_PROCESSOR amd64 CACHE STRING "")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
|
||||
set(CMAKE_SYSTEM_PROCESSOR i386 CACHE STRING "")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm64 CACHE STRING "")
|
||||
else()
|
||||
set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}" CACHE STRING "")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0056)
|
||||
cmake_policy(SET CMP0056 NEW)
|
||||
endif()
|
||||
if(POLICY CMP0066)
|
||||
cmake_policy(SET CMP0066 NEW)
|
||||
endif()
|
||||
if(POLICY CMP0067)
|
||||
cmake_policy(SET CMP0067 NEW)
|
||||
endif()
|
||||
if(POLICY CMP0137)
|
||||
cmake_policy(SET CMP0137 NEW)
|
||||
endif()
|
||||
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
|
||||
VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE
|
||||
VCPKG_C_FLAGS VCPKG_CXX_FLAGS
|
||||
VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG
|
||||
VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE
|
||||
VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG
|
||||
)
|
||||
|
||||
string(APPEND CMAKE_C_FLAGS_INIT " -fPIC ${VCPKG_C_FLAGS} ")
|
||||
string(APPEND CMAKE_CXX_FLAGS_INIT " -fPIC ${VCPKG_CXX_FLAGS} ")
|
||||
string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ${VCPKG_C_FLAGS_DEBUG} ")
|
||||
string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " ${VCPKG_CXX_FLAGS_DEBUG} ")
|
||||
string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " ${VCPKG_C_FLAGS_RELEASE} ")
|
||||
string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " ${VCPKG_CXX_FLAGS_RELEASE} ")
|
||||
|
||||
string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ")
|
||||
string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ")
|
||||
string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ")
|
||||
string(APPEND CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ")
|
||||
string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ")
|
||||
string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ")
|
||||
string(APPEND CMAKE_MODULE_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ")
|
||||
string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ")
|
||||
string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ")
|
||||
string(APPEND CMAKE_ASM_FLAGS_INIT " ${VCPKG_C_FLAGS} ")
|
||||
endif()
|
||||
@@ -24,9 +24,9 @@ foreach ($binary in @('macos', 'muslc', 'glibc', 'glibc-arm64')) {
|
||||
}
|
||||
|
||||
# Source
|
||||
$sourceName = "$Date.tar.gz"
|
||||
$sourceName = "$Date.zip"
|
||||
& $vcpkg x-download "$PSScriptRoot\$sourceName" `
|
||||
"--url=https://github.com/microsoft/vcpkg-tool/archive/refs/tags/$Date.tar.gz" --skip-sha512
|
||||
"--url=https://github.com/microsoft/vcpkg-tool/archive/refs/tags/$Date.zip" --skip-sha512
|
||||
$sha512 = & $vcpkg hash "$PSScriptRoot\$sourceName"
|
||||
$metadata += "VCPKG_TOOL_SOURCE_SHA=$sha512`n"
|
||||
|
||||
|
||||
@@ -3,4 +3,4 @@ VCPKG_MACOS_SHA=c66674ec843108ba12e5b5440e555bfd3dc90796800e47f3ada3ac1d21a2408b
|
||||
VCPKG_MUSLC_SHA=5f45faebbf0d8b26d3a4c3185734b4777de6d9d2d3bf015462d4b111a80850785be825780a509b4222e951807f4a4f88a23bc4e9a97e7bd9b7e7f3ffe77eea88
|
||||
VCPKG_GLIBC_SHA=7b1dc255863bed0c1187a4212b29af46a4700767b008013b12954d0d1e64473485c1ef90b210a2fbd521b574f888b23b853a7da9886dabdd4ed1b898cf65518d
|
||||
VCPKG_GLIBC_ARM64_SHA=cb46320dd345fb84676b82b98ebdedf79e557dfc1a1e50fd8240e60c92b8ce2bb3d4c93020ef1a0f130dc4edcb4fda1f93d9912077c53818a097c12879bd177d
|
||||
VCPKG_TOOL_SOURCE_SHA=f39a7b58d798d4d2dc27c87fbdad3968c4565a8394dd640af9cadebbf69c7456eb49765d64dd0e5b0f5436586fa43b2037c0f9b2f8be1c7e71d67037a4590aa8
|
||||
VCPKG_TOOL_SOURCE_SHA=774b7d313c18ac89665d424f4ac94985e1e67a3fe900e5be749fe0042d8c478b7f385633de72bda7856a0b0639af190961609e63cc295879d01abbe9136a5a65
|
||||
|
||||
6
triplets/community/x64-solaris.cmake
Normal file
6
triplets/community/x64-solaris.cmake
Normal file
@@ -0,0 +1,6 @@
|
||||
set(VCPKG_TARGET_ARCHITECTURE x64)
|
||||
set(VCPKG_CRT_LINKAGE dynamic)
|
||||
set(VCPKG_LIBRARY_LINKAGE static)
|
||||
|
||||
set(VCPKG_CMAKE_SYSTEM_NAME SunOS)
|
||||
|
||||
Reference in New Issue
Block a user