aboutsummaryrefslogtreecommitdiff
path: root/scripts/buildsystems
diff options
context:
space:
mode:
authorAlexander Saprykin <xelfium@gmail.com>2018-05-26 13:27:14 +0200
committerGitHub <noreply@github.com>2018-05-26 13:27:14 +0200
commit4ce5f064282c3a8d8d710aa82af7aa346b0c6dd5 (patch)
treed95c9490352eb73f078d34a33bc4bb44ac9fa48b /scripts/buildsystems
parentfb689bd13dd6ba563a885d71fff1dd2b32a615db (diff)
parent2ac7527b40b1dbeb7856b9f763362c1e139e2ca9 (diff)
downloadvcpkg-4ce5f064282c3a8d8d710aa82af7aa346b0c6dd5.tar.gz
vcpkg-4ce5f064282c3a8d8d710aa82af7aa346b0c6dd5.zip
Merge pull request #1 from Microsoft/master
Update vcpkg from upstream
Diffstat (limited to 'scripts/buildsystems')
-rw-r--r--scripts/buildsystems/msbuild/applocal.ps141
-rw-r--r--scripts/buildsystems/msbuild/vcpkg.targets34
-rw-r--r--scripts/buildsystems/vcpkg.cmake326
3 files changed, 294 insertions, 107 deletions
diff --git a/scripts/buildsystems/msbuild/applocal.ps1 b/scripts/buildsystems/msbuild/applocal.ps1
index 932ba11cd..e5f3c3dd0 100644
--- a/scripts/buildsystems/msbuild/applocal.ps1
+++ b/scripts/buildsystems/msbuild/applocal.ps1
@@ -4,6 +4,7 @@ param([string]$targetBinary, [string]$installedDir, [string]$tlogFile, [string]$
$g_searched = @{}
# Note: installedDir is actually the bin\ directory.
$g_install_root = Split-Path $installedDir -parent
+$g_is_debug = $g_install_root -match '(.*\\)?debug(\\)?$'
# Ensure we create the copied files log, even if we don't end up copying any files
if ($copiedFilesLog)
@@ -24,6 +25,19 @@ function deployBinary([string]$targetBinaryDir, [string]$SourceDir, [string]$tar
if ($tlogFile) { Add-Content $tlogFile "$targetBinaryDir\$targetBinaryName" }
}
+
+Write-Verbose "Resolving base path $targetBinary..."
+try
+{
+ $baseBinaryPath = Resolve-Path $targetBinary -erroraction stop
+ $baseTargetBinaryDir = Split-Path $baseBinaryPath -parent
+}
+catch [System.Management.Automation.ItemNotFoundException]
+{
+ return
+}
+
+# Note: this function signature is depended upon by the qtdeploy.ps1 script
function resolve([string]$targetBinary) {
Write-Verbose "Resolving $targetBinary..."
try
@@ -47,8 +61,19 @@ function resolve([string]$targetBinary) {
}
$g_searched.Set_Item($_, $true)
if (Test-Path "$installedDir\$_") {
- deployBinary $targetBinaryDir $installedDir "$_"
+ deployBinary $baseTargetBinaryDir $installedDir "$_"
if (Test-Path function:\deployPluginsIfQt) { deployPluginsIfQt $targetBinaryDir "$g_install_root\plugins" "$_" }
+ if (Test-Path function:\deployOpenNI2) { deployOpenNI2 $targetBinaryDir "$g_install_root" "$_" }
+ if (Test-Path function:\deployPluginsIfMagnum) {
+ if ($g_is_debug) {
+ deployPluginsIfMagnum $targetBinaryDir "$g_install_root\bin\magnum-d" "$_"
+ } else {
+ deployPluginsIfMagnum $targetBinaryDir "$g_install_root\bin\magnum" "$_"
+ }
+ }
+ resolve "$baseTargetBinaryDir\$_"
+ } elseif (Test-Path "$targetBinaryDir\$_") {
+ Write-Verbose " ${_}: $_ not found in vcpkg; locally deployed"
resolve "$targetBinaryDir\$_"
} else {
Write-Verbose " ${_}: $installedDir\$_ not found"
@@ -63,5 +88,17 @@ if (Test-Path "$g_install_root\plugins\qtdeploy.ps1") {
. "$g_install_root\plugins\qtdeploy.ps1"
}
+# Note: This is a hack to make OpenNI2 work.
+if (Test-Path "$g_install_root\bin\OpenNI2\openni2deploy.ps1") {
+ . "$g_install_root\bin\OpenNI2\openni2deploy.ps1"
+}
+
+# Note: This is a hack to make Magnum work.
+if (Test-Path "$g_install_root\bin\magnum\magnumdeploy.ps1") {
+ . "$g_install_root\bin\magnum\magnumdeploy.ps1"
+} elseif (Test-Path "$g_install_root\bin\magnum-d\magnumdeploy.ps1") {
+ . "$g_install_root\bin\magnum-d\magnumdeploy.ps1"
+}
+
resolve($targetBinary)
-Write-Verbose $($g_searched | out-string) \ No newline at end of file
+Write-Verbose $($g_searched | out-string)
diff --git a/scripts/buildsystems/msbuild/vcpkg.targets b/scripts/buildsystems/msbuild/vcpkg.targets
index 5c24d755a..499052e4d 100644
--- a/scripts/buildsystems/msbuild/vcpkg.targets
+++ b/scripts/buildsystems/msbuild/vcpkg.targets
@@ -24,6 +24,16 @@
<VcpkgTriplet Condition="'$(VcpkgTriplet)' == ''">x64-windows</VcpkgTriplet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Platform)|$(ApplicationType)|$(ApplicationTypeRevision)' == 'arm||'">
+ <VcpkgEnabled Condition="'$(VcpkgEnabled)' == ''">true</VcpkgEnabled>
+ <VcpkgTriplet Condition="'$(VcpkgTriplet)' == ''">arm-windows</VcpkgTriplet>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Platform)|$(ApplicationType)|$(ApplicationTypeRevision)' == 'arm64||'">
+ <VcpkgEnabled Condition="'$(VcpkgEnabled)' == ''">true</VcpkgEnabled>
+ <VcpkgTriplet Condition="'$(VcpkgTriplet)' == ''">arm64-windows</VcpkgTriplet>
+ </PropertyGroup>
+
<PropertyGroup Condition="'$(Platform)|$(ApplicationType)|$(ApplicationTypeRevision)' == 'x64|Windows Store|10.0'">
<VcpkgEnabled Condition="'$(VcpkgEnabled)' == ''">true</VcpkgEnabled>
<VcpkgTriplet Condition="'$(VcpkgTriplet)' == ''">x64-uwp</VcpkgTriplet>
@@ -34,17 +44,24 @@
<VcpkgTriplet Condition="'$(VcpkgTriplet)' == ''">arm-uwp</VcpkgTriplet>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Platform)|$(ApplicationType)|$(ApplicationTypeRevision)' == 'arm64|Windows Store|10.0'">
+ <VcpkgEnabled Condition="'$(VcpkgEnabled)' == ''">true</VcpkgEnabled>
+ <VcpkgTriplet Condition="'$(VcpkgTriplet)' == ''">arm64-uwp</VcpkgTriplet>
+ </PropertyGroup>
+
<PropertyGroup Condition="'$(VcpkgEnabled)' == 'true'">
<VcpkgConfiguration Condition="'$(VcpkgConfiguration)' == ''">$(Configuration)</VcpkgConfiguration>
+ <VcpkgNormalizedConfiguration Condition="$(VcpkgConfiguration.StartsWith('Debug'))">Debug</VcpkgNormalizedConfiguration>
+ <VcpkgNormalizedConfiguration Condition="$(VcpkgConfiguration.StartsWith('Release')) or '$(VcpkgConfiguration)' == 'RelWithDebInfo' or '$(VcpkgConfiguration)' == 'MinSizeRel'">Release</VcpkgNormalizedConfiguration>
<VcpkgRoot Condition="'$(VcpkgRoot)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), .vcpkg-root))\installed\$(VcpkgTriplet)\</VcpkgRoot>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(VcpkgEnabled)' == 'true'">
<Link>
- <AdditionalDependencies Condition="'$(VcpkgConfiguration)' == 'Debug' and '$(VcpkgAutoLink)' != 'false'">%(AdditionalDependencies);$(VcpkgRoot)debug\lib\*.lib</AdditionalDependencies>
- <AdditionalDependencies Condition="'$(VcpkgConfiguration)' == 'Release' and '$(VcpkgAutoLink)' != 'false'">%(AdditionalDependencies);$(VcpkgRoot)lib\*.lib</AdditionalDependencies>
- <AdditionalLibraryDirectories Condition="'$(VcpkgConfiguration)' == 'Release'">%(AdditionalLibraryDirectories);$(VcpkgRoot)lib;$(VcpkgRoot)lib\manual-link</AdditionalLibraryDirectories>
- <AdditionalLibraryDirectories Condition="'$(VcpkgConfiguration)' == 'Debug'">%(AdditionalLibraryDirectories);$(VcpkgRoot)debug\lib;$(VcpkgRoot)debug\lib\manual-link</AdditionalLibraryDirectories>
+ <AdditionalDependencies Condition="'$(VcpkgNormalizedConfiguration)' == 'Debug' and '$(VcpkgAutoLink)' != 'false'">%(AdditionalDependencies);$(VcpkgRoot)debug\lib\*.lib</AdditionalDependencies>
+ <AdditionalDependencies Condition="'$(VcpkgNormalizedConfiguration)' == 'Release' and '$(VcpkgAutoLink)' != 'false'">%(AdditionalDependencies);$(VcpkgRoot)lib\*.lib</AdditionalDependencies>
+ <AdditionalLibraryDirectories Condition="'$(VcpkgNormalizedConfiguration)' == 'Release'">%(AdditionalLibraryDirectories);$(VcpkgRoot)lib;$(VcpkgRoot)lib\manual-link</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories Condition="'$(VcpkgNormalizedConfiguration)' == 'Debug'">%(AdditionalLibraryDirectories);$(VcpkgRoot)debug\lib;$(VcpkgRoot)debug\lib\manual-link</AdditionalLibraryDirectories>
</Link>
<ClCompile>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(VcpkgRoot)include</AdditionalIncludeDirectories>
@@ -57,18 +74,19 @@
<Target Name="VcpkgTripletSelection" BeforeTargets="ClCompile">
<Message Text="Using triplet &quot;$(VcpkgTriplet)&quot; from &quot;$(VcpkgRoot)&quot;" Importance="Normal" Condition="'$(VcpkgEnabled)' == 'true'"/>
<Message Text="Not using Vcpkg because VcpkgEnabled is &quot;$(VcpkgEnabled)&quot;" Importance="Normal" Condition="'$(VcpkgEnabled)' != 'true'"/>
+ <Message Text="Vcpkg is unable to link because we cannot decide between Release and Debug libraries. Please define the property VcpkgConfiguration to be 'Release' or 'Debug' (currently '$(VcpkgConfiguration)')." Importance="High" Condition="'$(VcpkgEnabled)' == 'true' and '$(VcpkgNormalizedConfiguration)' == ''"/>
</Target>
<Target Name="AppLocalFromInstalled" AfterTargets="CopyFilesToOutputDirectory" BeforeTargets="CopyLocalFilesOutputGroup;RegisterOutput" Condition="'$(VcpkgEnabled)' == 'true'">
<WriteLinesToFile
File="$(TLogLocation)$(ProjectName).write.1u.tlog"
Lines="^$(TargetPath);$([System.IO.Path]::Combine($(ProjectDir),$(IntDir)))vcpkg.applocal.log" Encoding="Unicode"/>
- <Exec Condition="'$(VcpkgConfiguration)' == 'Debug'"
- Command="powershell.exe -ExecutionPolicy Bypass -noprofile -File %22$(MSBuildThisFileDirectory)applocal.ps1%22 %22$(TargetPath)%22 %22$(VcpkgRoot)debug\bin%22 %22$(TLogLocation)$(ProjectName).write.1u.tlog%22 %22$(IntDir)vcpkg.applocal.log%22"
+ <Exec Condition="$(VcpkgConfiguration.StartsWith('Debug'))"
+ Command="$(SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -noprofile -File %22$(MSBuildThisFileDirectory)applocal.ps1%22 %22$(TargetPath)%22 %22$(VcpkgRoot)debug\bin%22 %22$(TLogLocation)$(ProjectName).write.1u.tlog%22 %22$(IntDir)vcpkg.applocal.log%22"
StandardOutputImportance="Normal">
</Exec>
- <Exec Condition="'$(VcpkgConfiguration)' == 'Release'"
- Command="powershell.exe -ExecutionPolicy Bypass -noprofile -File %22$(MSBuildThisFileDirectory)applocal.ps1%22 %22$(TargetPath)%22 %22$(VcpkgRoot)bin%22 %22$(TLogLocation)$(ProjectName).write.1u.tlog%22 %22$(IntDir)vcpkg.applocal.log%22"
+ <Exec Condition="$(VcpkgConfiguration.StartsWith('Release'))"
+ Command="$(SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -noprofile -File %22$(MSBuildThisFileDirectory)applocal.ps1%22 %22$(TargetPath)%22 %22$(VcpkgRoot)bin%22 %22$(TLogLocation)$(ProjectName).write.1u.tlog%22 %22$(IntDir)vcpkg.applocal.log%22"
StandardOutputImportance="Normal">
</Exec>
<ReadLinesFromFile File="$(IntDir)vcpkg.applocal.log">
diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake
index 26fa020db..91c196fb9 100644
--- a/scripts/buildsystems/vcpkg.cmake
+++ b/scripts/buildsystems/vcpkg.cmake
@@ -1,48 +1,78 @@
-if(NOT VCPKG_TOOLCHAIN)
- if(CMAKE_GENERATOR_PLATFORM MATCHES "^[Ww][Ii][Nn]32$")
+# Mark variables as used so cmake doesn't complain about them
+mark_as_advanced(CMAKE_TOOLCHAIN_FILE)
+
+# This is a backport of CMAKE_TRY_COMPILE_PLATFORM_VARIABLES to cmake 3.0
+get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE )
+if( _CMAKE_IN_TRY_COMPILE )
+ include( "${CMAKE_CURRENT_SOURCE_DIR}/../vcpkg.config.cmake" OPTIONAL )
+endif()
+
+if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
+ include("${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}")
+endif()
+
+if(VCPKG_TOOLCHAIN)
+ return()
+endif()
+
+if(VCPKG_TARGET_TRIPLET)
+elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Ww][Ii][Nn]32$")
+ set(_VCPKG_TARGET_TRIPLET_ARCH x86)
+elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Xx]64$")
+ set(_VCPKG_TARGET_TRIPLET_ARCH x64)
+elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Aa][Rr][Mm]$")
+ set(_VCPKG_TARGET_TRIPLET_ARCH arm)
+elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Aa][Rr][Mm]64$")
+ set(_VCPKG_TARGET_TRIPLET_ARCH arm64)
+else()
+ if(CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015 Win64$")
+ set(_VCPKG_TARGET_TRIPLET_ARCH x64)
+ elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015 ARM$")
+ set(_VCPKG_TARGET_TRIPLET_ARCH arm)
+ elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015$")
set(_VCPKG_TARGET_TRIPLET_ARCH x86)
- elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Xx]64$")
+ elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 15 2017 Win64$")
set(_VCPKG_TARGET_TRIPLET_ARCH x64)
- elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Aa][Rr][Mm]$")
+ elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 15 2017 ARM$")
set(_VCPKG_TARGET_TRIPLET_ARCH arm)
+ elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 15 2017$")
+ set(_VCPKG_TARGET_TRIPLET_ARCH x86)
else()
- if(CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015 Win64$")
+ find_program(_VCPKG_CL cl)
+ if(_VCPKG_CL MATCHES "amd64/cl.exe$" OR _VCPKG_CL MATCHES "x64/cl.exe$")
set(_VCPKG_TARGET_TRIPLET_ARCH x64)
- elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015 ARM$")
+ elseif(_VCPKG_CL MATCHES "arm/cl.exe$")
set(_VCPKG_TARGET_TRIPLET_ARCH arm)
- elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015$")
+ elseif(_VCPKG_CL MATCHES "arm64/cl.exe$")
+ set(_VCPKG_TARGET_TRIPLET_ARCH arm64)
+ elseif(_VCPKG_CL MATCHES "bin/cl.exe$" OR _VCPKG_CL MATCHES "x86/cl.exe$")
set(_VCPKG_TARGET_TRIPLET_ARCH x86)
- elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 15 2017 Win64$")
+ elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(_VCPKG_TARGET_TRIPLET_ARCH x64)
- elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 15 2017 ARM")
- set(_VCPKG_TARGET_TRIPLET_ARCH arm)
- elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 15 2017")
- set(_VCPKG_TARGET_TRIPLET_ARCH x86)
else()
- find_program(_VCPKG_CL cl)
- if(_VCPKG_CL MATCHES "amd64/cl.exe$" OR _VCPKG_CL MATCHES "x64/cl.exe$")
- set(_VCPKG_TARGET_TRIPLET_ARCH x64)
- elseif(_VCPKG_CL MATCHES "arm/cl.exe$")
- set(_VCPKG_TARGET_TRIPLET_ARCH arm)
- elseif(_VCPKG_CL MATCHES "bin/cl.exe$" OR _VCPKG_CL MATCHES "x86/cl.exe$")
- set(_VCPKG_TARGET_TRIPLET_ARCH x86)
- else()
- message(FATAL_ERROR "Unable to determine target architecture.")
- endif()
+ message(FATAL_ERROR "Unable to determine target architecture.")
endif()
endif()
+endif()
- if(WINDOWS_STORE OR WINDOWS_PHONE)
- set(_VCPKG_TARGET_TRIPLET_PLAT uwp)
- else()
- set(_VCPKG_TARGET_TRIPLET_PLAT windows)
- endif()
+if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone")
+ set(_VCPKG_TARGET_TRIPLET_PLAT uwp)
+elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR (NOT CMAKE_SYSTEM_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux"))
+ set(_VCPKG_TARGET_TRIPLET_PLAT linux)
+elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR (NOT CMAKE_SYSTEM_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin"))
+ set(_VCPKG_TARGET_TRIPLET_PLAT osx)
+elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows" OR (NOT CMAKE_SYSTEM_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows"))
+ set(_VCPKG_TARGET_TRIPLET_PLAT windows)
+elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR (NOT CMAKE_SYSTEM_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD"))
+ set(_VCPKG_TARGET_TRIPLET_PLAT freebsd)
+endif()
- set(VCPKG_TARGET_TRIPLET ${_VCPKG_TARGET_TRIPLET_ARCH}-${_VCPKG_TARGET_TRIPLET_PLAT} CACHE STRING "Vcpkg target triplet (ex. x86-windows)")
- set(_VCPKG_TOOLCHAIN_DIR ${CMAKE_CURRENT_LIST_DIR})
+set(VCPKG_TARGET_TRIPLET ${_VCPKG_TARGET_TRIPLET_ARCH}-${_VCPKG_TARGET_TRIPLET_PLAT} CACHE STRING "Vcpkg target triplet (ex. x86-windows)")
+set(_VCPKG_TOOLCHAIN_DIR ${CMAKE_CURRENT_LIST_DIR})
- #Detect .vcpkg-root to figure VCPKG_ROOT_DIR
- SET(_VCPKG_ROOT_DIR_CANDIDATE ${CMAKE_CURRENT_LIST_DIR})
+if(NOT DEFINED _VCPKG_ROOT_DIR)
+ # Detect .vcpkg-root to figure VCPKG_ROOT_DIR
+ set(_VCPKG_ROOT_DIR_CANDIDATE ${CMAKE_CURRENT_LIST_DIR})
while(IS_DIRECTORY ${_VCPKG_ROOT_DIR_CANDIDATE} AND NOT EXISTS "${_VCPKG_ROOT_DIR_CANDIDATE}/.vcpkg-root")
get_filename_component(_VCPKG_ROOT_DIR_TEMP ${_VCPKG_ROOT_DIR_CANDIDATE} DIRECTORY)
if (_VCPKG_ROOT_DIR_TEMP STREQUAL _VCPKG_ROOT_DIR_CANDIDATE) # If unchanged, we have reached the root of the drive
@@ -51,85 +81,187 @@ if(NOT VCPKG_TOOLCHAIN)
SET(_VCPKG_ROOT_DIR_CANDIDATE ${_VCPKG_ROOT_DIR_TEMP})
endif()
endwhile()
- set(_VCPKG_ROOT_DIR ${_VCPKG_ROOT_DIR_CANDIDATE})
+ set(_VCPKG_ROOT_DIR ${_VCPKG_ROOT_DIR_CANDIDATE} CACHE INTERNAL "Vcpkg root directory")
+endif()
+set(_VCPKG_INSTALLED_DIR ${_VCPKG_ROOT_DIR}/installed)
- set(_VCPKG_INSTALLED_DIR ${_VCPKG_ROOT_DIR}/installed)
+if(NOT EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}" AND NOT _CMAKE_IN_TRY_COMPILE)
+ message(WARNING "There are no libraries installed for the Vcpkg triplet ${VCPKG_TARGET_TRIPLET}.")
+endif()
- if(CMAKE_BUILD_TYPE MATCHES "^Debug$" OR NOT DEFINED CMAKE_BUILD_TYPE)
- list(APPEND CMAKE_PREFIX_PATH
- ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug
- )
- list(APPEND CMAKE_LIBRARY_PATH
- ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/manual-link
- )
- endif()
+if(CMAKE_BUILD_TYPE MATCHES "^Debug$" OR NOT DEFINED CMAKE_BUILD_TYPE)
list(APPEND CMAKE_PREFIX_PATH
- ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug
)
list(APPEND CMAKE_LIBRARY_PATH
- ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/manual-link
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/manual-link
+ )
+ list(APPEND CMAKE_FIND_ROOT_PATH
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug
)
+endif()
+list(APPEND CMAKE_PREFIX_PATH
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}
+)
+list(APPEND CMAKE_FIND_ROOT_PATH
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}
+)
+list(APPEND CMAKE_LIBRARY_PATH
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/manual-link
+)
- set(Boost_COMPILER "-vc140")
+file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
+set(CMAKE_SYSTEM_IGNORE_PATH
+ "${_programfiles}/OpenSSL"
+ "${_programfiles}/OpenSSL-Win32"
+ "${_programfiles}/OpenSSL-Win64"
+ "${_programfiles}/OpenSSL-Win32/lib/VC"
+ "${_programfiles}/OpenSSL-Win64/lib/VC"
+ "${_programfiles}/OpenSSL-Win32/lib/VC/static"
+ "${_programfiles}/OpenSSL-Win64/lib/VC/static"
+ "C:/OpenSSL/"
+ "C:/OpenSSL-Win32/"
+ "C:/OpenSSL-Win64/"
+ "C:/OpenSSL-Win32/lib/VC"
+ "C:/OpenSSL-Win64/lib/VC"
+ "C:/OpenSSL-Win32/lib/VC/static"
+ "C:/OpenSSL-Win64/lib/VC/static"
+)
- if (NOT DEFINED CMAKE_SYSTEM_VERSION)
- include(${_VCPKG_ROOT_DIR}/scripts/cmake/vcpkg_get_windows_sdk.cmake)
- # This is used as an implicit parameter for vcpkg_get_windows_sdk
- set(VCPKG_ROOT_DIR ${_VCPKG_ROOT_DIR})
- vcpkg_get_windows_sdk(WINDOWS_SDK_VERSION)
- unset(VCPKG_ROOT_DIR)
- set(CMAKE_SYSTEM_VERSION ${WINDOWS_SDK_VERSION})
+list(APPEND CMAKE_PROGRAM_PATH ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/tools)
+file(GLOB _VCPKG_TOOLS_DIRS ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/tools/*)
+foreach(_VCPKG_TOOLS_DIR ${_VCPKG_TOOLS_DIRS})
+ if(IS_DIRECTORY ${_VCPKG_TOOLS_DIR})
+ list(APPEND CMAKE_PROGRAM_PATH ${_VCPKG_TOOLS_DIR})
endif()
+endforeach()
- file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
- set(CMAKE_SYSTEM_IGNORE_PATH
- "${_programfiles}/OpenSSL"
- "${_programfiles}/OpenSSL-Win32"
- "${_programfiles}/OpenSSL-Win64"
- "${_programfiles}/OpenSSL-Win32/lib/VC"
- "${_programfiles}/OpenSSL-Win64/lib/VC"
- "${_programfiles}/OpenSSL-Win32/lib/VC/static"
- "${_programfiles}/OpenSSL-Win64/lib/VC/static"
- "C:/OpenSSL/"
- "C:/OpenSSL-Win32/"
- "C:/OpenSSL-Win64/"
- "C:/OpenSSL-Win32/lib/VC"
- "C:/OpenSSL-Win64/lib/VC"
- "C:/OpenSSL-Win32/lib/VC/static"
- "C:/OpenSSL-Win64/lib/VC/static"
- )
+option(VCPKG_APPLOCAL_DEPS "Automatically copy dependencies into the output directory for executables." ON)
+function(add_executable name)
+ _add_executable(${ARGV})
+ list(FIND ARGV "IMPORTED" IMPORTED_IDX)
+ list(FIND ARGV "ALIAS" ALIAS_IDX)
+ if(IMPORTED_IDX EQUAL -1 AND ALIAS_IDX EQUAL -1)
+ if(VCPKG_APPLOCAL_DEPS AND _VCPKG_TARGET_TRIPLET_PLAT MATCHES "windows|uwp")
+ add_custom_command(TARGET ${name} POST_BUILD
+ COMMAND powershell -noprofile -executionpolicy Bypass -file ${_VCPKG_TOOLCHAIN_DIR}/msbuild/applocal.ps1
+ -targetBinary $<TARGET_FILE:${name}>
+ -installedDir "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}$<$<CONFIG:Debug>:/debug>/bin"
+ -OutVariable out
+ )
+ endif()
+ set_target_properties(${name} PROPERTIES VS_USER_PROPS do_not_import_user.props)
+ set_target_properties(${name} PROPERTIES VS_GLOBAL_VcpkgEnabled false)
+ endif()
+endfunction()
+
+function(add_library name)
+ _add_library(${ARGV})
+ list(FIND ARGV "IMPORTED" IMPORTED_IDX)
+ list(FIND ARGV "INTERFACE" INTERFACE_IDX)
+ list(FIND ARGV "ALIAS" ALIAS_IDX)
+ if(IMPORTED_IDX EQUAL -1 AND INTERFACE_IDX EQUAL -1 AND ALIAS_IDX EQUAL -1)
+ get_target_property(IS_LIBRARY_SHARED ${name} TYPE)
+ if(VCPKG_APPLOCAL_DEPS AND _VCPKG_TARGET_TRIPLET_PLAT MATCHES "windows|uwp" AND (IS_LIBRARY_SHARED STREQUAL "SHARED_LIBRARY" OR IS_LIBRARY_SHARED STREQUAL "MODULE_LIBRARY"))
+ add_custom_command(TARGET ${name} POST_BUILD
+ COMMAND powershell -noprofile -executionpolicy Bypass -file ${_VCPKG_TOOLCHAIN_DIR}/msbuild/applocal.ps1
+ -targetBinary $<TARGET_FILE:${name}>
+ -installedDir "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}$<$<CONFIG:Debug>:/debug>/bin"
+ -OutVariable out
+ )
+ endif()
+ set_target_properties(${name} PROPERTIES VS_USER_PROPS do_not_import_user.props)
+ set_target_properties(${name} PROPERTIES VS_GLOBAL_VcpkgEnabled false)
+ endif()
+endfunction()
- set(CMAKE_PROGRAM_PATH ${CMAKE_PROGRAM_PATH} ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/tools)
-
- option(VCPKG_APPLOCAL_DEPS "Automatically copy dependencies into the output directory for executables." ON)
- function(add_executable name)
- _add_executable(${ARGV})
- list(FIND ARGV "IMPORTED" IMPORTED_IDX)
- list(FIND ARGV "ALIAS" ALIAS_IDX)
- if(IMPORTED_IDX EQUAL -1 AND ALIAS_IDX EQUAL -1)
- if(VCPKG_APPLOCAL_DEPS)
- add_custom_command(TARGET ${name} POST_BUILD
- COMMAND powershell -noprofile -executionpolicy Bypass -file ${_VCPKG_TOOLCHAIN_DIR}/msbuild/applocal.ps1
- -targetBinary $<TARGET_FILE:${name}>
- -installedDir "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}$<$<CONFIG:Debug>:/debug>/bin"
- -OutVariable out
- )
+macro(find_package name)
+ string(TOLOWER "${name}" _vcpkg_lowercase_name)
+ if(EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/share/${_vcpkg_lowercase_name}/vcpkg-cmake-wrapper.cmake")
+ set(ARGS "${ARGV}")
+ include(${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/share/${_vcpkg_lowercase_name}/vcpkg-cmake-wrapper.cmake)
+ elseif("${name}" STREQUAL "Boost" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/boost")
+ # Checking for the boost headers disables this wrapper unless the user has installed at least one boost library
+ unset(Boost_USE_STATIC_LIBS)
+ unset(Boost_USE_MULTITHREADED)
+ unset(Boost_USE_STATIC_RUNTIME)
+ set(Boost_COMPILER "-vc140")
+ _find_package(${ARGV})
+ elseif("${name}" STREQUAL "ICU" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/unicode/utf.h")
+ function(_vcpkg_find_in_list)
+ list(FIND ARGV "COMPONENTS" COMPONENTS_IDX)
+ set(COMPONENTS_IDX ${COMPONENTS_IDX} PARENT_SCOPE)
+ endfunction()
+ _vcpkg_find_in_list(${ARGV})
+ if(NOT COMPONENTS_IDX EQUAL -1)
+ _find_package(${ARGV} COMPONENTS data)
+ else()
+ _find_package(${ARGV})
+ endif()
+ elseif("${name}" STREQUAL "TIFF" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/tiff.h")
+ _find_package(${ARGV})
+ find_package(LibLZMA)
+ if(TARGET TIFF::TIFF)
+ set_property(TARGET TIFF::TIFF APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${LIBLZMA_LIBRARIES})
+ endif()
+ if(TIFF_LIBRARIES)
+ list(APPEND TIFF_LIBRARIES ${LIBLZMA_LIBRARIES})
+ endif()
+ elseif(("${name}" STREQUAL "HDF5" OR "${name}" STREQUAL "hdf5") AND NOT PROJECT_NAME STREQUAL "VTK" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/hdf5.h")
+ # This is a hack to make VTK work. TODO: find another way to suppress the built-in find module.
+ _find_package(${ARGV} CONFIG)
+ # Fill in missing static/shared targets
+ foreach(HDF5TARGET hdf5 hdf5_hl hdf5_cpp hdf5_hl_cpp)
+ if(TARGET hdf5::${HDF5TARGET}-static AND NOT TARGET hdf5::${HDF5TARGET}-shared)
+ _add_library(hdf5::${HDF5TARGET}-shared INTERFACE IMPORTED)
+ set_target_properties(hdf5::${HDF5TARGET}-shared PROPERTIES INTERFACE_LINK_LIBRARIES "hdf5::${HDF5TARGET}-static")
+ elseif(TARGET hdf5::${HDF5TARGET}-shared AND NOT TARGET hdf5::${HDF5TARGET}-static)
+ _add_library(hdf5::${HDF5TARGET}-static INTERFACE IMPORTED)
+ set_target_properties(hdf5::${HDF5TARGET}-static PROPERTIES INTERFACE_LINK_LIBRARIES "hdf5::${HDF5TARGET}-shared")
+ endif()
+ endforeach()
+ elseif("${name}" STREQUAL "GSL" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/gsl")
+ _find_package(${ARGV})
+ if(GSL_FOUND AND TARGET GSL::gsl)
+ set_property( TARGET GSL::gslcblas APPEND PROPERTY IMPORTED_CONFIGURATIONS Release )
+ set_property( TARGET GSL::gsl APPEND PROPERTY IMPORTED_CONFIGURATIONS Release )
+ if( EXISTS "${GSL_LIBRARY_DEBUG}" AND EXISTS "${GSL_CBLAS_LIBRARY_DEBUG}")
+ set_property( TARGET GSL::gsl APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
+ set_target_properties( GSL::gsl PROPERTIES IMPORTED_LOCATION_DEBUG "${GSL_LIBRARY_DEBUG}" )
+ set_property( TARGET GSL::gslcblas APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
+ set_target_properties( GSL::gslcblas PROPERTIES IMPORTED_LOCATION_DEBUG "${GSL_CBLAS_LIBRARY_DEBUG}" )
endif()
- set_target_properties(${name} PROPERTIES VS_USER_PROPS do_not_import_user.props)
- set_target_properties(${name} PROPERTIES VS_GLOBAL_VcpkgEnabled false)
endif()
- endfunction()
-
- function(add_library name)
- _add_library(${ARGV})
- list(FIND ARGV "IMPORTED" IMPORTED_IDX)
- list(FIND ARGV "INTERFACE" INTERFACE_IDX)
- list(FIND ARGV "ALIAS" ALIAS_IDX)
- if(IMPORTED_IDX EQUAL -1 AND INTERFACE_IDX EQUAL -1 AND ALIAS_IDX EQUAL -1)
- set_target_properties(${name} PROPERTIES VS_USER_PROPS do_not_import_user.props)
- set_target_properties(${name} PROPERTIES VS_GLOBAL_VcpkgEnabled false)
+ elseif("${name}" STREQUAL "CURL" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/curl")
+ _find_package(${ARGV})
+ if(CURL_FOUND)
+ if(EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/nghttp2.lib")
+ list(APPEND CURL_LIBRARIES
+ "debug" "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/nghttp2.lib"
+ "optimized" "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/nghttp2.lib")
+ endif()
endif()
- endfunction()
+ elseif("${_vcpkg_lowercase_name}" STREQUAL "grpc" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/share/grpc")
+ _find_package(gRPC ${ARGN})
+ else()
+ _find_package(${ARGV})
+ endif()
+endmacro()
- set(VCPKG_TOOLCHAIN ON)
+set(VCPKG_TOOLCHAIN ON)
+set(_UNUSED ${CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION})
+set(_UNUSED ${CMAKE_EXPORT_NO_PACKAGE_REGISTRY})
+set(_UNUSED ${CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY})
+set(_UNUSED ${CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY})
+set(_UNUSED ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP})
+
+if(NOT _CMAKE_IN_TRY_COMPILE)
+ file(TO_CMAKE_PATH "${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}" _chainload_file)
+ file(TO_CMAKE_PATH "${_VCPKG_ROOT_DIR}" _root_dir)
+ file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/vcpkg.config.cmake"
+ "set(VCPKG_TARGET_TRIPLET \"${VCPKG_TARGET_TRIPLET}\" CACHE STRING \"\")\n"
+ "set(VCPKG_APPLOCAL_DEPS \"${VCPKG_APPLOCAL_DEPS}\" CACHE STRING \"\")\n"
+ "set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE \"${_chainload_file}\" CACHE STRING \"\")\n"
+ "set(_VCPKG_ROOT_DIR \"${_root_dir}\" CACHE STRING \"\")\n"
+ )
endif()