Mercurial > hg > xemacs-beta
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 |