109 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Makefile
		
	
	
	
# 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)
 |