aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-11-25 15:53:32 -0800
committerRobert Schumacher <roschuma@microsoft.com>2017-11-25 16:21:54 -0800
commit14cbe496bcc136aac590f10d79848ec224088e85 (patch)
tree20b3fb94bfde3588b8d43221e300335466e70598
parent5335d17f53d491d83d98e80ab0e750ec0f6f430b (diff)
downloadvcpkg-14cbe496bcc136aac590f10d79848ec224088e85.tar.gz
vcpkg-14cbe496bcc136aac590f10d79848ec224088e85.zip
[vcpkg] Allow compilation inside WSL
-rw-r--r--ports/zlib/portfile.cmake6
-rw-r--r--scripts/buildsystems/vcpkg.cmake8
-rw-r--r--toolsrc/CMakeLists.txt14
-rw-r--r--toolsrc/src/vcpkg/vcpkgpaths.cpp8
4 files changed, 32 insertions, 4 deletions
diff --git a/ports/zlib/portfile.cmake b/ports/zlib/portfile.cmake
index ec8b05ffc..963b86d24 100644
--- a/ports/zlib/portfile.cmake
+++ b/ports/zlib/portfile.cmake
@@ -27,8 +27,10 @@ vcpkg_install_cmake()
# Both dynamic and static are built, so keep only the one needed
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
- file(RENAME ${CURRENT_PACKAGES_DIR}/lib/zlibstatic.lib ${CURRENT_PACKAGES_DIR}/lib/zlib.lib)
- file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/zlibstaticd.lib ${CURRENT_PACKAGES_DIR}/debug/lib/zlibd.lib)
+ if(EXISTS ${CURRENT_PACKAGES_DIR}/lib/zlibstatic.lib)
+ file(RENAME ${CURRENT_PACKAGES_DIR}/lib/zlibstatic.lib ${CURRENT_PACKAGES_DIR}/lib/zlib.lib)
+ file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/zlibstaticd.lib ${CURRENT_PACKAGES_DIR}/debug/lib/zlibd.lib)
+ endif()
endif()
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/zlib RENAME copyright)
diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake
index 4d82c43b7..8edc2830c 100644
--- a/scripts/buildsystems/vcpkg.cmake
+++ b/scripts/buildsystems/vcpkg.cmake
@@ -42,6 +42,8 @@ else()
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)
+ elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
+ set(_VCPKG_TARGET_TRIPLET_ARCH x64)
else()
message(FATAL_ERROR "Unable to determine target architecture.")
endif()
@@ -50,6 +52,8 @@ endif()
if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone")
set(_VCPKG_TARGET_TRIPLET_PLAT uwp)
+elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
+ set(_VCPKG_TARGET_TRIPLET_PLAT linux)
else()
set(_VCPKG_TARGET_TRIPLET_PLAT windows)
endif()
@@ -93,7 +97,7 @@ list(APPEND CMAKE_LIBRARY_PATH
set(Boost_COMPILER "-vc140")
-if (NOT DEFINED CMAKE_SYSTEM_VERSION)
+if (NOT DEFINED CMAKE_SYSTEM_VERSION AND _VCPKG_TARGET_TRIPLET_PLAT MATCHES "windows|uwp")
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})
@@ -134,7 +138,7 @@ function(add_executable name)
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)
+ 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}>
diff --git a/toolsrc/CMakeLists.txt b/toolsrc/CMakeLists.txt
new file mode 100644
index 000000000..af281f12f
--- /dev/null
+++ b/toolsrc/CMakeLists.txt
@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 3.3)
+project(vcpkg CXX)
+
+add_compile_options(-std=c++1z)
+
+file(GLOB_RECURSE VCPKGLIB_SOURCES src/vcpkg/*.cpp)
+
+add_library(vcpkglib STATIC ${VCPKGLIB_SOURCES})
+target_compile_definitions(vcpkglib PRIVATE -DDISABLE_METRICS=0)
+target_include_directories(vcpkglib PUBLIC include)
+target_link_libraries(vcpkglib PRIVATE stdc++fs)
+
+add_executable(vcpkg src/vcpkg.cpp)
+target_link_libraries(vcpkg PRIVATE vcpkglib)
diff --git a/toolsrc/src/vcpkg/vcpkgpaths.cpp b/toolsrc/src/vcpkg/vcpkgpaths.cpp
index 0114b51b8..016f26f6d 100644
--- a/toolsrc/src/vcpkg/vcpkgpaths.cpp
+++ b/toolsrc/src/vcpkg/vcpkgpaths.cpp
@@ -113,7 +113,11 @@ namespace vcpkg
static fs::path get_cmake_path(const fs::path& downloads_folder, const fs::path& scripts_folder)
{
+#if defined(_WIN32)
static constexpr std::array<int, 3> EXPECTED_VERSION = {3, 9, 5};
+#else
+ static constexpr std::array<int, 3> EXPECTED_VERSION = {3, 5, 1};
+#endif
static const std::string VERSION_CHECK_ARGUMENTS = "--version";
const std::vector<fs::path> from_path = Files::find_from_PATH("cmake");
@@ -161,7 +165,11 @@ namespace vcpkg
fs::path get_git_path(const fs::path& downloads_folder, const fs::path& scripts_folder)
{
+#if defined(_WIN32)
static constexpr std::array<int, 3> EXPECTED_VERSION = {2, 15, 0};
+#else
+ static constexpr std::array<int, 3> EXPECTED_VERSION = {2, 7, 4};
+#endif
static const std::string VERSION_CHECK_ARGUMENTS = "--version";
const std::vector<fs::path> from_path = Files::find_from_PATH("git");