]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Allow conditional inclusion of builtin library functions.
authorMike Pall <mike>
Mon, 24 Sep 2012 14:55:10 +0000 (16:55 +0200)
committerMike Pall <mike>
Mon, 24 Sep 2012 14:55:10 +0000 (16:55 +0200)
src/host/buildvm_lib.c

index 3231d3ad15bee7ba385671337385b2cf6f46f2fb..8e10fec1a737f282a058b1a292cccdad38bf4e96 100644 (file)
@@ -317,6 +317,27 @@ void emit_lib(BuildCtx *ctx)
     regfunc = REGFUNC_OK;
     while (fgets(buf, sizeof(buf), fp) != NULL) {
       char *p;
+      /* Simplistic pre-processor. Only handles top-level #if/#endif. */
+      if (buf[0] == '#' && buf[1] == 'i' && buf[2] == 'f') {
+       int ok = 1;
+       if (!strcmp(buf, "#if LJ_52\n"))
+         ok = LJ_52;
+       else if (!strcmp(buf, "#if LJ_HASJIT\n"))
+         ok = LJ_HASJIT;
+       else if (!strcmp(buf, "#if LJ_HASFFI\n"))
+         ok = LJ_HASFFI;
+       if (!ok) {
+         int lvl = 1;
+         while (fgets(buf, sizeof(buf), fp) != NULL) {
+           if (buf[0] == '#' && buf[1] == 'e' && buf[2] == 'n') {
+             if (--lvl == 0) break;
+           } else if (buf[0] == '#' && buf[1] == 'i' && buf[2] == 'f') {
+             lvl++;
+           }
+         }
+         continue;
+       }
+      }
       for (p = buf; (p = strstr(p, LIBDEF_PREFIX)) != NULL; ) {
        const LibDefHandler *ldh;
        p += sizeof(LIBDEF_PREFIX)-1;