diff --git a/Makefile b/Makefile index 9c703e3..ab99748 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,30 @@ $(CC)=clang -default: tokenize.c closures.c - $(CC) -DNDEBUG -c -fPIC -Wall -Wextra -pedantic -Wpointer-arith -Werror --std=c99 -O3 ./tokenize.c +default: tokenize.c closures.c tokenize.h closures.h + $(CC) -lmaa -DNDEBUG -Wall -Wextra -pedantic -Wpointer-arith -Werror -std=c99 -O3 ./tokenize.c; + $(CC) -DNDEBUG -Wall -Wextra -pedantic -Wpointer-arith -Werror -std=c99 -O3 ./closures.c; + +unsafe: tokenize.c closures.c tokenize.h closures.h + $(CC) -lmaa -DNDEBUG -std=c99 -O3 ./tokenize.c; + $(CC) -DNDEBUG -std=c99 -O3 ./closures.c; + +unsafelib: tokenize.c closures.c tokenize.h closures.h + $(CC) -DLIB -DNDEBUG -c -fpic -std=c99 -O3 ./tokenize.c; + $(CC) -lmaa -shared -o tokenize.so tokenize.o; + + $(CC) -DLIB -DNDEBUG -c -fpic -std=c99 -O3 ./closures.c; + $(CC) -shared -o closures.so closures.o; + +lib: tokenize.c closures.c tokenize.h closures.h + $(CC) -DLIB -DNDEBUG -c -fpic -Wall -Wextra -pedantic -Wpointer-arith -Werror -std=c99 -O3 ./tokenize.c $(CC) -lmaa -shared -o tokenize.so tokenize.o; - $(CC) -DNDEBUG -c -fPIC -Wall -Wextra -pedantic -Wpointer-arith -Werror --std=c99 -O3 ./closures.c; + $(CC) -DLIB -DNDEBUG -c -fpic -Wall -Wextra -pedantic -Wpointer-arith -Werror -std=c99 -O3 ./closures.c; $(CC) -shared -o closures.so closures.o; -debug: tokenize.c closures.c - $(CC) -g -c -fPIC -Wall -Wextra -pedantic -Wpointer-arith -Werror --std=c99 ./tokenize.c; +debug: tokenize.c closures.c tokenize.h closures.h + $(CC) -g -c -fpic -Wall -Wextra -pedantic -Wpointer-arith -Werror -std=c99 ./tokenize.c; $(CC) -lmaa -shared -o tokenize.so tokenize.o; - $(CC) -g -c -fPIC -Wall -Wextra -pedantic -Wpointer-arith -Werror --std=c99 ./closures.c; + $(CC) -g -c -fpic -Wall -Wextra -pedantic -Wpointer-arith -Werror -std=c99 ./closures.c; $(CC) -shared -o closures.so closures.o; diff --git a/closures.c b/closures.c index 49f98dd..bc4b50c 100644 --- a/closures.c +++ b/closures.c @@ -90,7 +90,8 @@ invoke(closure_t closure, svalue_t val) { return func(val, closure.fvars); } -/*static svalue_t* +#ifndef LIB +static svalue_t* make_adder_inner(svalue_t x, svalue_t *env) { svalue_variants_t val; val.integer = env[0].value.integer + x.value.integer; @@ -101,9 +102,9 @@ static closure_t make_adder(svalue_t *inc) { closure_t closure = make_closure(make_adder_inner, inc); return closure; -}*/ +} -/*int +int main(void) { closure_t add2 = make_adder(box_int(2)); printf("%d\n", invoke(add2, *box_int(5))->value.integer); @@ -111,4 +112,5 @@ main(void) { (void)box_double; (void)box_string; return 0; -}*/ +} +#endif diff --git a/closures.h b/closures.h index 6fd1a20..1639ceb 100644 --- a/closures.h +++ b/closures.h @@ -50,9 +50,10 @@ make_closure(svalue_t* (*func)(svalue_t, svalue_t*), svalue_t* invoke(closure_t, svalue_t); -/*static svalue_t* +#ifndef LIB +static svalue_t* make_adder_inner(svalue_t, svalue_t *); static closure_t make_adder(svalue_t *); -*/ +#endif diff --git a/tokenize.c b/tokenize.c index c44a0cb..5c5ba37 100644 --- a/tokenize.c +++ b/tokenize.c @@ -467,3 +467,9 @@ release_tokens(token_stream *tokens) { hsh_destroy(tokens->memo); return true; } + +#ifndef LIB +int main(void) { + return 0; +} +#endif