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. ** 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. ** All references to these symbols should be removed, all their definitions are gone ** NU romp ** Temporarily put defines from removed files here, check if these macros need to be documented or removed because they are not used anymore. ** ABORT_RETURN_TYPE ADDR_CORRECT ADJUST_EXEC_HEADER ADJUST_TEXTBASE ADJUST_TEXT_SCNHDR_SIZE A_TEXT_OFFSET A_TEXT_SEEK BAUD_CONVERT BROKEN_FIONREAD BROKEN_SELECT_NON_X 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_COMPILE CRT0_DUMMIES C_DEBUG_SWITCH C_OPTIMIZE_SWITCH C_SWITCH_ASM 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 DONT_NEED_ENVIRON DOT_GLOBAL_START DUMMIES EEOF ELF EXEC_HDR_TYPE EXEC_MAGIC EXEC_PAGESIZE EXPLICIT_SIGN_EXTEND EXTRA_INITIALIZE FIRST_PTY_LETTER FREE_RETURN_TYPE FSCALE F_SETOWN_BUG F_SETOWN_SOCK_NEG GC_MARK_STACK GC_SETJMP_WORKS GETPGRP_NO_ARG GNU_MALLOC HAVE_ALLOCA HAVE_BROKEN_INET_ADDR 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_XFREE386 HAVE_XSCREENNUMBEROFSCREEN HAVE_X_WINDOWS HEADER_INCL_IN_TEXT IBMAIX INHIBIT_X11R6_XIM INIT_BAUD_RATE INTEL386 INTERRUPT_INPUT IN_UNEXEC IRIS IRIS_4D IRIX6_5 IRIX_FORCE_32_BITS KEEP_OLD_PADDR KEEP_OLD_TEXT_SCNPTR KERNEL_FILE LDAV_SYMBOL LD_SWITCH_MACHINE LD_SWITCH_SYSTEM LD_SWITCH_SYSTEM_TEMACS LD_TEXT_START_ADDR LIBS_DEBUG LIBS_MACHINE LIBS_SYSTEM LIBS_TERMCAP LIBX11_MACHINE LIBX11_SYSTEM LIBXMU LIB_GCC LIB_MOTIF LIB_STANDARD LIB_X11_LIB LINKER LOAD_AVE_CVT LOAD_AVE_TYPE L_SET MAIL_PROGRAM_NAME MAIL_USE_FLOCK MAXNAMLEN MEMMOVE_MISSING MEMORY_IN_STRING_H MKDIR_PROTOTYPE MOTIF NARROWPROTO NEED_ERRNO NEED_NET_ERRNO_H NEED_PTEM_H NEED_SIOCTL NEW_PROGRAM_H NEW_SECTION_H NLIST_NAME_UNION NLIST_STRUCT NOMULTIPLEJOBS NONSYSTEM_DIR_LIBRARY NOT_C_CODE NO_ARG_ARRAY NO_GET_LOAD_AVG NO_MODE_T NO_PTY_H NO_REMAP NO_SIOCTL_H NO_SOCKETS_IN_FILE_SYSTEM NO_SOCK_SIGIO NO_TERMIO NO_UNION_TYPE NO_UNION_TYPE NSIG NSIG_MINIMUM OBJECTS_MACHINE ORDINARY_LINK OSF1 O_NDELAY PATCH_INDEX 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 SHORTNAMES SHORT_CAST_BUG SIGMASKTYPE SIGNALS_VIA_CHARACTERS SIGN_EXTEND_CHAR SIGTYPE SIG_BLOCK SKTPAIR SMAIL START_FILES SUNOS4 SUNOS_LOCALTIME_BUG SVR4 SWITCH_ENUM_BUG SYMS_START 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 TEXT_START_ADDR THIS_IS_MAKEFILE TPIX ULIMIT_BREAK_VALUE UNEXEC USE_DL_STUBS USE_GETOBAUD USE_MMAP_FOR_BUFFERS USE_NONANSI_DEFUN USG USG5 USG5_3 USG5_4 USG_JOBCTRL USG_SHARED_LIBRARIES VIRT_ADDR_VARIES WORDS_BIG_ENDIAN WORD_MACHINE WRITE X11R4 XICCC XINT XSET XUINT X_DEFAULT_FONT _ABIN32 _MIPS_SZLONG _POSIX_SOURCE __main _longjmp _setjmp _sobuf aix386 alloca aouthdr data_start drem dsize emacs entry etext fatal fchmod getpgrp ghs hp9000s800 index internal_with_output_to_temp_buffer jmp_buf longjmp m68000 m68k magic mc68000 mips sel subprocesses sun text_start # arch-tag: bc80061a-1168-4911-9766-46aaf2640250