<!-- This Ant build file illustrates how to process a program library,
     such that it remains usable as a library.
     Usage: ant -f library.xml -->

<project name="Library" default="obfuscate" basedir="../..">

<target name="obfuscate">
  <taskdef resource="proguard/ant/task.properties"
           classpath="lib/proguard.jar" />

  <proguard verbose="true"
            printmapping="out.map"
            renamesourcefileattribute="SourceFile">

    <!-- Specify the input jars, output jars, and library jars. -->

    <injar  file="library.jar" />
    <outjar file="library_out.jar" />

    <libraryjar file="${java.home}/lib/rt.jar" />

    <!-- Keep some useful attributes. -->

    <keepattribute name="Exceptions" />
    <keepattribute name="InnerClasses" />
    <keepattribute name="Signature" />
    <keepattribute name="Deprecated" />
    <keepattribute name="SourceFile" />
    <keepattribute name="LineNumberTable" />
    <keepattribute name="EnclosingMethod" />

    <!-- Preserve all public classes, and their public and protected fields
        and methods. -->

    <keep access="public">
      <field  access="public protected" />
      <method access="public protected" />
    </keep>

    <!-- Preserve all .class method names. -->

    <keepclassmembernames access="public">
      <method type      ="java.lang.Class"
              name      ="class$"
              parameters="java.lang.String" />
      <method type      ="java.lang.Class"
              name      ="class$"
              parameters="java.lang.String,boolean" />
    </keepclassmembernames>

    <!-- Preserve all native method names and the names of their classes. -->

    <keepclasseswithmembernames includedescriptorclasses="true">
      <method access="native" />
    </keepclasseswithmembernames>

    <!-- Preserve the methods that are required in all enumeration classes. -->

    <keepclassmembers allowoptimization="true" type="enum">
      <method access="public static"
              type="**[]"
              name="values"
              parameters="" />
      <method access="public static"
              type="**"
              name="valueOf"
              parameters="java.lang.String" />
    </keepclassmembers>

    <!-- Explicitly preserve all serialization members. The Serializable
         interface is only a marker interface, so it wouldn't save them.
         You can comment this out if your library doesn't use serialization.
         If your code contains serializable classes that have to be backward
         compatible, please refer to the manual. -->

    <keepclassmembers implements="java.io.Serializable">
      <field  access    ="final"
              type      ="long"
              name      ="serialVersionUID" />
      <field  access    ="static final"
              type      ="java.io.ObjectStreamField[]"
              name      ="serialPersistentFields" />
      <method access    ="private"
              type      ="void"
              name      ="writeObject"
              parameters="java.io.ObjectOutputStream" />
      <method access    ="private"
              type      ="void"
              name      ="readObject"
              parameters="java.io.ObjectInputStream" />
      <method type      ="java.lang.Object"
              name      ="writeReplace"
              parameters="" />
      <method type      ="java.lang.Object"
              name      ="readResolve"
              parameters="" />
    </keepclassmembers>

    <!-- Your application may contain more items that need to be preserved;
      typically classes that are dynamically created using Class.forName -->

  </proguard>
</target>

</project>
