chiark / gitweb /
Makefile: Drop the classfile outputs down a level.
[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/default-java
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                =
21
22 SCALAC                   = fsc
23 SCALAFLAGS               = -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 CLASSDIR                 = cls/
33 %.stamp: %.java
34         $(call v_tag,JAVAC)mkdir -p $(CLASSDIR) && \
35                 $(JAVAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(JAVAFLAGS) $< && \
36                 echo built >$@
37 %.stamp: %.scala
38         $(call v_tag,SCALAC)mkdir -p $(CLASSDIR) && \
39                 $(SCALAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(SCALAFLAGS) $< && \
40                 echo built >$@
41 CLEANFILES              += *.stamp
42 clean::; rm -rf $(CLASSDIR)
43
44 objects                  = $(patsubst %.c,%$2,$1)
45
46 TARGETS += libtoy.so
47 libtoy.so_SOURCES        = jni.c
48 libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o)
49         $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^
50
51 TARGETS                 += jni.stamp
52
53 TARGETS                 += sock.stamp
54 sock.stamp: jni.stamp
55
56 TARGETS                 += main.stamp
57 main.stamp: jni.stamp sock.stamp
58
59 all:: $(TARGETS)
60 ALLSOURCES              += $(foreach t,$(TARGETS),$($t_SOURCES))
61
62 clean::; rm -f $(CLEANFILES) $(TARGETS)
63 .PHONY: clean
64
65 -include $(call objects,$(ALLSOURCES),.d)