| 1 | d_MODE ?= gdc |
| 2 | |
| 3 | D ?= $(d_MODE) |
| 4 | |
| 5 | ifeq ($(D),gdc) |
| 6 | CFLAGS += -g -O2 -Wall |
| 7 | LDFLAGS += -lreadline |
| 8 | OF = -o $@ |
| 9 | else ifeq ($(D),ldc2) |
| 10 | CFLAGS += -g -O2 |
| 11 | LDFLAGS += -L-lreadline |
| 12 | OF = -of $@ |
| 13 | else ifeq ($(D),dmd) |
| 14 | CFLAGS += -g -O |
| 15 | LDFLAGS += -L-lreadline |
| 16 | OF = -of=$@ |
| 17 | else |
| 18 | @echo "Unsupported D implementation $(D)" |
| 19 | @exit 1 |
| 20 | endif |
| 21 | |
| 22 | ##################### |
| 23 | |
| 24 | EARLY_SRCS = step0_repl.d step1_read_print.d step2_eval.d |
| 25 | LATE_SRCS = step3_env.d step4_if_fn_do.d step5_tco.d step6_file.d \ |
| 26 | step7_quote.d step8_macros.d step9_try.d stepA_mal.d |
| 27 | SRCS = $(EARLY_SRCS) $(LATE_SRCS) |
| 28 | OBJS = $(SRCS:%.d=%.o) |
| 29 | BINS = $(OBJS:%.o=%) |
| 30 | EARLY_OBJS = types.o readline.o reader.o printer.o env.o |
| 31 | OTHER_OBJS = $(EARLY_OBJS) mal_core.o |
| 32 | EARLY_STEPS_BINS = $(EARLY_SRCS:%.d=%) |
| 33 | LATE_STEPS_BINS = $(LATE_SRCS:%.d=%) |
| 34 | |
| 35 | ##################### |
| 36 | |
| 37 | all: $(BINS) |
| 38 | |
| 39 | dist: mal |
| 40 | |
| 41 | mal: $(word $(words $(BINS)),$(BINS)) |
| 42 | cp $< $@ |
| 43 | |
| 44 | $(OBJS) $(OTHER_OBJS): %.o: %.d |
| 45 | $(D) $(CFLAGS) -c $(@:%.o=%.d) $(OF) |
| 46 | |
| 47 | $(EARLY_STEPS_BINS): $(EARLY_OBJS) |
| 48 | $(LATE_STEPS_BINS): $(OTHER_OBJS) |
| 49 | |
| 50 | $(BINS): %: %.o |
| 51 | $(D) $+ $(OF) $(LDFLAGS) |
| 52 | |
| 53 | clean: |
| 54 | rm -f $(OBJS) $(BINS) $(OTHER_OBJS) mal |