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. ** Distinguishing OSes ** MAC_OS Compiling for the `mac' window-system. MAC_OS8 Compiling for Mac OS Classic (v8 or v9). No longer supported, all code using it can be removed. MAC_OSX Compiling for Mac OS X. Not bare Darwin. CYGWIN Compiling the Cygwin port. __CYGWIN__ Ditto MSDOS Compiling the MS-DOS port. __MSDOS__ Ditto. __DJGPP__ Major version number of the DJGPP library for the DOS port. __DJGPP_MINOR__ Minor version number of the DJGPP library. __GO32__ Compiling the DOS port with DJGPP v1.x (obsolete). DOS_NT Compiling for either the MS-DOS or native MS-Windows port. WINDOWSNT Compiling the native MS-Windows (W32) port. __MINGW32__ Compiling the W32 port with the MinGW port of GCC. _MSC_VER Compiling the W32 port with the Microsoft C compiler. IRIX6_5 Compiling on Irix-6.5 ** Distinguishing GUIs ** HAVE_NTGUI Use the native W32 GUI for windows, frames, menus&scrollbars. HAVE_CARBON Compile support for the Carbon GUI. Requires MAC_OS? HAVE_X11 Compile support for the X11 GUI. HAVE_X_WINDOWS Compile support for X Window system X11 ?? Makefile.in suggests it's equivalent to HAVE_X11 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. ** Frame types ** FRAME_TERMCAP_P A tty (character terminal) frame. FRAME_X_P A frame on X Window system. FRAME_MSDOS_P An MS-DOS frame (used only by the DOS port). FRAME_MAC_P A Mac frame. FRAME_W32_P A frame using native MS-Windows GUI. FRAME_WINDOW_P A GUI frame (like X, w32, etc.) ** Compile-time options ** REL_ALLOC Compile in the relocatable memory allocator ralloc.c. SYSTEM_MALLOC Use the system library's malloc. ** Replace, the definition is trivial: SWITCH_ENUM_CAST ** Temporarily put defines from removed files here, check if these macros need to be documented or removed because they are not used anymore. ** ADDR_CORRECT ADJUST_TEXTBASE ADJUST_TEXT_SCNHDR_SIZE A_TEXT_OFFSET A_TEXT_SEEK BAUD_CONVERT BROKEN_FIONREAD BROKEN_SIGIO BROKEN_TIOCGETC BROKEN_TIOCGWINSZ BSD4_2 BSD4_3 BSD4_4 BSD_PGRPS BSD_SYSTEM BSTRING CANNOT_DUMP CLASH_DETECTION COFF COFF_BSD_SYMBOLS CRT0_DUMMIES C_DEBUG_SWITCH C_OPTIMIZE_SWITCH C_SWITCH_MACHINE C_SWITCH_SYSTEM DATA_END DATA_SECTION_ALIGNMENT DATA_SEG_BITS DATA_START DEBUG DECLARE_GETPWUID_WITH_UID_T DEFAULT_ENTRY_ADDRESS DOT_GLOBAL_START DUMMIES ELF EXEC_PAGESIZE EXPLICIT_SIGN_EXTEND FIRST_PTY_LETTER FSCALE GC_MARK_STACK GC_SETJMP_WORKS GETPGRP_NO_ARG GNU_MALLOC HAVE_ALLOCA HAVE_CLOSEDIR HAVE_CONFIG_H HAVE_CRTN HAVE_GETTIMEOFDAY HAVE_INET_SOCKETS HAVE_LIBDNET HAVE_LIBINTL HAVE_LIBRESOLV HAVE_PTYS HAVE_SELECT HAVE_SOCKETS HAVE_SYSVIPC HAVE_SYSV_SIGPAUSE HAVE_SYS_WAIT_H HAVE_TCATTR HAVE_TERMIO HAVE_TERMIOS HAVE_TEXT_START HAVE_UNION_WAIT HAVE_UNISTD_H HAVE_UNIX_DOMAIN HAVE_UTIMES HAVE_WAIT_HEADER HAVE_X11R6 HAVE_XSCREENNUMBEROFSCREEN HAVE_X_WINDOWS INHIBIT_X11R6_XIM INTEL386 INTERRUPT_INPUT IRIS IRIS_4D KERNEL_FILE LDAV_SYMBOL LD_SWITCH_MACHINE LD_SWITCH_SYSTEM LD_SWITCH_SYSTEM_TEMACS LIBS_DEBUG LIBS_MACHINE LIBS_SYSTEM LIBS_TERMCAP LIBX11_SYSTEM LIBXMU LIB_GCC LIB_MOTIF LIB_STANDARD LIB_X11_LIB LINKER LOAD_AVE_CVT LOAD_AVE_TYPE MAIL_USE_FLOCK MKDIR_PROTOTYPE MOTIF NARROWPROTO NEED_ERRNO NEED_PTEM_H NEED_SIOCTL NLIST_STRUCT NOMULTIPLEJOBS NONSYSTEM_DIR_LIBRARY NOT_C_CODE NO_ARG_ARRAY NO_REMAP NO_SIOCTL_H NO_SOCK_SIGIO NO_TERMIO NO_UNION_TYPE NSIG NSIG_MINIMUM OBJECTS_MACHINE ORDINARY_LINK O_NDELAY PENDING_OUTPUT_COUNT PERROR PNTR_COMPARISON_TYPE POSIX_SIGNALS PREFER_VSUSP PTY_ITERATION PTY_NAME_SPRINTF PTY_OPEN PTY_TTY_NAME_SPRINTF PURESIZE READ REL_ALLOC RUN_TIME_REMAP SECTION_ALIGNMENT SEEK SEGMENT_MASK SEGSIZ SETUP_SLAVE_PTY SIGMASKTYPE SIGNALS_VIA_CHARACTERS SIGN_EXTEND_CHAR SIGTYPE START_FILES SVR4 SYSTEM_MALLOC SYSTEM_TYPE SYSV_PTYS SYSV_SYSTEM_DIR S_IEXEC S_IFDIR S_IFLNK S_IFMT S_IREAD S_IWRITE TERMCAP TERMINFO TEXT_END TEXT_START THIS_IS_MAKEFILE ULIMIT_BREAK_VALUE UNEXEC USE_MMAP_FOR_BUFFERS USG USG5 USG5_3 USG5_4 USG_JOBCTRL USG_SHARED_LIBRARIES VIRT_ADDR_VARIES WORDS_BIG_ENDIAN WORD_MACHINE XINT XSET XUINT X_DEFAULT_FONT _ABIN32 _MIPS_SZLONG _POSIX_SOURCE _longjmp _setjmp alloca data_start drem emacs entry etext fatal fchmod getpgrp hp9000s800 index jmp_buf longjmp m68000 m68k magic mc68000 mips sel subprocesses sun text_start # arch-tag: bc80061a-1168-4911-9766-46aaf2640250