/* System description header file for Darwin (Mac OS X).
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008 Free Software Foundation, Inc.
+ 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
/* BSD4_3 and BSD4_4 are already defined in sys/param.h */
#define BSD_SYSTEM
-/* MAC_OS is used to conditionally compile code common to both MAC_OS8
- and MAC_OSX. */
-#ifdef MAC_OSX
-#ifdef HAVE_CARBON
-#define MAC_OS
-#endif
-#endif
+/* More specific than the above two. We cannot use __APPLE__ as this
+ may not be defined on non-OSX Darwin, and we cannot define DARWIN
+ here because Panther and lower CoreFoundation.h uses DARWIN to
+ distinguish OS X from pure Darwin. */
+
+#define DARWIN_OS
+
/* SYSTEM_TYPE should indicate the kind of system you are using.
It sets the Lisp variable system-type. */
*/
#define HAVE_PTYS
+/* Run only once. We need a `for'-loop because the code uses
+ `continue'. */
+#define PTY_ITERATION for (i = 0; i < 1; i++)
+#define PTY_NAME_SPRINTF /* none */
+#define PTY_TTY_NAME_SPRINTF /* none */
+/* Note that openpty may fork via grantpt on Mac OS X 10.4/Darwin 8.
+ But we don't have to block SIGCHLD because it is blocked in the
+ implementation of grantpt. */
+#define PTY_OPEN \
+ do \
+ { \
+ int slave; \
+ if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) \
+ fd = -1; \
+ else \
+ emacs_close (slave); \
+ } \
+ while (0)
/**
* PTYs only work correctly on Darwin 7 or higher. So make the
#define BSTRING
-/* subprocesses should be defined if you want to
- have code for asynchronous subprocesses
- (as used in M-x compile and M-x shell).
- This is generally OS dependent, and not supported
- under most USG systems. */
-
-#define subprocesses
-
/* define MAIL_USE_FLOCK if the mailer uses flock
to interlock access to /usr/spool/mail/$USER.
The alternative is that a lock file named
/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */
#define HAVE_SOCKETS
-/* In Carbon, asynchronous I/O (using SIGIO) can't be used for window
- events because they don't come from sockets, even though it works
- fine on tty's. */
-/* This seems to help in Ctrl-G detection under Cocoa, however at the cost
- of some quirks that may or may not bother a given user. */
-#if defined (HAVE_CARBON) || defined (COCOA_EXPERIMENTAL_CTRL_G)
-#define NO_SOCK_SIGIO
-#endif
-
-/* Extra initialization calls in main for Mac OS X system type. */
-#ifdef HAVE_CARBON
-#define SYMS_SYSTEM syms_of_mac()
-#endif
-
/* Definitions for how to dump. Copied from nextstep.h. */
#define UNEXEC unexmacosx.o
/* start_of_text isn't actually used, so make it compile without error. */
#define TEXT_START (0)
-/* This seems to be right for end_of_text, but it may not be used anyway. */
-#define TEXT_END get_etext()
-
-/* This seems to be right for end_of_data, but it may not be used anyway. */
-#define DATA_END get_edata()
-
/* Definitions for how to compile & link. */
-/* Link in the Carbon or AppKit lib. */
#ifdef HAVE_NS
-/* PENDING: can this target be specified in a clearer way? */
-#define OTHER_FILES ns-app
-/* XXX: lresolv is here because configure when testing #undefs res_init,
- a macro in /usr/include/resolv.h for res_9_init, not in stdc lib. */
-#define LIBS_MACGUI -framework AppKit -lresolv
#define SYSTEM_PURESIZE_EXTRA 200000
-#define HEADERPAD_EXTRA 6C8
-#else /* !HAVE_NS */
-#define HEADERPAD_EXTRA 690
-
-/* This is for the Carbon port. Under the NeXTstep port, this is still picked
- up during preprocessing, but is undone in config.in. */
-#define C_SWITCH_SYSTEM -fpascal-strings -DMAC_OSX
-
-#ifdef HAVE_CARBON
-
-/* We need a little extra space, see ../../lisp/loadup.el. */
-#define SYSTEM_PURESIZE_EXTRA 30000
-
-/* Link in the Carbon lib. */
-#define LIBS_MACGUI -framework Carbon LIBS_IMAGE
-
-#ifdef HAVE_AVAILABILITYMACROS_H
-#include <AvailabilityMacros.h>
-#endif
-/* Tell src/Makefile.in to create files in the Mac OS X application
- bundle mac/Emacs.app. */
-#define OTHER_FILES macosx-app
-
-/* Whether to use the Image I/O framework for reading images. */
-#ifndef USE_MAC_IMAGE_IO
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1040 && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1040 || MAC_OS_X_VERSION_MIN_REQUIRED < 1020)
-#define USE_MAC_IMAGE_IO 1
-#endif
-#endif
-
-/* If the Image I/O framework is not used, fall back on QuickTime. */
-#if USE_MAC_IMAGE_IO
-#define LIBS_IMAGE
-#else
-#define LIBS_IMAGE -framework QuickTime
-#endif
-
-/* Reroute calls to SELECT to the version defined in mac.c to fix the
- problem of Emacs requiring an extra return to be typed to start
- working when started from the command line. */
-#if defined (emacs) || defined (temacs)
-#define select sys_select
#endif
-#else /* !HAVE_CARBON */
-#define LIBS_MACGUI
-#endif /* HAVE_CARBON */
+/* On Darwin, res_init appears not to be useful: see bug#562 and
+ http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01467.html */
-#endif /* !HAVE_NS */
+#undef HAVE_RES_INIT
+#undef HAVE_LIBRESOLV
-/* The -headerpad option tells ld (see man page) to leave room at the
- end of the header for adding load commands. Needed for dumping.
- 0x690 is the total size of 30 segment load commands (at 56
- each); under Cocoa 31 commands are required. */
-#define LD_SWITCH_SYSTEM_TEMACS -prebind LIBS_MACGUI -Xlinker -headerpad -Xlinker HEADERPAD_EXTRA
-
-#define C_SWITCH_SYSTEM_TEMACS -Dtemacs
+#ifdef emacs
+#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
/* The ncurses library has been moved out of the System framework in
Mac OS X 10.2. So if ./configure detects it, set the command-line
/* Link this program just by running cc. */
#define ORDINARY_LINK
-/* We don't have a g library, so override the -lg LIBS_DEBUG switch. */
-#define LIBS_DEBUG
-
-/* Adding -lm confuses the dynamic linker, so omit it. */
-#define LIB_MATH
-
/* Define the following so emacs symbols will not conflict with those
in the System framework. Otherwise -prebind will not work. */
ioctl TIOCSCTTY. */
#define DONT_REOPEN_PTY
-#ifdef temacs
-#define malloc unexec_malloc
-#define realloc unexec_realloc
-#define free unexec_free
-#endif
-
-/* This makes create_process in process.c save and restore signal
- handlers correctly. Suggested by Nozomu Ando.*/
-#define POSIX_SIGNALS
-
/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the
stack. */
#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS