1 #include "Python.h"
2 
3 #ifndef DONT_HAVE_STDIO_H
4 #include <stdio.h>
5 #endif
6 
7 #ifndef DATE
8 #ifdef __DATE__
9 #define DATE __DATE__
10 #else
11 #define DATE "xx/xx/xx"
12 #endif
13 #endif
14 
15 #ifndef TIME
16 #ifdef __TIME__
17 #define TIME __TIME__
18 #else
19 #define TIME "xx:xx:xx"
20 #endif
21 #endif
22 
23 /* XXX Only unix build process has been tested */
24 #ifndef GITVERSION
25 #define GITVERSION ""
26 #endif
27 #ifndef GITTAG
28 #define GITTAG ""
29 #endif
30 #ifndef GITBRANCH
31 #define GITBRANCH ""
32 #endif
33 
34 const char *
Py_GetBuildInfo(void)35 Py_GetBuildInfo(void)
36 {
37     static char buildinfo[50 + sizeof(GITVERSION) +
38                           ((sizeof(GITTAG) > sizeof(GITBRANCH)) ?
39                            sizeof(GITTAG) : sizeof(GITBRANCH))];
40     const char *revision = _Py_gitversion();
41     const char *sep = *revision ? ":" : "";
42     const char *gitid = _Py_gitidentifier();
43     if (!(*gitid))
44         gitid = "default";
45     PyOS_snprintf(buildinfo, sizeof(buildinfo),
46                   "%s%s%s, %.20s, %.9s", gitid, sep, revision,
47                   DATE, TIME);
48     return buildinfo;
49 }
50 
51 const char *
_Py_gitversion(void)52 _Py_gitversion(void)
53 {
54     return GITVERSION;
55 }
56 
57 const char *
_Py_gitidentifier(void)58 _Py_gitidentifier(void)
59 {
60     const char *gittag, *gitid;
61     gittag = GITTAG;
62     if ((*gittag) && strcmp(gittag, "undefined") != 0)
63         gitid = gittag;
64     else
65         gitid = GITBRANCH;
66     return gitid;
67 }
68