]> git.eshelyaron.com Git - emacs.git/commitdiff
Optimize R8 configuration
authorPo Lu <luangruo@yahoo.com>
Thu, 11 Apr 2024 02:15:25 +0000 (10:15 +0800)
committerEshel Yaron <me@eshelyaron.com>
Sun, 14 Apr 2024 16:55:14 +0000 (18:55 +0200)
* java/org/gnu/emacs/EmacsWindowManager.java (WindowConsumer):
Mark as package-local.

* java/proguard.conf: List only symbols that must be preserved,
enabling R8 to optimize the remainder.

(cherry picked from commit b9acfd7c2b9d1fa5c49e7bd9f78a040f7485b29b)

java/org/gnu/emacs/EmacsWindowManager.java
java/proguard.conf

index 22629cad32909d7090df01183b829b546e368a4f..e41b4e068a76046f8c48878ed9c83e5bb25258a9 100644 (file)
@@ -84,7 +84,7 @@ public final class EmacsWindowManager
     MANAGER = new EmacsWindowManager ();
   };
 
-  public interface WindowConsumer
+  interface WindowConsumer
   {
     public void attachWindow (EmacsWindow window);
     public EmacsWindow getAttachedWindow ();
index 2fc974020ff8a6aa842e4ab7396796e74c23dafe..e6b08f76fe487938fd4681ef9764d700ad69a6b2 100644 (file)
@@ -1,4 +1,4 @@
-# Trivial Proguard configuration file
+# Proguard configuration files for Emacs
 #
 # Copyright (C) 2024 Free Software Foundation, Inc.
 #
 # You should have received a copy of the GNU General Public License
 # along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
 #
-# The effect of these two lines is to prevent the removal of symbol
-# names, which Emacs requires to link to functions defined in Java.
+# The effect of the following lines is to inhibit the removal of variable or
+# method symbol names from symbols referenced from C.
 
--keep,allowoptimization interface      org.gnu.emacs.*
--keep,allowoptimization class          org.gnu.emacs.* { <fields>; <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsClipboard           { <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsContextMenu         { <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsCursor              { <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsDesktopNotification { <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsDialog              { <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsDirectoryEntry      { <fields>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsFontDriver          { <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsFontDriver$*        { <fields>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsGC                  { <methods>; <fields>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsHandleObject        { <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsPixmap              { <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsService             { <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsWindow              { <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsNative              { <methods>; }
+-keep,allowoptimization class           org.gnu.emacs.EmacsNoninteractive      { <methods>; }
+-keep,allowoptimization interface       org.gnu.emacs.EmacsDrawable            { <methods>; }
+
+# And these lines inhibit the deletion of symbols that are referenced by
+# the operating system while enabling the compiler to minify or delete
+# symbols only referenced internally.
+
+-keep,allowoptimization,allowaccessmodification public class * extends android.app.Activity
+-keep,allowoptimization,allowaccessmodification public class * extends android.app.Application
+-keep,allowoptimization,allowaccessmodification public class * extends android.app.Service
+-keep,allowoptimization,allowaccessmodification public class * extends android.content.BroadcastReceiver
+-keep,allowoptimization,allowaccessmodification public class * extends android.content.ContentProvider
+
+# Local Variables:
+# truncate-lines: t
+# indent-tabs-mode: nil
+# End: