aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2026-01-09 19:57:59 +0100
committerlemon <lsof@mailbox.org>2026-01-09 19:57:59 +0100
commitbef7d9b99e3300ecbf6d530b6dbf0709bff60973 (patch)
treefe5fe22f8a0d67b355860e4bf53ba4a34dd2e944
parentf5955f1e62736f2f92b05a1ed7931d378f7b2ae6 (diff)
Add version tracking. Starting at 0.1.0
-rw-r--r--c/lex.c18
-rw-r--r--main.c11
-rw-r--r--version.h13
3 files changed, 38 insertions, 4 deletions
diff --git a/c/lex.c b/c/lex.c
index d072464..7eb1a2c 100644
--- a/c/lex.c
+++ b/c/lex.c
@@ -1,4 +1,5 @@
#include "lex.h"
+#include "../version.h"
#include <string.h>
/* fill internal circular character buffer with input after translation phase 1 & 2
@@ -2067,14 +2068,23 @@ putdefs1(const char *s)
static void
addpredefmacros(struct arena **tmparena)
{
- static struct token tok_ver = { TKNUMLIT };
+ static struct token tok_stdc = {TKNUMLIT},
+ tok_major = {TKNUMLIT, .s = XSTR(ANTCC_VERSION_MAJOR),
+ .len = sizeof XSTR(ANTCC_VERSION_MAJOR) - 1},
+ tok_minor = {TKNUMLIT, .s = XSTR(ANTCC_VERSION_MINOR),
+ .len = sizeof XSTR(ANTCC_VERSION_MINOR) - 1},
+ tok_patch = {TKNUMLIT, .s = XSTR(ANTCC_VERSION_PATCH),
+ .len = sizeof XSTR(ANTCC_VERSION_PATCH) - 1};
static struct { const char *name; struct macro m; } macs[] = {
{ "__FILE__", { .predef = 1, .special = 1, .handler = mac__file__handler }},
{ "__LINE__", { .predef = 1, .special = 1, .handler = mac__line__handler }},
{ "__DATE__", { .predef = 1, .special = 1, .handler = mac__date__handler }},
{ "__TIME__", { .predef = 1, .special = 1, .handler = mac__time__handler }},
{ "__has_builtin", { .predef = 1, .nparam = 1, .fnlike = 1, .special = 1, .handlerfn = mac__has_builtin }},
- { "__STDC_VERSION__", { .predef = 1, .rlist = { &tok_ver, 1 } }},
+ { "__STDC_VERSION__", { .predef = 1, .rlist = { &tok_stdc, 1 } }},
+ { "__antcc_major__", { .predef = 1, .rlist = { &tok_major, 1} }},
+ { "__antcc_minor__", { .predef = 1, .rlist = { &tok_minor, 1} }},
+ { "__antcc_patch__", { .predef = 1, .rlist = { &tok_patch, 1} }},
};
static const char
cpredefs[] =
@@ -2091,8 +2101,8 @@ addpredefmacros(struct arena **tmparena)
[STDC23] = "202311L",
};
- tok_ver.s = cstdver[ccopt.cstd];
- tok_ver.len = 7;
+ tok_stdc.s = cstdver[ccopt.cstd];
+ tok_stdc.len = 7;
for (int i = 0; i < countof(macs); ++i)
putmac(intern(macs[i].name), &macs[i].m);
putdefs1(cpredefs);
diff --git a/main.c b/main.c
index 68d9b71..af9776f 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,5 @@
#include "common.h"
+#include "version.h"
#include "hostconfig.h" /* run ./configure */
#include "obj/obj.h"
#include <errno.h>
@@ -134,6 +135,15 @@ optparse(char **args)
} else if (!strcmp(arg, "dumpmachine")) {
pfmt("%s\n", HOST_TRIPLE);
exit(0);
+ } else if (!strcmp(arg, "-version")) {
+ pfmt("antcc version "ANTCC_VERSION_STR"\n"
+ "target: "HOST_TRIPLE"\n"
+ "include paths: "XSTR(HOST_INCLUDE_DIRS)"\n"
+ "host cc for linking: " HOST_CC "\n");
+ exit(0);
+ } else if (!strcmp(arg, "dumpversion")) {
+ pfmt("%s\n", ANTCC_VERSION_STR);
+ exit(0);
} else if ((x = optval(arg, "std"))) {
if (!strcmp(x, "c89") || !strcmp(x, "c90")) ccopt.cstd = STDC89;
else if (!strcmp(x, "c99")) ccopt.cstd = STDC99;
@@ -618,6 +628,7 @@ prihelp(void)
" -W[...] \tTurn on warnings (stub)\n"
" -Werror \tTurn warnings into errors\n"
" -w \tSuppress warnings\n"
+ " --version \tPrint version\n"
);
}
diff --git a/version.h b/version.h
new file mode 100644
index 0000000..279d21c
--- /dev/null
+++ b/version.h
@@ -0,0 +1,13 @@
+#ifndef VERSION_H_
+#define VERSION_H_
+
+/* 0.1.0 */
+#define ANTCC_VERSION_MAJOR 0
+#define ANTCC_VERSION_MINOR 1
+#define ANTCC_VERSION_PATCH 0
+
+#define XSTR_(...) #__VA_ARGS__
+#define XSTR(...) XSTR_(__VA_ARGS__)
+#define ANTCC_VERSION_STR XSTR(ANTCC_VERSION_MAJOR) "." XSTR(ANTCC_VERSION_MINOR) "." XSTR(ANTCC_VERSION_PATCH)
+
+#endif