diff --git a/Makefile b/Makefile index bd22942..77dad1b 100644 --- a/Makefile +++ b/Makefile @@ -20,9 +20,9 @@ lib: tokenize.c closures.c tokenize.h RTS.h $(CC) -DLIB -DNDEBUG -c -fpic -Wall -Wextra -pedantic -Wpointer-arith -Werror -std=c99 -O3 ./closures.c; $(CC) -shared -o closures.so closures.o; -debug: - $(CC) -g -Wall -Wextra -pedantic -Wpointer-arith -Wmissing-prototypes -std=c99 -O3 ./tokenize.c -lmaa; - $(CC) -g -Wall -Wextra -pedantic -Wpointer-arith -Wmissing-prototypes -std=c99 -O3 ./closures.c; +debug: tokenize.c closures.c tokenize.h RTS.h + $(CC) -Wall -Wextra -pedantic -Wpointer-arith -Wmissing-prototypes -Werror -std=c99 ./tokenize.c -lmaa; + $(CC) -Wall -Wextra -pedantic -Wpointer-arith -Wmissing-prototypes -Werror -std=c99 ./closures.c; debuglib: tokenize.c closures.c tokenize.h RTS.h $(CC) -g -c -fpic -Wall -Wextra -pedantic -Wpointer-arith -Wmissing-prototypes -Werror -std=c99 ./tokenize.c; diff --git a/RTS.h b/RTS.h index 5be3c26..d52c737 100644 --- a/RTS.h +++ b/RTS.h @@ -68,18 +68,18 @@ svalue_t * invoke(svalue_t*, svalue_t*); -inline svalue_t * +svalue_t * box_int(int x); -inline svalue_t * +svalue_t * box_float(float x); -inline svalue_t * +svalue_t * box_double(double x); -inline svalue_t * +svalue_t * box_string(char *, size_t); -inline svalue_t * +svalue_t * box_closure(closure_t*); diff --git a/closures.c b/closures.c index 089b409..e9d5a8e 100644 --- a/closures.c +++ b/closures.c @@ -4,6 +4,7 @@ #include "error.h" #include "RTS.h" +#ifndef LIB static svalue_t* make_doubleadder_inner_inner(svalue_t *, svalue_t **); @@ -12,6 +13,7 @@ make_doubleadder_inner(svalue_t *, svalue_t **); static svalue_t* make_doubleadder(svalue_t *, svalue_t **); +#endif inline svalue_t box_value(svalue_variants_t value, @@ -96,7 +98,7 @@ box_closure(closure_t *closure) { } -closure_t* +inline closure_t* make_closure(svalue_t *(*func)(svalue_t*, svalue_t**), svalue_t **fvars) { /* The reason we dynamically allocate here is because @@ -117,7 +119,8 @@ invoke(svalue_t *closure, svalue_t *val) { } -static svalue_t* +#ifndef LIB +static inline svalue_t* make_doubleadder_inner_inner(svalue_t *z, svalue_t **env) { int x,y; x = env[0]->value.integer; @@ -126,7 +129,7 @@ make_doubleadder_inner_inner(svalue_t *z, svalue_t **env) { return box_int(z->value.integer); } -static svalue_t* +static inline svalue_t* make_doubleadder_inner(svalue_t *y, svalue_t **env) { env[1] = y; closure_t *inner = make_closure(make_doubleadder_inner_inner, env); @@ -154,3 +157,4 @@ main(void) { printf("print 23 + 5 + 334 == %d\n", result->value.integer); return 0; } +#endif