blob: 0e04ba507e1a0be6bee2121ac11e92f9ba4b1481 (
plain)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
// file : libbuild2/bin/guess.hxx -*- C++ -*-
// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
// license : MIT; see accompanying LICENSE file
#ifndef LIBBUILD2_BIN_GUESS_HXX
#define LIBBUILD2_BIN_GUESS_HXX
#include <libbuild2/types.hxx>
#include <libbuild2/utility.hxx>
namespace build2
{
namespace bin
{
// ar/ranlib information.
//
// Currently recognized ar/ranlib and their ids:
//
// gnu GNU binutils
// llvm LLVM
// bsd FreeBSD (and maybe other BSDs)
// msvc Microsoft's lib.exe
// generic Generic/unrecognized
//
// The signature is normally the --version/-V line.
//
// The checksum is used to detect ar/ranlib changes. It is calculated in
// a toolchain-specific manner (usually the output of --version/-V) and
// is not bulletproof.
//
struct ar_info
{
process_path ar_path;
string ar_id;
string ar_signature;
string ar_checksum;
semantic_version ar_version;
process_path ranlib_path;
string ranlib_id;
string ranlib_signature;
string ranlib_checksum;
};
// The ranlib path can be NULL, in which case no ranlib guessing will be
// attemplated and the returned ranlib_* members will be left empty.
//
ar_info
guess_ar (const path& ar, const path* ranlib, const dir_path& fallback);
// ld information.
//
// Currently recognized linkers and their ids:
//
// gnu GNU binutils ld.bfd
// gold GNU binutils ld.gold
// llvm LLVM lld (note: not llvm-ld or llvm-link)
// ld64 Apple's new linker
// cctools Apple's old/classic linker
// msvc Microsoft's link.exe
//
// Note that BSDs are currently using GNU ld but some of them (e.g.,
// FreeBSD) are hoping to migrate to lld.
//
// The signature is normally the --version/-version/-v line.
//
// The checksum is used to detect ld changes. It is calculated in a
// toolchain-specific manner (usually the output of --version/-version/-v)
// and is not bulletproof.
//
struct ld_info
{
process_path path;
string id;
string signature;
string checksum;
};
ld_info
guess_ld (const path& ld, const dir_path& fallback);
// rc information.
//
// Currently recognized resource compilers and their ids:
//
// gnu GNU binutils windres
// msvc Microsoft's rc.exe
//
// The signature is normally the --version line.
//
// The checksum is used to detect rc changes. It is calculated in a
// toolchain-specific manner (usually the output of --version) and is not
// bulletproof.
//
struct rc_info
{
process_path path;
string id;
string signature;
string checksum;
};
rc_info
guess_rc (const path& rc, const dir_path& fallback);
}
}
#endif // LIBBUILD2_BIN_GUESS_HXX
|