Home | History | Annotate | Download | only in build
      1 #!/bin/bash
      2 #
      3 # GNU/Linux build script for ProGuard.
      4 
      5 #
      6 # Configuration.
      7 #
      8 
      9 ANT_HOME=${ANT_HOME:-/usr/local/java/ant}
     10 GRADLE_HOME=${GRADLE_HOME:-/usr/local/java/gradle}
     11 WTK_HOME=${WTK_HOME:-/usr/local/java/wtk}
     12 
     13 if [ -z $PROGUARD_HOME ]; then
     14   PROGUARD_HOME=$(which "$0")
     15   PROGUARD_HOME=$(dirname "$0")/..
     16 fi
     17 
     18 cd "$PROGUARD_HOME"
     19 
     20 SRC=src
     21 CLASSES=classes
     22 LIB=lib
     23 
     24 PROGUARD=proguard/ProGuard
     25 PROGUARD_GUI=proguard/gui/ProGuardGUI
     26 RETRACE=proguard/retrace/ReTrace
     27 ANT_TASK=proguard/ant/ProGuardTask
     28 GRADLE_TASK=proguard/gradle/ProGuardTask
     29 WTK_PLUGIN=proguard/wtk/ProGuardObfuscator
     30 
     31 ANT_JAR=$ANT_HOME/lib/ant.jar
     32 GRADLE_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
     37 WTK_JAR=$WTK_HOME/wtklib/kenv.zip
     38 
     39 PROGUARD_JAR=$LIB/proguard.jar
     40 PROGUARD_GUI_JAR=$LIB/proguardgui.jar
     41 RETRACE_JAR=$LIB/retrace.jar
     42 
     43 #
     44 # Function definitions.
     45 #
     46 
     47 function 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 
     60 function createjar {
     61   echo "Creating $2..."
     62   jar -cfm "$2" "$SRC/$(dirname $1)/MANIFEST.MF" -C "$CLASSES" $(dirname $1)
     63 }
     64 
     65 function updatejar {
     66   echo "Updating $PROGUARD_JAR..."
     67   jar -uf "$PROGUARD_JAR" -C "$CLASSES" $(dirname $1)
     68 }
     69 
     70 #
     71 # Main script body.
     72 #
     73 
     74 mkdir -p "$CLASSES"
     75 
     76 compile   $PROGUARD
     77 createjar $PROGUARD "$PROGUARD_JAR"
     78 
     79 compile   $PROGUARD_GUI
     80 createjar $PROGUARD_GUI "$PROGUARD_GUI_JAR"
     81 
     82 compile   $RETRACE
     83 createjar $RETRACE "$RETRACE_JAR"
     84 
     85 if [ -f "$ANT_JAR" ]; then
     86   export CLASSPATH=$ANT_JAR
     87   compile   $ANT_TASK
     88   updatejar $ANT_TASK
     89 else
     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."
     92 fi
     93 
     94 if [ -f "${GRADLE_PATH%%:*}" ]; then
     95   export CLASSPATH=$GRADLE_PATH
     96   compile   $GRADLE_TASK
     97   updatejar $GRADLE_TASK
     98 else
     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."
    101 fi
    102 
    103 if [ -f "$WTK_JAR" ]; then
    104   export CLASSPATH=$WTK_JAR
    105   compile   $WTK_PLUGIN
    106   updatejar $WTK_PLUGIN
    107 else
    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."
    110 fi
    111