From b9acfd7c2b9d1fa5c49e7bd9f78a040f7485b29b Mon Sep 17 00:00:00 2001
From: Po Lu
Date: Thu, 11 Apr 2024 10:15:25 +0800
Subject: Optimize R8 configuration
* 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.
---
java/org/gnu/emacs/EmacsWindowManager.java | 2 +-
java/proguard.conf | 39 ++++++++++++++++++++++++++----
2 files changed, 35 insertions(+), 6 deletions(-)
(limited to 'java')
diff --git a/java/org/gnu/emacs/EmacsWindowManager.java b/java/org/gnu/emacs/EmacsWindowManager.java
index 22629cad329..e41b4e068a7 100644
--- a/java/org/gnu/emacs/EmacsWindowManager.java
+++ b/java/org/gnu/emacs/EmacsWindowManager.java
@@ -84,7 +84,7 @@ public final class EmacsWindowManager
MANAGER = new EmacsWindowManager ();
};
- public interface WindowConsumer
+ interface WindowConsumer
{
public void attachWindow (EmacsWindow window);
public EmacsWindow getAttachedWindow ();
diff --git a/java/proguard.conf b/java/proguard.conf
index 2fc974020ff..e6b08f76fe4 100644
--- a/java/proguard.conf
+++ b/java/proguard.conf
@@ -1,4 +1,4 @@
-# Trivial Proguard configuration file
+# Proguard configuration files for Emacs
#
# Copyright (C) 2024 Free Software Foundation, Inc.
#
@@ -17,8 +17,37 @@
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see .
#
-# 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.* { ; ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsClipboard { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsContextMenu { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsCursor { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsDesktopNotification { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsDialog { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsDirectoryEntry { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsFontDriver { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsFontDriver$* { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsGC { ; ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsHandleObject { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsPixmap { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsService { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsWindow { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsNative { ; }
+-keep,allowoptimization class org.gnu.emacs.EmacsNoninteractive { ; }
+-keep,allowoptimization interface org.gnu.emacs.EmacsDrawable { ; }
+
+# 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:
--
cgit v1.2.1