Here are some of the cpp macros used, together with some short explanation
of their use. Feel free to add more macros and more categories.
+Most of these are from config.in, so it's probably better to put the
+explanations in that file. Ideally, everything would be defined and
+documented in config.in, and this file would not be necessary.
+
** Distinguishing OSes **
+AIX
+_AIX
+BSD4_2
+BSD_SYSTEM
CYGWIN Compiling the Cygwin port.
__CYGWIN__ Ditto
+GNU_LINUX
+HPUX
+IRIX6_5
MSDOS Compiling the MS-DOS port.
__MSDOS__ Ditto.
__DJGPP_MINOR__ Minor version number of the DJGPP library; used only in msdos.c and dosfns.c.
__MINGW32__ Compiling the W32 port with the MinGW port of GCC.
_MSC_VER Compiling the W32 port with the Microsoft C compiler.
DARWIN_OS Compiling on Mac OS X or pure Darwin (and using s/darwin.h).
+SOLARIS2
+USG
+USG5
+USG5_4
** Distinguishing GUIs **
(It looks like, nowadays, if HAVE_X11 is set, HAVE_X_WINDOWS must
be, and vice versa. At least, this is true for configure, and
msdos; not sure about nt.)
+HAVE_X11R6
+HAVE_X11R6_XIM
+HAVE_X11XTR6
USE_LUCID Use the Lucid toolkit for menus&scrollbars. Requires HAVE_X11.
USE_MOTIF Use the Motif toolkit for menus&scrollbars. Requires HAVE_X11.
USE_GTK Use the Gtk toolkit for menus&scrollbars. Requires HAVE_X11.
REL_ALLOC Compile in the relocatable memory allocator ralloc.c.
SYSTEM_MALLOC Use the system library's malloc.
-subprocesses System can use subprocesses (for M-x shell for example). Defined by default, only MSDOS undefines it.
-USE_LISP_UNION_TYPE Define it in lisp.h to make Lisp_Object be a union type instead of the default int.
+subprocesses System can use subprocesses (for M-x shell for example).
+ Defined by default, only MSDOS undefines it.
+DEBUG_LISP_OBJECT_TYPE Define it in lisp.h enable compile time checks
+ on Lisp_Object use.
-** System specific macros, decribed in detail in src/s/template.h
-CLASH_DETECTION
-COFF
+** System specific macros
FIRST_PTY_LETTER
HAVE_PTYS
-HAVE_TERMIO
-HAVE_TERMIOS
INTERRUPT_INPUT
NARROWPROTO
SEPCHAR
-SIGTYPE
SYSTEM_TYPE
-** Machine specific macros, decribed in detail in src/m/template.h
-EXPLICIT_SIGN_EXTEND
-LOAD_AVE_CVT
-LOAD_AVE_TYPE
-NO_REMAP
-VIRT_ADDR_VARIES
-WORDS_BIG_ENDIAN
-
** Misc macros
-USER_FULL_NAME If defined, overrides the default pw->pw_gecos for getting at the full user name. Only MSDOS overrides the default.
-
-** Replace, the definition is trivial: SWITCH_ENUM_CAST
+USER_FULL_NAME If defined, overrides the default pw->pw_gecos for
+getting at the full user name. Only MSDOS overrides the default.
-** Defines from src/m/*.h and src/s/*.h. Some of these might not be used in the code anymore, so they can be removed. The HAVE_* definitions are probably handled by autoconf, so it might be possible to just remove them from src/[sm]/*.h.
+** Miscellaneous defines. Some of these might not be used in the code
+anymore, so they can be removed.
-
-AIX
AMPERSAND_FULL_NAME
-BITS_PER_EMACS_INT
-BITS_PER_LONG
-BITS_PER_CHAR
-BITS_PER_SHORT
-BITS_PER_INT
BROKEN_DATAGRAM_SOCKETS
BROKEN_FIONREAD
+BROKEN_GETWD
BROKEN_GET_CURRENT_DIR_NAME
BROKEN_NON_BLOCKING_CONNECT
BROKEN_PTY_READ_AFTER_EAGAIN
-BROKEN_SA_RESTART
-BROKEN_SIGAIO
-BROKEN_SIGIO
-BROKEN_SIGPOLL
-BROKEN_SIGPTY
-BSD4_2
-BSD4_3
-BSD_SYSTEM
CLASH_DETECTION
DATA_SEG_BITS
DATA_START
-DBL_MIN_REPLACEMENT
-DECLARE_GETPWUID_WITH_UID_T
DEFAULT_SOUND_DEVICE
DEVICE_SEP
DIRECTORY_SEP
DONT_REOPEN_PTY
DOUG_LEA_MALLOC
-DebPrint
-EMACSDEBUG
EMACS_CONFIGURATION
EMACS_CONFIG_OPTIONS
EMACS_INT
EMACS_UINT
-FILE_SYSTEM_CASE
-FLOAT_CHECK_DOMAIN
-FSCALE
-GC_LISP_OBJECT_ALIGNMENT
GC_MARK_SECONDARY_STACK
GC_MARK_STACK
GC_SETJMP_WORKS
-GMALLOC_INHIBIT_VALLOC
-GNU_LIBRARY_PENDING_OUTPUT_COUNT
-GNU_LINUX
GNU_MALLOC
HAVE_AIX_SMT_EXP
-HAVE_CBRT
+HAVE_ALARM
+HAVE_ALLOCA
+HAVE_ALLOCA_H
+HAVE_ALSA
+HAVE_ATTRIBUTE_ALIGNED
+HAVE_BDFFONT
+HAVE_BOXES
+HAVE_C99_STRTOLD
+HAVE_CFMAKERAW
+HAVE_CFSETSPEED
+HAVE_CLOCK_GETTIME
+HAVE_CLOCK_SETTIME
HAVE_CLOSEDIR
+HAVE_COFF_H
+HAVE_COM_ERR_H
+HAVE_COPYSIGN
+HAVE_DBUS
+HAVE_DBUS_TYPE_IS_VALID
+HAVE_DBUS_VALIDATE_BUS_NAME
+HAVE_DBUS_VALIDATE_INTERFACE
+HAVE_DBUS_VALIDATE_MEMBER
+HAVE_DBUS_VALIDATE_PATH
+HAVE_DBUS_WATCH_GET_UNIX_FD
+HAVE_DECL_GETENV
+HAVE_DECL_LOCALTIME_R
+HAVE_DECL_STRMODE
+HAVE_DECL_STRTOIMAX
+HAVE_DECL_STRTOLL
+HAVE_DECL_STRTOULL
+HAVE_DECL_STRTOUMAX
+HAVE_DECL_SYS_SIGLIST
+HAVE_DECL_TZNAME
+HAVE_DECL___SYS_SIGLIST
+HAVE_DES_H
+HAVE_DEV_PTMX
+HAVE_DIALOGS
+HAVE_DIFFTIME
+HAVE_DIRENT_H
HAVE_DUP2
+HAVE_ENDGRENT
+HAVE_ENDPWENT
+HAVE_ENVIRON_DECL
HAVE_EUIDACCESS
-HAVE_FMOD
-HAVE_FPATHCONF
-HAVE_FREXP
+HAVE_FCNTL_H
+HAVE_FORK
+HAVE_FREEIFADDRS
+HAVE_FREETYPE
+HAVE_FSEEKO
HAVE_FSYNC
-HAVE_FTIME
+HAVE_FUTIMENS
+HAVE_FUTIMES
+HAVE_FUTIMESAT
+HAVE_GAI_STRERROR
+HAVE_GCONF
+HAVE_GETADDRINFO
HAVE_GETCWD
-HAVE_GETDOMAINNAME
+HAVE_GETDELIM
+HAVE_GETGRENT
HAVE_GETHOSTNAME
+HAVE_GETIFADDRS
+HAVE_GETLINE
HAVE_GETLOADAVG
+HAVE_GETOPT_H
+HAVE_GETOPT_LONG_ONLY
HAVE_GETPAGESIZE
+HAVE_GETPEERNAME
HAVE_GETPT
+HAVE_GETPWENT
+HAVE_GETRLIMIT
+HAVE_GETRUSAGE
+HAVE_GETSOCKNAME
HAVE_GETTIMEOFDAY
HAVE_GETWD
+HAVE_GET_CURRENT_DIR_NAME
+HAVE_GHOSTSCRIPT
+HAVE_GIF
+HAVE_GNUTLS
+HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY
+HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION
+HAVE_GPM
+HAVE_GRANTPT
+HAVE_GSETTINGS
+HAVE_GTK3
+HAVE_GTK_ADJUSTMENT_GET_PAGE_SIZE
+HAVE_GTK_DIALOG_GET_ACTION_AREA
+HAVE_GTK_FILE_SELECTION_NEW
+HAVE_GTK_MAIN
+HAVE_GTK_MULTIDISPLAY
+HAVE_GTK_ORIENTABLE_SET_ORIENTATION
+HAVE_GTK_WIDGET_GET_MAPPED
+HAVE_GTK_WIDGET_GET_SENSITIVE
+HAVE_GTK_WIDGET_GET_WINDOW
+HAVE_GTK_WIDGET_SET_HAS_WINDOW
+HAVE_GTK_WINDOW_SET_HAS_RESIZE_GRIP
+HAVE_G_TYPE_INIT
HAVE_H_ERRNO
-HAVE_INDEX
+HAVE_IFADDRS_H
+HAVE_IMAGEMAGICK
HAVE_INET_SOCKETS
-HAVE_INVERSE_HYPERBOLIC
+HAVE_INTTYPES_H
+HAVE_JPEG
+HAVE_KERBEROSIV_DES_H
+HAVE_KERBEROSIV_KRB_H
+HAVE_KERBEROS_DES_H
+HAVE_KERBEROS_KRB_H
+HAVE_KRB5_ERROR_E_TEXT
+HAVE_KRB5_ERROR_TEXT
+HAVE_KRB5_H
+HAVE_KRB_H
+HAVE_LANGINFO_CODESET
+HAVE_LIBCOM_ERR
+HAVE_LIBCRYPTO
+HAVE_LIBDES
+HAVE_LIBDES425
+HAVE_LIBDGC
+HAVE_LIBDNET
+HAVE_LIBHESIOD
+HAVE_LIBK5CRYPTO
+HAVE_LIBKRB
+HAVE_LIBKRB4
+HAVE_LIBKRB5
HAVE_LIBKSTAT
-HAVE_LIMITS_H
+HAVE_LIBLOCKFILE
+HAVE_LIBM
+HAVE_LIBMAIL
+HAVE_LIBOTF
+HAVE_LIBPERFSTAT
+HAVE_LIBPNG_PNG_H
+HAVE_LIBPTHREADS
+HAVE_LIBRESOLV
+HAVE_LIBSELINUX
+HAVE_LIBXEXT
+HAVE_LIBXML2
+HAVE_LIBXMU
HAVE_LINUX_VERSION_H
-HAVE_LOGB
+HAVE_LOCALTIME_R
+HAVE_LOCAL_SOCKETS
HAVE_LONG_FILE_NAMES
+HAVE_LONG_LONG_INT
HAVE_LRAND48
+HAVE_LSTAT
+HAVE_LUTIMES
+HAVE_M17N_FLT
+HAVE_MACHINE_SOUNDCARD_H
+HAVE_MACH_MACH_H
+HAVE_MAGICKEXPORTIMAGEPIXELS
+HAVE_MAGICKMERGEIMAGELAYERS
+HAVE_MAILLOCK_H
+HAVE_MALLOC_MALLOC_H
+HAVE_MATHERR
+HAVE_MBSTATE_T
+HAVE_MEMCMP
+HAVE_MEMMOVE
+HAVE_MEMORY_H
+HAVE_MEMSET
HAVE_MENUS
-HAVE_MKDIR
-HAVE_MKTIME
+HAVE_MKSTEMP
+HAVE_MMAP
HAVE_MOUSE
-HAVE_PERROR
+HAVE_MULTILINGUAL_MENU
+HAVE_NANOTIME
+HAVE_NET_IF_DL_H
+HAVE_NET_IF_H
+HAVE_NLIST_H
+HAVE_OTF_GET_VARIATION_GLYPHS
+HAVE_PERSONALITY_LINUX32
+HAVE_PNG
+HAVE_PNG_H
+HAVE_POSIX_MEMALIGN
+HAVE_PROCFS
+HAVE_PSELECT
HAVE_PSTAT_GETDYNAMIC
+HAVE_PTHREAD
+HAVE_PTHREAD_H
+HAVE_PTHREAD_SIGMASK
+HAVE_PTYS
+HAVE_PTY_H
HAVE_PWD_H
HAVE_RANDOM
-HAVE_RENAME
+HAVE_READLINK
+HAVE_READLINKAT
+HAVE_RECVFROM
HAVE_RES_INIT
-HAVE_RINDEX
HAVE_RINT
-HAVE_RMDIR
+HAVE_RSVG
HAVE_SELECT
+HAVE_SENDTO
+HAVE_SEQPACKET
+HAVE_SETITIMER
HAVE_SETLOCALE
-HAVE_SETPGID
HAVE_SETRLIMIT
-HAVE_SETSID
+HAVE_SHARED_GAME_DIR
HAVE_SHUTDOWN
+HAVE_SIGNED_${GLTYPE}
+HAVE_SIGNED_SIG_ATOMIC_T
+HAVE_SIGNED_WCHAR_T
+HAVE_SIGNED_WINT_T
+HAVE_SIGSET_T
+HAVE_SIZE_T
+HAVE_SNPRINTF
HAVE_SOCKETS
HAVE_SOUND
+HAVE_SOUNDCARD_H
+HAVE_SPEED_T
+HAVE_STDINT_H
+HAVE_STDIO_EXT_H
HAVE_STDLIB_H
-HAVE_STRERROR
-HAVE_STRFTIME
+HAVE_STLIB_H_1
+HAVE_STRINGS_H
HAVE_STRING_H
+HAVE_STRNCASECMP
+HAVE_STRSIGNAL
+HAVE_STRTOIMAX
+HAVE_STRTOLL
+HAVE_STRTOULL
+HAVE_STRTOUMAX
+HAVE_STRUCT_ERA_ENTRY
+HAVE_STRUCT_IFREQ_IFR_ADDR
+HAVE_STRUCT_IFREQ_IFR_ADDR_SA_LEN
+HAVE_STRUCT_IFREQ_IFR_BROADADDR
+HAVE_STRUCT_IFREQ_IFR_FLAGS
+HAVE_STRUCT_IFREQ_IFR_HWADDR
+HAVE_STRUCT_IFREQ_IFR_NETMASK
+HAVE_STRUCT_NLIST_N_UN_N_NAME
+HAVE_STRUCT_STAT_ST_ATIMENSEC
+HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
+HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC
+HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
+HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC
+HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC
+HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC
+HAVE_STRUCT_TIMEZONE
+HAVE_STRUCT_TM_TM_ZONE
HAVE_STRUCT_UTIMBUF
-HAVE_SYSINFO
-HAVE_SYSV_SIGPAUSE
+HAVE_ST_DM_MODE
+HAVE_SYMLINK
+HAVE_SYNC
+HAVE_SYS_BITYPES_H
+HAVE_SYS_INTTYPES_H
+HAVE_SYS_LOADAVG_H
+HAVE_SYS_PARAM_H
+HAVE_SYS_RESOURCE_H
HAVE_SYS_SELECT_H
+HAVE_SYS_SOCKET_H
+HAVE_SYS_SOUNDCARD_H
+HAVE_SYS_STAT_H
HAVE_SYS_SYSTEMINFO_H
HAVE_SYS_TIMEB_H
HAVE_SYS_TIME_H
+HAVE_SYS_TYPES_H
+HAVE_SYS_UN_H
+HAVE_SYS_UTSNAME_H
+HAVE_SYS_VLIMIT_H
+HAVE_SYS_WAIT_H
HAVE_TCATTR
-HAVE_TERMIOS_H
-HAVE_TEXT_START
+HAVE_TERM_H
+HAVE_TIFF
HAVE_TIMEVAL
+HAVE_TM_GMTOFF
HAVE_TM_ZONE
+HAVE_TOUCHLOCK
+HAVE_TZNAME
HAVE_TZSET
HAVE_UNISTD_H
+HAVE_UNSIGNED_LONG_LONG_INT
+HAVE_UTIL_H
+HAVE_UTIMENSAT
HAVE_UTIMES
HAVE_UTIME_H
-HAVE_VOLATILE
+HAVE_UTMP_H
+HAVE_VFORK
+HAVE_VFORK_H
+HAVE_WCHAR_H
+HAVE_WCHAR_T
HAVE_WINDOW_SYSTEM
+HAVE_WINSOCK2_H
+HAVE_WORKING_FORK
+HAVE_WORKING_UTIMES
HAVE_WORKING_VFORK
+HAVE_WS2TCPIP_H
+HAVE_XAW3D
+HAVE_XFT
+HAVE_XIM
+HAVE_XKBGETKEYBOARD
+HAVE_XPM
HAVE_XRMSETDATABASE
-HPUX
+HAVE_XSCREENNUMBEROFSCREEN
+HAVE_XSCREENRESOURCESTRING
+HAVE_X_I18N
+HAVE_X_MENU
+HAVE_X_SM
+HAVE_X_WINDOWS
+HAVE__BOOL
+HAVE__FTIME
+HAVE___BUILTIN_UNWIND_INIT
+HAVE___EXECUTABLE_START
+HAVE___FPENDING
INTERNAL_TERMINAL
IS_ANY_SEP
IS_DIRECTORY_SEP
-KERNEL_FILE
-LDAV_SYMBOL
-LINKER
-LINUX_VERSION_CODE
-LISP_FLOAT_TYPE
-LNOFLSH
LOCALTIME_CACHE
MAIL_USE_FLOCK
MAIL_USE_LOCKF
MAIL_USE_POP
MAIL_USE_SYSTEM_LOCK
MAXPATHLEN
-MIN_PTY_KERNEL_VERSION -- only used on Mac
-MODE_LINE_BINARY_TEXT
-MUST_UNDEF__STDC__
NLIST_STRUCT
-NO_ABORT
NO_EDITRES
-NO_MATHERR
-NO_TERMIO
NSIG
NSIG_MINIMUM
-NULL
NULL_DEVICE
ORDINARY_LINK
-O_APPEND
O_RDONLY
O_RDWR
PAGESIZE
-PENDING_OUTPUT_COUNT
-POSIX
PREFER_VSUSP
PTY_ITERATION
PTY_NAME_SPRINTF
PTY_TTY_NAME_SPRINTF
PURESIZE
RUN_TIME_REMAP
-SA_RESTART
-SECTION_ALIGNMENT -- was only used by s/lynxos.h, maybe all code depending on it can be removed.
-SEGMENT_MASK
-SETPGRP_RELEASES_CTTY
SETUP_SLAVE_PTY
SIGALRM
SIGCHLD
SIGPIPE
SIGQUIT
SIGTRAP
-SIGTYPE
-SOLARIS2
STDC_HEADERS
-SYMS_SYSTEM
SYSTEM_PURESIZE_EXTRA
SYSTEM_MALLOC
-SYSV_SYSTEM_DIR
TAB3
TABDLY
TERM
-TEXT_START
-THIS_IS_CONFIGURE
TIME_WITH_SYS_TIME
TIOCSIGSEND
TM_IN_SYS_TIME
ULIMIT_BREAK_VALUE
UNIX98_PTYS
-USE_CRT_DLL
USE_TOOLKIT_SCROLL_BARS
-USG
-USG5
-USG5_4
USG_SUBTTY_WORKS
VALBITS
-WORDS_BIG_ENDIAN
-WRETCODE
-XINT
XOS_NEEDS_TIME_H
-XPNTR
-XSET
-XUINT
-_AIX
-_ARCH_PPC64
-_CALLBACK_
_FILE_OFFSET_BITS
_LP64
-_MALLOC_INTERNAL
+_longjmp
+_setjmp
+abort
+alloca
+close
+emacs
+free
+gmtime
+localtime
+malloc
+random
+read
+realloc
+select
+umask
+vfork
+
+
+src/sysdep.c:
+write
+
+src/syssignal.h:
+signal
+sigmask
+sigsetmask
+
+
+lib/dup2.c:
+dup2
+
+lib/signal.h:
+signal
+
+lib/stdio.h:
+fdopen
+fopen
+fwrite
+popen
+rename
+
+lib/stdlib.h:
+calloc
+srandom (conf_post.h may undo)
+
+lib/strftime.c:
+tzname
+tzset
+
+lib/sys/stat.h:
+mkdir
+
+lib/unistd.h:
+chown
+dup
+dup2
+ftruncate
+isatty
+link
+lseek
+pipe
+rmdir
+sleep
+unlink
+
+
+MS DOS stuff:
+
_NAIVE_DOS_REGS
+
+
+MS stuff:
+
+USE_CRT_DLL
+
+ms-w32.h:
+DebPrint
+EMACSDEBUG
+MUST_UNDEF__STDC__
+
_VARARGS_
_WINSOCKAPI_
_WINSOCK_H
-__ELF__
-__FreeBSD__
-__GNUC__
-__GNU_LIBRARY__
-__GNUC_MINOR__
-__NetBSD__
-__OpenBSD__
-__STDC__
-__arch64__
-__cplusplus
-__hpux
-__ia64__
-__linux__
-__mc68000__
-__mips__
-_longjmp
-_setjmp
-_start
-abort
+
access
-alloca
-brk
calloc
chdir
chmod
chown
-close
-const
creat
ctime
dup
dup2
-edata
-emacs
-etext
execlp
-execvp
+execvp (also emacsclient.c [WINDOWSNT])
fdopen
fileno
fopen
-free
fsync
ftruncate
-fwrite
getdefdir
getdisk
-getenv
getpid
-getuid
-gmtime
-i386
-index
-init_process
isatty
kill
link
-linux
-localtime
-logb
lseek
-m68k
-malloc
mkdir
mktemp
open
pclose
pipe
popen
-random
-read
-realloc
rename
-rindex
rmdir
-sbrk
-select
-sigmask
signal
-sigsetmask
sleep
spawnve
-srandom
strdup
-strerror
stricmp
strnicmp
strupr
sys_nerr
-system
-temacs
tzname
tzset
umask
-unix
unlink
utimbuf
utime
-vfork
-wait
+wait (also movemail.c [WINDOWSNT])
write
-xfree
-# arch-tag: bc80061a-1168-4911-9766-46aaf2640250
+lib-src/ntlib:
+access
+chdir
+chmod
+creat
+dup
+dup2
+execlp
+execvp
+fdopen
+fileno
+fopen
+getpid
+index
+isatty
+lseek
+mkdir
+mktemp
+open
+pclose
+pipe
+popen
+rmdir
+rindex
+sleep
+umask
+unlink
+utime