From 70317569c6dcd9809ed4a8c425777e653ec6ca08 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Mon, 1 May 2017 18:24:31 +0300 Subject: Add hxx extension for headers --- build2/bin/guess.hxx | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 build2/bin/guess.hxx (limited to 'build2/bin/guess.hxx') diff --git a/build2/bin/guess.hxx b/build2/bin/guess.hxx new file mode 100644 index 0000000..803f299 --- /dev/null +++ b/build2/bin/guess.hxx @@ -0,0 +1,107 @@ +// file : build2/bin/guess.hxx -*- C++ -*- +// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#ifndef BUILD2_BIN_GUESS_HXX +#define BUILD2_BIN_GUESS_HXX + +#include +#include + +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; + + 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 // BUILD2_BIN_GUESS_HXX -- cgit v1.1