*/
#$d_mktime HAS_MKTIME /**/
+/* HAS_MSYNC:
+ * This symbol, if defined, indicates that the msync system call is
+ * available to synchronize a mapped file.
+ */
+#$d_msync HAS_MSYNC /**/
+
+/* HAS_MUNMAP:
+ * This symbol, if defined, indicates that the munmap system call is
+ * available to unmap a region, usually mapped by mmap().
+ */
+#$d_munmap HAS_MUNMAP /**/
+
/* HAS_NICE:
* This symbol, if defined, indicates that the nice routine is
* available.
#$i_syssecrt I_SYS_SECURITY /**/
/* MEM_ALIGNBYTES:
- * This symbol contains the number of bytes required to align a
- * double. Usual values are 2, 4 and 8.
- * On NeXT starting with 3.2, you can build "Fat" Multiple Architecture
- * Binaries (MAB) for targets with varying alignment. This only matters
- * for perl, where the config.h can be generated and installed on one
- * system, and used by a different architecture to build an extension.
- * The default is eight, for safety.
+ * This symbol contains the number of bytes required to align a
+ * double. Usual values are 2, 4 and 8. The default is eight,
+ * for safety.
*/
-#define MEM_ALIGNBYTES $alignbytes /**/
+#if defined(CROSSCOMPILE) || defined(MULTIARCH)
+# define MEM_ALIGNBYTES 8
+#else
+#define MEM_ALIGNBYTES $alignbytes
+#endif
/* BYTEORDER:
* This symbol holds the hexadecimal constant defined in byteorder,
* i.e. 0x1234 or 0x4321, etc...
+ * If the compiler supports cross-compiling or multiple-architecture
+ * binaries (eg. on NeXT systems), use compiler-defined macros to
+ * determine the byte order.
* On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture
* Binaries (MAB) on either big endian or little endian machines.
* The endian-ness is available at compile-time. This only matters
* so the default case (for NeXT) is big endian to catch them.
* This might matter for NeXT 3.0.
*/
-#ifndef NeXT
+#if defined(CROSSCOMPILE) || defined(MULTIARCH)
+# ifdef __LITTLE_ENDIAN__
+# if LONGSIZE == 4
+# define BYTEORDER 0x1234
+# else
+# if LONGSIZE == 8
+# define BYTEORDER 0x12345678
+# endif
+# endif
+# else
+# ifdef __BIG_ENDIAN__
+# if LONGSIZE == 4
+# define BYTEORDER 0x4321
+# else
+# if LONGSIZE == 8
+# define BYTEORDER 0x87654321
+# endif
+# endif
+# endif
+# endif
+# if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__))
+# define BYTEORDER 0x4321
+# endif
+#else
#define BYTEORDER 0x$byteorder /* large digits for MSB */
-#else /* NeXT */
-#ifdef __LITTLE_ENDIAN__
-#define BYTEORDER 0x1234
-#else /* __BIG_ENDIAN__ */
-#define BYTEORDER 0x4321
-#endif /* ENDIAN CHECK */
#endif /* NeXT */
/* CASTI32:
#define LONGLONGSIZE $longlongsize /**/
#endif
+/* HAS_MMAP:
+ * This symbol, if defined, indicates that the mmap system call is
+ * available to map a file into memory.
+ */
+/* Mmap_t:
+ * This symbol holds the return type of the mmap() system call
+ * (and simultaneously the type of the first argument).
+ * Usually set to 'void *' or 'cadd_t'.
+ */
+#$d_mmap HAS_MMAP /**/
+#define Mmap_t $mmaptype /**/
+
/* HAS_MSG:
* This symbol, if defined, indicates that the entire msg*(2) library is
* supported (IPC mechanism based on message queues).
*/
#$d_ftello HAS_FTELLO /**/
+/* HAS_GETMNTENT:
+ * This symbol, if defined, indicates that the getmntent routine is
+ * available to iterate through mounted file systems.
+ */
+#$d_getmntent HAS_GETMNTENT /**/
+
+/* HAS_HASMNTOPT:
+ * This symbol, if defined, indicates that the hasmntopt routine is
+ * available to query the mount options of file systems.
+ */
+#$d_hasmntopt HAS_HASMNTOPT /**/
+
+/* HAS_MADVISE:
+ * This symbol, if defined, indicates that the madvise system call is
+ * available to map a file into memory.
+ */
+#$d_madvise HAS_MADVISE /**/
+
+/* HAS_MPROTECT:
+ * This symbol, if defined, indicates that the mprotect system call is
+ * available to modify the access protection of a memory mapped file.
+ */
+#$d_mprotect HAS_MPROTECT /**/
+
/* HAS_READV:
* This symbol, if defined, indicates that the readv routine is
* available to do gather reads. You will also need <sys/uio.h>
/* HAS_FSTATFS:
* This symbol, if defined, indicates that the fstatfs routine is
- * available to do stat filesystems of file descriptors.
+ * available to stat filesystems of file descriptors.
*/
/* HAS_STRUCT_STATFS_FLAGS:
* This symbol, if defined, indicates that the struct statfs
* does have the f_flags member containing the mount flags of
* the filesystem holding the file.
- * This kind of struct statfs is coming from sys/mount.h (BSD)
- * and not from sys/statfs.h (SYSV).
+ * This kind of struct statfs is coming from sys/mount.h (BSD),
+ * not from sys/statfs.h (SYSV).
*/
#$d_fstatfs HAS_FSTATFS /**/
#$d_statfsflags HAS_STRUCT_STATFS_FLAGS /**/
/* HAS_FSTATVFS:
* This symbol, if defined, indicates that the fstatvfs routine is
- * available to do stat filesystems of file descriptors.
+ * available to stat filesystems of file descriptors.
*/
#$d_fstatvfs HAS_FSTATVFS /**/
+/* HAS_TELLDIR_PROTO:
+ * This symbol, if defined, indicates that the system provides
+ * a prototype for the telldir() function. Otherwise, it is up
+ * to the program to supply one. A good guess is
+ * extern long telldir _((DIR*));
+ */
+#$d_telldirproto HAS_TELLDIR_PROTO /**/
+
/* HAS_WRITEV:
* This symbol, if defined, indicates that the writev routine is
* available to do scatter writes.
*/
#$i_poll I_POLL /**/
+/* I_SYS_MMAN:
+ * This symbol, if defined, indicates that <sys/mman.h> exists and
+ * should be included.
+ */
+#$i_sysmman I_SYS_MMAN /**/
+
/* I_SYS_MOUNT:
* This symbol, if defined, indicates that <sys/mount.h> exists and
* should be included.