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