]> code.delx.au - gnu-emacs/blobdiff - src/s/darwin.h
Remove NOMULTIPLEJOBS, unused.
[gnu-emacs] / src / s / darwin.h
index 9fcf2ca6dff12e712533e51a312c11a761acbf04..016ed343f06af1911baaa6a8ad85404e265d37b3 100644 (file)
@@ -1,6 +1,6 @@
 /* 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.
 
@@ -26,18 +26,14 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #define BSD4_2
 /* BSD4_3 and BSD4_4 are already defined in sys/param.h */
 #define BSD_SYSTEM
-/* #define VMS */
 
-/* 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
-/* We need a little extra space, see ../../lisp/loadup.el. */
-#define SYSTEM_PURESIZE_EXTRA 30000
+/* 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
 
-#endif
-#endif
 
 /* SYSTEM_TYPE should indicate the kind of system you are using.
  It sets the Lisp variable system-type.  */
@@ -85,7 +81,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
  */
 
 #define HAVE_TERMIOS
-/* #define HAVE_TERMIO */
 
 #define NO_TERMIO
 
@@ -95,6 +90,24 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
  */
 
 #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
@@ -107,14 +120,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #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
@@ -128,27 +133,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #define CLASH_DETECTION
 
-/* ============================================================ */
-
-/* Here, add any special hacks needed
-   to make Emacs work on this system.  For example,
-   you might define certain system call names that don't
-   exist on your system, or that do different things on
-   your system and must be used only through an encapsulation
-   (Which you should place, by convention, in sysdep.c).  */
-
-/* ============================================================ */
-
-/* After adding support for a new system, modify the large case
-   statement in the `configure' script to recognize reasonable
-   configuration names, and add a description of the system to
-   `etc/MACHINES'.
-
-   If you've just fixed a problem in an existing configuration file,
-   you should also check `etc/MACHINES' to make sure its descriptions
-   of known problems in that configuration should be updated.  */
-
-
 /* Avoid the use of the name init_process (process.c) because it is
    also the name of a Mach system call.  */
 #define init_process emacs_init_process
@@ -167,20 +151,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* 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
@@ -190,67 +160,37 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* 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.  */
 
-/* This is for the Carbon port.  Under the NeXTstep port, this is still picked
-   up during preprocessing, but is undone in config.in. */
-#ifndef HAVE_NS
-#define C_SWITCH_SYSTEM -fpascal-strings -DMAC_OSX
-#endif
-
-/* Link in the Carbon or AppKit lib. */
 #ifdef HAVE_NS
-/* 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 LIBS_NSGUI -framework AppKit
 #define SYSTEM_PURESIZE_EXTRA 200000
 #define HEADERPAD_EXTRA 6C8
-#else
+#else /* !HAVE_NS */
+#define LIBS_NSGUI
 #define HEADERPAD_EXTRA 690
+#endif /* !HAVE_NS */
 
-#ifdef HAVE_CARBON
-
-#ifdef HAVE_AVAILABILITYMACROS_H
-#include <AvailabilityMacros.h>
-#endif
-
-/* 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
-
-#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  */
 
-/* Link in the Carbon lib. */
-#ifdef HAVE_CARBON
-#define LIBS_MACGUI -framework Carbon LIBS_IMAGE
-#else
-#define LIBS_MACGUI
-#endif /* !HAVE_CARBON */
-#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 LD_SWITCH_SYSTEM_TEMACS -prebind LIBS_NSGUI -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
@@ -265,24 +205,9 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* 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
 
-/* Tell src/Makefile.in to create files in the Mac OS X application
-   bundle mac/Emacs.app.  */
-#ifdef HAVE_CARBON
-#define OTHER_FILES macosx-app
-#endif
-
-/* PENDING: can this target be specified in a clearer way? */
-#ifdef HAVE_NS
-#define OTHER_FILES ns-app
-#endif
-
-
 /* Define the following so emacs symbols will not conflict with those
    in the System framework.  Otherwise -prebind will not work.  */
 
@@ -292,10 +217,10 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Do not define matherr in floatfns.c.  */
 #define NO_MATHERR
 
-
 /* The following solves the problem that Emacs hangs when evaluating
    (make-comint "test0" "/nodir/nofile" nil "") when /nodir/nofile
-   does not exist.  */
+   does not exist.  Also, setsid is not allowed in the vfork child's
+   context as of Darwin 9/Mac OS X 10.5.  */
 #undef HAVE_WORKING_VFORK
 #define vfork fork
 
@@ -304,23 +229,10 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
    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
 
-/* 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 (HAVE_CARBON) && (defined (emacs) || defined (temacs))
-#define select sys_select
-#endif
-
 /* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the
    stack.  */
 #define GC_MARK_STACK   GC_MAKE_GCPROS_NOOPS