-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
39 lines (30 loc) · 1.32 KB
/
Copy pathmakefile
File metadata and controls
39 lines (30 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
CC := gcc
MAKE := make
INCDIR := -I ./include -I ./stdproc
CFLAGS := -Wall $(INCDIR)
StdprocDir := stdproc
export ProcObjs := argcheck.o boolean_proc.o char_proc.o equal_proc.o list_proc.o \
number_proc.o pair_proc.o string_proc.o symbol_proc.o \
vector_proc.o output_proc.o control_proc.o
StdprocObjs := $(addprefix $(StdprocDir)/, $(ProcObjs))
StdprocFiles := $(subst .o,.c,$(StdprocObjs))
Objects := main.o memory.o atom.o control.o boolean.o character.o number.o symbol.o \
mstring.o vector.o list.o equal_predicate.o output.o read_parse.o stack.o \
procedure.o environment.o eval.o driver_loop.o garbage_collection.o
#####################################################
##rules
#####################################################
CSchemer: $(Objects) $(StdprocObjs)
$(CC) $(CFLAGS) -o CSchemer $(Objects) $(StdprocObjs)
IncCommonObjs := $(filter-out main.o environment.o, $(Objects))
$(IncCommonObjs):$(subst .o,.c,$(IncCommonObjs)) include/common.h
$(CC) -c $(CFLAGS) $(subst .o,.c,$@)
main.o: main.c include/driver_loop.h
$(CC) -c $(CFLAGS) main.c
environment.o: environment.c include/common.h stdproc/stdproc.h
$(CC) -c $(CFLAGS) environment.c
$(StdprocObjs): $(StdprocFiles)
$(MAKE) -C $(StdprocDir)
clean:
-rm -rf CSchemer $(Objects)
cd $(StdprocDir) ; make clean