8 SOURCES_BASE
= readline.d types.d reader.d printer.d
9 SOURCES_LISP
= env.d mal_core.d stepA_mal.d
10 SOURCES
= $(SOURCES_BASE
) $(SOURCES_LISP
)
14 EARLY_SRCS
= step0_repl.d step1_read_print.d step2_eval.d
15 LATE_SRCS
= step3_env.d step4_if_fn_do.d step5_tco.d step6_file.d \
16 step7_quote.d step8_macros.d step9_try.d stepA_mal.d
17 SRCS
= $(EARLY_SRCS
) $(LATE_SRCS
)
18 OBJS
= $(SRCS
:%.d
=%.o
)
20 EARLY_OBJS
= types.o readline.o reader.o printer.o env.o
21 OTHER_OBJS
= $(EARLY_OBJS
) mal_core.o
22 EARLY_STEPS_BINS
= $(EARLY_SRCS
:%.d
=%)
23 LATE_STEPS_BINS
= $(LATE_SRCS
:%.d
=%)
29 mal
: $(word $(words $(BINS
)),$(BINS
))
32 $(OBJS
) $(OTHER_OBJS
): %.o
: %.d
33 gdc
$(CFLAGS
) -c
$(@
:%.o
=%.d
) -o
$@
35 $(EARLY_STEPS_BINS
): $(EARLY_OBJS
)
36 $(LATE_STEPS_BINS
): $(OTHER_OBJS
)
39 gdc
$+ -o
$@
$(LDFLAGS
)
42 rm -f
$(OBJS
) $(BINS
) $(OTHER_OBJS
) mal
44 .PHONY
: stats stats-lisp tests
$(TESTS
)
48 @printf
"%5s %5s %5s %s\n" `grep -E "^[[:space:]]*//|^[[:space:]]*$$" $^ | wc` "[comments/blanks]"
49 stats-lisp
: $(SOURCES_LISP
)
51 @printf
"%5s %5s %5s %s\n" `grep -E "^[[:space:]]*//|^[[:space:]]*$$" $^ | wc` "[comments/blanks]"