X-Git-Url: https://git.distorted.org.uk/~mdw/tripe-android/blobdiff_plain/8eabb4ff13562f3550499ee599297f7e97fa8754..2812483ebad8151c17366510fbc296983eb70b68:/Makefile diff --git a/Makefile b/Makefile index a03ba64..d99d6bd 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,8 @@ PKGS_CFLAGS := $(foreach p,$(PKGS),$(shell pkg-config --cflags $p)) PKGS_LIBS := $(foreach p,$(PKGS),$(shell pkg-config --libs $p)) CC = gcc -CFLAGS = -O2 -g -Wall -fPIC $(addprefix -I,$(INCLUDES)) +CFLAGS = -O2 -g -Wall -pedantic -Werror \ + -fPIC $(addprefix -I,$(INCLUDES)) CFLAGS += $(PKGS_CFLAGS) LD = gcc @@ -26,7 +27,8 @@ JAVAC = javac JAVAFLAGS = SCALAC = fsc -SCALAFLAGS = -optimise +SCALAFLAGS = -optimise -Xlint -Xlint:-package-object-classes \ + -Yinline-warnings:false ## Hack around https://issues.scala-lang.org/browse/SI-9689 SCALAFLAGS += -Yno-load-impl-class @@ -34,47 +36,54 @@ SCALAFLAGS += -Yno-load-impl-class all:: .PHONY: all -%.o: %.c - $(call v_tag,CC)$(CC) -c $(CFLAGS) -MMD -o$@ $< -CLEANFILES += *.o *.d +OUTDIR = out/ -CLASSDIR = cls/ -%.stamp: %.java +out/%.o: %.c + $(call v_tag,CC)mkdir -p $(OUTDIR) && $(CC) -c $(CFLAGS) -MMD -o$@ $< +CLEANFILES += $(OUTDIR)*.o $(OUTDIR)*.d + +stamp = $(patsubst %,$(OUTDIR)%.stamp,$1) +CLASSDIR = $(OUTDIR)cls/ +$(OUTDIR)%.stamp: %.java $(call v_tag,JAVAC)mkdir -p $(CLASSDIR) && \ $(JAVAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(JAVAFLAGS) $< && \ echo built >$@ $(V_AT)$(SCALAC) -reset -%.stamp: %.scala +$(OUTDIR)%.stamp: %.scala $(call v_tag,SCALAC)mkdir -p $(CLASSDIR) && \ $(SCALAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(SCALAFLAGS) $< && \ echo built >$@ -CLEANFILES += *.stamp +CLEANFILES += $(OUTDIR)*.stamp clean::; rm -rf $(CLASSDIR) -objects = $(patsubst %.c,%$2,$1) +objects = $(patsubst %.c,$(OUTDIR)%$2,$1) -TARGETS += libtoy.so +TARGETS += $(OUTDIR)libtoy.so libtoy.so_SOURCES = jni.c -libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o) +$(OUTDIR)libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o) $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^ $(LIBS) -TARGETS += util.stamp - -TARGETS += jni.stamp -jni.stamp: util.stamp - -TARGETS += sys.stamp -sys.stamp: jni.stamp util.stamp - -TARGETS += admin.stamp -admin.stamp: util.stamp - -TARGETS += main.stamp -main.stamp: jni.stamp +CLASSES += util +CLASSES += sys +sys_DEPS = util +CLASSES += admin +admin_DEPS = sys util +CLASSES += tar +tar_DEPS = util +CLASSES += keys +keys_DEPS = tar sys util +CLASSES += main +main_DEPS = sys + +$(foreach c,$(CLASSES),$(eval $(call stamp,$c): $(call stamp,$($c_DEPS)))) +TARGETS += $(call stamp,$(CLASSES)) all:: $(TARGETS) ALLSOURCES += $(foreach t,$(TARGETS),$($t_SOURCES)) +repl: $(TARGETS) + scala -cp $(CLASSDIR) -Djava.library.path=$(OUTDIR) + clean::; rm -f $(CLEANFILES) $(TARGETS) .PHONY: clean