summaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorJoe Onorato <joeo@android.com>2009-08-31 10:12:00 -0700
committerJoe Onorato <joeo@android.com>2009-08-31 10:12:00 -0700
commitb72c5c2e5482cf10117b2b25f642f7616b2326c3 (patch)
treef02ba1bc29f4fe6853d9b7008eed37cdcfb96e81 /build
parenta23344a828357fe4b6596f8af5fed467d72757ab (diff)
downloadexternal_proguard-b72c5c2e5482cf10117b2b25f642f7616b2326c3.tar.gz
external_proguard-b72c5c2e5482cf10117b2b25f642f7616b2326c3.tar.bz2
external_proguard-b72c5c2e5482cf10117b2b25f642f7616b2326c3.zip
Diffstat (limited to 'build')
-rwxr-xr-xbuild/build.sh94
-rw-r--r--build/build.xml171
-rw-r--r--build/makefile94
3 files changed, 359 insertions, 0 deletions
diff --git a/build/build.sh b/build/build.sh
new file mode 100755
index 0000000..eb5fcf7
--- /dev/null
+++ b/build/build.sh
@@ -0,0 +1,94 @@
+#!/bin/bash
+#
+# GNU/Linux build script for ProGuard.
+
+#
+# Configuration.
+#
+
+ANT_HOME=${ANT_HOME:-/usr/local/java/ant}
+WTK_HOME=${WTK_HOME:-/usr/local/java/wtk}
+
+if [ -z $PROGUARD_HOME ]; then
+ PROGUARD_HOME=$(which "$0")
+ PROGUARD_HOME=$(dirname "$0")/..
+fi
+
+cd "$PROGUARD_HOME"
+
+SRC=src
+CLASSES=classes
+LIB=lib
+
+PROGUARD=proguard/ProGuard
+PROGUARD_GUI=proguard/gui/ProGuardGUI
+RETRACE=proguard/retrace/ReTrace
+ANT_TASK=proguard/ant/ProGuardTask
+WTK_PLUGIN=proguard/wtk/ProGuardObfuscator
+
+ANT_JAR=$ANT_HOME/lib/ant.jar
+WTK_JAR=$WTK_HOME/wtklib/kenv.zip
+
+PROGUARD_JAR=$LIB/proguard.jar
+PROGUARD_GUI_JAR=$LIB/proguardgui.jar
+RETRACE_JAR=$LIB/retrace.jar
+
+#
+# Function definitions.
+#
+
+function compile {
+ # Compile java source files.
+ echo "Compiling ${1//\//.} ..."
+ javac -nowarn -Xlint:none -sourcepath "$SRC" -d "$CLASSES" \
+ "$SRC/$1.java" 2>&1 \
+ | sed -e 's|^| |'
+
+ # Copy resource files.
+ (cd "$SRC"; find $(dirname $1) -maxdepth 1 \
+ \( -name \*.properties -o -name \*.png -o -name \*.gif -o -name \*.pro \) \
+ -exec cp --parents {} "../$CLASSES" \; )
+}
+
+function createjar {
+ echo "Creating $2..."
+ jar -cfm "$2" "$SRC/$(dirname $1)/MANIFEST.MF" -C "$CLASSES" $(dirname $1)
+}
+
+function updatejar {
+ echo "Updating $PROGUARD_JAR..."
+ jar -uf "$PROGUARD_JAR" -C "$CLASSES" $(dirname $1)
+}
+
+#
+# Main script body.
+#
+
+mkdir -p "$CLASSES"
+
+compile $PROGUARD
+createjar $PROGUARD "$PROGUARD_JAR"
+
+compile $PROGUARD_GUI
+createjar $PROGUARD_GUI "$PROGUARD_GUI_JAR"
+
+compile $RETRACE
+createjar $RETRACE "$RETRACE_JAR"
+
+if [ -f "$ANT_JAR" ]; then
+ export CLASSPATH=$ANT_JAR
+ compile $ANT_TASK
+ updatejar $ANT_TASK
+else
+ echo "Please make sure the environment variable ANT_HOME is set correctly,"
+ echo "if you want to compile the optional ProGuard Ant task."
+fi
+
+if [ -f "$WTK_JAR" ]; then
+ export CLASSPATH=$WTK_JAR
+ compile $WTK_PLUGIN
+ updatejar $WTK_PLUGIN
+else
+ echo "Please make sure the environment variable WTK_HOME is set correctly,"
+ echo "if you want to compile the optional ProGuard WTK plugin."
+fi
diff --git a/build/build.xml b/build/build.xml
new file mode 100644
index 0000000..a592945
--- /dev/null
+++ b/build/build.xml
@@ -0,0 +1,171 @@
+<!-- Ant build script for ProGuard. -->
+
+<project name = "proguard"
+ default = "all"
+ basedir = "..">
+
+ <property file = "build/build.properties"/>
+ <property name = "src" value = "src"/>
+ <property name = "classes" value = "classes"/>
+ <property name = "lib" value = "lib"/>
+
+ <property name = "ant.jar" value = "${ant.home}/lib/ant.jar"/>
+ <property name = "wtk.jar" value = "${wtk.home}/wtklib/kenv.jar"/>
+
+ <target name = "all" depends = "basic,options"/>
+ <target name = "basic" depends = "proguard,proguardgui,retrace"/>
+ <target name = "options" depends = "anttask,wtkplugin"/>
+
+ <target name = "proguard" depends = "classes,lib">
+ <javac nowarn = "true"
+ deprecation = "false"
+ srcdir = "${src}"
+ destdir = "${classes}"
+ includes = "proguard/ProGuard.java">
+ <compilerarg value = "-Xlint:none"/>
+ </javac>
+
+ <copy todir = "${classes}">
+ <fileset dir = "${src}">
+ <include name = "proguard/*.properties"/>
+ <include name = "proguard/*.png"/>
+ <include name = "proguard/*.gif"/>
+ <include name = "proguard/*.pro"/>
+ </fileset>
+ </copy>
+
+ <jar jarfile = "${lib}/proguard.jar"
+ manifest = "${src}/proguard/MANIFEST.MF"
+ basedir = "${classes}"
+ includes = "proguard/**"/>
+ </target>
+
+ <target name = "proguardgui" depends = "proguard">
+ <javac nowarn = "true"
+ deprecation = "false"
+ srcdir = "${src}"
+ destdir = "${classes}"
+ includes = "proguard/gui/ProGuardGUI.java">
+ <compilerarg value = "-Xlint:none"/>
+ </javac>
+
+ <copy todir = "${classes}">
+ <fileset dir = "${src}">
+ <include name = "proguard/gui/*.properties"/>
+ <include name = "proguard/gui/*.png"/>
+ <include name = "proguard/gui/*.gif"/>
+ <include name = "proguard/gui/*.pro"/>
+ </fileset>
+ </copy>
+
+ <jar jarfile = "${lib}/proguardgui.jar"
+ manifest = "${src}/proguard/gui/MANIFEST.MF"
+ basedir = "${classes}"
+ includes = "proguard/gui/**"/>
+ </target>
+
+ <target name = "retrace" depends = "classes,lib">
+ <javac nowarn = "true"
+ deprecation = "false"
+ srcdir = "${src}"
+ destdir = "${classes}"
+ includes = "proguard/retrace/ReTrace.java">
+ <compilerarg value = "-Xlint:none"/>
+ </javac>
+
+ <copy todir = "${classes}">
+ <fileset dir = "${src}">
+ <include name = "proguard/retrace/*.properties"/>
+ <include name = "proguard/retrace/*.png"/>
+ <include name = "proguard/retrace/*.gif"/>
+ <include name = "proguard/retrace/*.pro"/>
+ </fileset>
+ </copy>
+
+ <jar jarfile = "${lib}/retrace.jar"
+ manifest = "${src}/proguard/retrace/MANIFEST.MF"
+ basedir = "${classes}"
+ includes = "proguard/retrace/**"/>
+ </target>
+
+ <target name = "anttask" depends = "proguard">
+ <fail message="Please set the value of the property ant.home in the file build/build.properties, if you want to build the optional ProGuard Ant task.">
+ <condition>
+ <not>
+ <available file="${ant.jar}"/>
+ </not>
+ </condition>
+ </fail>
+
+ <javac nowarn = "true"
+ deprecation = "false"
+ classpath = "${ant.jar}"
+ srcdir = "${src}"
+ destdir = "${classes}"
+ includes = "proguard/ant/ProGuardTask.java">
+ <compilerarg value = "-Xlint:none"/>
+ </javac>
+
+ <copy todir = "${classes}">
+ <fileset dir = "${src}">
+ <include name = "proguard/ant/*.properties"/>
+ <include name = "proguard/ant/*.png"/>
+ <include name = "proguard/ant/*.gif"/>
+ <include name = "proguard/ant/*.pro"/>
+ </fileset>
+ </copy>
+
+ <jar jarfile = "${lib}/proguard.jar"
+ update = "true"
+ basedir = "${classes}"
+ includes = "proguard/ant/**"/>
+ </target>
+
+ <target name = "wtkplugin" depends = "proguard">
+ <fail message="Please set the value of the property wtk.home in the file build/build.properties, if you want to build the optional ProGuard WTK plugin.">
+ <condition>
+ <not>
+ <available file="${wtk.jar}"/>
+ </not>
+ </condition>
+ </fail>
+
+ <javac nowarn = "true"
+ deprecation = "false"
+ classpath = "${wtk.jar}"
+ srcdir = "${src}"
+ destdir = "${classes}"
+ includes = "proguard/wtk/ProGuardObfuscator.java">
+ <compilerarg value = "-Xlint:none"/>
+ </javac>
+
+ <copy todir = "${classes}">
+ <fileset dir = "${src}">
+ <include name = "proguard/wtk/*.properties"/>
+ <include name = "proguard/wtk/*.png"/>
+ <include name = "proguard/wtk/*.gif"/>
+ <include name = "proguard/wtk/*.pro"/>
+ </fileset>
+ </copy>
+
+ <jar jarfile = "${lib}/proguard.jar"
+ update = "true"
+ basedir = "${classes}"
+ includes = "proguard/wtk/**"/>
+ </target>
+
+ <target name = "classes">
+ <mkdir dir = "${classes}"/>
+ </target>
+
+ <target name = "lib">
+ <mkdir dir = "${lib}"/>
+ </target>
+
+ <target name = "clean">
+ <delete>
+ <fileset dir = "${classes}"/>
+ <fileset dir = "${lib}"/>
+ </delete>
+ </target>
+</project>
diff --git a/build/makefile b/build/makefile
new file mode 100644
index 0000000..0508eb4
--- /dev/null
+++ b/build/makefile
@@ -0,0 +1,94 @@
+# GNU/Linux makefile for ProGuard.
+
+ANT_HOME = /usr/local/java/ant
+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
+WTK_JAR = $(WTK_HOME)/wtklib/kenv.zip
+
+CLASSPATH = $(ANT_JAR):$(WTK_JAR)
+
+PROGUARD = proguard/ProGuard
+PROGUARD_GUI = proguard/gui/ProGuardGUI
+RETRACE = proguard/retrace/ReTrace
+ANT_TASK = proguard/ant/ProGuardTask
+WTK_PLUGIN = proguard/wtk/ProGuardObfuscator
+
+TARGETS = $(PROGUARD) $(PROGUARD_GUI) $(RETRACE) $(ANT_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 wtkplugin
+
+proguard: $(PROGUARD)
+ $(createjar)
+
+proguardgui: proguard
+proguardgui: $(PROGUARD_GUI)
+ $(createjar)
+
+retrace: $(RETRACE)
+ $(createjar)
+
+anttask: $(ANT_JAR)
+anttask: $(PROGUARD)
+anttask: $(ANT_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)