mirror of
https://github.com/cemu-project/vcpkg.git
synced 2025-02-23 11:07:10 +01:00
[vcpkg] Initial experimental support for VCPKG_BUILD_TYPE release
This commit is contained in:
parent
6b64a9adb6
commit
5335d17f53
@ -223,6 +223,7 @@ set(B2_OPTIONS_REL
|
||||
######################
|
||||
# Perform build + Package
|
||||
######################
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
|
||||
message(STATUS "Building ${TARGET_TRIPLET}-rel")
|
||||
set(ENV{BOOST_BUILD_PATH} ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
|
||||
vcpkg_execute_required_process_repeat(
|
||||
@ -237,6 +238,8 @@ vcpkg_execute_required_process_repeat(
|
||||
LOGNAME build-${TARGET_TRIPLET}-rel
|
||||
)
|
||||
message(STATUS "Building ${TARGET_TRIPLET}-rel done")
|
||||
endif()
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
message(STATUS "Building ${TARGET_TRIPLET}-dbg")
|
||||
set(ENV{BOOST_BUILD_PATH} ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
|
||||
vcpkg_execute_required_process_repeat(
|
||||
@ -250,6 +253,7 @@ vcpkg_execute_required_process_repeat(
|
||||
LOGNAME build-${TARGET_TRIPLET}-dbg
|
||||
)
|
||||
message(STATUS "Building ${TARGET_TRIPLET}-dbg done")
|
||||
endif()
|
||||
|
||||
message(STATUS "Packaging headers")
|
||||
file(
|
||||
@ -294,6 +298,7 @@ function(boost_rename_libs LIBS)
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
|
||||
message(STATUS "Packaging ${TARGET_TRIPLET}-rel")
|
||||
file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/stage/lib/
|
||||
DESTINATION ${CURRENT_PACKAGES_DIR}/lib
|
||||
@ -307,7 +312,9 @@ file(GLOB RELEASE_LIBS ${CURRENT_PACKAGES_DIR}/lib/*.lib)
|
||||
|
||||
boost_rename_libs(RELEASE_LIBS)
|
||||
message(STATUS "Packaging ${TARGET_TRIPLET}-rel done")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
message(STATUS "Packaging ${TARGET_TRIPLET}-dbg")
|
||||
file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/stage/lib/
|
||||
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib
|
||||
@ -320,6 +327,7 @@ endif()
|
||||
file(GLOB DEBUG_LIBS ${CURRENT_PACKAGES_DIR}/debug/lib/*.lib)
|
||||
boost_rename_libs(DEBUG_LIBS)
|
||||
message(STATUS "Packaging ${TARGET_TRIPLET}-dbg done")
|
||||
endif()
|
||||
|
||||
macro(move_to_manual_link LIBNAME)
|
||||
if(EXISTS ${CURRENT_PACKAGES_DIR}/lib/${LIBNAME}-vc140-mt-${VERSION_FULL}.lib)
|
||||
|
@ -58,6 +58,7 @@ function(vcpkg_build_cmake)
|
||||
set(TARGET_PARAM)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
|
||||
message(STATUS "Build ${TARGET_TRIPLET}-rel")
|
||||
vcpkg_execute_required_process(
|
||||
COMMAND ${CMAKE_COMMAND} --build . --config Release ${TARGET_PARAM} -- ${BUILD_ARGS}
|
||||
@ -65,7 +66,9 @@ function(vcpkg_build_cmake)
|
||||
LOGNAME ${_bc_LOGFILE_ROOT}-${TARGET_TRIPLET}-rel
|
||||
)
|
||||
message(STATUS "Build ${TARGET_TRIPLET}-rel done")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
message(STATUS "Build ${TARGET_TRIPLET}-dbg")
|
||||
vcpkg_execute_required_process(
|
||||
COMMAND ${CMAKE_COMMAND} --build . --config Debug ${TARGET_PARAM} -- ${BUILD_ARGS}
|
||||
@ -73,4 +76,5 @@ function(vcpkg_build_cmake)
|
||||
LOGNAME ${_bc_LOGFILE_ROOT}-${TARGET_TRIPLET}-dbg
|
||||
)
|
||||
message(STATUS "Build ${TARGET_TRIPLET}-dbg done")
|
||||
endif()
|
||||
endfunction()
|
||||
|
@ -87,6 +87,7 @@ function(vcpkg_build_msbuild)
|
||||
/m
|
||||
)
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
|
||||
message(STATUS "Building ${_csc_PROJECT_PATH} for Release")
|
||||
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
|
||||
vcpkg_execute_required_process(
|
||||
@ -97,7 +98,9 @@ function(vcpkg_build_msbuild)
|
||||
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
|
||||
LOGNAME build-${TARGET_TRIPLET}-rel
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
message(STATUS "Building ${_csc_PROJECT_PATH} for Debug")
|
||||
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
|
||||
vcpkg_execute_required_process(
|
||||
@ -108,4 +111,5 @@ function(vcpkg_build_msbuild)
|
||||
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
|
||||
LOGNAME build-${TARGET_TRIPLET}-dbg
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
@ -199,6 +199,7 @@ function(vcpkg_configure_cmake)
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
|
||||
message(STATUS "Configuring ${TARGET_TRIPLET}-rel")
|
||||
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
|
||||
vcpkg_execute_required_process(
|
||||
@ -210,7 +211,9 @@ function(vcpkg_configure_cmake)
|
||||
LOGNAME config-${TARGET_TRIPLET}-rel
|
||||
)
|
||||
message(STATUS "Configuring ${TARGET_TRIPLET}-rel done")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
|
||||
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
|
||||
vcpkg_execute_required_process(
|
||||
@ -222,6 +225,7 @@ function(vcpkg_configure_cmake)
|
||||
LOGNAME config-${TARGET_TRIPLET}-dbg
|
||||
)
|
||||
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg done")
|
||||
endif()
|
||||
|
||||
set(_VCPKG_CMAKE_GENERATOR "${GENERATOR}" PARENT_SCOPE)
|
||||
endfunction()
|
@ -42,6 +42,7 @@ function(vcpkg_configure_meson)
|
||||
set(ENV{PATH} "$ENV{PATH};${NINJA_PATH}")
|
||||
|
||||
# configure release
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
|
||||
message(STATUS "Configuring ${TARGET_TRIPLET}-rel")
|
||||
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
|
||||
set(ENV{CFLAGS} "${MESON_COMMON_CFLAGS} ${MESON_RELEASE_CFLAGS}")
|
||||
@ -54,7 +55,9 @@ function(vcpkg_configure_meson)
|
||||
LOGNAME config-${TARGET_TRIPLET}-rel
|
||||
)
|
||||
message(STATUS "Configuring ${TARGET_TRIPLET}-rel done")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
# configure debug
|
||||
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
|
||||
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
|
||||
@ -68,5 +71,6 @@ function(vcpkg_configure_meson)
|
||||
LOGNAME config-${TARGET_TRIPLET}-dbg
|
||||
)
|
||||
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg done")
|
||||
endif()
|
||||
|
||||
endfunction()
|
||||
|
@ -27,6 +27,7 @@ function(vcpkg_fixup_cmake_targets)
|
||||
set(DEBUG_CONFIG ${CURRENT_PACKAGES_DIR}/debug/${_vfct_CONFIG_PATH})
|
||||
set(RELEASE_CONFIG ${CURRENT_PACKAGES_DIR}/${_vfct_CONFIG_PATH})
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
if(NOT EXISTS ${DEBUG_CONFIG})
|
||||
message(FATAL_ERROR "'${DEBUG_CONFIG}' does not exist.")
|
||||
endif()
|
||||
@ -35,11 +36,13 @@ function(vcpkg_fixup_cmake_targets)
|
||||
file(GLOB FILES ${DEBUG_CONFIG}/*)
|
||||
file(COPY ${FILES} DESTINATION ${DEBUG_SHARE})
|
||||
file(REMOVE_RECURSE ${DEBUG_CONFIG})
|
||||
endif()
|
||||
|
||||
file(GLOB FILES ${RELEASE_CONFIG}/*)
|
||||
file(COPY ${FILES} DESTINATION ${RELEASE_SHARE})
|
||||
file(REMOVE_RECURSE ${RELEASE_CONFIG})
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
get_filename_component(DEBUG_CONFIG_DIR_NAME ${DEBUG_CONFIG} NAME)
|
||||
string(TOLOWER "${DEBUG_CONFIG_DIR_NAME}" DEBUG_CONFIG_DIR_NAME)
|
||||
if(DEBUG_CONFIG_DIR_NAME STREQUAL "cmake")
|
||||
@ -52,6 +55,7 @@ function(vcpkg_fixup_cmake_targets)
|
||||
file(REMOVE_RECURSE ${DEBUG_CONFIG_PARENT_DIR})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
get_filename_component(RELEASE_CONFIG_DIR_NAME ${RELEASE_CONFIG} NAME)
|
||||
string(TOLOWER "${RELEASE_CONFIG_DIR_NAME}" RELEASE_CONFIG_DIR_NAME)
|
||||
@ -67,9 +71,11 @@ function(vcpkg_fixup_cmake_targets)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
if(NOT EXISTS ${DEBUG_SHARE})
|
||||
message(FATAL_ERROR "'${DEBUG_SHARE}' does not exist.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
file(GLOB UNUSED_FILES
|
||||
"${DEBUG_SHARE}/*[Tt]argets.cmake"
|
||||
@ -94,6 +100,7 @@ function(vcpkg_fixup_cmake_targets)
|
||||
file(WRITE ${RELEASE_TARGET} "${_contents}")
|
||||
endforeach()
|
||||
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
file(GLOB DEBUG_TARGETS
|
||||
"${DEBUG_SHARE}/*[Tt]argets-debug.cmake"
|
||||
"${DEBUG_SHARE}/*[Cc]onfig-debug.cmake"
|
||||
@ -111,6 +118,7 @@ function(vcpkg_fixup_cmake_targets)
|
||||
|
||||
file(REMOVE ${DEBUG_TARGET})
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
file(GLOB MAIN_TARGETS "${RELEASE_SHARE}/*[Tt]argets.cmake")
|
||||
foreach(MAIN_TARGET ${MAIN_TARGETS})
|
||||
|
@ -8,3 +8,4 @@ message("VCPKG_CMAKE_SYSTEM_VERSION=${VCPKG_CMAKE_SYSTEM_VERSION}")
|
||||
message("VCPKG_PLATFORM_TOOLSET=${VCPKG_PLATFORM_TOOLSET}")
|
||||
message("VCPKG_VISUAL_STUDIO_PATH=${VCPKG_VISUAL_STUDIO_PATH}")
|
||||
message("VCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}")
|
||||
message("VCPKG_BUILD_TYPE=${VCPKG_BUILD_TYPE}")
|
||||
|
@ -1 +1 @@
|
||||
"0.0.97"
|
||||
"0.0.98"
|
@ -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);
|
||||
|
@ -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};
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -758,6 +758,7 @@ 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"));
|
||||
|
||||
if (!pre_build_info.build_type)
|
||||
error_count += check_matching_debug_and_release_binaries(debug_libs, release_libs);
|
||||
|
||||
{
|
||||
@ -777,6 +778,7 @@ namespace vcpkg::PostBuildLint
|
||||
{
|
||||
case Build::LinkageType::DYNAMIC:
|
||||
{
|
||||
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(
|
||||
@ -805,13 +807,13 @@ 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),
|
||||
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),
|
||||
error_count += check_crt_linkage_of_libs(
|
||||
BuildType::value_of(Build::ConfigurationType::RELEASE, build_info.crt_linkage),
|
||||
release_libs,
|
||||
toolset.dumpbin);
|
||||
break;
|
||||
|
@ -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>
|
||||
|
@ -19,4 +19,9 @@
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="..\VERSION.txt">
|
||||
<Filter>Source Files</Filter>
|
||||
</Text>
|
||||
</ItemGroup>
|
||||
</Project>
|
Loading…
x
Reference in New Issue
Block a user