From ccca198c1b1730b0241911cb56dc8e3504958b2a Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Sun, 18 Sep 2016 20:50:08 -0700 Subject: Initial commit --- scripts/buildsystems/msbuild/applocal.ps1 | 27 ++++++++++++++ scripts/buildsystems/msbuild/vcpkg.targets | 58 ++++++++++++++++++++++++++++++ scripts/buildsystems/vcpkg.cmake | 52 +++++++++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 scripts/buildsystems/msbuild/applocal.ps1 create mode 100644 scripts/buildsystems/msbuild/vcpkg.targets create mode 100644 scripts/buildsystems/vcpkg.cmake (limited to 'scripts/buildsystems') diff --git a/scripts/buildsystems/msbuild/applocal.ps1 b/scripts/buildsystems/msbuild/applocal.ps1 new file mode 100644 index 000000000..70528e078 --- /dev/null +++ b/scripts/buildsystems/msbuild/applocal.ps1 @@ -0,0 +1,27 @@ +[cmdletbinding()] +param([string]$targetBinary, [string]$installedDir, [string]$tlogFile) + +function resolve($targetBinary) { + $targetBinaryPath = Resolve-Path $targetBinary + $targetBinaryDir = Split-Path $targetBinaryPath -parent + + $a = $(link /dump /imports $targetBinary | ? { $_ -match "^ [^ ].*\.dll" } | % { $_ -replace "^ ","" }) + $a | % { + if (Test-Path "$installedDir\$_") { + if (Test-Path "$targetBinaryDir\$_") { + Write-Verbose "$_ is already present" + } + else { + Copy-Item $installedDir\$_ $targetBinaryDir + Write-Verbose "Copying $installedDir\$_ -> $_" + } + "$targetBinaryDir\$_" + if ($tlogFile) { Add-Content $tlogFile "$targetBinaryDir\$_" } + resolve("$targetBinaryDir\$_") + } else { + Write-Verbose "$installedDir\$_ not found" + } + } +} + +resolve($targetBinary) \ No newline at end of file diff --git a/scripts/buildsystems/msbuild/vcpkg.targets b/scripts/buildsystems/msbuild/vcpkg.targets new file mode 100644 index 000000000..3a74099f0 --- /dev/null +++ b/scripts/buildsystems/msbuild/vcpkg.targets @@ -0,0 +1,58 @@ + + + true + x86-windows + + + + true + x86-uwp + + + + true + x64-windows + + + + true + x64-uwp + + + + true + arm-uwp + + + + $(Configuration) + + $(MSBuildThisFileDirectory)..\..\..\installed\$(VCPkgTriplet)\ + + + + + $(VCPkgRoot)debug\lib\*.lib;%(AdditionalDependencies) + $(VCPkgRoot)lib\*.lib;%(AdditionalDependencies) + + + $(VCPkgRoot)include;%(AdditionalIncludeDirectories) + + + + + + + + + + + + + diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake new file mode 100644 index 000000000..26cc8a57b --- /dev/null +++ b/scripts/buildsystems/vcpkg.cmake @@ -0,0 +1,52 @@ +if(NOT VCPKG_TOOLCHAIN) + if(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) + 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) + else() + set(_VCPKG_TARGET_TRIPLET_ARCH x86) + endif() + endif() + + if(WINDOWS_STORE OR WINDOWS_PHONE) + set(_VCPKG_TARGET_TRIPLET_PLAT uwp) + else() + set(_VCPKG_TARGET_TRIPLET_PLAT windows) + endif() + + set(_VCPKG_TARGET_TRIPLET ${_VCPKG_TARGET_TRIPLET_ARCH}-${_VCPKG_TARGET_TRIPLET_PLAT}) + + set(_VCPKG_TOOLCHAIN_DIR ${CMAKE_CURRENT_LIST_DIR}) + + if(CMAKE_BUILD_TYPE MATCHES "^Debug$" OR NOT DEFINED CMAKE_BUILD_TYPE) + list(APPEND CMAKE_PREFIX_PATH + ${CMAKE_CURRENT_LIST_DIR}/../installed/${_VCPKG_TARGET_TRIPLET}/debug + ) + endif() + list(APPEND CMAKE_PREFIX_PATH + ${CMAKE_CURRENT_LIST_DIR}/../installed/${_VCPKG_TARGET_TRIPLET} + ) + + include_directories(${CMAKE_CURRENT_LIST_DIR}/../installed/${_VCPKG_TARGET_TRIPLET}/include) + + option(OVERRIDE_ADD_EXECUTABLE "Automatically copy dependencies into the output directory for executables." ON) + if(OVERRIDE_ADD_EXECUTABLE) + function(add_executable name) + _add_executable(${ARGV}) + add_custom_command(TARGET ${name} POST_BUILD + COMMAND powershell -executionpolicy remotesigned -file ${_VCPKG_TOOLCHAIN_DIR}/msbuild/applocal.ps1 + -targetBinary $ + -installedDir "${_VCPKG_TOOLCHAIN_DIR}/../installed/${_VCPKG_TARGET_TRIPLET}$<$:/debug>/bin" + -OutVariable out + ) + endfunction() + endif() + set(VCPKG_TOOLCHAIN ON) +endif() -- cgit v1.2.3