1# GNU/Linux makefile for ProGuard. 2 3ANT_HOME = /usr/local/java/ant 4GRADLE_HOME = /usr/local/java/gradle 5WTK_HOME = /usr/local/java/wtk 6 7PROGUARD_HOME := $(subst ./..,..,$(subst /build/..,/,$(dir $(MAKEFILE_LIST))..)) 8SRC = $(PROGUARD_HOME)/src 9CLASSES = $(PROGUARD_HOME)/classes 10LIB = $(PROGUARD_HOME)/lib 11 12ANT_JAR = $(ANT_HOME)/lib/ant.jar 13GRADLE_JARS = $(GRADLE_HOME)/lib/plugins/gradle-plugins-1.3.jar \ 14 $(GRADLE_HOME)/lib/gradle-base-services-1.3.jar \ 15 $(GRADLE_HOME)/lib/gradle-core-1.3.jar \ 16 $(GRADLE_HOME)/lib/groovy-all-1.8.6.jar 17WTK_JAR = $(WTK_HOME)/wtklib/kenv.zip 18 19NOTHING:= 20SPACE:=$(NOTHING) $(NOTHING) 21CLASSPATH = $(ANT_JAR):$(subst $(SPACE),:,$(GRADLE_JARS)):$(WTK_JAR) 22 23PROGUARD = proguard/ProGuard 24PROGUARD_GUI = proguard/gui/ProGuardGUI 25RETRACE = proguard/retrace/ReTrace 26ANT_TASK = proguard/ant/ProGuardTask 27GRADLE_TASK = proguard/gradle/ProGuardTask 28WTK_PLUGIN = proguard/wtk/ProGuardObfuscator 29 30TARGETS = $(PROGUARD) $(PROGUARD_GUI) $(RETRACE) $(ANT_TASK) $(GRADLE_TASK) $(WTK_PLUGIN) 31 32JAVAC_OPTIONS = -nowarn -Xlint:none -classpath $(CLASSPATH) -sourcepath $(SRC) -d $(CLASSES) 33 34# Command sequence definitions for creating jars. 35 36define createjar 37 jar -cfm $(LIB)/$@.jar $(SRC)/$(dir $<)MANIFEST.MF \ 38 -C $(CLASSES) $(dir $<) 39endef 40 41define updatejar 42 jar -uf $(LIB)/proguard.jar \ 43 -C $(CLASSES) $(dir $<) 44endef 45 46# The various targets. 47 48all: basic options 49basic: proguard proguardgui retrace 50options: anttask gradletask wtkplugin 51 52proguard: $(PROGUARD) 53 $(createjar) 54 55proguardgui: proguard 56proguardgui: $(PROGUARD_GUI) 57 $(createjar) 58 59retrace: $(RETRACE) 60 $(createjar) 61 62anttask: $(ANT_JAR) 63anttask: $(PROGUARD) 64anttask: $(ANT_TASK) 65 $(updatejar) 66 67gradletask: $(GRADLE_JARS) 68gradletask: $(PROGUARD) 69gradletask: $(GRADLE_TASK) 70 $(updatejar) 71 72wtkplugin: $(WTK_JAR) 73wtkplugin: $(PROGUARD) 74wtkplugin: $(WTK_PLUGIN) 75 $(updatejar) 76 77clean: 78 -rm -fr $(CLASSES) $(LIB) 79 80 81define RESOURCES 82 $(shell find $(SRC)/$(dir $(1)) -maxdepth 1 \( -name \*.properties -o -name \*.png -o -name \*.gif -o -name \*.pro \) -printf $(CLASSES)/$(dir $(1))%P\\n) 83endef 84 85define TARGETRULE 86 $(1): $(CLASSES) $(CLASSES)/$(1).class $(call RESOURCES,$(1)) $(LIB) 87endef 88 89$(foreach TARGET,$(TARGETS),$(eval $(call TARGETRULE,$(TARGET)))) 90 91$(CLASSES) $(LIB): 92 -mkdir -p $@ 93 94$(CLASSES)/%.class: $(SRC)/%.java 95 javac $(JAVAC_OPTIONS) $^ 96 97$(CLASSES)/%.properties $(CLASSES)/%.png $(CLASSES)/%.gif $(CLASSES)/%.pro: 98 cp $(subst $(CLASSES),$(SRC),$@) $@ 99 100%.jar %.zip: 101 echo "Please make sure the path to $@ is set" 102 echo "correctly in this $(strip $(MAKEFILE_LIST))." 103 echo "Alternatively, if you don't need the corresponding option," 104 echo "you can run `make' with the option -k." 105 find $@ 106 107.PHONY: all basic options proguard proguardgui retrace anttask wtkplugin clean $(TARGETS) $(OPTIONAL_TARGETS) 108