Preliminary support for reporting build platform

Add preliminary support for detection of the build plaform, and reporting
of same with the `git version --build-options' command. This can be useful
for bug reporting, to distinguish between 32 and 64-bit builds for
example.

The current implementation can only distinguish between x86 and x86_64.
This will be extended in future patches. In addition, all 32-bit variants
(i686, i586, etc.) are collapsed into `x86'. An example of the output is:

   $ git version --build-options
   git version 2.9.3.windows.2.826.g06c0f2f
   sizeof-long: 4
   machine: x86_64

The label of `machine' was chosen so the new information will approximate
the output of `uname -m'.

Signed-off-by: Adric Norris <landstander668@gmail.com>
This commit is contained in:
Adric Norris
2016-08-31 16:09:14 -05:00
committed by Johannes Schindelin
parent 5f8ab5b5b8
commit a5a9eaa87a
2 changed files with 15 additions and 0 deletions

2
help.c
View File

@@ -390,6 +390,7 @@ const char *help_unknown_cmd(const char *cmd)
int cmd_version(int argc, const char **argv, const char *prefix)
{
static char build_platform[] = GIT_BUILD_PLATFORM;
int build_options = 0;
const char * const usage[] = {
N_("git version [<options>]"),
@@ -413,6 +414,7 @@ int cmd_version(int argc, const char **argv, const char *prefix)
if (build_options) {
printf("sizeof-long: %d\n", (int)sizeof(long));
printf("machine: %s\n", build_platform);
/* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */
}
return 0;

13
help.h
View File

@@ -33,3 +33,16 @@ extern void list_commands(unsigned int colopts, struct cmdnames *main_cmds, stru
*/
extern void help_unknown_ref(const char *ref, const char *cmd, const char *error);
#endif /* HELP_H */
/*
* identify build platform
*/
#ifndef GIT_BUILD_PLATFORM
#if defined __x86__ || defined __i386__ || defined __i586__ || defined __i686__
#define GIT_BUILD_PLATFORM "x86"
#elif defined __x86_64__
#define GIT_BUILD_PLATFORM "x86_64"
#else
#define GIT_BUILD_PLATFORM "unknown"
#endif
#endif