From 9098758eaa25b6d3427012ec4c8965b063faa299 Mon Sep 17 00:00:00 2001 From: Adric Norris Date: Wed, 31 Aug 2016 16:09:14 -0500 Subject: [PATCH] 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 --- help.c | 3 +++ help.h | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/help.c b/help.c index 0f5fc3374827ef..dd6546690e6d68 100644 --- a/help.c +++ b/help.c @@ -423,6 +423,8 @@ 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; + /* * The format of this string should be kept stable for compatibility * with external projects that rely on the output of "git version". @@ -431,6 +433,7 @@ int cmd_version(int argc, const char **argv, const char *prefix) while (*++argv) { if (!strcmp(*argv, "--build-options")) { printf("sizeof-long: %d\n", (int)sizeof(long)); + printf("machine: %s\n", build_platform); /* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */ } } diff --git a/help.h b/help.h index b21d7c94e8ce42..1cf9b6fa4c9827 100644 --- a/help.h +++ b/help.h @@ -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