1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-24 07:20:37 +00:00
emacs/admin/CPP-DEFINES
2024-02-22 10:21:12 +08:00

537 lines
10 KiB
Plaintext

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
CYGWIN Compiling the Cygwin port.
__CYGWIN__ Ditto
GNU_LINUX
HPUX
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.
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 or MinGW-w64 ports of GCC.
MINGW_W64 Compiling the W32 port with the MinGW-w64 port of GCC.
DARWIN_OS Compiling on macOS or pure Darwin (and using s/darwin.h).
SOLARIS2
USG
USG5_4
HAIKU Compiling on Haiku.
__ANDROID__ Compiling for the Android operating system.
__ANDROID_API__ A numerical "API level" indicating the version of
Android being compiled for; see http://apilevels.com.
** Distinguishing GUIs **
HAVE_NTGUI Use the native W32 GUI for windows, frames, menus&scrollbars.
HAVE_NS Use the NeXT/OpenStep/Cocoa UI under macOS 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_PGTK Compile support for using GTK itself without directly using X Windows APIs.
HAVE_HAIKU Compile support for the Haiku window system.
HAVE_X_WINDOWS Compile support for X Window system. Equivalent to HAVE_X11.
HAVE_ANDROID Compiling the Android GUI interface. Enough of this
code is compiled for the build machine cross-compiling
the Android port to produce an Emacs binary that can
run Lisp code in batch mode, for the purpose of running
the byte-compiler.
ANDROID_STUBIFY The Android GUI interface is being compiled for the build
machine, as above.
** X Windows features **
HAVE_X11R6 Whether or not the system has X11R6. (Always defined.)
HAVE_X11R6_XIM Whether or not the system supports XIM features introduced in R6.
HAVE_X11XTR6 Whether or not the Xt is from X11R6 or newer.
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 or HAVE_PGTK.
HAVE_GTK3 Use GTK version 3 or later. Requires HAVE_X11.
HAVE_XCB_SHAPE Whether or not XCB supports the Nonrectangular Window Shape extension.
HAVE_XCOMPOSITE Whether or not the XCOMPOSITE extension library is present.
HAVE_XDBE Whether or not to use the Xdbe extension for double buffering.
HAVE_XFIXES Whether or not the Xfixes extension library is present.
HAVE_XINERAMA Whether or not the Xinerama extension library is present.
HAVE_XINPUT2 Whether or not to use version 2 of the X Input Extension for input.
HAVE_XINPUT2_1 Whether or not version 2.1 of the X Input Extension is supported.
HAVE_XINPUT2_2 Whether or not version 2.2 of the X Input Extension is supported.
HAVE_XINPUT2_3 Whether or not version 2.3 of the X Input Extension is supported.
HAVE_XINPUT2_4 Whether or not version 2.4 of the X Input Extension is supported.
HAVE_XKB Whether or not the XKB extension library is present.
HAVE_XRANDR Whether or not the RandR extension library is present.
HAVE_XSHAPE Whether or not the Nonrectangular Window Shape extension library is present.
HAVE_XSYNC Whether or not the X Synchronization Extension library is present.
USE_XCB Whether or not the XCB library is used to optimize some X requests.
** 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.
DEBUG_LISP_OBJECT_TYPE Define it in lisp.h enable compile time checks
on Lisp_Object use.
** System specific macros
FIRST_PTY_LETTER
HAVE_PTYS
INTERRUPT_INPUT
NARROWPROTO
SEPCHAR
SYSTEM_TYPE
** 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.
** Miscellaneous defines. Some of these might not be used in the code
anymore, so they can be removed.
AMPERSAND_FULL_NAME
BROKEN_DATAGRAM_SOCKETS
BROKEN_GET_CURRENT_DIR_NAME
BROKEN_PTY_READ_AFTER_EAGAIN
DEFAULT_SOUND_DEVICE
DEVICE_SEP
DIRECTORY_SEP
DONT_REOPEN_PTY
DOUG_LEA_MALLOC
EMACS_CONFIGURATION
EMACS_CONFIG_OPTIONS
EMACS_INT
EMACS_UINT
GC_MARK_SECONDARY_STACK
GC_SETJMP_WORKS
GNU_MALLOC
HAVE_ALLOCA
HAVE_ALLOCA_H
HAVE_ALSA
HAVE_BDFFONT
HAVE_CFMAKERAW
HAVE_CFSETSPEED
HAVE_CLOCK_GETTIME
HAVE_CLOCK_SETTIME
HAVE_COFF_H
HAVE_COM_ERR_H
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_LOCALTIME_R
HAVE_DECL_STRMODE
HAVE_DECL_STRTOIMAX
HAVE_DECL_STRTOLL
HAVE_DECL_STRTOULL
HAVE_DECL_STRTOUMAX
HAVE_DECL_TZNAME
HAVE_DIALOGS
HAVE_ENDGRENT
HAVE_ENDPWENT
HAVE_ENVIRON_DECL
HAVE_EUIDACCESS
HAVE_FORK
HAVE_FREEIFADDRS
HAVE_FREETYPE
HAVE_FSEEKO
HAVE_FUTIMENS
HAVE_FUTIMES
HAVE_FUTIMESAT
HAVE_GAI_STRERROR
HAVE_GCONF
HAVE_GETGRENT
HAVE_GETHOSTNAME
HAVE_GETIFADDRS
HAVE_GETLOADAVG
HAVE_GETOPT_H
HAVE_GETOPT_LONG_ONLY
HAVE_GETPAGESIZE
HAVE_GETPT
HAVE_GETPWENT
HAVE_GETRLIMIT
HAVE_GETRUSAGE
HAVE_GETSOCKNAME
HAVE_GETTIMEOFDAY
HAVE_GET_CURRENT_DIR_NAME
HAVE_GHOSTSCRIPT
HAVE_GIF
HAVE_GNUTLS
HAVE_GPM
HAVE_GRANTPT
HAVE_GSETTINGS
HAVE_GTK3
HAVE_GTK_FILE_SELECTION_NEW
HAVE_GTK_WINDOW_SET_HAS_RESIZE_GRIP
HAVE_IFADDRS_H
HAVE_IMAGEMAGICK
HAVE_INTTYPES_H
HAVE_JPEG
HAVE_KERBEROSIV_KRB_H
HAVE_KERBEROS_KRB_H
HAVE_KRB5_ERROR_E_TEXT
HAVE_KRB5_ERROR_TEXT
HAVE_KRB5_H
HAVE_KRB_H
HAVE_LANGINFO_CODESET
HAVE_LIBDGC
HAVE_LIBKSTAT
HAVE_LIBLOCKFILE
HAVE_LIBMAIL
HAVE_LIBOTF
HAVE_LIBPERFSTAT
HAVE_LIBSELINUX
HAVE_LIBXML2
HAVE_LOCALTIME_R
HAVE_LOCAL_SOCKETS
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_MBSTATE_T
HAVE_MEMORY_H
HAVE_MEMSET
HAVE_MKSTEMP
HAVE_MMAP
HAVE_MULTILINGUAL_MENU
HAVE_NET_IF_DL_H
HAVE_NET_IF_H
HAVE_NLIST_H
HAVE_OTF_GET_VARIATION_GLYPHS
HAVE_PERSONALITY_ADDR_NO_RANDOMIZE
HAVE_PNG
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_READLINK
HAVE_READLINKAT
HAVE_RECVFROM
HAVE_RINT
HAVE_RSVG
HAVE_SELECT
HAVE_SENDTO
HAVE_SEQPACKET
HAVE_SETITIMER
HAVE_SETLOCALE
HAVE_SETRLIMIT
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_SNPRINTF
HAVE_SOCKETS
HAVE_SOUND
HAVE_SOUNDCARD_H
HAVE_STDINT_H
HAVE_STDIO_EXT_H
HAVE_STDLIB_H
HAVE_STRINGS_H
HAVE_STRING_H
HAVE_STRSIGNAL
HAVE_STRTOIMAX
HAVE_STRTOLL
HAVE_STRTOULL
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_TM_TM_ZONE
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_TIME_H
HAVE_SYS_TYPES_H
HAVE_SYS_UN_H
HAVE_SYS_UTSNAME_H
HAVE_SYS_VLIMIT_H
HAVE_SYS_WAIT_H
HAVE_TERM_H
HAVE_TIFF
HAVE_TM_GMTOFF
HAVE_TM_ZONE
HAVE_TOUCHLOCK
HAVE_TZNAME
HAVE_UTIL_H
HAVE_UTIMENSAT
HAVE_UTMP_H
HAVE_VFORK
HAVE_VFORK_H
HAVE_WEBP
HAVE_SQLITE3
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_XPM
HAVE_XRMSETDATABASE
HAVE_XSCREENNUMBEROFSCREEN
HAVE_XSCREENRESOURCESTRING
HAVE_X_I18N
HAVE_X_SM
HAVE_X_WINDOWS
HAVE___BUILTIN_UNWIND_INIT
HAVE___EXECUTABLE_START
INTERNAL_TERMINAL
IS_ANY_SEP
IS_DIRECTORY_SEP
MAIL_USE_FLOCK
MAIL_USE_LOCKF
MAIL_USE_POP
MAIL_USE_SYSTEM_LOCK
MAXPATHLEN
NLIST_STRUCT
NSIG
NSIG_MINIMUM
NULL_DEVICE
PAGESIZE
PTY_ITERATION
PTY_NAME_SPRINTF
PTY_OPEN
PTY_TTY_NAME_SPRINTF
PURESIZE
RUN_TIME_REMAP
SETUP_SLAVE_PTY
SIGNALS_VIA_CHARACTERS
STDC_HEADERS
SYSTEM_PURESIZE_EXTRA
SYSTEM_MALLOC
TAB3
TABDLY
TERM
TIOCSIGSEND
TM_IN_SYS_TIME
UNIX98_PTYS
USE_TOOLKIT_SCROLL_BARS
USG_SUBTTY_WORKS
VALBITS
XOS_NEEDS_TIME_H
_FILE_OFFSET_BITS
_LP64
_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
access
calloc
chdir
chmod
chown
creat
ctime
dup
dup2
execlp
execvp (also emacsclient.c [WINDOWSNT])
fdopen
fileno
fopen
fsync
ftruncate
getdefdir
getdisk
getpid
isatty
kill
link
lseek
mkdir
mktemp
open
pclose
pipe
popen
rename
rmdir
signal
sleep
spawnve
strdup
stricmp
strnicmp
strupr
sys_nerr
tzname
tzset
umask
unlink
utimbuf
utime
wait (also movemail.c [WINDOWSNT])
write
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