<!-- 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 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="InnerClasses" />
    <keepattribute name="SourceFile" />
    <keepattribute name="LineNumberTable" />
    <keepattribute name="Deprecated" />
    <keepattribute name="*Annotation*" />

    <!-- 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>
