Jonathan Nieder [off-list ref] writes:
quoted
@@ -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);
Can this use GIT_BUILD_PLATFORM directly instead of going via the indirection
of a mutable static string? That is, something like
printf("machine: %s\n", GIT_BUILD_PLATFORM);
Good point. And if this is externally identified as "machine",
probably the macro should also use the same word, not "platform".
We can go either way, as long as we are consistent, though.
quoted
--- 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
This code needs to be inside the HELP_H header guard.
Certainly.
Thanks.
On Fri, Dec 8, 2017 at 12:43 PM, Junio C Hamano [off-list ref] wrote:
Jonathan Nieder [off-list ref] writes:
quoted
quoted
@@ -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);
Can this use GIT_BUILD_PLATFORM directly instead of going via the indirection
of a mutable static string? That is, something like
printf("machine: %s\n", GIT_BUILD_PLATFORM);
Good point. And if this is externally identified as "machine",
probably the macro should also use the same word, not "platform".
We can go either way, as long as we are consistent, though.
In Autoconf parlance, this would be called "host architecture" (GIT_HOST_ARCH).
On Fri, Dec 8, 2017 at 4:17 PM, Eric Sunshine [off-list ref] wrote:
On Fri, Dec 8, 2017 at 12:43 PM, Junio C Hamano [off-list ref] wrote:
quoted
Jonathan Nieder [off-list ref] writes:
quoted
quoted
@@ -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);
Can this use GIT_BUILD_PLATFORM directly instead of going via the indirection
of a mutable static string? That is, something like
printf("machine: %s\n", GIT_BUILD_PLATFORM);
Good point. And if this is externally identified as "machine",
probably the macro should also use the same word, not "platform".
We can go either way, as long as we are consistent, though.
In Autoconf parlance, this would be called "host architecture" (GIT_HOST_ARCH).
My bad: "host cpu", rather (GIT_HOST_CPU).
On Fri, Dec 08, 2017 at 04:19:25PM -0500, Eric Sunshine wrote:
On Fri, Dec 8, 2017 at 4:17 PM, Eric Sunshine [off-list ref] wrote:
quoted
On Fri, Dec 8, 2017 at 12:43 PM, Junio C Hamano [off-list ref] wrote:
quoted
Jonathan Nieder [off-list ref] writes:
quoted
Can this use GIT_BUILD_PLATFORM directly instead of going via the indirection
of a mutable static string? That is, something like
printf("machine: %s\n", GIT_BUILD_PLATFORM);
Good point. And if this is externally identified as "machine",
probably the macro should also use the same word, not "platform".
We can go either way, as long as we are consistent, though.
In Autoconf parlance, this would be called "host architecture" (GIT_HOST_ARCH).
My bad: "host cpu", rather (GIT_HOST_CPU).
Dscho, when you re-roll, perhaps replace the current patch with the
one below which determines the CPU type automatically rather than
having to manually maintain and augment a bunch of #ifdefs in help.h.
I took the liberty of renaming the #define to GIT_HOST_CPU to better
match Autoconf parlance since its conceivable that Git might some day
support cross-compilation officially via the configure script (which
doesn't yet work, though I have some patches which begin addressing
that, but that's a separate topic).
The original plan was to keep Adric Norris as author, but by the time
the patch was done and the commit message rewritten to match, I
realized that none of his work remained, thus ended up dropping his
authorship and both of your sign-offs. Sorry.
From: Eric Sunshine <redacted>
Date: Sat, 9 Dec 2017 04:09:18 -0500
Subject: [PATCH] help: version --build-options: also report host CPU
It can be helpful for bug reports to include information about the
environment in which the bug occurs. "git version --build-options" can
help to supplement this information. In addition to the size of 'long'
already reported by --build-options, also report the host's CPU type.
Example output:
$ git version --build-options
git version 2.9.3.windows.2.826.g06c0f2f
cpu: x86_64
sizeof-long: 4
New Makefile variable HOST_CPU supports cross-compiling.
Suggested-by: Adric Norris <redacted>
Signed-off-by: Eric Sunshine <redacted>
---
Makefile | 9 +++++++++
help.c | 1 +
2 files changed, 10 insertions(+)
diff --git a/Makefile b/Makefile
index fef9c8d272..5587bccc93 100644
--- a/Makefile
+++ b/Makefile
@@ -425,6 +425,9 @@ all::
#
# to say "export LESS=FRX (and LV=-c) if the environment variable
# LESS (and LV) is not set, respectively".
+#
+# When cross-compiling, define HOST_CPU as the canonical name of the CPU on
+# which the built Git will run (for instance "x86_64").
GIT-VERSION-FILE: FORCE
@$(SHELL_PATH) ./GIT-VERSION-GEN
@@ -1095,6 +1098,12 @@ else
BROKEN_PATH_FIX = '/^\# @@BROKEN_PATH_FIX@@$$/d'
endif
+ifeq (,$(HOST_CPU))
+ BASIC_CFLAGS += -DGIT_HOST_CPU="\"$(firstword $(subst -, ,$(uname_M)))\""
+else
+ BASIC_CFLAGS += -DGIT_HOST_CPU="\"$(HOST_CPU)\""
+endif
+
ifneq (,$(INLINE))
BASIC_CFLAGS += -Dinline=$(INLINE)
endif
diff --git a/help.c b/help.c
index 88a3aeaeb9..cbcb159f36 100644
--- a/help.c
+++ b/help.c
@@ -412,6 +412,7 @@ int cmd_version(int argc, const char **argv, const char *prefix)
printf("git version %s\n", git_version_string);
if (build_options) {
+ printf("cpu: %s\n", GIT_HOST_CPU);
printf("sizeof-long: %d\n", (int)sizeof(long));
/* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */
}--
2.15.1.502.gccaef8de57
Hi Eric,
On Sat, 9 Dec 2017, Eric Sunshine wrote:
On Fri, Dec 08, 2017 at 04:19:25PM -0500, Eric Sunshine wrote:
quoted
On Fri, Dec 8, 2017 at 4:17 PM, Eric Sunshine [off-list ref] wrote:
quoted
On Fri, Dec 8, 2017 at 12:43 PM, Junio C Hamano [off-list ref] wrote:
quoted
Jonathan Nieder [off-list ref] writes:
quoted
Can this use GIT_BUILD_PLATFORM directly instead of going via the indirection
of a mutable static string? That is, something like
printf("machine: %s\n", GIT_BUILD_PLATFORM);
Good point. And if this is externally identified as "machine",
probably the macro should also use the same word, not "platform".
We can go either way, as long as we are consistent, though.
In Autoconf parlance, this would be called "host architecture" (GIT_HOST_ARCH).
My bad: "host cpu", rather (GIT_HOST_CPU).
Dscho, when you re-roll, perhaps replace the current patch with the
one below which determines the CPU type automatically rather than
having to manually maintain and augment a bunch of #ifdefs in help.h.
Will do!
Ciao,
Dscho