chiark / gitweb /
shake it all up
[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 PKGS                     = mLib catacomb
14 PKGS_CFLAGS             := $(foreach p,$(PKGS),$(shell pkg-config --cflags $p))
15 PKGS_LIBS               := $(foreach p,$(PKGS),$(shell pkg-config --libs $p))
16
17 CC                       = gcc
18 CFLAGS                   = -O2 -g -Wall -fPIC $(addprefix -I,$(INCLUDES))
19 CFLAGS                  += $(PKGS_CFLAGS)
20
21 LD                       = gcc
22 LIBS                     = $(PKGS_LIBS)
23 LDFLAGS.so               = -shared
24
25 JAVAC                    = javac
26 JAVAFLAGS                =
27
28 SCALAC                   = fsc
29 SCALAFLAGS               = -optimise
30
31 ## Hack around https://issues.scala-lang.org/browse/SI-9689
32 SCALAFLAGS              += -Yno-load-impl-class
33
34 all::
35 .PHONY: all
36
37 %.o: %.c
38         $(call v_tag,CC)$(CC) -c $(CFLAGS) -MMD -o$@ $<
39 CLEANFILES              += *.o *.d
40
41 CLASSDIR                 = cls/
42 %.stamp: %.java
43         $(call v_tag,JAVAC)mkdir -p $(CLASSDIR) && \
44                 $(JAVAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(JAVAFLAGS) $< && \
45                 echo built >$@
46         $(V_AT)$(SCALAC) -reset
47 %.stamp: %.scala
48         $(call v_tag,SCALAC)mkdir -p $(CLASSDIR) && \
49                 $(SCALAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(SCALAFLAGS) $< && \
50                 echo built >$@
51 CLEANFILES              += *.stamp
52 clean::; rm -rf $(CLASSDIR)
53
54 objects                  = $(patsubst %.c,%$2,$1)
55
56 TARGETS += libtoy.so
57 libtoy.so_SOURCES        = jni.c
58 libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o)
59         $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^ $(LIBS)
60
61 TARGETS                 += util.stamp
62
63 TARGETS                 += sys.stamp
64 sys.stamp: util.stamp
65
66 TARGETS                 += admin.stamp
67 admin.stamp: util.stamp sys.stamp
68
69 TARGETS                 += main.stamp
70 main.stamp: sys.stamp
71
72 all:: $(TARGETS)
73 ALLSOURCES              += $(foreach t,$(TARGETS),$($t_SOURCES))
74
75 clean::; rm -f $(CLEANFILES) $(TARGETS)
76 .PHONY: clean
77
78 -include $(call objects,$(ALLSOURCES),.d)