|
|
@@ -30,7 +30,12 @@ int is_directory(char *path)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-#define QIC_VERSION "qic v01 " __DATE__
|
|
|
+#define __STR0(x) #x
|
|
|
+#define __STR1(x) __STR0(x)
|
|
|
+
|
|
|
+#define LIBQIRT_VER 1
|
|
|
+
|
|
|
+#define QIC_VER "qic v1 (libqirt>=" __STR1(LIBQIRT_VER) ") " __DATE__
|
|
|
|
|
|
size_t GID = 0;
|
|
|
char *PREFIX = NULL;
|
|
|
@@ -7722,7 +7727,7 @@ char *compile(char *source, list_t *required)
|
|
|
buffer_t *gbuf = buffer_new();
|
|
|
buffer_t *buf = buffer_new();
|
|
|
|
|
|
- compile_into("const __QIC = \"" QIC_VERSION "\"", gbuf, buf, ctx, ltab, lstk,
|
|
|
+ compile_into("const __QIC = \"" QIC_VER "\"", gbuf, buf, ctx, ltab, lstk,
|
|
|
sstk, lbl);
|
|
|
compile_into("macro E(x) {\n$set r E(x)\n$if r = nil\n$x\n$else\n$r\n$endif}",
|
|
|
gbuf, buf, ctx, ltab, lstk, sstk, lbl);
|
|
|
@@ -7762,6 +7767,11 @@ char *compile(char *source, list_t *required)
|
|
|
buffer_appendb(rbuf, gbuf);
|
|
|
|
|
|
buffer_appends(rbuf, "int main(int argc, char **argv) {\n");
|
|
|
+ buffer_fmt(rbuf, "if (qi_rt_version() < %luUL) {\n", LIBQIRT_VER);
|
|
|
+ buffer_fmt(rbuf, " fprintf(stderr, \"fatal: unsupported libqirt version\\n\");\n");
|
|
|
+ buffer_fmt(rbuf, " abort();\n");
|
|
|
+ buffer_fmt(rbuf, "}\n\n");
|
|
|
+
|
|
|
buffer_appends(rbuf, "qi_state_t *state;\n");
|
|
|
|
|
|
if (DEBUG)
|
|
|
@@ -7881,7 +7891,7 @@ int main(int argc, char **argv)
|
|
|
strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-v") == 0 ||
|
|
|
strcmp(argv[i], "--version") == 0)
|
|
|
{
|
|
|
- fprintf(stderr, "qilang compiler, " QIC_VERSION "\n");
|
|
|
+ fprintf(stderr, "qilang compiler, " QIC_VER "\n");
|
|
|
fprintf(
|
|
|
stderr,
|
|
|
"usage: %s [-dsh] [-p prefix] [-o out.c] [input0.qi input1.qi ... inputN.qi]\n",
|