Here are some of the cpp macros used, together with some short explanationof their use. Feel free to add more macros and more categories.** Distinguishing OSes **CYGWIN Compiling the Cygwin port.__CYGWIN__ DittoMSDOS 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.DARWIN_OS Compiling on Mac OS X or pure Darwin (and using s/darwin.h).** Distinguishing GUIs **HAVE_NTGUI Use the native W32 GUI for windows, frames, menus&scrollbars.HAVE_NS Use the NeXT/OpenStep/Cocoa UI under Mac OS X or GNUstep.NS_IMPL_GNUSTEP Compile support for GNUstep implementation of NS GUI API.NS_IMPL_COCOA Compile support for Cocoa (Apple) implementation of NS GUI API.HAVE_X11 Compile support for the X11 GUI.HAVE_X_WINDOWS Compile support for X Window systemX11 ?? Makefile.in suggests it's equivalent to HAVE_X11USE_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_W32_P A frame using native MS-Windows GUI.FRAME_WINDOW_P A GUI frame (like X, w32, etc.)** Support for accessing other processes on the system **HAVE_PROCFS The /proc filesystem is supported.** Compile-time options **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.** System specific macros, decribed in detail in src/s/template.hBSTRINGCLASH_DETECTIONCOFFFIRST_PTY_LETTERHAVE_PTYSHAVE_TERMIOHAVE_TERMIOSINTERRUPT_INPUTMAIL_USE_FLOCKNARROWPROTONOMULTIPLEJOBSSEPCHARSIGTYPESYSTEM_TYPEUSE_MMAP_FOR_BUFFERS** Machine specific macros, decribed in detail in src/m/template.hCANNOT_DUMPEXPLICIT_SIGN_EXTENDLOAD_AVE_CVTLOAD_AVE_TYPENO_ARG_ARRAYNO_REMAPVIRT_ADDR_VARIESWORDS_BIG_ENDIAN** Not used anymore by any port, can be cleaned upNO_SOCK_SIGIO** Misc macrosUSER_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** 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.AIXAMPERSAND_FULL_NAMEBCOPY_DOWNWARD_SAFEBCOPY_UPWARD_SAFEBITS_PER_EMACS_INTBITS_PER_LONGBROKEN_DATAGRAM_SOCKETSBROKEN_FIONREADBROKEN_GET_CURRENT_DIR_NAMEBROKEN_NON_BLOCKING_CONNECTBROKEN_PTY_READ_AFTER_EAGAINBROKEN_SA_RESTARTBROKEN_SIGAIOBROKEN_SIGIOBROKEN_SIGPOLLBROKEN_SIGPTYBSD4_2BSD4_3BSD_PGRPSBSD_SYSTEMCLASH_DETECTIONCOFF_BSD_SYMBOLSCRT0_DUMMIESC_DEBUG_SWITCHC_SWITCH_MACHINEC_SWITCH_SYSTEMC_SWITCH_SYSTEM_TEMACSC_SWITCH_X_SYSTEMDATA_SEG_BITSDATA_STARTDBL_MIN_REPLACEMENTDECLARE_GETPWUID_WITH_UID_TDEFAULT_SOUND_DEVICEDEVICE_SEPDIRECTORY_SEPDONT_REOPEN_PTYDOUG_LEA_MALLOCDebPrintEMACSDEBUGEMACS_CONFIGURATIONEMACS_CONFIG_OPTIONSEMACS_INTEMACS_UINTEND_FILES_1FILE_SYSTEM_CASEFLOAT_CHECK_DOMAINFSCALEGAP_USE_BCOPYGC_LISP_OBJECT_ALIGNMENTGC_MARK_SECONDARY_STACKGC_MARK_STACKGC_SETJMP_WORKSGMALLOC_INHIBIT_VALLOCGNU_LIBRARY_PENDING_OUTPUT_COUNTGNU_LINUXGNU_MALLOCHAVE_AIX_SMT_EXPHAVE_ALLOCAHAVE_BCMPHAVE_BCOPYHAVE_CBRTHAVE_CLOSEDIRHAVE_CRTINHAVE_DUP2HAVE_EUIDACCESSHAVE_FMODHAVE_FPATHCONFHAVE_FREXPHAVE_FSYNCHAVE_FTIMEHAVE_GETCWDHAVE_GETDOMAINNAMEHAVE_GETHOSTNAMEHAVE_GETLOADAVGHAVE_GETPAGESIZEHAVE_GETPTHAVE_GETTIMEOFDAYHAVE_GETWDHAVE_H_ERRNOHAVE_INDEXHAVE_INET_SOCKETSHAVE_INVERSE_HYPERBOLICHAVE_LIB64_DIRHAVE_LIBKSTATHAVE_LIBNCURSESHAVE_LIBPTHREADSHAVE_LIBXMUHAVE_LIMITS_HHAVE_LINUX_VERSION_HHAVE_LOGBHAVE_LONG_FILE_NAMESHAVE_LRAND48HAVE_MENUSHAVE_MKDIRHAVE_MKTIMEHAVE_MOUSEHAVE_PERRORHAVE_PSTAT_GETDYNAMICHAVE_PWD_HHAVE_RANDOMHAVE_RENAMEHAVE_RES_INITHAVE_RINDEXHAVE_RINTHAVE_RMDIRHAVE_SELECTHAVE_SETLOCALEHAVE_SETPGIDHAVE_SETRLIMITHAVE_SETSIDHAVE_SHUTDOWNHAVE_SOCKETSHAVE_SOUNDHAVE_STDLIB_HHAVE_STRERRORHAVE_STRFTIMEHAVE_STRING_HHAVE_STRUCT_UTIMBUFHAVE_SYSINFOHAVE_SYSV_SIGPAUSEHAVE_SYS_SELECT_HHAVE_SYS_SYSTEMINFO_HHAVE_SYS_TIMEB_HHAVE_SYS_TIME_HHAVE_TCATTRHAVE_TERMIOS_HHAVE_TEXT_STARTHAVE_TIMEVALHAVE_TM_ZONEHAVE_TZSETHAVE_UNISTD_HHAVE_UTIMESHAVE_UTIME_HHAVE_VOLATILEHAVE_WINDOW_SYSTEMHAVE_WORKING_VFORKHAVE_XRMSETDATABASEHPUXIBMR2AIXINHIBIT_X11R6_XIMINTERNAL_TERMINALIS_ANY_SEPIS_DIRECTORY_SEPKERNEL_FILELDAV_SYMBOLLD_SWITCH_MACHINELD_SWITCH_MACHINE_TEMACSLD_SWITCH_SYSTEMLD_SWITCH_SYSTEM_TEMACSLD_SWITCH_SYSTEM_tmpLD_SWITCH_X_DEFAULTLIBS_DEBUGLIBS_MACHINELIBS_SYSTEMLIBS_TERMCAPLIBX11_SYSTEMLIBXMULIB_GCCLIB_MATHLIB_MOTIFLIB_STANDARDLINKERLINUX_VERSION_CODELISP_FLOAT_TYPELNOFLSHLOCALTIME_CACHEMAIL_USE_LOCKFMAIL_USE_POPMAIL_USE_SYSTEM_LOCKMAXPATHLENMIN_PTY_KERNEL_VERSION -- only used on MacMODE_LINE_BINARY_TEXTMUST_UNDEF__STDC__NEED_BSDTTYNEED_ERRNONEED_LIBWNEED_UNISTD_HNLIST_STRUCTNOT_C_CODENOT_USING_MOTIFNO_ABORTNO_DIR_LIBRARYNO_EDITRESNO_MATHERRNO_SHARED_LIBSNO_TERMIONSIGNSIG_MINIMUMNULLNULL_DEVICEORDINARY_LINKOTHER_FILESO_APPENDO_BINARYO_CREATO_EXCLO_RDONLYO_RDWRO_TEXTO_TRUNCO_WRONLYPAGESIZEPENDING_OUTPUT_COUNTPOSIXPOSIX_SIGNALSPREFER_VSUSPPTY_ITERATIONPTY_NAME_SPRINTFPTY_OPENPTY_TTY_NAME_SPRINTFPURESIZERUN_TIME_REMAPSA_RESTARTSECTION_ALIGNMENTSEGMENT_MASKSETPGRP_RELEASES_CTTYSETUP_SLAVE_PTYSIGALRMSIGCHLDSIGHUPSIGKILLSIGNALS_VIA_CHARACTERSSIGPIPESIGQUITSIGTRAPSIGTYPESOLARIS2START_FILESSTART_FILES_1STDC_HEADERSSYMS_SYSTEMSYSTEM_PURESIZE_EXTRASYSTEM_MALLOCSYSV_SYSTEM_DIRSrandomTAB3TABDLYTERMTERMINFOTEXT_STARTTHIS_IS_CONFIGURETHIS_IS_MAKEFILETIME_WITH_SYS_TIMETIOCSIGSENDTM_IN_SYS_TIMEULIMIT_BREAK_VALUEUNEXECUNIX98_PTYSUSE_CRT_DLLUSE_MAC_IMAGE_IOUSE_TOOLKIT_SCROLL_BARSUSGUSG5USG5_4USG_SUBTTY_WORKSVALBITSWORDS_BIG_ENDIANWRETCODEXINTXOS_NEEDS_TIME_HXPNTRXSETXUINT_AIX_ARCH_PPC64_CALLBACK__FILE_OFFSET_BITS_LP64_MALLOC_INTERNAL_NAIVE_DOS_REGS_VARARGS__WINSOCKAPI__WINSOCK_H__ELF____FreeBSD____FreeBSD_version__GNUC____GNU_LIBRARY____GNUC_MINOR____NetBSD____OpenBSD____STDC____arch64____cplusplus__hpux__ia64____linux____mc68000____mips___longjmp_setjmp_startabortaccessallocabcmpbcopybrkbzerocallocchdirchmodchowncloseconstcreatctimedupdup2edataemacsetextexeclpexecvpfdopenfilenofopenfreefsyncftruncatefwritegetdefdirgetdiskgetenvgetpidgetuidgmtimei386indexinit_processisattykilllinklinuxlocaltimelogblseekm68kmallocmkdirmktempopenpclosepipepopenrandomreadreallocrenamerindexrmdirsbrkselectsigmasksignalsigsetmasksleepspawnvesrandomstrdupstrerrorstricmpstrnicmpstruprsys_nerrsystemtemacstznametzsetumaskunixunlinkutimbufutimevforkwaitwritexfree# arch-tag: bc80061a-1168-4911-9766-46aaf2640250