Commit | Line | Data |
---|---|---|
3a2f1a4b MW |
1 | ### -*-makefile-*- |
2 | ||
3 | V = 0 | |
4 | v_tag = $(call v_tag_$V,$1) | |
5 | v_tag_0 = @printf " %-8s %s\n" "$1" "$@"; | |
6 | V_AT = $(V_AT_$V) | |
7 | V_AT_0 = @ | |
8 | ||
ac8e32b7 | 9 | JDK = /usr/lib/jvm/default-java |
3a2f1a4b MW |
10 | JDK_PLAT = linux |
11 | INCLUDES = $(JDK)/include $(JDK)/include/$(JDK_PLAT) | |
12 | ||
13 | CC = gcc | |
14 | CFLAGS = -O0 -g -Wall -fPIC $(addprefix -I,$(INCLUDES)) | |
15 | ||
16 | LD = gcc | |
17 | LDFLAGS.so = -shared | |
18 | ||
19 | JAVAC = javac | |
20 | JAVAFLAGS = -d . | |
21 | ||
81502866 | 22 | SCALAC = fsc |
3a2f1a4b MW |
23 | SCALAFLAGS = -d . -optimise |
24 | ||
25 | all:: | |
26 | .PHONY: all | |
27 | ||
28 | %.o: %.c | |
29 | $(call v_tag,CC)$(CC) -c $(CFLAGS) -MMD -o$@ $< | |
30 | CLEANFILES += *.o *.d | |
31 | ||
32 | %.stamp: %.java | |
33 | $(call v_tag,JAVAC)$(JAVAC) $(JAVAFLAGS) $< && echo built >$@ | |
34 | %.stamp: %.scala | |
35 | $(call v_tag,SCALAC)$(SCALAC) $(SCALAFLAGS) $< && echo built >$@ | |
36 | CLEANFILES += *.stamp | |
37 | ||
38 | objects = $(patsubst %.c,%$2,$1) | |
39 | ||
40 | TARGETS += libtoy.so | |
41 | libtoy.so_SOURCES = jni.c | |
42 | libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o) | |
43 | $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^ | |
44 | ||
45 | clean::; rm -rf uk/ | |
46 | ||
47 | TARGETS += jni.stamp | |
48 | ||
49 | TARGETS += sock.stamp | |
50 | sock.stamp: jni.stamp | |
51 | ||
52 | TARGETS += main.stamp | |
53 | main.stamp: jni.stamp sock.stamp | |
54 | ||
55 | all:: $(TARGETS) | |
56 | ALLSOURCES += $(foreach t,$(TARGETS),$($t_SOURCES)) | |
57 | ||
58 | clean::; rm -f $(CLEANFILES) $(TARGETS) | |
59 | .PHONY: clean | |
60 | ||
61 | -include $(call objects,$(ALLSOURCES),.d) |