You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.6 KiB
112 lines
2.6 KiB
#!/bin/bash
|
|
#
|
|
# GNU/Linux build script for ProGuard.
|
|
|
|
#
|
|
# Configuration.
|
|
#
|
|
|
|
ANT_HOME=${ANT_HOME:-/usr/local/java/ant}
|
|
GRADLE_HOME=${GRADLE_HOME:-/usr/local/java/gradle}
|
|
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
|
|
GRADLE_TASK=proguard/gradle/ProGuardTask
|
|
WTK_PLUGIN=proguard/wtk/ProGuardObfuscator
|
|
|
|
ANT_JAR=$ANT_HOME/lib/ant.jar
|
|
GRADLE_PATH=\
|
|
$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
|
|
|
|
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 "${GRADLE_PATH%%:*}" ]; then
|
|
export CLASSPATH=$GRADLE_PATH
|
|
compile $GRADLE_TASK
|
|
updatejar $GRADLE_TASK
|
|
else
|
|
echo "Please make sure the environment variable GRADLE_HOME is set correctly,"
|
|
echo "if you want to compile the optional ProGuard Gradle 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
|