Skip to content

Commit

Permalink
Preliminary support for reporting build platform
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
landstander668 authored and dscho committed Sep 16, 2016
1 parent fecac6d commit 9098758
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
3 changes: 3 additions & 0 deletions help.c
Original file line number Diff line number Diff line change
Expand Up @@ -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".
Expand All @@ -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? */
}
}
Expand Down
13 changes: 13 additions & 0 deletions help.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 9098758

Please sign in to comment.