2016-03-04 08:08:47 +03:00
|
|
|
STEP0_DEPS = mal_readline.c mal_readline.h
|
|
|
|
STEP1_DEPS = $(STEP0_DEPS) types.h types.m reader.h reader.m printer.h printer.m
|
|
|
|
STEP2_DEPS = $(STEP1_DEPS)
|
|
|
|
STEP3_DEPS = $(STEP2_DEPS) env.m
|
|
|
|
STEP4_DEPS = $(STEP3_DEPS) malfunc.h malfunc.m core.h core.m
|
|
|
|
|
|
|
|
STEPS = step0_repl step1_read_print step2_eval step3_env \
|
|
|
|
step4_if_fn_do step5_tco step6_file step7_quote \
|
|
|
|
step8_macros step9_try stepA_mal
|
|
|
|
|
|
|
|
# From: https://blog.tlensing.org/2013/02/24/objective-c-on-linux-setting-up-gnustep-clang-llvm-objective-c-2-0-blocks-runtime-gcd-on-ubuntu-12-04/:
|
|
|
|
# clang `gnustep-config --objc-flags` -o main -x objective-c main.m -fconstant-string-class=NSConstantString -fobjc-nonfragile-abi -fblocks -lgnustep-base -lgnustep-gui -ldispatch -I/usr/local/include/GNUstep -L/usr/local/lib/GNUstep
|
|
|
|
|
2016-03-06 10:16:32 +03:00
|
|
|
OS := $(shell uname)
|
|
|
|
|
2016-03-04 08:08:47 +03:00
|
|
|
## Bizzare gnustep-config/make interaction causes make to get run
|
|
|
|
## during gnustep-config so we need to remove make output
|
2016-03-06 10:16:32 +03:00
|
|
|
ifeq ($(OS),Darwin)
|
|
|
|
CC = clang -framework Foundation
|
|
|
|
OBJC_LIBS := -lobjc -lreadline
|
|
|
|
else
|
|
|
|
#CC = clang -fblocks -fobjc-nonfragile-abi -fobjc-arc
|
|
|
|
CC = clang -fblocks -fobjc-nonfragile-abi
|
2017-02-11 09:12:37 +03:00
|
|
|
OBJC_FLAGS := $(shell gnustep-config --objc-flags 2>/dev/null | egrep -v "Entering|Leaving")
|
|
|
|
OBJC_LIBS := $(filter-out -shared-libgcc,$(shell gnustep-config --base-libs 2>/dev/null | egrep -v "Entering|Leaving")) -ldispatch -lreadline
|
2016-03-06 10:16:32 +03:00
|
|
|
endif
|
2016-03-04 08:08:47 +03:00
|
|
|
|
|
|
|
all: $(STEPS)
|
|
|
|
|
|
|
|
dist: mal
|
|
|
|
|
|
|
|
mal: stepA_mal
|
|
|
|
cp $< $@
|
|
|
|
|
|
|
|
step0_repl: $(STEP0_DEPS)
|
|
|
|
step1_read_print: $(STEP1_DEPS)
|
|
|
|
step2_eval: $(STEP2_DEPS)
|
|
|
|
step3_env: $(STEP3_DEPS)
|
|
|
|
step4_if_fn_do step5_tco step6_file step7_quote step8_macros step9_try stepA_mal: $(STEP4_DEPS)
|
|
|
|
|
|
|
|
step%: step%.m
|
2016-03-06 10:16:32 +03:00
|
|
|
$(CC) \
|
|
|
|
-xobjective-c $(filter-out %.h mal_readline%,$+) \
|
|
|
|
-xc mal_readline.c \
|
|
|
|
-o $@ \
|
|
|
|
$(OBJC_FLAGS) \
|
|
|
|
$(OBJC_LIBS)
|
2016-03-04 08:08:47 +03:00
|
|
|
|
|
|
|
clean:
|
|
|
|
rm -f $(STEPS) *.o *.d mal
|