aboutsummaryrefslogtreecommitdiff
path: root/toolsrc
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-11-25 15:25:18 -0800
committerRobert Schumacher <roschuma@microsoft.com>2017-11-25 15:25:18 -0800
commit5335d17f53d491d83d98e80ab0e750ec0f6f430b (patch)
treef1d366671aa5fe7e1a10c6f0b93b52ff72f49666 /toolsrc
parent6b64a9adb606ad442e71ba562efd17d42baee3a0 (diff)
downloadvcpkg-5335d17f53d491d83d98e80ab0e750ec0f6f430b.tar.gz
vcpkg-5335d17f53d491d83d98e80ab0e750ec0f6f430b.zip
[vcpkg] Initial experimental support for VCPKG_BUILD_TYPE release
Diffstat (limited to 'toolsrc')
-rw-r--r--toolsrc/VERSION.txt2
-rw-r--r--toolsrc/include/vcpkg/build.h7
-rw-r--r--toolsrc/include/vcpkg/postbuildlint.buildtype.h24
-rw-r--r--toolsrc/src/vcpkg/build.cpp14
-rw-r--r--toolsrc/src/vcpkg/postbuildlint.buildtype.cpp2
-rw-r--r--toolsrc/src/vcpkg/postbuildlint.cpp22
-rw-r--r--toolsrc/vcpkg/vcpkg.vcxproj3
-rw-r--r--toolsrc/vcpkg/vcpkg.vcxproj.filters5
8 files changed, 54 insertions, 25 deletions
diff --git a/toolsrc/VERSION.txt b/toolsrc/VERSION.txt
index d7db639a5..b9553cc3e 100644
--- a/toolsrc/VERSION.txt
+++ b/toolsrc/VERSION.txt
@@ -1 +1 @@
-"0.0.97" \ No newline at end of file
+"0.0.98" \ No newline at end of file
diff --git a/toolsrc/include/vcpkg/build.h b/toolsrc/include/vcpkg/build.h
index 09e74905f..18408e207 100644
--- a/toolsrc/include/vcpkg/build.h
+++ b/toolsrc/include/vcpkg/build.h
@@ -44,6 +44,12 @@ namespace vcpkg::Build
YES
};
+ enum class ConfigurationType
+ {
+ DEBUG,
+ RELEASE,
+ };
+
struct BuildPackageOptions
{
UseHeadVersion use_head_version;
@@ -90,6 +96,7 @@ namespace vcpkg::Build
Optional<std::string> platform_toolset;
Optional<fs::path> visual_studio_path;
Optional<std::string> external_toolchain_file;
+ Optional<ConfigurationType> build_type;
};
std::string make_build_env_cmd(const PreBuildInfo& pre_build_info, const Toolset& toolset);
diff --git a/toolsrc/include/vcpkg/postbuildlint.buildtype.h b/toolsrc/include/vcpkg/postbuildlint.buildtype.h
index ff651fd7a..0b469d9a0 100644
--- a/toolsrc/include/vcpkg/postbuildlint.buildtype.h
+++ b/toolsrc/include/vcpkg/postbuildlint.buildtype.h
@@ -8,12 +8,6 @@
namespace vcpkg::PostBuildLint
{
- enum class ConfigurationType
- {
- DEBUG,
- RELEASE,
- };
-
struct BuildType
{
enum class BackingEnum
@@ -24,12 +18,12 @@ namespace vcpkg::PostBuildLint
RELEASE_DYNAMIC
};
- static BuildType value_of(const ConfigurationType& config, const Build::LinkageType& linkage);
+ static BuildType value_of(const Build::ConfigurationType& config, const Build::LinkageType& linkage);
BuildType() = delete;
constexpr BuildType(const BackingEnum backing_enum,
- const ConfigurationType config,
+ const Build::ConfigurationType config,
const Build::LinkageType linkage)
: backing_enum(backing_enum), m_config(config), m_linkage(linkage)
{
@@ -37,14 +31,14 @@ namespace vcpkg::PostBuildLint
constexpr operator BackingEnum() const { return backing_enum; }
- const ConfigurationType& config() const;
+ const Build::ConfigurationType& config() const;
const Build::LinkageType& linkage() const;
const std::regex& crt_regex() const;
const std::string& to_string() const;
private:
BackingEnum backing_enum;
- ConfigurationType m_config;
+ Build::ConfigurationType m_config;
Build::LinkageType m_linkage;
};
@@ -55,12 +49,14 @@ namespace vcpkg::PostBuildLint
static constexpr CStringView ENUM_NAME = "vcpkg::PostBuildLint::BuildType";
- static constexpr BuildType DEBUG_STATIC = {BE::DEBUG_STATIC, ConfigurationType::DEBUG, LinkageType::STATIC};
- static constexpr BuildType DEBUG_DYNAMIC = {BE::DEBUG_DYNAMIC, ConfigurationType::DEBUG, LinkageType::DYNAMIC};
+ static constexpr BuildType DEBUG_STATIC = {
+ BE::DEBUG_STATIC, Build::ConfigurationType::DEBUG, LinkageType::STATIC};
+ static constexpr BuildType DEBUG_DYNAMIC = {
+ BE::DEBUG_DYNAMIC, Build::ConfigurationType::DEBUG, LinkageType::DYNAMIC};
static constexpr BuildType RELEASE_STATIC = {
- BE::RELEASE_STATIC, ConfigurationType::RELEASE, LinkageType::STATIC};
+ BE::RELEASE_STATIC, Build::ConfigurationType::RELEASE, LinkageType::STATIC};
static constexpr BuildType RELEASE_DYNAMIC = {
- BE::RELEASE_DYNAMIC, ConfigurationType::RELEASE, LinkageType::DYNAMIC};
+ BE::RELEASE_DYNAMIC, Build::ConfigurationType::RELEASE, LinkageType::DYNAMIC};
static constexpr std::array<BuildType, 4> VALUES = {
DEBUG_STATIC, DEBUG_DYNAMIC, RELEASE_STATIC, RELEASE_DYNAMIC};
diff --git a/toolsrc/src/vcpkg/build.cpp b/toolsrc/src/vcpkg/build.cpp
index fd605ac08..6ef72b639 100644
--- a/toolsrc/src/vcpkg/build.cpp
+++ b/toolsrc/src/vcpkg/build.cpp
@@ -565,6 +565,20 @@ namespace vcpkg::Build
continue;
}
+ if (variable_name == "VCPKG_BUILD_TYPE")
+ {
+ if (variable_value.empty())
+ pre_build_info.build_type = nullopt;
+ else if (Strings::case_insensitive_ascii_equals(variable_value, "debug"))
+ pre_build_info.build_type = ConfigurationType::DEBUG;
+ else if (Strings::case_insensitive_ascii_equals(variable_value, "release"))
+ pre_build_info.build_type = ConfigurationType::RELEASE;
+ else
+ Checks::exit_with_message(
+ VCPKG_LINE_INFO, "Unknown setting for VCPKG_BUILD_TYPE: %s", variable_value);
+ continue;
+ }
+
Checks::exit_with_message(VCPKG_LINE_INFO, "Unknown variable name %s", line);
}
diff --git a/toolsrc/src/vcpkg/postbuildlint.buildtype.cpp b/toolsrc/src/vcpkg/postbuildlint.buildtype.cpp
index 2baaddb5e..e966ce78a 100644
--- a/toolsrc/src/vcpkg/postbuildlint.buildtype.cpp
+++ b/toolsrc/src/vcpkg/postbuildlint.buildtype.cpp
@@ -3,6 +3,8 @@
#include <vcpkg/base/checks.h>
#include <vcpkg/postbuildlint.buildtype.h>
+using vcpkg::Build::ConfigurationType;
+
namespace vcpkg::PostBuildLint
{
BuildType BuildType::value_of(const ConfigurationType& config, const Build::LinkageType& linkage)
diff --git a/toolsrc/src/vcpkg/postbuildlint.cpp b/toolsrc/src/vcpkg/postbuildlint.cpp
index 10af41bb0..0532bce58 100644
--- a/toolsrc/src/vcpkg/postbuildlint.cpp
+++ b/toolsrc/src/vcpkg/postbuildlint.cpp
@@ -758,7 +758,8 @@ namespace vcpkg::PostBuildLint
std::vector<fs::path> release_libs = fs.get_files_recursive(release_lib_dir);
Util::unstable_keep_if(release_libs, has_extension_pred(fs, ".lib"));
- error_count += check_matching_debug_and_release_binaries(debug_libs, release_libs);
+ if (!pre_build_info.build_type)
+ error_count += check_matching_debug_and_release_binaries(debug_libs, release_libs);
{
std::vector<fs::path> libs;
@@ -777,7 +778,8 @@ namespace vcpkg::PostBuildLint
{
case Build::LinkageType::DYNAMIC:
{
- error_count += check_matching_debug_and_release_binaries(debug_dlls, release_dlls);
+ if (!pre_build_info.build_type)
+ error_count += check_matching_debug_and_release_binaries(debug_dlls, release_dlls);
error_count += check_lib_files_are_available_if_dlls_are_available(
build_info.policies, debug_libs.size(), debug_dlls.size(), debug_lib_dir);
@@ -805,15 +807,15 @@ namespace vcpkg::PostBuildLint
if (!build_info.policies.is_enabled(BuildPolicy::ONLY_RELEASE_CRT))
{
- error_count +=
- check_crt_linkage_of_libs(BuildType::value_of(ConfigurationType::DEBUG, build_info.crt_linkage),
- debug_libs,
- toolset.dumpbin);
+ error_count += check_crt_linkage_of_libs(
+ BuildType::value_of(Build::ConfigurationType::DEBUG, build_info.crt_linkage),
+ debug_libs,
+ toolset.dumpbin);
}
- error_count +=
- check_crt_linkage_of_libs(BuildType::value_of(ConfigurationType::RELEASE, build_info.crt_linkage),
- release_libs,
- toolset.dumpbin);
+ error_count += check_crt_linkage_of_libs(
+ BuildType::value_of(Build::ConfigurationType::RELEASE, build_info.crt_linkage),
+ release_libs,
+ toolset.dumpbin);
break;
}
default: Checks::unreachable(VCPKG_LINE_INFO);
diff --git a/toolsrc/vcpkg/vcpkg.vcxproj b/toolsrc/vcpkg/vcpkg.vcxproj
index fd8e5d33e..d15e8dd44 100644
--- a/toolsrc/vcpkg/vcpkg.vcxproj
+++ b/toolsrc/vcpkg/vcpkg.vcxproj
@@ -138,6 +138,9 @@
<ItemGroup>
<ClCompile Include="..\src\vcpkg.cpp" />
</ItemGroup>
+ <ItemGroup>
+ <Text Include="..\VERSION.txt" />
+ </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
diff --git a/toolsrc/vcpkg/vcpkg.vcxproj.filters b/toolsrc/vcpkg/vcpkg.vcxproj.filters
index ca9723bbf..45a6238f6 100644
--- a/toolsrc/vcpkg/vcpkg.vcxproj.filters
+++ b/toolsrc/vcpkg/vcpkg.vcxproj.filters
@@ -19,4 +19,9 @@
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
+ <ItemGroup>
+ <Text Include="..\VERSION.txt">
+ <Filter>Source Files</Filter>
+ </Text>
+ </ItemGroup>
</Project> \ No newline at end of file