### -*-makefile-*- V = 0 v_tag = $(call v_tag_$V,$1) v_tag_0 = @printf " %-8s %s\n" "$1" "$@"; V_AT = $(V_AT_$V) V_AT_0 = @ JDK = /usr/lib/jvm/java-8-openjdk-amd64 JDK_PLAT = linux INCLUDES = $(JDK)/include $(JDK)/include/$(JDK_PLAT) CC = gcc CFLAGS = -O0 -g -Wall -fPIC $(addprefix -I,$(INCLUDES)) LD = gcc LDFLAGS.so = -shared JAVAC = javac JAVAFLAGS = -d . SCALAC = scalac SCALAFLAGS = -d . -optimise 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 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 all:: $(TARGETS) ALLSOURCES += $(foreach t,$(TARGETS),$($t_SOURCES)) clean::; rm -f $(CLEANFILES) $(TARGETS) .PHONY: clean -include $(call objects,$(ALLSOURCES),.d)