Initial commit.
[tripe-android] / Makefile
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
9 JDK = /usr/lib/jvm/java-8-openjdk-amd64
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
22 SCALAC = scalac
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)