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
34const char *
35Py_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 = "main";
45 }
46 PyOS_snprintf(buildinfo, sizeof(buildinfo),
47 "%s%s%s, %.20s, %.9s", gitid, sep, revision,
48 DATE, TIME);
49 return buildinfo;
50}
51
52const char *
53_Py_gitversion(void)
54{
55 return GITVERSION;
56}
57
58const char *
59_Py_gitidentifier(void)
60{
61 const char *gittag, *gitid;
62 gittag = GITTAG;
63 if ((*gittag) && strcmp(gittag, "undefined") != 0)
64 gitid = gittag;
65 else
66 gitid = GITBRANCH;
67 return gitid;
68}
69