Makefile: Move all artifacts into a subdirectory.
[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
2812483e 39OUTDIR = out/
3a2f1a4b 40
2812483e
MW
41out/%.o: %.c
42 $(call v_tag,CC)mkdir -p $(OUTDIR) && $(CC) -c $(CFLAGS) -MMD -o$@ $<
43CLEANFILES += $(OUTDIR)*.o $(OUTDIR)*.d
44
45stamp = $(patsubst %,$(OUTDIR)%.stamp,$1)
46CLASSDIR = $(OUTDIR)cls/
47$(OUTDIR)%.stamp: %.java
2a02a846
MW
48 $(call v_tag,JAVAC)mkdir -p $(CLASSDIR) && \
49 $(JAVAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(JAVAFLAGS) $< && \
50 echo built >$@
8eabb4ff 51 $(V_AT)$(SCALAC) -reset
2812483e 52$(OUTDIR)%.stamp: %.scala
2a02a846
MW
53 $(call v_tag,SCALAC)mkdir -p $(CLASSDIR) && \
54 $(SCALAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(SCALAFLAGS) $< && \
55 echo built >$@
2812483e 56CLEANFILES += $(OUTDIR)*.stamp
2a02a846 57clean::; rm -rf $(CLASSDIR)
3a2f1a4b 58
2812483e 59objects = $(patsubst %.c,$(OUTDIR)%$2,$1)
3a2f1a4b 60
2812483e 61TARGETS += $(OUTDIR)libtoy.so
3a2f1a4b 62libtoy.so_SOURCES = jni.c
2812483e 63$(OUTDIR)libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o)
8eabb4ff
MW
64 $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^ $(LIBS)
65
2812483e
MW
66CLASSES += util
67CLASSES += sys
68sys_DEPS = util
69CLASSES += admin
70admin_DEPS = sys util
71CLASSES += tar
72tar_DEPS = util
73CLASSES += keys
74keys_DEPS = tar sys util
75CLASSES += main
76main_DEPS = sys
77
78$(foreach c,$(CLASSES),$(eval $(call stamp,$c): $(call stamp,$($c_DEPS))))
79TARGETS += $(call stamp,$(CLASSES))
3a2f1a4b
MW
80
81all:: $(TARGETS)
82ALLSOURCES += $(foreach t,$(TARGETS),$($t_SOURCES))
83
2812483e
MW
84repl: $(TARGETS)
85 scala -cp $(CLASSDIR) -Djava.library.path=$(OUTDIR)
86
3a2f1a4b
MW
87clean::; rm -f $(CLEANFILES) $(TARGETS)
88.PHONY: clean
89
90-include $(call objects,$(ALLSOURCES),.d)