# GNU/Linux makefile for ProGuard.

ANT_HOME    = /usr/local/java/ant
GRADLE_HOME = /usr/local/java/gradle
WTK_HOME    = /usr/local/java/wtk

PROGUARD_HOME := $(subst ./..,..,$(subst /build/..,/,$(dir $(MAKEFILE_LIST))..))
SRC     = $(PROGUARD_HOME)/src
CLASSES = $(PROGUARD_HOME)/classes
LIB     = $(PROGUARD_HOME)/lib

ANT_JAR     = $(ANT_HOME)/lib/ant.jar
GRADLE_JARS = $(GRADLE_HOME)/lib/plugins/gradle-plugins-2.1.jar \
              $(GRADLE_HOME)/lib/gradle-base-services-2.1.jar \
              $(GRADLE_HOME)/lib/gradle-base-services-groovy-2.1.jar \
              $(GRADLE_HOME)/lib/gradle-core-2.1.jar \
              $(GRADLE_HOME)/lib/groovy-all-2.3.6.jar
WTK_JAR     = $(WTK_HOME)/wtklib/kenv.zip

NOTHING:=
SPACE:=$(NOTHING) $(NOTHING)
CLASSPATH = $(ANT_JAR):$(subst $(SPACE),:,$(GRADLE_JARS)):$(WTK_JAR)

PROGUARD     = proguard/ProGuard
PROGUARD_GUI = proguard/gui/ProGuardGUI
RETRACE      = proguard/retrace/ReTrace
ANT_TASK     = proguard/ant/ProGuardTask
GRADLE_TASK  = proguard/gradle/ProGuardTask
WTK_PLUGIN   = proguard/wtk/ProGuardObfuscator

TARGETS = $(PROGUARD) $(PROGUARD_GUI) $(RETRACE) $(ANT_TASK) $(GRADLE_TASK) $(WTK_PLUGIN)

JAVAC_OPTIONS = -nowarn -Xlint:none -classpath $(CLASSPATH) -sourcepath $(SRC) -d $(CLASSES)

# Command sequence definitions for creating jars.

define createjar
  jar -cfm $(LIB)/$@.jar $(SRC)/$(dir $<)MANIFEST.MF \
    -C $(CLASSES) $(dir $<)
endef

define updatejar
  jar -uf $(LIB)/proguard.jar \
    -C $(CLASSES) $(dir $<)
endef

# The various targets.

all:     basic options
basic:   proguard proguardgui retrace
options: anttask gradletask wtkplugin

proguard: $(PROGUARD)
	$(createjar)

proguardgui: proguard
proguardgui: $(PROGUARD_GUI)
	$(createjar)

retrace: $(RETRACE)
	$(createjar)

anttask: $(ANT_JAR)
anttask: $(PROGUARD)
anttask: $(ANT_TASK)
	$(updatejar)

gradletask: $(GRADLE_JARS)
gradletask: $(PROGUARD)
gradletask: $(GRADLE_TASK)
	$(updatejar)

wtkplugin: $(WTK_JAR)
wtkplugin: $(PROGUARD)
wtkplugin: $(WTK_PLUGIN)
	$(updatejar)

clean:
	-rm -fr $(CLASSES) $(LIB)


define RESOURCES
  $(shell find $(SRC)/$(dir $(1)) -maxdepth 1 \( -name \*.properties -o -name \*.png -o -name \*.gif -o -name \*.pro \) -printf $(CLASSES)/$(dir $(1))%P\\n)
endef

define TARGETRULE
  $(1): $(CLASSES) $(CLASSES)/$(1).class $(call RESOURCES,$(1)) $(LIB)
endef

$(foreach TARGET,$(TARGETS),$(eval $(call TARGETRULE,$(TARGET))))

$(CLASSES) $(LIB):
	-mkdir -p $@

$(CLASSES)/%.class: $(SRC)/%.java
	javac $(JAVAC_OPTIONS) $^

$(CLASSES)/%.properties $(CLASSES)/%.png $(CLASSES)/%.gif $(CLASSES)/%.pro:
	cp $(subst $(CLASSES),$(SRC),$@) $@

%.jar %.zip:
	echo "Please make sure the path to $@ is set"
	echo "correctly in this $(strip $(MAKEFILE_LIST))."
	echo "Alternatively, if you don't need the corresponding option,"
	echo "you can run `make' with the option -k."
	find $@

.PHONY: all basic options proguard proguardgui retrace anttask wtkplugin clean $(TARGETS) $(OPTIONAL_TARGETS)
