Commit | Line | Data |
---|---|---|
c424b18d JM |
1 | d_MODE ?= gdc |
2 | ||
3 | D ?= $(d_MODE) | |
bc33c480 UK |
4 | |
5 | ifeq ($(D),gdc) | |
f82cb965 DM |
6 | CFLAGS += -g -O2 -Wall |
7 | LDFLAGS += -lreadline | |
bc33c480 UK |
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 | |
f82cb965 DM |
21 | |
22 | ##################### | |
23 | ||
f82cb965 DM |
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 | ||
b6dc3e37 JM |
37 | all: $(BINS) |
38 | ||
39 | dist: mal | |
f82cb965 DM |
40 | |
41 | mal: $(word $(words $(BINS)),$(BINS)) | |
42 | cp $< $@ | |
43 | ||
44 | $(OBJS) $(OTHER_OBJS): %.o: %.d | |
bc33c480 | 45 | $(D) $(CFLAGS) -c $(@:%.o=%.d) $(OF) |
f82cb965 DM |
46 | |
47 | $(EARLY_STEPS_BINS): $(EARLY_OBJS) | |
48 | $(LATE_STEPS_BINS): $(OTHER_OBJS) | |
49 | ||
50 | $(BINS): %: %.o | |
bc33c480 | 51 | $(D) $+ $(OF) $(LDFLAGS) |
f82cb965 DM |
52 | |
53 | clean: | |
54 | rm -f $(OBJS) $(BINS) $(OTHER_OBJS) mal |