Merge pull request #361 from asarhaddon/exercise-native-implementations
[jackhill/mal.git] / d / Makefile
CommitLineData
c424b18d
JM
1d_MODE ?= gdc
2
3D ?= $(d_MODE)
bc33c480
UK
4
5ifeq ($(D),gdc)
f82cb965
DM
6CFLAGS += -g -O2 -Wall
7LDFLAGS += -lreadline
bc33c480
UK
8OF = -o $@
9else ifeq ($(D),ldc2)
10CFLAGS += -g -O2
11LDFLAGS += -L-lreadline
12OF = -of $@
13else ifeq ($(D),dmd)
14CFLAGS += -g -O
15LDFLAGS += -L-lreadline
16OF = -of=$@
17else
18 @echo "Unsupported D implementation $(D)"
19 @exit 1
20endif
f82cb965
DM
21
22#####################
23
f82cb965
DM
24EARLY_SRCS = step0_repl.d step1_read_print.d step2_eval.d
25LATE_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
27SRCS = $(EARLY_SRCS) $(LATE_SRCS)
28OBJS = $(SRCS:%.d=%.o)
29BINS = $(OBJS:%.o=%)
30EARLY_OBJS = types.o readline.o reader.o printer.o env.o
31OTHER_OBJS = $(EARLY_OBJS) mal_core.o
32EARLY_STEPS_BINS = $(EARLY_SRCS:%.d=%)
33LATE_STEPS_BINS = $(LATE_SRCS:%.d=%)
34
35#####################
36
b6dc3e37
JM
37all: $(BINS)
38
39dist: mal
f82cb965
DM
40
41mal: $(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
53clean:
54 rm -f $(OBJS) $(BINS) $(OTHER_OBJS) mal