#define LIBS_DEBUG
#define LIBS_SYSTEM -lutil
+#if __FreeBSD_version < 400000
#define LIBS_TERMCAP -ltermcap
+#endif
#define SYSV_SYSTEM_DIR
#ifdef __ELF__
-#define LD_SWITCH_SYSTEM
+#define LD_SWITCH_SYSTEM_1
#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o
#define UNEXEC unexelf.o
#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o
#else /* not __ELF__ */
#ifndef NO_SHARED_LIBS
-#define LD_SWITCH_SYSTEM -e start -dc
+#define LD_SWITCH_SYSTEM_1 -e start -dc -L/usr/local/lib
#define HAVE_TEXT_START /* No need to define `start_of_text'. */
#if __FreeBSD_version >= 300002
#define START_FILES pre-crt0.o /usr/lib/aout/crt0.o
#else /* NO_SHARED_LIBS */
#ifdef __FreeBSD__ /* shared libs are available, but the user prefers
not to use them. */
-#define LD_SWITCH_SYSTEM -Bstatic
+#define LD_SWITCH_SYSTEM_1 -Bstatic -L/usr/local/lib
#define A_TEXT_OFFSET(x) (sizeof (struct exec))
#define A_TEXT_SEEK(hdr) (N_TXTOFF(hdr) + A_TEXT_OFFSET(hdr))
#endif /* __FreeBSD__ */
#endif /* not __ELF__ */
+/* Let `ld' find image libs and similar things in /usr/local/lib. The
+ system compiler, GCC, has apparently been modified to not look
+ there, contrary to what a stock GCC would do. */
+
+#define LD_SWITCH_SYSTEM LD_SWITCH_SYSTEM_1 -L/usr/local/lib
+
#define HAVE_WAIT_HEADER
#define HAVE_GETLOADAVG 1
#if 0
#define BSD_SYSTEM 199506
#endif
+#if 0 /* Shouldn't be necessary and produces warnings with the
+ experimental Autoconf test. */
#define WAITTYPE int
/* get this since it won't be included if WAITTYPE is defined */
#ifdef emacs
#include <sys/wait.h>
#endif
#define WRETCODE(w) (_W_INT(w) >> 8)
+#endif
/* Needed to avoid hanging when child process writes an error message
and exits -- enami tsugutomo <enami@ba2.so-net.or.jp>. */
#define NARROWPROTO 1
-/* The following is needed to make `configure' find Xpm and Xaw3d
- headers, which are checked for with AC_CHECK_HEADER. */
+/* The following is needed to make `configure' find Xpm, Xaw3d and
+ image include and library files if using /usr/bin/gcc. That
+ compiler seems to be modified to not find headers in
+ /usr/local/include or libs in /usr/local/lib by default. */
+
+#define C_SWITCH_SYSTEM -I/usr/X11R6/include -I/usr/local/include -L/usr/local/lib
+
+/* Circumvent a bug in FreeBSD. In the following sequence of
+ writes/reads on a PTY, read(2) returns bogus data:
+
+ write(2) 1022 bytes
+ write(2) 954 bytes, get EAGAIN
+ read(2) 1024 bytes in process_read_output
+ read(2) 11 bytes in process_read_output
+
+ That is, read(2) returns more bytes than have ever been written
+ successfully. The 1033 bytes read are the 1022 bytes written
+ successfully after processing (for example with CRs added if the
+ terminal is set up that way which it is here). The same bytes will
+ be seen again in a later read(2), without the CRs. */
+
+#define BROKEN_PTY_READ_AFTER_EAGAIN 1
+
+/* Tell that garbage collector that setjmp is known to save all
+ registers relevant for conservative garbage collection in the
+ jmp_buf. */
+
+#define GC_SETJMP_WORKS 1
+
+/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the
+ stack. */
+
+#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
+
+/* Define USE_MMAP_FOR_BUFFERS to let Emacs use mmap(2) to allocate
+ buffer text. This overrides REL_ALLOC. */
+
+#define USE_MMAP_FOR_BUFFERS 1
+
+/* Use sigprocmask(2) and friends instead of sigblock(2); the man page
+ of sigblock says it is obsolete. */
-#define C_SWITCH_SYSTEM -I /usr/X11R6/include
+#define POSIX_SIGNALS 1