aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2012-09-24 16:55:10 +0200
committerMike Pall <mike>2012-09-24 16:55:10 +0200
commit2ff4afeb4f7d73eb0bd90092866cfdb4e8caa2f3 (patch)
tree293e605a6c9b10cded67b28dc2724bf6f2326022 /src
parent2ba16862c72ba67ab8708f7737944974044ea699 (diff)
downloadluajit-2ff4afeb4f7d73eb0bd90092866cfdb4e8caa2f3.tar.gz
luajit-2ff4afeb4f7d73eb0bd90092866cfdb4e8caa2f3.tar.bz2
luajit-2ff4afeb4f7d73eb0bd90092866cfdb4e8caa2f3.zip
Allow conditional inclusion of builtin library functions.
Diffstat (limited to 'src')
-rw-r--r--src/host/buildvm_lib.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/host/buildvm_lib.c b/src/host/buildvm_lib.c
index 3231d3ad..8e10fec1 100644
--- a/src/host/buildvm_lib.c
+++ b/src/host/buildvm_lib.c
@@ -317,6 +317,27 @@ void emit_lib(BuildCtx *ctx)
317 regfunc = REGFUNC_OK; 317 regfunc = REGFUNC_OK;
318 while (fgets(buf, sizeof(buf), fp) != NULL) { 318 while (fgets(buf, sizeof(buf), fp) != NULL) {
319 char *p; 319 char *p;
320 /* Simplistic pre-processor. Only handles top-level #if/#endif. */
321 if (buf[0] == '#' && buf[1] == 'i' && buf[2] == 'f') {
322 int ok = 1;
323 if (!strcmp(buf, "#if LJ_52\n"))
324 ok = LJ_52;
325 else if (!strcmp(buf, "#if LJ_HASJIT\n"))
326 ok = LJ_HASJIT;
327 else if (!strcmp(buf, "#if LJ_HASFFI\n"))
328 ok = LJ_HASFFI;
329 if (!ok) {
330 int lvl = 1;
331 while (fgets(buf, sizeof(buf), fp) != NULL) {
332 if (buf[0] == '#' && buf[1] == 'e' && buf[2] == 'n') {
333 if (--lvl == 0) break;
334 } else if (buf[0] == '#' && buf[1] == 'i' && buf[2] == 'f') {
335 lvl++;
336 }
337 }
338 continue;
339 }
340 }
320 for (p = buf; (p = strstr(p, LIBDEF_PREFIX)) != NULL; ) { 341 for (p = buf; (p = strstr(p, LIBDEF_PREFIX)) != NULL; ) {
321 const LibDefHandler *ldh; 342 const LibDefHandler *ldh;
322 p += sizeof(LIBDEF_PREFIX)-1; 343 p += sizeof(LIBDEF_PREFIX)-1;