]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge remote-tracking branch 'origin/master' into feature/android
authorPo Lu <luangruo@yahoo.com>
Sat, 18 Feb 2023 15:13:51 +0000 (23:13 +0800)
committerPo Lu <luangruo@yahoo.com>
Sat, 18 Feb 2023 15:13:51 +0000 (23:13 +0800)
1  2 
doc/lispref/frames.texi
etc/NEWS
lisp/faces.el
lisp/frame.el
lisp/loadup.el
lisp/startup.el
lisp/subr.el
src/xdisp.c

Simple merge
diff --cc etc/NEWS
Simple merge
diff --cc lisp/faces.el
Simple merge
diff --cc lisp/frame.el
Simple merge
diff --cc lisp/loadup.el
index 3b30414b14669cb43ba894be929bcaface1d661e,46b26750cd527a4d41393ae6d202fde0e6f80e91..f6f48b3b735f5903659ac2616ba53454d937b985
@@@ -557,97 -540,66 +557,104 @@@ lost after dumping"))
  
  \f
  
 -(if dump-mode
 -    (let ((output (cond ((equal dump-mode "pdump") "emacs.pdmp")
 -                        ((equal dump-mode "dump") "emacs")
 -                        ((equal dump-mode "bootstrap") "emacs")
 -                        ((equal dump-mode "pbootstrap") "bootstrap-emacs.pdmp")
 -                        (t (error "Unrecognized dump mode %s" dump-mode)))))
 -      (when (and (featurep 'native-compile)
 -                 (equal dump-mode "pdump"))
 -        ;; Don't enable this before bootstrap is completed, as the
 -        ;; compiler infrastructure may not be usable yet.
 -        (setq native-comp-enable-subr-trampolines t))
 -      (message "Dumping under the name %s" output)
 -      (condition-case ()
 -          (delete-file output)
 -        (file-error nil))
 -      ;; On MS-Windows, the current directory is not necessarily the
 -      ;; same as invocation-directory.
 -      (let (success)
 -        (unwind-protect
 -             (let ((tmp-dump-mode dump-mode)
 -                   (dump-mode nil)
 -                   (lexical-binding nil))
 -               (if (member tmp-dump-mode '("pdump" "pbootstrap"))
 -                   (dump-emacs-portable (expand-file-name output invocation-directory))
 -                 (dump-emacs output (if (eq system-type 'ms-dos)
 -                                        "temacs.exe"
 -                                      "temacs"))
 -                 (message "%d pure bytes used" pure-bytes-used))
 -               (setq success t))
 -          (unless success
 -            (ignore-errors
 -              (delete-file output)))))
 -      ;; Recompute NAME now, so that it isn't set when we dump.
 -      (if (not (or (eq system-type 'ms-dos)
 -                   (eq system-type 'haiku) ;; BFS doesn't support hard links
 -                   ;; Don't bother adding another name if we're just
 -                   ;; building bootstrap-emacs.
 -                   (member dump-mode '("pbootstrap" "bootstrap"))))
 -          (let ((name (format "emacs-%s.%d" emacs-version emacs-build-number))
 -                (exe (if (eq system-type 'windows-nt) ".exe" "")))
 -            (while (string-match "[^-+_.a-zA-Z0-9]+" name)
 -              (setq name (concat (downcase (substring name 0 (match-beginning 0)))
 -                                 "-"
 -                                 (substring name (match-end 0)))))
 -            (message "Adding name %s" (concat name exe))
 -            ;; When this runs on Windows, invocation-directory is not
 -            ;; necessarily the current directory.
 -            (add-name-to-file (expand-file-name (concat "emacs" exe)
 -                                                invocation-directory)
 -                              (expand-file-name (concat name exe)
 -                                                invocation-directory)
 -                              t)
 -            (when (equal dump-mode "pdump")
 -              (message "Adding name %s" (concat name ".pdmp"))
 -              (add-name-to-file (expand-file-name "emacs.pdmp"
 +(if (eq system-type 'android)
 +    (progn
 +      ;; Dumping Emacs on Android works slightly differently from
 +      ;; everywhere else.  The first time Emacs starts, Emacs dumps
 +      ;; itself to "emacs-%s.pdump", and then proceeds with loadup,
 +      ;; where %s is replaced by the dump fingerprint.
 +      ;; EmacsApplication.java removes any pdump files with a
 +      ;; different build fingerprint upon being created, which happens
 +      ;; the moment the Android system starts Emacs.  Then, it passes
 +      ;; the appropriate "--dump-file" to libemacs.so as it starts.
 +      (when (not noninteractive)
 +        (let ((temp-dir (getenv "TEMP"))
 +              (dump-file-name (format "%semacs-%s.pdmp"
 +                                      (file-name-as-directory "~")
 +                                      pdumper-fingerprint))
 +              (dump-temp-file-name (format "%s~emacs-%s.pdmp"
 +                                           (file-name-as-directory "~")
 +                                           pdumper-fingerprint)))
 +          (unless (pdumper-stats)
 +            (condition-case ()
 +                (progn
 +                  (dump-emacs-portable dump-temp-file-name)
 +                  ;; Move the dumped file to the actual dump file name.
 +                  (rename-file dump-temp-file-name dump-file-name)
 +                  ;; Continue with loadup.
 +                  nil)
 +              (error nil))))))
 +  (if dump-mode
 +      (let ((output (cond ((equal dump-mode "pdump") "emacs.pdmp")
 +                          ((equal dump-mode "dump") "emacs")
 +                          ((equal dump-mode "bootstrap") "emacs")
 +                          ((equal dump-mode "pbootstrap") "bootstrap-emacs.pdmp")
 +                          (t (error "Unrecognized dump mode %s" dump-mode)))))
 +        (when (and (featurep 'native-compile)
 +                   (equal dump-mode "pdump"))
 +          ;; Don't enable this before bootstrap is completed, as the
 +          ;; compiler infrastructure may not be usable yet.
-           (setq comp-enable-subr-trampolines t))
++          (setq native-comp-enable-subr-trampolines t))
 +        (message "Dumping under the name %s" output)
 +        (condition-case ()
 +            (delete-file output)
 +          (file-error nil))
 +        ;; On MS-Windows, the current directory is not necessarily the
 +        ;; same as invocation-directory.
 +        (let (success)
 +          (unwind-protect
 +              (let ((tmp-dump-mode dump-mode)
 +                    (dump-mode nil)
 +                    (lexical-binding nil))
 +                (if (member tmp-dump-mode '("pdump" "pbootstrap"))
 +                    (dump-emacs-portable (expand-file-name output invocation-directory))
 +                  (dump-emacs output (if (eq system-type 'ms-dos)
 +                                         "temacs.exe"
 +                                       "temacs"))
 +                  (message "%d pure bytes used" pure-bytes-used))
 +                (setq success t))
 +            (unless success
 +              (ignore-errors
 +                (delete-file output)))))
 +        ;; Recompute NAME now, so that it isn't set when we dump.
 +        (if (not (or (eq system-type 'ms-dos)
 +                     (eq system-type 'haiku) ;; BFS doesn't support hard links
 +                     ;; There's no point keeping old dumps around for
 +                     ;; the binary used to build Lisp on the build
 +                     ;; machine.
 +                     (featurep 'android)
 +                     ;; Don't bother adding another name if we're just
 +                     ;; building bootstrap-emacs.
 +                     (member dump-mode '("pbootstrap" "bootstrap"))))
 +            (let ((name (format "emacs-%s.%d" emacs-version emacs-build-number))
 +                  (exe (if (eq system-type 'windows-nt) ".exe" "")))
 +              (while (string-match "[^-+_.a-zA-Z0-9]+" name)
 +                (setq name (concat (downcase (substring name 0 (match-beginning 0)))
 +                                   "-"
 +                                   (substring name (match-end 0)))))
 +              (message "Adding name %s" (concat name exe))
 +              ;; When this runs on Windows, invocation-directory is not
 +              ;; necessarily the current directory.
 +              (add-name-to-file (expand-file-name (concat "emacs" exe)
                                                    invocation-directory)
 -                                (expand-file-name (concat name ".pdmp")
 +                                (expand-file-name (concat name exe)
                                                    invocation-directory)
 -                                t))))
 -      (kill-emacs)))
 +                                t)
 +              (when (equal dump-mode "pdump")
 +                (message "Adding name %s" (concat name ".pdmp"))
 +                (add-name-to-file (expand-file-name "emacs.pdmp"
 +                                                    invocation-directory)
-                                   (expand-file-name (concat name ".pdmp")
++                                  (expand-file-name (concat name exe)
 +                                                    invocation-directory)
-                                   t))))
-         (kill-emacs))))
++                                  t)
++                (when (equal dump-mode "pdump")
++                  (message "Adding name %s" (concat name ".pdmp"))
++                  (add-name-to-file (expand-file-name "emacs.pdmp"
++                                                      invocation-directory)
++                                    (expand-file-name (concat name ".pdmp")
++                                                      invocation-directory)
++                                    t))))
++          (kill-emacs)))))
  
  ;; This file must be loaded each time Emacs is run from scratch, e.g., temacs.
  ;; So run the startup code now.  First, remove `-l loadup' from args.
diff --cc lisp/startup.el
index cfe20d4b720ab3870e1fa996c7d1005e8b73437f,9ae53f4e50b53758b54723ab938beadaf6139fed..fb14fbad17f30f218d45ed7e695bb75a7370f212
@@@ -583,19 -579,6 +583,15 @@@ On Android, Emacs uses this variable in
  It sets `command-line-processed', processes the command-line,
  reads the initialization files, etc.
  It is the default value of the variable `top-level'."
-   ;; Allow disabling automatic .elc->.eln processing.
-   (setq inhibit-automatic-native-compilation
-         (getenv "EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION"))
 +  ;; Initialize the Android font driver late.
 +  ;; This is done here because it needs the `mac-roman' coding system
 +  ;; to be loaded.
 +  (when (and (featurep 'android)
 +             (fboundp 'android-enumerate-fonts)
 +             (not android-fonts-enumerated))
 +    (funcall 'android-enumerate-fonts)
 +    (setq android-fonts-enumerated t))
 +
    (if command-line-processed
        (message internal--top-level-message)
      (setq command-line-processed t)
diff --cc lisp/subr.el
Simple merge
diff --cc src/xdisp.c
Simple merge