1b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato#!/bin/bash 2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato# 3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato# GNU/Linux build script for ProGuard. 4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 5b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato# 6b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato# Configuration. 7b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato# 8b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 9b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoANT_HOME=${ANT_HOME:-/usr/local/java/ant} 10b9cc48a43ed984587c939d02fba5316bf5c0df6eYing WangGRADLE_HOME=${GRADLE_HOME:-/usr/local/java/gradle} 11b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoWTK_HOME=${WTK_HOME:-/usr/local/java/wtk} 12b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 13b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoif [ -z $PROGUARD_HOME ]; then 14b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato PROGUARD_HOME=$(which "$0") 15b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato PROGUARD_HOME=$(dirname "$0")/.. 16b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratofi 17b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 18b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratocd "$PROGUARD_HOME" 19b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 20b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoSRC=src 21b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoCLASSES=classes 22b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoLIB=lib 23b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 24b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoPROGUARD=proguard/ProGuard 25b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoPROGUARD_GUI=proguard/gui/ProGuardGUI 26b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoRETRACE=proguard/retrace/ReTrace 27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoANT_TASK=proguard/ant/ProGuardTask 28b9cc48a43ed984587c939d02fba5316bf5c0df6eYing WangGRADLE_TASK=proguard/gradle/ProGuardTask 29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoWTK_PLUGIN=proguard/wtk/ProGuardObfuscator 30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 31b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoANT_JAR=$ANT_HOME/lib/ant.jar 32b9cc48a43ed984587c939d02fba5316bf5c0df6eYing WangGRADLE_PATH=\ 33b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang$GRADLE_HOME/lib/plugins/gradle-plugins-1.3.jar:\ 34b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang$GRADLE_HOME/lib/gradle-base-services-1.3.jar:\ 35b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang$GRADLE_HOME/lib/gradle-core-1.3.jar:\ 36b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang$GRADLE_HOME/lib/groovy-all-1.8.6.jar 37b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoWTK_JAR=$WTK_HOME/wtklib/kenv.zip 38b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 39b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoPROGUARD_JAR=$LIB/proguard.jar 40b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoPROGUARD_GUI_JAR=$LIB/proguardgui.jar 41b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe OnoratoRETRACE_JAR=$LIB/retrace.jar 42b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato# 44b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato# Function definitions. 45b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato# 46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 47b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratofunction compile { 48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato # Compile java source files. 49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato echo "Compiling ${1//\//.} ..." 50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato javac -nowarn -Xlint:none -sourcepath "$SRC" -d "$CLASSES" \ 51b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato "$SRC/$1.java" 2>&1 \ 52b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato | sed -e 's|^| |' 53b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 54b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato # Copy resource files. 55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato (cd "$SRC"; find $(dirname $1) -maxdepth 1 \ 56b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato \( -name \*.properties -o -name \*.png -o -name \*.gif -o -name \*.pro \) \ 57b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato -exec cp --parents {} "../$CLASSES" \; ) 58b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato} 59b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 60b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratofunction createjar { 61b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato echo "Creating $2..." 62b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato jar -cfm "$2" "$SRC/$(dirname $1)/MANIFEST.MF" -C "$CLASSES" $(dirname $1) 63b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato} 64b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 65b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratofunction updatejar { 66b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato echo "Updating $PROGUARD_JAR..." 67b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato jar -uf "$PROGUARD_JAR" -C "$CLASSES" $(dirname $1) 68b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato} 69b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 70b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato# 71b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato# Main script body. 72b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato# 73b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 74b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratomkdir -p "$CLASSES" 75b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 76b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratocompile $PROGUARD 77b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratocreatejar $PROGUARD "$PROGUARD_JAR" 78b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 79b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratocompile $PROGUARD_GUI 80b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratocreatejar $PROGUARD_GUI "$PROGUARD_GUI_JAR" 81b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 82b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratocompile $RETRACE 83b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratocreatejar $RETRACE "$RETRACE_JAR" 84b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 85b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoif [ -f "$ANT_JAR" ]; then 86b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato export CLASSPATH=$ANT_JAR 87b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato compile $ANT_TASK 88b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato updatejar $ANT_TASK 89b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoelse 90b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato echo "Please make sure the environment variable ANT_HOME is set correctly," 91b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato echo "if you want to compile the optional ProGuard Ant task." 92b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratofi 93b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 94b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangif [ -f "${GRADLE_PATH%%:*}" ]; then 95b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang export CLASSPATH=$GRADLE_PATH 96b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang compile $GRADLE_TASK 97b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang updatejar $GRADLE_TASK 98b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangelse 99b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang echo "Please make sure the environment variable GRADLE_HOME is set correctly," 100b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang echo "if you want to compile the optional ProGuard Gradle task." 101b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangfi 102b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 103b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoif [ -f "$WTK_JAR" ]; then 104b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato export CLASSPATH=$WTK_JAR 105b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato compile $WTK_PLUGIN 106b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato updatejar $WTK_PLUGIN 107b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoelse 108b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato echo "Please make sure the environment variable WTK_HOME is set correctly," 109b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato echo "if you want to compile the optional ProGuard WTK plugin." 110b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratofi 111