X-Git-Url: https://git.distorted.org.uk/~mdw/tripe-android/blobdiff_plain/ac8e32b78055afd1e29305acc3cce6a1a0a78c09..2812483ebad8151c17366510fbc296983eb70b68:/Makefile diff --git a/Makefile b/Makefile index 6e75ef5..d99d6bd 100644 --- a/Makefile +++ b/Makefile @@ -10,51 +10,80 @@ JDK = /usr/lib/jvm/default-java JDK_PLAT = linux INCLUDES = $(JDK)/include $(JDK)/include/$(JDK_PLAT) +PKGS = mLib catacomb +PKGS_CFLAGS := $(foreach p,$(PKGS),$(shell pkg-config --cflags $p)) +PKGS_LIBS := $(foreach p,$(PKGS),$(shell pkg-config --libs $p)) + CC = gcc -CFLAGS = -O0 -g -Wall -fPIC $(addprefix -I,$(INCLUDES)) +CFLAGS = -O2 -g -Wall -pedantic -Werror \ + -fPIC $(addprefix -I,$(INCLUDES)) +CFLAGS += $(PKGS_CFLAGS) LD = gcc +LIBS = $(PKGS_LIBS) LDFLAGS.so = -shared JAVAC = javac -JAVAFLAGS = -d . +JAVAFLAGS = + +SCALAC = fsc +SCALAFLAGS = -optimise -Xlint -Xlint:-package-object-classes \ + -Yinline-warnings:false -SCALAC = scalac -SCALAFLAGS = -d . -optimise +## Hack around https://issues.scala-lang.org/browse/SI-9689 +SCALAFLAGS += -Yno-load-impl-class all:: .PHONY: all -%.o: %.c - $(call v_tag,CC)$(CC) -c $(CFLAGS) -MMD -o$@ $< -CLEANFILES += *.o *.d - -%.stamp: %.java - $(call v_tag,JAVAC)$(JAVAC) $(JAVAFLAGS) $< && echo built >$@ -%.stamp: %.scala - $(call v_tag,SCALAC)$(SCALAC) $(SCALAFLAGS) $< && echo built >$@ -CLEANFILES += *.stamp - -objects = $(patsubst %.c,%$2,$1) - -TARGETS += libtoy.so +OUTDIR = out/ + +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 +$(OUTDIR)%.stamp: %.scala + $(call v_tag,SCALAC)mkdir -p $(CLASSDIR) && \ + $(SCALAC) -d $(CLASSDIR) -cp $(CLASSDIR) $(SCALAFLAGS) $< && \ + echo built >$@ +CLEANFILES += $(OUTDIR)*.stamp +clean::; rm -rf $(CLASSDIR) + +objects = $(patsubst %.c,$(OUTDIR)%$2,$1) + +TARGETS += $(OUTDIR)libtoy.so libtoy.so_SOURCES = jni.c -libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o) - $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^ - -clean::; rm -rf uk/ - -TARGETS += jni.stamp - -TARGETS += sock.stamp -sock.stamp: jni.stamp - -TARGETS += main.stamp -main.stamp: jni.stamp sock.stamp +$(OUTDIR)libtoy.so: $(call objects,$(libtoy.so_SOURCES),.o) + $(call v_tag,LD)$(LD) $(LDFLAGS.so) -o$@ $^ $(LIBS) + +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