9 SOURCES_BASE
= readline.h readline.c types.h types.c \
10 reader.h reader.c printer.h printer.c \
12 SOURCES_LISP
= env.c core.h core.c stepA_mal.c
13 SOURCES
= $(SOURCES_BASE
) $(SOURCES_LISP
)
18 SRCS
= step0_repl.c step1_read_print.c step2_eval.c step3_env.c \
19 step4_if_fn_do.c step5_tco.c step6_file.c step7_quote.c \
20 step8_macros.c step9_try.c stepA_mal.c
21 OBJS
= $(SRCS
:%.c
=%.o
)
23 OTHER_OBJS
= types.o readline.o reader.o printer.o env.o core.o interop.o
24 OTHER_HDRS
= types.h readline.h reader.h printer.h core.h interop.h
26 GLIB_CFLAGS ?
= $(shell pkg-config
--cflags glib-2.0
)
27 GLIB_LDFLAGS ?
= $(shell pkg-config
--libs glib-2.0
)
29 ifeq (,$(USE_READLINE
))
32 RL_LIBRARY ?
= readline
33 CFLAGS
+= -DUSE_READLINE
=1
36 CFLAGS
+= $(GLIB_CFLAGS
)
37 LDFLAGS
+= -l
$(RL_LIBRARY
) $(GLIB_LDFLAGS
) -ldl
-lffi
43 mal
: $(word $(words $(BINS
)),$(BINS
))
46 $(OBJS
) $(OTHER_OBJS
): %.o
: %.c
$(OTHER_HDRS
)
47 gcc
$(CFLAGS
) -c
$(@
:%.o
=%.c
) -o
$@
49 $(patsubst %.o
,%,$(filter step
%,$(OBJS
))): $(OTHER_OBJS
)
51 gcc
$+ -o
$@
$(LDFLAGS
)
54 rm -f
$(OBJS
) $(BINS
) $(OTHER_OBJS
) mal
56 .PHONY
: stats stats-lisp tests
$(TESTS
)
60 stats-lisp
: $(SOURCES_LISP
)