]> git.eshelyaron.com Git - emacs.git/commitdiff
Support builds configured with a separate --bindir
authorEli Zaretskii <eliz@gnu.org>
Mon, 20 Jun 2022 16:04:06 +0000 (19:04 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 20 Jun 2022 16:04:06 +0000 (19:04 +0300)
* src/emacs.c (load_pdump): Don't overwrite the leading
directories of the Emacs executable just because the pdumper file
was not found in the expected directory relative to the binary.
This is needed to support builds with a separate --bindir
configure-time option and native-compilation.  (Bug#55741)

src/emacs.c

index ccc0dd269f4aaffcb8f349825552ab30bd83cea0..0a90b0913be223a2ac92c0e4d2bf6225dfba754d 100644 (file)
@@ -940,20 +940,24 @@ load_pdump (int argc, char **argv)
   sprintf (dump_file, "%s%c%s%s",
            path_exec, DIRECTORY_SEP, argv0_base, suffix);
 #if !defined (NS_SELF_CONTAINED)
-  /* Assume the Emacs binary lives in a sibling directory as set up by
-     the default installation configuration.  */
-  const char *go_up = "../../../../bin/";
-  needed += (strip_suffix ? strlen (strip_suffix) : 0)
-    - strlen (suffix) + strlen (go_up);
-  if (exec_bufsize < needed)
-    {
-      xfree (emacs_executable);
-      emacs_executable = xpalloc (NULL, &exec_bufsize, needed - exec_bufsize,
-                                 -1, 1);
-    }
-  sprintf (emacs_executable, "%s%c%s%s%s",
-          path_exec, DIRECTORY_SEP, go_up, argv0_base,
-          strip_suffix ? strip_suffix : "");
+  if (!(emacs_executable && *emacs_executable))
+    {
+      /* If we didn't find the Emacs binary, assume that it lives in a
+        sibling directory as set up by the default installation
+        configuration.  */
+      const char *go_up = "../../../../bin/";
+      needed += (strip_suffix ? strlen (strip_suffix) : 0)
+       - strlen (suffix) + strlen (go_up);
+      if (exec_bufsize < needed)
+       {
+         xfree (emacs_executable);
+         emacs_executable = xpalloc (NULL, &exec_bufsize,
+                                     needed - exec_bufsize, -1, 1);
+       }
+      sprintf (emacs_executable, "%s%c%s%s%s",
+              path_exec, DIRECTORY_SEP, go_up, argv0_base,
+              strip_suffix ? strip_suffix : "");
+    }
 #endif
   result = pdumper_load (dump_file, emacs_executable);