1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
| | 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.
_MSC_VER Compiling the W32 port with the Microsoft C compiler.
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
** 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_X_WINDOWS Compile support for X Window system
(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.
** 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_FIONREAD
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_MARK_STACK
GC_SETJMP_WORKS
GNU_MALLOC
HAVE_AIX_SMT_EXP
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_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_DIALOGS
HAVE_DIFFTIME
HAVE_DUP2
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_GETDELIM
HAVE_GETGRENT
HAVE_GETHOSTNAME
HAVE_GETIFADDRS
HAVE_GETLINE
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_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_IFADDRS_H
HAVE_IMAGEMAGICK
HAVE_INET_SOCKETS
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_LIBPNG_PNG_H
HAVE_LIBSELINUX
HAVE_LIBXML2
HAVE_LIBXMU
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_MKSTEMP
HAVE_MMAP
HAVE_MULTILINGUAL_MENU
HAVE_NANOTIME
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_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_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_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_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_TERM_H
HAVE_TIFF
HAVE_TIMEVAL
HAVE_TM_GMTOFF
HAVE_TM_ZONE
HAVE_TOUCHLOCK
HAVE_TZNAME
HAVE_TZSET
HAVE_UNSIGNED_LONG_LONG_INT
HAVE_UTIL_H
HAVE_UTIMENSAT
HAVE_UTIMES
HAVE_UTIME_H
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_XPM
HAVE_XRMSETDATABASE
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
MAIL_USE_FLOCK
MAIL_USE_LOCKF
MAIL_USE_POP
MAIL_USE_SYSTEM_LOCK
MAXPATHLEN
NLIST_STRUCT
NO_EDITRES
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
TIME_WITH_SYS_TIME
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
|