# Prerequisite variables SOURCEDIR := src OUTPUTDIR := build SOURCES := $(shell find $(SOURCEDIR) -type f -name '*.java') CLASSES := $(SOURCES:$(SOURCEDIR)/%.java=$(OUTPUTDIR)/%.class) # Add all jars to classpath and allow compiling with private API JCFLAGS := -cp "$(subst $() $(),:,$(wildcard $(SOURCEDIR)/*/):$(wildcard libs/*/*.jar))" -XDignore.symbol.file all: $(OUTPUTDIR)/launcher.jar $(OUTPUTDIR)/lwjgl.jar # Rules for building java class $(CLASSES): $(OUTPUTDIR)/%.class: $(SOURCEDIR)/%.java @set -e $(eval TARGET=$(word 2, $(subst /, ,$@))) @mkdir -p $(OUTPUTDIR)/classes @mkdir -p $(dir $@) @echo "Compiling $<" @$(BOOTJDK)/javac $(JCFLAGS) -d $(OUTPUTDIR)/classes $< @cp $(@:$(OUTPUTDIR)/$(TARGET)/%.class=$(OUTPUTDIR)/classes/%*.class) $(dir $@)/ $(OUTPUTDIR)/launcher.jar: $(CLASSES) @set -e @echo "Creating $@" $(BOOTJDK)/jar -cf $@ -C $(basename $@) . $(OUTPUTDIR)/lwjgl.jar: $(CLASSES) @set -e @echo "Creating $@" @mkdir -p $(OUTPUTDIR)/lwjgl_lib @cd $(OUTPUTDIR)/lwjgl_lib && find ../../libs/lwjgl -name 'lwjgl*.jar' -exec $(BOOTJDK)/jar -xf {} \; && rm -rf META-INF @cp -R $(OUTPUTDIR)/lwjgl/* $(OUTPUTDIR)/lwjgl_lib/ @$(BOOTJDK)/jar -cf $@ -C $(OUTPUTDIR)/lwjgl_lib . clean: rm -rf $(OUTPUTDIR) .SUFFIXES: .java .PHONY: all clean