comparison src/compiler.h @ 2500:3d8143fc88e1

[xemacs-hg @ 2005-01-24 23:33:30 by ben] get working with VC7 config.inc.samp: Declare OPTIONAL_LIBRARY_DIR as root of library directories. Redo all graphics library defaults to mirror the versions and directories in the current binary aux distribution on xemacs web site. Enable TIFF and COMPFACE by default since you can now compile with them and binary libs are provided. xemacs.mak: Put our own directories first in case of conflict (e.g. config.h in compface). xemacs.mak: Use MSVCRT to avoid link problems. s/windowsnt.h: bytecode.c, print.c: Add casts to avoid warning. compiler.h: Add MSC_VERSION and include definitions of DOESNT_RETURN and friends here, like for GCC. Need different definitions for VC7 and VC6. s/windowsnt.h: Remove stuff moved to compiler.h. Disable warning 4646 ("function declared with __declspec(noreturn) has non-void return type") on VC7 since lots of Lisp primitives trigger this and there is no easy way to kludge around the warning. glyphs-eimage.c: Some really nasty hacks to allow TIFF and JPEG to both be compiled. #### The better solution is to move the TIFF and JPEG code to different files. glyphs-msw.c: Define __STDC__ to avoid problems with compface.h. intl-auto-encap-win32.c, intl-auto-encap-win32.h, intl-encap-win32.c, syswindows.h: Those wankers at Microsoft cannot leave well enough alone. Various functions change parameter types semi-randomly between VC6 and VC7, so we need to include our own versions that can handle both kinds with appropriate casting. EmacsFrame.c, EmacsShell-sub.c, EmacsShell.c, alloc.c, alloca.c, buffer.c, bytecode.c, charset.h, chartab.c, cm.c, console-stream.c, console.c, data.c, debug.h, device-msw.c, device-tty.c, device-x.c, doprnt.c, dumper.c, dynarr.c, elhash.c, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, events.c, extents.c, faces.c, file-coding.c, fileio.c, fns.c, font-lock.c, frame-gtk.c, frame-x.c, frame.c, free-hook.c, gccache-gtk.c, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-x.c, glyphs.c, gtk-glue.c, gutter.c, input-method-xlib.c, insdel.c, intl-win32.c, keymap.c, lisp.h, lread.c, lstream.c, macros.c, malloc.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, mule-coding.c, native-gtk-toolbar.c, number.c, objects-msw.c, objects.c, print.c, process-nt.c, process-unix.c, process.c, ralloc.c, rangetab.c, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, regex.c, scrollbar-gtk.c, scrollbar-x.c, search.c, select-x.c, signal.c, specifier.c, specifier.h, strftime.c, sunplay.c, symbols.c, sysdep.c, sysproc.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, ui-gtk.c, unexnt.c, unicode.c, win32.c, window.c, xgccache.c, s/windowsnt.h: abort() -> ABORT(). Eliminate preprocessor games with abort() since it creates huge problems in VC7, solvable only by including massive amounts of files in every compile (and not worth it).
author ben
date Mon, 24 Jan 2005 23:34:34 +0000
parents ecf1ebac70d8
children facf3239ba30
comparison
equal deleted inserted replaced
2499:4c5ee4d2e921 2500:3d8143fc88e1
96 # define GCC_VERSION NEED_GCC (__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) 96 # define GCC_VERSION NEED_GCC (__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
97 # else 97 # else
98 # define GCC_VERSION 0 98 # define GCC_VERSION 0
99 # endif /* __GNUC__ */ 99 # endif /* __GNUC__ */
100 #endif /* GCC_VERSION */ 100 #endif /* GCC_VERSION */
101
102 #ifdef _MSC_VER
103 #define MSC_VERSION _MSC_VER
104 #else
105 #define MSC_VERSION 0
106 #endif
101 107
102 /* GCC < 2.6.0 could only declare one attribute per function. In that case, 108 /* GCC < 2.6.0 could only declare one attribute per function. In that case,
103 we define DOESNT_RETURN in preference to PRINTF_ARGS, which is only used 109 we define DOESNT_RETURN in preference to PRINTF_ARGS, which is only used
104 for checking args against the string spec. */ 110 for checking args against the string spec. */
105 #ifndef PRINTF_ARGS 111 #ifndef PRINTF_ARGS
122 __attribute__ ((noreturn)) 128 __attribute__ ((noreturn))
123 # else /* GCC_VERSION < NEED_GCC (2, 5, 0) */ 129 # else /* GCC_VERSION < NEED_GCC (2, 5, 0) */
124 # define DOESNT_RETURN_TYPE(rettype) rettype volatile 130 # define DOESNT_RETURN_TYPE(rettype) rettype volatile
125 # define DECLARE_DOESNT_RETURN_TYPE(rettype,decl) rettype volatile decl 131 # define DECLARE_DOESNT_RETURN_TYPE(rettype,decl) rettype volatile decl
126 # endif /* GCC_VERSION >= NEED_GCC (2, 5, 0) */ 132 # endif /* GCC_VERSION >= NEED_GCC (2, 5, 0) */
127 # else /* not gcc */ 133 # elif (MSC_VERSION >= 1200)
134 /* MSVC 6.0 has a mechanism to declare functions which never return */
135 # define DOESNT_RETURN_TYPE(rettype) __declspec(noreturn) rettype
136 # define DECLARE_DOESNT_RETURN_TYPE(rettype,decl) \
137 __declspec(noreturn) rettype XCDECL decl
138 # if (MSC_VERSION >= 1300)
139 /* VC++ 7 issues warnings about return statements in __declspec(noreturn)
140 functions; this problem didn't exist under VC++ 6 */
141 # define RETURN_NOT_REACHED(value) DO_NOTHING
142 # endif
143 # else /* not gcc, VC++ */
128 # define DOESNT_RETURN_TYPE(rettype) rettype 144 # define DOESNT_RETURN_TYPE(rettype) rettype
129 # define DECLARE_DOESNT_RETURN_TYPE(rettype,decl) rettype decl 145 # define DECLARE_DOESNT_RETURN_TYPE(rettype,decl) rettype decl
130 # endif /* GCC_VERSION > NEED_GCC (0, 0, 0) */ 146 # endif /* GCC_VERSION > NEED_GCC (0, 0, 0) */
131 #endif /* DOESNT_RETURN_TYPE */ 147 #endif /* DOESNT_RETURN_TYPE */
132 #ifndef DOESNT_RETURN 148 #ifndef DOESNT_RETURN
143 #endif 159 #endif
144 160
145 /* More ways to shut up compiler. This works in Fcommand_loop_1(), 161 /* More ways to shut up compiler. This works in Fcommand_loop_1(),
146 where there's an infinite loop in a function returning a Lisp object. 162 where there's an infinite loop in a function returning a Lisp object.
147 */ 163 */
148 #if defined (_MSC_VER) || defined (__SUNPRO_C) || defined (__SUNPRO_CC) || \ 164 #if (defined (_MSC_VER) && MSC_VERSION < 1300) || defined (__SUNPRO_C) || \
149 (defined (DEC_ALPHA) && defined (OSF1)) 165 defined (__SUNPRO_CC) || (defined (DEC_ALPHA) && defined (OSF1))
150 # define DO_NOTHING_DISABLING_NO_RETURN_WARNINGS if (0) return Qnil 166 # define DO_NOTHING_DISABLING_NO_RETURN_WARNINGS if (0) return Qnil
151 #else 167 #else
152 # define DO_NOTHING_DISABLING_NO_RETURN_WARNINGS DO_NOTHING 168 # define DO_NOTHING_DISABLING_NO_RETURN_WARNINGS DO_NOTHING
153 #endif 169 #endif
154 170