mirror of
https://github.com/cemu-project/vcpkg.git
synced 2025-02-23 19:17:10 +01:00
Merge branch 'master' into codicodi-ninja-support
This commit is contained in:
commit
4d43330241
@ -3,7 +3,7 @@
|
||||
## Overview
|
||||
Vcpkg helps you get C and C++ libraries on Windows.
|
||||
|
||||
For short description of available commands, run `vcpkg help`.
|
||||
For short description of available commands, run `.\vcpkg help`.
|
||||
|
||||
## Table of Contents
|
||||
- <a href="#example-1">Example 1: Using Sqlite</a>
|
||||
@ -75,7 +75,7 @@ To install for other architectures and platforms such as Universal Windows Platf
|
||||
PS D:\src\vcpkg> .\vcpkg install sqlite3:x86-uwp zlib:x64-windows
|
||||
```
|
||||
|
||||
See `vcpkg help triplet` for all supported targets.
|
||||
See `.\vcpkg help triplet` for all supported targets.
|
||||
|
||||
<a name="example-1-2"></a>
|
||||
### Step 2: Use
|
||||
@ -95,7 +95,7 @@ Installing new libraries will make them instantly available.
|
||||
|
||||
You can now simply use File -> New Project in Visual Studio 2015 or Visual Studio "15" Preview and the library will be automatically available. For Sqlite, you can try out their [C/C++ sample](https://sqlite.org/quickstart.html).
|
||||
|
||||
To remove the integration for your user, you can use `vcpkg integrate remove`.
|
||||
To remove the integration for your user, you can use `.\vcpkg integrate remove`.
|
||||
|
||||
<a name="example-1-2-b"></a>
|
||||
#### Option B: CMake (Toolchain File)
|
||||
@ -150,9 +150,9 @@ PS D:\src\cmake-test\build> .\Debug\main.exe
|
||||
|
||||
Libraries are installed into the `installed\` subfolder, partitioned by architecture (e.g. x86-windows):
|
||||
* The header files are installed to `installed\x86-windows\include`
|
||||
* Release `.lib` files are installed to `installed\x86-windows\lib`
|
||||
* Release `.lib` files are installed to `installed\x86-windows\lib` or `installed\x86-windows\lib\manual-link`
|
||||
* Release `.dll` files are installed to `installed\x86-windows\bin`
|
||||
* Debug `.lib` files are installed to `installed\x86-windows\debug\lib`
|
||||
* Debug `.lib` files are installed to `installed\x86-windows\debug\lib` or `installed\x86-windows\debug\lib\manual-link`
|
||||
* Debug `.dll` files are installed to `installed\x86-windows\debug\bin`
|
||||
|
||||
See your build system specific documentation for how to use prebuilt binaries.
|
||||
|
@ -1,3 +1,3 @@
|
||||
Source: aws-sdk-cpp
|
||||
Version: 1.0.47
|
||||
Version: 1.0.61
|
||||
Description: AWS SDK for C++
|
||||
|
13
ports/aws-sdk-cpp/disable_warning_as_error.patch
Normal file
13
ports/aws-sdk-cpp/disable_warning_as_error.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/cmake/compiler_settings.cmake b/cmake/compiler_settings.cmake
|
||||
index 36795a2..77334ee 100644
|
||||
--- a/cmake/compiler_settings.cmake
|
||||
+++ b/cmake/compiler_settings.cmake
|
||||
@@ -57,7 +57,7 @@ endif()
|
||||
if(MSVC)
|
||||
# warnings as errors, max warning level (4)
|
||||
if(NOT CMAKE_CXX_FLAGS MATCHES "/WX")
|
||||
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
|
||||
+ #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
|
||||
endif()
|
||||
|
||||
# taken from http://stackoverflow.com/questions/2368811/how-to-set-warning-level-in-cmake
|
@ -1,9 +1,9 @@
|
||||
include(vcpkg_common_functions)
|
||||
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/aws-sdk-cpp-1.0.47)
|
||||
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/aws-sdk-cpp-1.0.61)
|
||||
vcpkg_download_distfile(ARCHIVE
|
||||
URLS "https://github.com/aws/aws-sdk-cpp/archive/1.0.47.tar.gz"
|
||||
FILENAME "aws-sdk-cpp-1.0.47.tar.gz"
|
||||
SHA512 ce7471bafe2763f1c382eed8afeaf6422058599a3aa11ae52909da668c45d12827fcd06b9b3ce34e3c2fa33297fd2e09421b8a89833d581efaf62b7108232acf
|
||||
URLS "https://github.com/aws/aws-sdk-cpp/archive/1.0.61.tar.gz"
|
||||
FILENAME "aws-sdk-cpp-1.0.61.tar.gz"
|
||||
SHA512 aef0a85a32db24dc4fba0fc49c2533074580f3df628e787ff0808f03deea5dac42e19b1edc966706784e98cfed17a350c3eff4f222df7cc756065be56d1fc6a6
|
||||
)
|
||||
vcpkg_extract_source_archive(${ARCHIVE})
|
||||
|
||||
@ -11,6 +11,7 @@ vcpkg_apply_patches(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
PATCHES
|
||||
${CMAKE_CURRENT_LIST_DIR}/drop_git.patch
|
||||
${CMAKE_CURRENT_LIST_DIR}/disable_warning_as_error.patch
|
||||
)
|
||||
|
||||
if(VCPKG_CRT_LINKAGE STREQUAL static)
|
||||
@ -44,11 +45,7 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
|
||||
file(COPY ${DEBUG_LIB_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
|
||||
file(REMOVE ${LIB_FILES} ${DEBUG_LIB_FILES})
|
||||
|
||||
vcpkg_apply_patches( #define USE_IMPORT_EXPORT in SDKConfig.h
|
||||
SOURCE_PATH ${CURRENT_PACKAGES_DIR}/include
|
||||
PATCHES
|
||||
${CMAKE_CURRENT_LIST_DIR}/shared_define.patch
|
||||
)
|
||||
file(APPEND ${CURRENT_PACKAGES_DIR}/include/aws/core/SDKConfig.h "#define USE_IMPORT_EXPORT")
|
||||
endif()
|
||||
|
||||
# Handle copyright
|
||||
|
@ -1,10 +0,0 @@
|
||||
diff --git a/aws/core/SDKConfig.h b/aws/core/SDKConfig.h
|
||||
index 130c9dd..66b2630 100644
|
||||
--- a/aws/core/SDKConfig.h
|
||||
+++ b/aws/core/SDKConfig.h
|
||||
@@ -17,3 +17,4 @@
|
||||
|
||||
#define JSON_USE_EXCEPTION 0
|
||||
|
||||
+#define USE_IMPORT_EXPORT
|
||||
\ No newline at end of file
|
@ -1,5 +1,5 @@
|
||||
Source: cpprestsdk
|
||||
Version: 2.9.0-1
|
||||
Build-Depends: zlib [windows], openssl [windows], boost [windows]
|
||||
Version: 2.9.0-2
|
||||
Build-Depends: zlib [windows], openssl [windows], boost [windows], websocketpp [windows]
|
||||
Description: C++11 JSON, REST, and OAuth library
|
||||
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.
|
@ -15,9 +15,13 @@ vcpkg_apply_patches(
|
||||
${CMAKE_CURRENT_LIST_DIR}/0001_cmake.patch
|
||||
)
|
||||
|
||||
SET(WEBSOCKETPP_PATH "${CURRENT_INSTALLED_DIR}/share/websocketpp")
|
||||
|
||||
vcpkg_configure_cmake(
|
||||
SOURCE_PATH ${SOURCE_PATH}/Release
|
||||
OPTIONS
|
||||
-DWEBSOCKETPP_CONFIG=${WEBSOCKETPP_PATH}
|
||||
-DWEBSOCKETPP_CONFIG_VERSION=${WEBSOCKETPP_PATH}
|
||||
-DBUILD_TESTS=OFF
|
||||
-DBUILD_SAMPLES=OFF
|
||||
-DCPPREST_EXCLUDE_WEBSOCKETS=OFF
|
||||
|
3
ports/cuda/CONTROL
Normal file
3
ports/cuda/CONTROL
Normal file
@ -0,0 +1,3 @@
|
||||
Source: cuda
|
||||
Version: 8.0
|
||||
Description: A parallel computing platform and programming model
|
34
ports/cuda/portfile.cmake
Normal file
34
ports/cuda/portfile.cmake
Normal file
@ -0,0 +1,34 @@
|
||||
# Due to the complexity involved, this package doesn't install CUDA. It instead verifies that CUDA is installed.
|
||||
# Other packages can depend on this package to declare a dependency on CUDA.
|
||||
# If this package is installed, we assume that CUDA is properly installed.
|
||||
|
||||
execute_process(
|
||||
COMMAND nvcc --version
|
||||
OUTPUT_VARIABLE NVCC_OUTPUT
|
||||
RESULT_VARIABLE error_code)
|
||||
|
||||
# Sample output
|
||||
# NVIDIA (R) Cuda compiler driver
|
||||
# Copyright (c) 2005-2016 NVIDIA Corporation
|
||||
# Built on Sat_Sep__3_19:05:48_CDT_2016
|
||||
# Cuda compilation tools, release 8.0, V8.0.44
|
||||
set(CUDA_REQUIRED_VERSION "V8.0.0")
|
||||
|
||||
if (${error_code})
|
||||
message(FATAL_ERROR "CUDA is not installed. Before continuing, please download and install CUDA (${CUDA_REQUIRED_VERSION} or higher) from:"
|
||||
"\n https://developer.nvidia.com/cuda-downloads \n")
|
||||
endif()
|
||||
|
||||
string(REGEX MATCH "V([0-9]+)\\.([0-9]+)\\.([0-9]+)" CUDA_VERSION ${NVCC_OUTPUT})
|
||||
message(STATUS "Found CUDA ${CUDA_VERSION}")
|
||||
set(CUDA_VERSION_MAJOR ${CMAKE_MATCH_1})
|
||||
#set(CUDA_VERSION_MINOR ${CMAKE_MATCH_2})
|
||||
#set(CUDA_VERSION_PATCH ${CMAKE_MATCH_3})
|
||||
|
||||
|
||||
if (${CUDA_VERSION_MAJOR} LESS 8)
|
||||
message(FATAL_ERROR "CUDA ${CUDA_VERSION} but ${CUDA_REQUIRED_VERSION} is required. Please download and install a more recent version of CUDA from:"
|
||||
"\n https://developer.nvidia.com/cuda-downloads \n")
|
||||
endif()
|
||||
|
||||
SET(VCPKG_POLICY_EMPTY_PACKAGE enabled)
|
@ -53,6 +53,8 @@ file(RENAME ${CURRENT_PACKAGES_DIR}/lib/cmake/gRPC/gRPCTargets-release.cmake ${C
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/cmake/gRPC/gRPCTargets-debug.cmake ${CURRENT_PACKAGES_DIR}/share/grpc/gRPCTargets-debug.cmake)
|
||||
|
||||
file(INSTALL ${CURRENT_BUILDTREES_DIR}/src/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/grpc RENAME copyright)
|
||||
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools)
|
||||
file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Release/grpc_cpp_plugin.exe DESTINATION ${CURRENT_PACKAGES_DIR}/tools)
|
||||
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin)
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
|
||||
|
@ -1,4 +1,4 @@
|
||||
Source: poco
|
||||
Version: 1.7.6-2
|
||||
Version: 1.7.6-3
|
||||
Build-Depends: zlib, pcre, sqlite3, expat
|
||||
Description: Modern, powerful open source C++ class libraries for building network and internet-based applications that run on desktop, server, mobile and embedded systems.
|
12
ports/poco/foundation-public-include-pcre.patch
Normal file
12
ports/poco/foundation-public-include-pcre.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff --git a/Foundation/CMakeLists.txt b/Foundation/CMakeLists.txt
|
||||
index 76005b1..efc99b6 100644
|
||||
--- a/Foundation/CMakeLists.txt
|
||||
+++ b/Foundation/CMakeLists.txt
|
||||
@@ -166,6 +166,7 @@ target_link_libraries( "${LIBNAME}" ${SYSLIBS})
|
||||
target_include_directories( "${LIBNAME}"
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
+ $<BUILD_INTERFACE:${PCRE_INCLUDE_DIRS}>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||
)
|
@ -13,6 +13,7 @@ vcpkg_apply_patches(
|
||||
PATCHES
|
||||
${CMAKE_CURRENT_LIST_DIR}/config_h.patch
|
||||
${CMAKE_CURRENT_LIST_DIR}/find_pcre.patch
|
||||
${CMAKE_CURRENT_LIST_DIR}/foundation-public-include-pcre.patch
|
||||
)
|
||||
|
||||
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
|
||||
|
@ -1,3 +1,4 @@
|
||||
Source: websocketpp
|
||||
Version: 0.7.0
|
||||
Build-Depends: zlib, openssl, boost
|
||||
Description: Library that implements RFC6455 The WebSocket Protocol
|
@ -1,4 +1,4 @@
|
||||
Source: wt
|
||||
Version: 3.3.6-2
|
||||
Version: 3.3.6-3
|
||||
Description: Wt is a C++ library for developing web applications
|
||||
Build-Depends: boost, openssl
|
||||
|
@ -7,10 +7,15 @@ vcpkg_download_distfile(ARCHIVE_FILE
|
||||
SHA512 d6135713d300bcd3956a4fd673af73be0561eb5d6aa91c47255b966950ddb411217e6a826c1d11c0d941dbb6d006c9926231d7334b21de6256cca331066e18a6
|
||||
)
|
||||
vcpkg_extract_source_archive(${ARCHIVE_FILE})
|
||||
|
||||
vcpkg_download_distfile(PATCH_FILE
|
||||
URLS "https://github.com/emweb/wt/commit/b944cdc0961f683cd12fc6e60db3d0b328cd46dd.diff"
|
||||
FILENAME "wt-fix-boost-1-63.diff"
|
||||
SHA512 0766837ed8852da675b02b45bfbe7a6705ab20f67aa20849df4cc4b93b00dec0b73acea3568bca1046e203119445044c5ea06e33bac5d5d991f6a56b8fe282e1
|
||||
)
|
||||
vcpkg_apply_patches(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
PATCHES ${CMAKE_CURRENT_LIST_DIR}/add-disable-boost-autolink-option.patch
|
||||
${PATCH_FILE}
|
||||
)
|
||||
|
||||
vcpkg_configure_cmake(
|
||||
|
@ -1,9 +1,14 @@
|
||||
function(vcpkg_build_cmake)
|
||||
cmake_parse_arguments(_bc "MSVC_64_TOOLSET;DISABLE_PARALLEL" "" "" ${ARGN})
|
||||
|
||||
set(MSVC_EXTRA_ARGS /p:VCPkgLocalAppDataDisabled=true)
|
||||
set(MSVC_EXTRA_ARGS
|
||||
"/p:VCPkgLocalAppDataDisabled=true"
|
||||
"/p:UseIntelMKL=No"
|
||||
)
|
||||
|
||||
# Specifies the architecture of the toolset, NOT the architecture of the produced binary
|
||||
# This can help libraries that cause the linker to run out of memory.
|
||||
# https://support.microsoft.com/en-us/help/2891057/linker-fatal-error-lnk1102-out-of-memory
|
||||
if (_bc_MSVC_64_TOOLSET)
|
||||
list(APPEND MSVC_EXTRA_ARGS "/p:PreferredToolArchitecture=x64")
|
||||
endif()
|
||||
|
@ -55,6 +55,7 @@ function(vcpkg_build_msbuild)
|
||||
/p:Configuration=${_csc_RELEASE_CONFIGURATION}
|
||||
/p:Platform=${_csc_PLATFORM}
|
||||
/p:VCPkgLocalAppDataDisabled=true
|
||||
/p:UseIntelMKL=No
|
||||
/m
|
||||
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
|
||||
LOGNAME build-${TARGET_TRIPLET}-rel
|
||||
@ -67,6 +68,7 @@ function(vcpkg_build_msbuild)
|
||||
/p:Configuration=${_csc_DEBUG_CONFIGURATION}
|
||||
/p:Platform=${_csc_PLATFORM}
|
||||
/p:VCPkgLocalAppDataDisabled=true
|
||||
/p:UseIntelMKL=No
|
||||
/m
|
||||
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
|
||||
LOGNAME build-${TARGET_TRIPLET}-dbg
|
||||
|
@ -1,9 +1,14 @@
|
||||
function(vcpkg_install_cmake)
|
||||
cmake_parse_arguments(_bc "MSVC_64_TOOLSET;DISABLE_PARALLEL" "" "" ${ARGN})
|
||||
|
||||
set(MSVC_EXTRA_ARGS /p:VCPkgLocalAppDataDisabled=true)
|
||||
set(MSVC_EXTRA_ARGS
|
||||
"/p:VCPkgLocalAppDataDisabled=true"
|
||||
"/p:UseIntelMKL=No"
|
||||
)
|
||||
|
||||
# Specifies the architecture of the toolset, NOT the architecture of the produced binary
|
||||
# This can help libraries that cause the linker to run out of memory.
|
||||
# https://support.microsoft.com/en-us/help/2891057/linker-fatal-error-lnk1102-out-of-memory
|
||||
if (_bc_MSVC_64_TOOLSET)
|
||||
list(APPEND MSVC_EXTRA_ARGS "/p:PreferredToolArchitecture=x64")
|
||||
endif()
|
||||
|
@ -13,17 +13,8 @@ $downloadsDir = "$vcpkgRootDir\downloads"
|
||||
$nugetexe = & $scriptsDir\fetchDependency.ps1 "nuget"
|
||||
$nugetPackageDir = "$downloadsDir\nuget-packages"
|
||||
|
||||
$SetupAPIVersion = "1.3.269-rc"
|
||||
$url = "https://api.nuget.org/packages/microsoft.visualstudio.setup.configuration.native.$SetupAPIVersion.nupkg"
|
||||
$downloadName = "microsoft.visualstudio.setup.configuration.native.$SetupAPIVersion.nupkg"
|
||||
$downloadPath = "$downloadsDir\$downloadName"
|
||||
|
||||
if (!(Test-Path $downloadPath))
|
||||
{
|
||||
Start-BitsTransfer -Source $url -Destination $downloadPath #-ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
$nugetOutput = & $nugetexe install Microsoft.VisualStudio.Setup.Configuration.Native -Pre -Source $downloadsDir -OutputDirectory $nugetPackageDir 2>&1
|
||||
$SetupAPIVersion = "1.5.125-rc"
|
||||
$nugetOutput = & $nugetexe install Microsoft.VisualStudio.Setup.Configuration.Native -Version $SetupAPIVersion -OutputDirectory $nugetPackageDir -nocache 2>&1
|
||||
|
||||
$SetupConsoleExe = "$nugetPackageDir\Microsoft.VisualStudio.Setup.Configuration.Native.$SetupAPIVersion\tools\x86\Microsoft.VisualStudio.Setup.Configuration.Console.exe"
|
||||
|
||||
@ -34,8 +25,9 @@ if (!(Test-Path $SetupConsoleExe))
|
||||
|
||||
$instances = & $SetupConsoleExe -nologo -value InstallationPath 2>&1
|
||||
$instanceCount = $instances.Length
|
||||
|
||||
# The last item can be empty
|
||||
if ($instances[$entryCount - 1] -eq "")
|
||||
if ($instanceCount -gt 0 -and $instances[$instanceCount - 1] -eq "")
|
||||
{
|
||||
$instances = $instances[0..($instanceCount - 2)]
|
||||
}
|
||||
|
@ -79,6 +79,9 @@ if(CMD MATCHES "^BUILD$")
|
||||
if (DEFINED VCPKG_POLICY_DLLS_WITHOUT_LIBS)
|
||||
file(APPEND ${BUILD_INFO_FILE_PATH} "PolicyDLLsWithoutLIBs: ${VCPKG_POLICY_DLLS_WITHOUT_LIBS}\n")
|
||||
endif()
|
||||
if (DEFINED VCPKG_POLICY_EMPTY_PACKAGE)
|
||||
file(APPEND ${BUILD_INFO_FILE_PATH} "PolicyEmptyPackage: ${VCPKG_POLICY_EMPTY_PACKAGE}\n")
|
||||
endif()
|
||||
elseif(CMD MATCHES "^CREATE$")
|
||||
file(TO_NATIVE_PATH ${VCPKG_ROOT_DIR} NATIVE_VCPKG_ROOT_DIR)
|
||||
file(TO_NATIVE_PATH ${DOWNLOADS} NATIVE_DOWNLOADS)
|
||||
|
@ -6,6 +6,7 @@ namespace vcpkg::PostBuildLint::BuildPolicies
|
||||
enum class backing_enum_t
|
||||
{
|
||||
UNKNOWN = 0,
|
||||
EMPTY_PACKAGE,
|
||||
DLLS_WITHOUT_LIBS
|
||||
};
|
||||
|
||||
@ -22,10 +23,12 @@ namespace vcpkg::PostBuildLint::BuildPolicies
|
||||
backing_enum_t backing_enum;
|
||||
};
|
||||
|
||||
static constexpr int value_count = 2;
|
||||
static constexpr int value_count = 3;
|
||||
const std::vector<type>& values();
|
||||
|
||||
|
||||
static constexpr type UNKNOWN(backing_enum_t::UNKNOWN);
|
||||
static constexpr type EMPTY_PACKAGE(backing_enum_t::EMPTY_PACKAGE);
|
||||
static constexpr type DLLS_WITHOUT_LIBS(backing_enum_t::DLLS_WITHOUT_LIBS);
|
||||
|
||||
type parse(const std::string& s);
|
||||
|
@ -1,59 +0,0 @@
|
||||
#pragma once
|
||||
#include <vector>
|
||||
#include <regex>
|
||||
|
||||
namespace vcpkg::PostBuildLint
|
||||
{
|
||||
struct OutdatedDynamicCrt
|
||||
{
|
||||
// Old CPP
|
||||
static const OutdatedDynamicCrt MSVCP100_DLL;
|
||||
static const OutdatedDynamicCrt MSVCP100D_DLL;
|
||||
static const OutdatedDynamicCrt MSVCP110_DLL;
|
||||
static const OutdatedDynamicCrt MSVCP110_WIN_DLL;
|
||||
static const OutdatedDynamicCrt MSVCP120_DLL;
|
||||
static const OutdatedDynamicCrt MSVCP120_CLR0400_DLL;
|
||||
static const OutdatedDynamicCrt MSVCP60_DLL;
|
||||
static const OutdatedDynamicCrt MSVCP_WIN_DLL;
|
||||
|
||||
// Old C
|
||||
static const OutdatedDynamicCrt MSVCR100_DLL;
|
||||
static const OutdatedDynamicCrt MSVCR100D_DLL;
|
||||
static const OutdatedDynamicCrt MSVCR100_CLR0400_DLL;
|
||||
static const OutdatedDynamicCrt MSVCR110_DLL;
|
||||
static const OutdatedDynamicCrt MSVCR120_DLL;
|
||||
static const OutdatedDynamicCrt MSVCR120_CLR0400_DLL;
|
||||
static const OutdatedDynamicCrt MSVCRT_DLL;
|
||||
static const OutdatedDynamicCrt MSVCRT20_DLL;
|
||||
static const OutdatedDynamicCrt MSVCRT40_DLL;
|
||||
|
||||
static const std::vector<OutdatedDynamicCrt>& values()
|
||||
{
|
||||
static const std::vector<OutdatedDynamicCrt> v = {
|
||||
MSVCP100_DLL, MSVCP100D_DLL,
|
||||
MSVCP110_DLL,MSVCP110_WIN_DLL,
|
||||
MSVCP120_DLL, MSVCP120_CLR0400_DLL,
|
||||
MSVCP60_DLL,
|
||||
MSVCP_WIN_DLL,
|
||||
|
||||
MSVCR100_DLL, MSVCR100D_DLL, MSVCR100_CLR0400_DLL,
|
||||
MSVCR110_DLL,
|
||||
MSVCR120_DLL, MSVCR120_CLR0400_DLL,
|
||||
MSVCRT_DLL, MSVCRT20_DLL,MSVCRT40_DLL
|
||||
};
|
||||
return v;
|
||||
}
|
||||
|
||||
OutdatedDynamicCrt() = delete;
|
||||
|
||||
std::regex crt_regex() const;
|
||||
const std::string& toString() const;
|
||||
|
||||
private:
|
||||
explicit OutdatedDynamicCrt(const std::string& dll_name, const std::string& crt_regex_as_string)
|
||||
: m_dll_name(dll_name), m_crt_regex_as_string(crt_regex_as_string) { }
|
||||
|
||||
std::string m_dll_name;
|
||||
std::string m_crt_regex_as_string;
|
||||
};
|
||||
}
|
@ -7,7 +7,6 @@
|
||||
#include "coff_file_reader.h"
|
||||
#include "PostBuildLint_BuildInfo.h"
|
||||
#include "PostBuildLint_BuildType.h"
|
||||
#include "PostBuildLint_OutdatedDynamicCrt.h"
|
||||
|
||||
namespace vcpkg::PostBuildLint
|
||||
{
|
||||
@ -17,6 +16,41 @@ namespace vcpkg::PostBuildLint
|
||||
ERROR_DETECTED = 1
|
||||
};
|
||||
|
||||
struct OutdatedDynamicCrt
|
||||
{
|
||||
std::string name;
|
||||
std::regex regex;
|
||||
|
||||
OutdatedDynamicCrt(const std::string& name, const std::string& regex_as_string)
|
||||
: name(name), regex(std::regex(regex_as_string, std::regex_constants::icase)) {}
|
||||
};
|
||||
|
||||
const std::vector<OutdatedDynamicCrt>& get_outdated_dynamic_crts()
|
||||
{
|
||||
static const std::vector<OutdatedDynamicCrt> v = {
|
||||
{"msvcp100.dll", R"(msvcp100\.dll)"},
|
||||
{"msvcp100d.dll", R"(msvcp100d\.dll)"},
|
||||
{"msvcp110.dll", R"(msvcp110\.dll)"},
|
||||
{"msvcp110_win.dll", R"(msvcp110_win\.dll)"},
|
||||
{"msvcp120.dll", R"(msvcp120\.dll)"},
|
||||
{"msvcp120_clr0400.dll", R"(msvcp120_clr0400\.dll)"},
|
||||
{"msvcp60.dll", R"(msvcp60\.dll)"},
|
||||
{"msvcp60.dll", R"(msvcp60\.dll)"},
|
||||
|
||||
{"msvcr100.dll", R"(msvcr100\.dll)"},
|
||||
{"msvcr100d.dll", R"(msvcr100d\.dll)"},
|
||||
{"msvcr100_clr0400.dll", R"(msvcr100_clr0400\.dll)"},
|
||||
{"msvcr110.dll", R"(msvcr110\.dll)"},
|
||||
{"msvcr120.dll", R"(msvcr120\.dll)"},
|
||||
{"msvcr120_clr0400.dll", R"(msvcr120_clr0400\.dll)"},
|
||||
{"msvcrt.dll", R"(msvcrt\.dll)"},
|
||||
{"msvcrt20.dll", R"(msvcrt20\.dll)"},
|
||||
{"msvcrt40.dll", R"(msvcrt40\.dll)"}
|
||||
};
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
static lint_status check_for_files_in_include_directory(const fs::path& package_dir)
|
||||
{
|
||||
const fs::path include_dir = package_dir / "include";
|
||||
@ -516,7 +550,7 @@ namespace vcpkg::PostBuildLint
|
||||
|
||||
static lint_status check_outdated_crt_linkage_of_dlls(const std::vector<fs::path>& dlls, const fs::path dumpbin_exe)
|
||||
{
|
||||
const std::vector<OutdatedDynamicCrt>& outdated_crts = OutdatedDynamicCrt::values();
|
||||
const std::vector<OutdatedDynamicCrt>& outdated_crts = get_outdated_dynamic_crts();
|
||||
|
||||
std::vector<OutdatedDynamicCrt_and_file> dlls_with_outdated_crt;
|
||||
|
||||
@ -528,7 +562,7 @@ namespace vcpkg::PostBuildLint
|
||||
|
||||
for (const OutdatedDynamicCrt& outdated_crt : outdated_crts)
|
||||
{
|
||||
if (std::regex_search(ec_data.output.cbegin(), ec_data.output.cend(), outdated_crt.crt_regex()))
|
||||
if (std::regex_search(ec_data.output.cbegin(), ec_data.output.cend(), outdated_crt.regex))
|
||||
{
|
||||
dlls_with_outdated_crt.push_back({dll, outdated_crt});
|
||||
break;
|
||||
@ -542,7 +576,7 @@ namespace vcpkg::PostBuildLint
|
||||
System::println("");
|
||||
for (const OutdatedDynamicCrt_and_file btf : dlls_with_outdated_crt)
|
||||
{
|
||||
System::println(" %s: %s", btf.file.generic_string(), btf.outdated_crt.toString());
|
||||
System::println(" %s: %s", btf.file.generic_string(), btf.outdated_crt.name);
|
||||
}
|
||||
System::println("");
|
||||
|
||||
@ -582,16 +616,21 @@ namespace vcpkg::PostBuildLint
|
||||
left += static_cast<size_t>(right);
|
||||
}
|
||||
|
||||
void perform_all_checks(const package_spec& spec, const vcpkg_paths& paths)
|
||||
static size_t perform_all_checks_and_return_error_count(const package_spec& spec, const vcpkg_paths& paths)
|
||||
{
|
||||
const fs::path dumpbin_exe = Environment::get_dumpbin_exe(paths);
|
||||
|
||||
System::println("-- Performing post-build validation");
|
||||
|
||||
BuildInfo build_info = read_build_info(paths.build_info_file_path(spec));
|
||||
const fs::path package_dir = paths.package_dir(spec);
|
||||
|
||||
size_t error_count = 0;
|
||||
|
||||
auto it = build_info.policies.find(BuildPolicies::EMPTY_PACKAGE);
|
||||
if (it != build_info.policies.cend() && it->second == opt_bool_t::ENABLED)
|
||||
{
|
||||
return error_count;
|
||||
}
|
||||
|
||||
error_count += check_for_files_in_include_directory(package_dir);
|
||||
error_count += check_for_files_in_debug_include_directory(package_dir);
|
||||
error_count += check_for_files_in_debug_share_directory(package_dir);
|
||||
@ -663,13 +702,22 @@ namespace vcpkg::PostBuildLint
|
||||
Checks::unreachable();
|
||||
}
|
||||
#if 0
|
||||
error_count += check_no_subdirectories(package_dir / "lib");
|
||||
error_count += check_no_subdirectories(package_dir / "debug" / "lib");
|
||||
error_count += check_no_subdirectories(package_dir / "lib");
|
||||
error_count += check_no_subdirectories(package_dir / "debug" / "lib");
|
||||
#endif
|
||||
|
||||
error_count += check_no_empty_folders(package_dir);
|
||||
error_count += check_no_files_in_package_dir_and_debug_dir(package_dir);
|
||||
|
||||
return error_count;
|
||||
}
|
||||
|
||||
void perform_all_checks(const package_spec& spec, const vcpkg_paths& paths)
|
||||
{
|
||||
System::println("-- Performing post-build validation");
|
||||
|
||||
const size_t error_count = perform_all_checks_and_return_error_count(spec, paths);
|
||||
|
||||
if (error_count != 0)
|
||||
{
|
||||
const fs::path portfile = paths.ports / spec.name() / "portfile.cmake";
|
||||
|
@ -5,12 +5,15 @@
|
||||
namespace vcpkg::PostBuildLint::BuildPolicies
|
||||
{
|
||||
static const std::string NAME_UNKNOWN = "PolicyUnknown";
|
||||
static const std::string NAME_EMPTY_PACKAGE = "PolicyEmptyPackage";
|
||||
static const std::string NAME_DLLS_WITHOUT_LIBS = "PolicyDLLsWithoutLIBs";
|
||||
|
||||
const std::string& type::toString() const
|
||||
{
|
||||
switch (this->backing_enum)
|
||||
{
|
||||
case EMPTY_PACKAGE:
|
||||
return NAME_EMPTY_PACKAGE;
|
||||
case DLLS_WITHOUT_LIBS:
|
||||
return NAME_DLLS_WITHOUT_LIBS;
|
||||
case UNKNOWN:
|
||||
@ -22,10 +25,13 @@ namespace vcpkg::PostBuildLint::BuildPolicies
|
||||
|
||||
const std::string& type::cmake_variable() const
|
||||
{
|
||||
static const std::string CMAKE_VARIABLE_EMPTY_PACKAGE = "VCPKG_POLICY_EMPTY_PACKAGE";
|
||||
static const std::string CMAKE_VARIABLE_DLLS_WITHOUT_LIBS = "VCPKG_POLICY_DLLS_WITHOUT_LIBS";
|
||||
|
||||
switch (this->backing_enum)
|
||||
{
|
||||
case EMPTY_PACKAGE:
|
||||
return CMAKE_VARIABLE_EMPTY_PACKAGE;
|
||||
case DLLS_WITHOUT_LIBS:
|
||||
return CMAKE_VARIABLE_DLLS_WITHOUT_LIBS;
|
||||
case UNKNOWN:
|
||||
@ -39,12 +45,17 @@ namespace vcpkg::PostBuildLint::BuildPolicies
|
||||
|
||||
const std::vector<type>& values()
|
||||
{
|
||||
static const std::vector<type>& v = {UNKNOWN, DLLS_WITHOUT_LIBS};
|
||||
static const std::vector<type>& v = {UNKNOWN, EMPTY_PACKAGE, DLLS_WITHOUT_LIBS};
|
||||
return v;
|
||||
}
|
||||
|
||||
type parse(const std::string& s)
|
||||
{
|
||||
if (s == NAME_EMPTY_PACKAGE)
|
||||
{
|
||||
return BuildPolicies::EMPTY_PACKAGE;
|
||||
}
|
||||
|
||||
if (s == NAME_DLLS_WITHOUT_LIBS)
|
||||
{
|
||||
return BuildPolicies::DLLS_WITHOUT_LIBS;
|
||||
|
@ -1,35 +0,0 @@
|
||||
#include "pch.h"
|
||||
#include "PostBuildLint_OutdatedDynamicCrt.h"
|
||||
|
||||
namespace vcpkg::PostBuildLint
|
||||
{
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCP100_DLL = OutdatedDynamicCrt("msvcp100.dll", R"(msvcp100\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCP100D_DLL = OutdatedDynamicCrt("msvcp100d.dll", R"(msvcp100d\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCP110_DLL = OutdatedDynamicCrt("msvcp110.dll", R"(msvcp110\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCP110_WIN_DLL = OutdatedDynamicCrt("msvcp110_win.dll", R"(msvcp110_win\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCP120_DLL = OutdatedDynamicCrt("msvcp120.dll", R"(msvcp120\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCP120_CLR0400_DLL = OutdatedDynamicCrt("msvcp120_clr0400.dll", R"(msvcp120_clr0400\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCP60_DLL = OutdatedDynamicCrt("msvcp60.dll", R"(msvcp60\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCP_WIN_DLL = OutdatedDynamicCrt("msvcp60.dll", R"(msvcp60\.dll)");;
|
||||
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCR100_DLL = OutdatedDynamicCrt("msvcr100.dll", R"(msvcr100\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCR100D_DLL = OutdatedDynamicCrt("msvcr100d.dll", R"(msvcr100d\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCR100_CLR0400_DLL = OutdatedDynamicCrt("msvcr100_clr0400.dll", R"(msvcr100_clr0400\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCR110_DLL = OutdatedDynamicCrt("msvcr110.dll", R"(msvcr110\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCR120_DLL = OutdatedDynamicCrt("msvcr120.dll", R"(msvcr120\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCR120_CLR0400_DLL = OutdatedDynamicCrt("msvcr120_clr0400.dll", R"(msvcr120_clr0400\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCRT_DLL = OutdatedDynamicCrt("msvcrt.dll", R"(msvcrt\.dll)");
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCRT20_DLL = OutdatedDynamicCrt("msvcrt20.dll", R"(msvcrt20\.dll)");;
|
||||
const OutdatedDynamicCrt OutdatedDynamicCrt::MSVCRT40_DLL = OutdatedDynamicCrt("msvcrt40.dll", R"(msvcrt40\.dll)");;
|
||||
|
||||
std::regex OutdatedDynamicCrt::crt_regex() const
|
||||
{
|
||||
const std::regex r(this->m_crt_regex_as_string, std::regex_constants::icase);
|
||||
return r;
|
||||
}
|
||||
|
||||
const std::string& OutdatedDynamicCrt::toString() const
|
||||
{
|
||||
return this->m_dll_name;
|
||||
}
|
||||
}
|
@ -196,26 +196,29 @@ namespace vcpkg::Commands::Remove
|
||||
|
||||
for (const package_spec_with_remove_plan& action : remove_plan)
|
||||
{
|
||||
if (action.plan.plan_type == remove_plan_type::NOT_INSTALLED)
|
||||
{
|
||||
System::println(System::color::success, "Package %s is not installed", action.spec);
|
||||
}
|
||||
else if (action.plan.plan_type == remove_plan_type::REMOVE)
|
||||
{
|
||||
const std::string display_name = action.spec.display_name();
|
||||
System::println("Removing package %s... ", display_name);
|
||||
remove_package(paths, action.spec, &status_db);
|
||||
System::println(System::color::success, "Removing package %s... done", display_name);
|
||||
const std::string display_name = action.spec.display_name();
|
||||
|
||||
if (alsoRemoveFolderFromPackages)
|
||||
{
|
||||
System::println("Purging package %s... ", display_name);
|
||||
delete_directory(paths.packages / action.spec.dir());
|
||||
System::println(System::color::success, "Purging package %s... done", display_name);
|
||||
}
|
||||
switch (action.plan.plan_type)
|
||||
{
|
||||
case remove_plan_type::NOT_INSTALLED:
|
||||
System::println(System::color::success, "Package %s is not installed", display_name);
|
||||
break;
|
||||
case remove_plan_type::REMOVE:
|
||||
System::println("Removing package %s... ", display_name);
|
||||
remove_package(paths, action.spec, &status_db);
|
||||
System::println(System::color::success, "Removing package %s... done", display_name);
|
||||
break;
|
||||
case remove_plan_type::UNKNOWN:
|
||||
default:
|
||||
Checks::unreachable();
|
||||
}
|
||||
|
||||
if (alsoRemoveFolderFromPackages)
|
||||
{
|
||||
System::println("Purging package %s... ", display_name);
|
||||
delete_directory(paths.packages / action.spec.dir());
|
||||
System::println(System::color::success, "Purging package %s... done", display_name);
|
||||
}
|
||||
else
|
||||
Checks::unreachable();
|
||||
}
|
||||
|
||||
exit(EXIT_SUCCESS);
|
||||
|
@ -154,7 +154,6 @@
|
||||
<ClInclude Include="..\include\PostBuildLint_BuildType.h" />
|
||||
<ClInclude Include="..\include\PostBuildLint_ConfigurationType.h" />
|
||||
<ClInclude Include="..\include\PostBuildLint_LinkageType.h" />
|
||||
<ClInclude Include="..\include\PostBuildLint_OutdatedDynamicCrt.h" />
|
||||
<ClInclude Include="..\include\SourceParagraph.h" />
|
||||
<ClInclude Include="..\include\StatusParagraph.h" />
|
||||
<ClInclude Include="..\include\StatusParagraphs.h" />
|
||||
@ -214,7 +213,6 @@
|
||||
<ClCompile Include="..\src\PostBuildLint.cpp" />
|
||||
<ClCompile Include="..\src\PostBuildLint_ConfigurationType.cpp" />
|
||||
<ClCompile Include="..\src\PostBuildLint_LinkageType.cpp" />
|
||||
<ClCompile Include="..\src\PostBuildLint_OutdatedDynamicCrt.cpp" />
|
||||
<ClCompile Include="..\src\PostBuildLint_BuildType.cpp" />
|
||||
<ClCompile Include="..\src\Stopwatch.cpp" />
|
||||
<ClCompile Include="..\src\vcpkglib.cpp" />
|
||||
|
@ -165,9 +165,6 @@
|
||||
<ClCompile Include="..\src\PostBuildLint_ConfigurationType.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\PostBuildLint_OutdatedDynamicCrt.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\PostBuildLint_BuildType.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
@ -293,8 +290,5 @@
|
||||
<ClInclude Include="..\include\PostBuildLint_BuildType.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\PostBuildLint_OutdatedDynamicCrt.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
Loading…
x
Reference in New Issue
Block a user