chiark / gitweb /
rough work in progress; may not build
[tripe-android] / Makefile
CommitLineData
3a2f1a4b
MW
1### -*-makefile-*-
2
3V = 0
4v_tag = $(call v_tag_$V,$1)
5v_tag_0 = @printf " %-8s %s\n" "$1" "$@";
6V_AT = $(V_AT_$V)
7V_AT_0 = @
8
ac8e32b7 9JDK = /usr/lib/jvm/default-java
3a2f1a4b
MW
10JDK_PLAT = linux
11INCLUDES = $(JDK)/include $(JDK)/include/$(JDK_PLAT)
12
8eabb4ff
MW
13PKGS = mLib catacomb
14PKGS_CFLAGS := $(foreach p,$(PKGS),$(shell pkg-config --cflags $p))
15PKGS_LIBS := $(foreach p,$(PKGS),$(shell pkg-config --libs $p))
16
3a2f1a4b 17CC = gcc
c8292b34
MW
18CFLAGS = -O2 -g -Wall -pedantic -Werror \
19 -fPIC $(addprefix -I,$(INCLUDES))
8eabb4ff 20CFLAGS += $(PKGS_CFLAGS)
3a2f1a4b
MW
21
22LD = gcc
8eabb4ff 23LIBS = $(PKGS_LIBS)
3a2f1a4b
MW
24LDFLAGS.so = -shared
25
26JAVAC = javac
b4cf5ec4 27JAVAFLAGS =
3a2f1a4b 28
81502866 29SCALAC = fsc
c8292b34
MW
30SCALAFLAGS = -optimise -Xlint -Xlint:-package-object-classes \
31 -Yinline-warnings:false
3a2f1a4b 32
8eabb4ff
MW
33## Hack around https://issues.scala-lang.org/browse/SI-9689
34SCALAFLAGS += -Yno-load-impl-class
35
3a2f1a4b
MW
36all::
37.PHONY: all
38
39%.o: %.c
40 $(call v_tag,CC)$(CC) -c $(CFLAGS) -MMD -o$@ $<
41CLEANFILES += *.o *.d
42
2a02a846 43CLASSDIR = cls/
3a2f1a4b 44%.stamp: %.java
2a02a846
MW
45 $(call v_tag,JAVAC)mkdir -p $(CLASSDIR) && \
46 $(JAVAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(JAVAFLAGS) $< && \
47 echo built >$@
8eabb4ff 48 $(V_AT)$(SCALAC) -reset
3a2f1a4b 49%.stamp: %.scala
2a02a846
MW
50 $(call v_tag,SCALAC)mkdir -p $(CLASSDIR) && \
51 $(SCALAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(SCALAFLAGS) $< && \
52 echo built >$@
3a2f1a4b 53CLEANFILES += *.stamp
2a02a846 54clean::; rm -rf $(CLASSDIR)
3a2f1a4b
MW
55
56objects = $(patsubst %.c,%$2,$1)
57
58TARGETS += libtoy.so
59libtoy.so_SOURCES = jni.c
60libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o)
8eabb4ff
MW
61 $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^ $(LIBS)
62
63TARGETS += util.stamp
3a2f1a4b 64
8eabb4ff 65TARGETS += sys.stamp
25c35469 66sys.stamp: util.stamp
3a2f1a4b 67
7894831e 68TARGETS += admin.stamp
c8292b34
MW
69admin.stamp: sys.stamp util.stamp
70
71TARGETS += tar.stamp
72tar.stamp: sys.stamp util.stamp
73
74TARGETS += keys.stamp
75keys.stamp: tar.stamp sys.stamp util.stamp
7894831e 76
3a2f1a4b 77TARGETS += main.stamp
25c35469 78main.stamp: sys.stamp
3a2f1a4b
MW
79
80all:: $(TARGETS)
81ALLSOURCES += $(foreach t,$(TARGETS),$($t_SOURCES))
82
83clean::; rm -f $(CLEANFILES) $(TARGETS)
84.PHONY: clean
85
86-include $(call objects,$(ALLSOURCES),.d)