forked from microsoft/vcpkg-tool
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommands.build-external.cpp
53 lines (47 loc) · 1.89 KB
/
commands.build-external.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <vcpkg/commands.build-external.h>
#include <vcpkg/commands.build.h>
#include <vcpkg/input.h>
#include <vcpkg/portfileprovider.h>
#include <vcpkg/registries.h>
#include <vcpkg/vcpkgcmdarguments.h>
#include <vcpkg/vcpkgpaths.h>
namespace vcpkg
{
constexpr CommandMetadata CommandBuildExternalMetadata{
"build-external",
msgCmdBuildExternalSynopsis,
{msgCmdBuildExternalExample1, msgCmdBuildExternalExample2},
Undocumented,
AutocompletePriority::Internal,
2,
2,
{},
nullptr,
};
void command_build_external_and_exit(const VcpkgCmdArguments& args,
const VcpkgPaths& paths,
Triplet default_triplet,
Triplet host_triplet)
{
const ParsedArguments options = args.parse_arguments(CommandBuildExternalMetadata);
static constexpr BuildPackageOptions build_options{
BuildMissing::Yes,
AllowDownloads::Yes,
OnlyDownloads::No,
CleanBuildtrees::Yes,
CleanPackages::Yes,
CleanDownloads::No,
DownloadTool::Builtin,
BackcompatFeatures::Allow,
};
const FullPackageSpec spec =
check_and_get_full_package_spec(options.command_arguments[0], default_triplet, paths.get_triplet_db())
.value_or_exit(VCPKG_LINE_INFO);
auto overlays = paths.overlay_ports;
overlays.insert(overlays.begin(), options.command_arguments[1]);
auto& fs = paths.get_filesystem();
auto registry_set = paths.make_registry_set();
PathsPortFileProvider provider(*registry_set, make_overlay_provider(fs, paths.original_cwd, overlays));
command_build_and_exit_ex(args, paths, host_triplet, build_options, spec, provider, null_build_logs_recorder());
}
}