| # 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 /buildscripts/..,/,$(dir $(MAKEFILE_LIST))..)) | |
| SRC = $(PROGUARD_HOME)/src | |
| CLASSES = $(PROGUARD_HOME)/classes | |
| LIB = $(PROGUARD_HOME)/lib | |
| ANT_JAR = $(ANT_HOME)/lib/ant.jar | |
| GRADLE_JARS = $(wildcard \ | |
| $(GRADLE_HOME)/lib/plugins/gradle-plugins-*.jar \ | |
| $(GRADLE_HOME)/lib/gradle-logging-*.jar \ | |
| $(GRADLE_HOME)/lib/gradle-base-services-*.jar \ | |
| $(GRADLE_HOME)/lib/gradle-base-services-groovy-*.jar \ | |
| $(GRADLE_HOME)/lib/gradle-core-*.jar \ | |
| $(GRADLE_HOME)/lib/groovy-all-*.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." | |
| .PHONY: all basic options proguard proguardgui retrace anttask wtkplugin clean $(TARGETS) $(OPTIONAL_TARGETS) |