unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Compiling Emacs on Mac OS X 10.6 Snow Leopard
@ 2009-08-31 10:36 YAMAMOTO Mitsuharu
  2009-08-31 14:40 ` Stefan Monnier
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: YAMAMOTO Mitsuharu @ 2009-08-31 10:36 UTC (permalink / raw)
  To: emacs-devel

This is a summary of the current status of compilation on the newly
released Mac OS X 10.6 Snow Leopard.

  * For Emacs 22.3 and 23.1, you need to apply the patch below.  It
    has already been applied to the CVS trunk.

  * Now gcc seems to make a 64-bit binary by default (the situation
    might be different on Core Solo/Duo machines).  Emacs 22.3 Carbon
    port can't make it because the GUI portion of Carbon doesn't have
    64-bit support.  Currently, the Cocoa port (23.1 or the CVS trunk)
    can't do that either because the code doesn't take account of it.
    In either case, you need to specify the 32-bit option CC='gcc
    -arch i386' when running configure.  This restriction does not
    apply to tty-only or X11 builds.

  * If you want to use a 64-bit binary with native GUI support, you
    can try Emacs 22.3 Carbon+AppKit port or 23.1 Mac port (the latter
    is currently experimental/hackers-only).
    http://lists.gnu.org/archive/html/emacs-devel/2009-08/msg01309.html

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp

Index: src/unexmacosx.c
===================================================================
RCS file: /sources/emacs/emacs/src/unexmacosx.c,v
retrieving revision 1.22.2.5
diff -c -p -r1.22.2.5 unexmacosx.c
*** src/unexmacosx.c	8 Jan 2008 04:29:48 -0000	1.22.2.5
--- src/unexmacosx.c	30 Aug 2009 09:01:00 -0000
*************** print_load_command_name (int lc)
*** 584,589 ****
--- 584,597 ----
        printf ("LC_UUID          ");
        break;
  #endif
+ #ifdef LC_DYLD_INFO
+     case LC_DYLD_INFO:
+       printf ("LC_DYLD_INFO     ");
+       break;
+     case LC_DYLD_INFO_ONLY:
+       printf ("LC_DYLD_INFO_ONLY");
+       break;
+ #endif
      default:
        printf ("unknown          ");
      }
*************** copy_data_segment (struct load_command *
*** 821,826 ****
--- 829,835 ----
  	       || strncmp (sectp->sectname, "__const", 16) == 0
  	       || strncmp (sectp->sectname, "__cfstring", 16) == 0
  	       || strncmp (sectp->sectname, "__gcc_except_tab", 16) == 0
+ 	       || strncmp (sectp->sectname, "__program_vars", 16) == 0
  	       || strncmp (sectp->sectname, "__objc_", 7) == 0)
  	{
  	  if (!unexec_copy (sectp->offset, old_file_offset, sectp->size))
*************** copy_twolevelhints (struct load_command 
*** 1088,1093 ****
--- 1097,1132 ----
    curr_header_offset += lc->cmdsize;
  }
  
+ #ifdef LC_DYLD_INFO
+ /* Copy a LC_DYLD_INFO(_ONLY) load command from the input file to the output
+    file, adjusting the file offset fields.  */
+ static void
+ copy_dyld_info (struct load_command *lc, long delta)
+ {
+   struct dyld_info_command *dip = (struct dyld_info_command *) lc;
+ 
+   if (dip->rebase_off > 0)
+     dip->rebase_off += delta;
+   if (dip->bind_off > 0)
+     dip->bind_off += delta;
+   if (dip->weak_bind_off > 0)
+     dip->weak_bind_off += delta;
+   if (dip->lazy_bind_off > 0)
+     dip->lazy_bind_off += delta;
+   if (dip->export_off > 0)
+     dip->export_off += delta;
+ 
+   printf ("Writing ");
+   print_load_command_name (lc->cmd);
+   printf (" command\n");
+ 
+   if (!unexec_write (curr_header_offset, lc, lc->cmdsize))
+     unexec_error ("cannot write dyld info command to header");
+ 
+   curr_header_offset += lc->cmdsize;
+ }
+ #endif
+ 
  /* Copy other kinds of load commands from the input file to the output
     file, ones that do not require adjustments of file offsets.  */
  static void
*************** dump_it ()
*** 1154,1159 ****
--- 1193,1204 ----
        case LC_TWOLEVEL_HINTS:
  	copy_twolevelhints (lca[i], linkedit_delta);
  	break;
+ #ifdef LC_DYLD_INFO
+       case LC_DYLD_INFO:
+       case LC_DYLD_INFO_ONLY:
+ 	copy_dyld_info (lca[i], linkedit_delta);
+ 	break;
+ #endif
        default:
  	copy_other (lca[i]);
  	break;
Index: src/s/darwin.h
===================================================================
RCS file: /sources/emacs/emacs/src/s/darwin.h,v
retrieving revision 1.28.2.4
diff -c -p -r1.28.2.4 darwin.h
*** src/s/darwin.h	17 Jul 2008 09:07:06 -0000	1.28.2.4
--- src/s/darwin.h	30 Aug 2009 09:01:01 -0000
*************** Boston, MA 02110-1301, USA.  */
*** 351,356 ****
--- 351,359 ----
  #define malloc unexec_malloc
  #define realloc unexec_realloc
  #define free unexec_free
+ /* Don't use posix_memalign because it is not compatible with
+    unexmacosx.c.  */
+ #undef HAVE_POSIX_MEMALIGN
  #endif
  
  /* This makes create_process in process.c save and restore signal




^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-09-01 17:35 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-31 10:36 Compiling Emacs on Mac OS X 10.6 Snow Leopard YAMAMOTO Mitsuharu
2009-08-31 14:40 ` Stefan Monnier
2009-08-31 17:50 ` David Reitter
2009-09-01  5:24   ` YAMAMOTO Mitsuharu
2009-09-01 17:35     ` David Reitter
2009-08-31 18:02 ` CHENG Gao

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).