diff options
Diffstat (limited to 'nt')
-rw-r--r-- | nt/.arch-inventory | 3 | ||||
-rw-r--r-- | nt/ChangeLog | 168 | ||||
-rw-r--r-- | nt/INSTALL | 76 | ||||
-rw-r--r-- | nt/README | 3 | ||||
-rw-r--r-- | nt/README.W32 | 269 | ||||
-rw-r--r-- | nt/addpm.c | 43 | ||||
-rw-r--r-- | nt/addsection.c | 28 | ||||
-rw-r--r-- | nt/cmdproxy.c | 53 | ||||
-rw-r--r-- | nt/config.nt | 79 | ||||
-rwxr-xr-x | nt/configure.bat | 130 | ||||
-rw-r--r-- | nt/ddeclient.c | 4 | ||||
-rw-r--r-- | nt/emacs-src.tags | 6 | ||||
-rw-r--r-- | nt/emacs.manifest | 12 | ||||
-rw-r--r-- | nt/emacs.rc | 8 | ||||
-rw-r--r-- | nt/emacsclient.rc | 8 | ||||
-rw-r--r-- | nt/gmake.defs | 10 | ||||
-rw-r--r-- | nt/makefile.w32-in | 46 | ||||
-rw-r--r-- | nt/nmake.defs | 9 | ||||
-rw-r--r-- | nt/preprep.c | 32 | ||||
-rw-r--r-- | nt/runemacs.c | 5 | ||||
-rw-r--r-- | nt/zipdist.bat | 49 |
21 files changed, 852 insertions, 189 deletions
diff --git a/nt/.arch-inventory b/nt/.arch-inventory deleted file mode 100644 index a2db727951f..00000000000 --- a/nt/.arch-inventory +++ /dev/null @@ -1,3 +0,0 @@ -source ^subdirs\.el$ - -# arch-tag: 01b87183-9d94-4b6b-93cb-fece25c4eec9 diff --git a/nt/ChangeLog b/nt/ChangeLog index 84fc6001461..2fee776a265 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,4 +1,8 @@ -2010-12-31 Eli Zaretskii <eliz@gnu.org> +2011-01-07 Eli Zaretskii <eliz@gnu.org> + + * config.nt (HAVE___BUILTIN_UNWIND_INIT) [GCC >= 2.8]: Define. + +2011-01-02 Eli Zaretskii <eliz@gnu.org> * configure.bat (end): Unset environment variables used by this batch file. @@ -6,15 +10,167 @@ * INSTALL: Update the information about PNG support libraries. (Bug#7716) -2010-08-02 Óscar Fuentes <ofv@wanadoo.es> + * README.W32: Update the information about PNG support libraries. + +2010-11-23 Eli Zaretskii <eliz@gnu.org> + + * config.nt (EXTERNALLY_VISIBLE): Define. + +2010-10-13 Juanma Barranquero <lekktu@gmail.com> + + * INSTALL: Refer to `dynamic-library-alist'. + +2010-10-06 Juanma Barranquero <lekktu@gmail.com> + + * INSTALL: Add note about problematic characters passed to configure. + +2010-10-01 Eli Zaretskii <eliz@gnu.org> + + * makefile.w32-in (frc, TAGS, TAGS-gmake, TAGS-nmake): New targets. + emacs-src.tags: New file. + + * gmake.defs: Add a comment with a single quote to fix + fontification. (Bug#7102) + +2010-09-29 Eli Zaretskii <eliz@gnu.org> + + * configure.bat: Fix the condition for copying paths.h into + ../src/epaths.h. + +2010-09-28 Juanma Barranquero <lekktu@gmail.com> + + * addpm.c (entry, add_registry, main): + * addsection.c (file_data, open_input_file, open_output_file) + (find_section, PTR_TO_OFFSET, copy_executable_and_add_section) + (COPY_CHUNK): + * cmdproxy.c (vfprintf, fprintf, printf, fail, warn, skip_space) + (skip_nonspace, get_next_token, search_dir, make_absolute) + (spawn, main): + * preprep.c (file_data, open_input_file, open_output_file) + (open_inout_file, find_section, PTR_TO_OFFSET, COPY_CHUNK, main): + Use const char*. + + * cmdproxy.c (stdin): Don't define, not used. + (main): Don't assign remlen after last use. + +2010-09-22 Juanma Barranquero <lekktu@gmail.com> + + * configure.bat: Err out when the argument of --cflags contains + invalid characters (check implemented only for GCC). (Bug#6820) + +2010-08-19 Juanma Barranquero <lekktu@gmail.com> + + * addpm.c (add_registry): Create App Paths of type REG_EXPAND_SZ. + +2010-08-12 Jason Rumney <jasonr@gnu.org> + + * addpm.c (add_registry): Set path for runemacs.exe to use. + +2010-08-08 Óscar Fuentes <ofv@wanadoo.es> * cmdproxy.c (main): Use _snprintf instead of wsprintf, which has a 1024 char limit on Windows (bug#6647). +2010-08-02 Juanma Barranquero <lekktu@gmail.com> + + * config.nt (TIME_WITH_SYS_TIME): Remove #undef, unused (bug#6754). + Suggested by Dan Nicolaescu <dann@ics.uci.edu>. + +2010-07-29 Dan Nicolaescu <dann@ics.uci.edu> + + * config.nt: Remove code referring to NO_REMAP, unused. + +2010-07-25 Christoph Scholtes <cschol2112@gmail.com> + + Build binary distros on Windows using emacs-VERSION as root dir name. + + * makefile.w32-in: Copy README.W32 to installation directory + during `make install'. Remove README.W32 with `distclean' (in + case Emacs was installed in place). Use temporary directory to + create distribution zip files in `dist' target. + * zipdist.bat: Simplify code using temporary directory. + +2010-07-25 Juanma Barranquero <lekktu@gmail.com> + + * runemacs.c (set_user_model_id): Fix prototype. + +2010-07-24 Christoph Scholtes <cschol2112@gmail.com> + + New make target for Windows platform: make dist (bug#6602) + + * INSTALL: Document new dist target and add section about + creating binary distributions. + * README.W32: Relocate from admin/nt/ directory. + * configure.bat: New parameter `--distfiles'. + * makefile.w32-in: Add version number, new target `dist'. + Add new target `install-shortcuts'. + * zipdist.bat: New file; create zipped binary distribution, + replaces admin/nt/makedist.bat. + +2010-07-21 Juanma Barranquero <lekktu@gmail.com> + + * INSTALL: Add note about backslashes in Windows paths. + Fix typos. Simplify references to Windows versions. + +2010-07-20 Juanma Barranquero <lekktu@gmail.com> + + * addpm.c (add_registry, main): + * cmdproxy.c (get_env_size): + * ddeclient.c (main): + * runemacs.c (set_user_model_id): + Convert definitions to standard C. + +2010-07-20 Juanma Barranquero <lekktu@gmail.com> + + * gmake.defs (CHECKING_CFLAGS) [ENABLECHECKS]: Add -fno-crossjumping. + +2010-07-18 Juanma Barranquero <lekktu@gmail.com> + + * configure.bat: New option --enable-checking. + * gmake.defs, nmake.defs (CHECKING_CFLAGS): New define. + (CFLAGS): Include it. + +2010-07-12 Dan Nicolaescu <dann@ics.uci.edu> + + * config.nt (volatile): Remove definition. + +2010-07-07 Andreas Schwab <schwab@linux-m68k.org> + + * config.nt (HAVE_BCOPY, HAVE_BCMP): Remove undefs. + (HAVE_MEMCPY, HAVE_MEMMOVE, HAVE_MEMSET, HAVE_MEMCMP): Add undefs. + +2010-07-02 Juanma Barranquero <lekktu@gmail.com> + + * config.nt (__P): Remove. + +2010-06-06 Dan Nicolaescu <dann@ics.uci.edu> + + * config.nt: Remove code depending on BSTRING. + +2010-06-03 Glenn Morris <rgm@gnu.org> + + * config.nt: Remove NOT_C_CODE tests, it is always true now. + +2010-05-13 Glenn Morris <rgm@gnu.org> + + * config.nt (LD_SWITCH_X_SITE, C_SWITCH_X_SITE): Remove undefs. + 2010-05-07 Chong Yidong <cyd@stupidchicken.com> * Version 23.2 released. +2010-05-04 Glenn Morris <rgm@gnu.org> + + * config.nt (LD_SWITCH_X_SITE_AUX): Remove. + +2010-04-20 Lewis Perin <perin@panix.com> (tiny change) + + * emacs.manifest: Add trustInfo section to Windows manifest. + +2010-03-10 Chong Yidong <cyd@stupidchicken.com> + + * Branch for 23.2. + 2010-01-13 Martin Rudalics <rudalics@gmx.at> * emacsclient.rc: Fix format of "LegalCopyright" value. @@ -60,8 +216,8 @@ 2009-01-26 Jason Rumney <jasonr@gnu.org> - * emacsclient.rc, emacs.rc: Swap name and description. Remove - Windows versions. + * emacsclient.rc, emacs.rc: Swap name and description. + Remove Windows versions. 2009-01-15 Jason Rumney <jasonr@gnu.org> @@ -113,7 +269,7 @@ * config.nt (HAVE_FACES): Remove, unused. 2008-06-26 Juanma Barranquero <lekktu@gmail.com> - Eli Zaretskii <eliz@gnu.org> + Eli Zaretskii <eliz@gnu.org> * nmake.defs (FONT_CFLAGS): * gmake.defs (FONT_CFLAGS): Remove. @@ -129,7 +285,7 @@ * config.nt: Remove reference to UNEXEC_SRC. 2008-06-23 Juanma Barranquero <lekktu@gmail.com> - Eli Zaretskii <eliz@gnu.org> + Eli Zaretskii <eliz@gnu.org> * gmake.defs (DEBUG_FLAG, DEBUG_LINK) [!NODEBUG]: Don't hardcode -gstabs+, use DEBUG_INFO. diff --git a/nt/INSTALL b/nt/INSTALL index 6de3ad29835..c051e5ca72b 100644 --- a/nt/INSTALL +++ b/nt/INSTALL @@ -1,5 +1,5 @@ - Building and Installing Emacs - on Windows NT/2K/XP and Windows 95/98/ME + Building and Installing Emacs on Windows + (from 95 to 7 and beyond) Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. @@ -158,7 +158,7 @@ emacs source with text!=binary. [2] fails when needs to invoke shell commands; okay invoking gcc etc. [3] requires LC_MESSAGES support to build; cannot build with early - versions of cygwin. + versions of Cygwin. [4] may fail on Windows 9X and Windows ME; if so, install Bash. [5] fails when building leim due to the use of cygwin style paths. May work if building emacs without leim. @@ -174,8 +174,8 @@ like this, we recommend the use of the supported compilers mentioned in the previous paragraph. - You will also need a copy of the Posix cp, rm and mv programs. These - and other useful Posix utilities can be obtained from one of several + You will also need a copy of the POSIX cp, rm and mv programs. These + and other useful POSIX utilities can be obtained from one of several projects: * http://gnuwin32.sourceforge.net/ ( GnuWin32 ) @@ -183,13 +183,12 @@ * http://www.cygwin.com/ ( Cygwin ) * http://unxutils.sourceforge.net/ ( UnxUtils ) - If you build Emacs on Windows 9X or ME, not on Windows 2K/XP or - Windows NT, we suggest to install the Cygwin port of Bash. That is - because the native Windows shell COMMAND.COM is too limited; the - Emacs build procedure tries very hard to support even such limited - shells, but as none of the Windows developers of Emacs work on - Windows 9x, we cannot guarantee that it works without a more - powerful shell. + If you build Emacs on 16-bit versions of Windows (9X or ME), we + suggest to install the Cygwin port of Bash. That is because the + native Windows shell COMMAND.COM is too limited; the Emacs build + procedure tries very hard to support even such limited shells, but + as none of the Windows developers of Emacs work on Windows 9X, we + cannot guarantee that it works without a more powerful shell. Additional instructions and help for building Emacs on Windows can be found at the Emacs Wiki: @@ -222,9 +221,17 @@ absolutely sure the produced binaries will never need to be run under a debugger. + Because of limitations of the stock Windows command shell, certain + characters (quotes, backslashes and equal signs) can be problematic + and should not be used in arguments to configure. That means that + forward slashes must be used in paths passed to the compiler and + linker via the --cflags and --ldflags options, and that it is + currently not possible to pass a macro like -DFOO=BAR (though -DFOO + is perfectly valid). + N.B. It is normal to see a few error messages output while configure is running, when gcc support is being tested. These cannot be - suppressed because of limitations in the Windows 9x command.com shell. + suppressed because of limitations in the Windows 9X command.com shell. You are encouraged to look at the file config.log which shows details for failed tests, after configure.bat finishes. Any unexplained failure @@ -249,13 +256,17 @@ wrong. (Usually, any such failures happen because some headers are missing due to bad packaging of the image support libraries.) + Note that any file path passed to the compiler or linker must use + forward slashes; using backslashes will cause compiler warnings or + errors about unrecognized escape sequences. + To use the external image support, the DLLs implementing the functionality must be found when Emacs first needs them, either on the PATH, or in the same directory as emacs.exe. Failure to find a library is not an error; the associated image format will simply be unavailable. Note that once Emacs has determined that a library can not be found, there's no way to force it to try again, other than - restarting. See the variable `image-library-alist' to configure the + restarting. See the variable `dynamic-library-alist' to configure the expected names of the libraries. Some image libraries have dependencies on one another, or on zlib. @@ -288,12 +299,12 @@ earlier versions, so Emacs will only look for libpng libraries which are compatible with the version it was compiled against. That version is given by the value of the Lisp variable `libpng-version'; - e.g., 10403 means version 1.4.3. The variable `image-library-alist' + e.g., 10403 means version 1.4.3. The variable `dynamic-library-alist' is automatically set to name only those DLL names that are known to be compatible with the version given by `libpng-version'. If PNG support does not work for you even though you have the support DLL installed, check the name of the installed DLL against - `image-library-alist' and the value of `libpng-version', and + `dynamic-library-alist' and the value of `libpng-version', and download compatible DLLs if needed. * Experimental SVG support @@ -420,6 +431,9 @@ Removes the installed files in the bin subdirectory in addition to the files removed by make cleanall. + make dist + Builds Emacs from the available sources and pre-compiled lisp files. + Packages Emacs binaries as full distribution and barebin distribution. The following targets are intended only for use with the Bazaar sources. @@ -442,15 +456,41 @@ bootstrap to rebuild. Occasionally it may be necessary to run this target after an update. +* Creating binary distributions + + Binary distributions (full and barebin distributions) can be + automatically built and packaged from source tarballs or a bzr + checkout. + + When building Emacs binary distributions, the --distfiles argument + to configure.bat specifies files to be included in the bin directory + of the binary distributions. This is intended for libraries that are + not built as part of Emacs, e.g. image libraries. + + For example, specifying + + --distfiles D:\distfiles\libXpm.dll + + results in libXpm.dll being copied from D:\distfiles to the + bin directory before packaging starts. + + Multiple files can be specified using multiple --distfiles arguments: + + --distfiles D:\distfiles\libXpm.dll --distfiles C:\jpeglib\jpeg.dll + + For packaging the binary distributions, the 'dist' make target uses + 7-Zip (http://www.7-zip.org), which must be installed and available + on the Windows Path. + * Trouble-shooting The main problems that are likely to be encountered when building Emacs stem from using an old version of GCC, or old MinGW or W32 API - headers. Additionally, cygwin ports of GNU make may require the Emacs + headers. Additionally, Cygwin ports of GNU make may require the Emacs source tree to be mounted with text!=binary, because the makefiles generated by configure.bat necessarily use DOS line endings. Also, - cygwin ports of make must run in UNIX mode, either by specifying + Cygwin ports of make must run in UNIX mode, either by specifying --unix on the command line, or MAKE_MODE=UNIX in the environment. When configure runs, it attempts to detect when GCC itself, or the diff --git a/nt/README b/nt/README index ef55c2ef224..ef84912bf8c 100644 --- a/nt/README +++ b/nt/README @@ -61,9 +61,6 @@ a mail spool or POP server to a local user mailbox. See the `Movemail' node of the Emacs manual. - + digest-doc.exe, sorted-doc.exe - Tools for rebuilding the - built-in documentation. - * Further information There is a web page that serves as a FAQ for the Windows port of diff --git a/nt/README.W32 b/nt/README.W32 new file mode 100644 index 00000000000..e9e9d00aea3 --- /dev/null +++ b/nt/README.W32 @@ -0,0 +1,269 @@ +Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Free Software Foundation, Inc. +See the end of the file for license conditions. + + Emacs for Windows + + This README file describes how to set up and run a precompiled + version of GNU Emacs for Windows. This distribution can be found on + the ftp.gnu.org server and its mirrors: + + ftp://ftp.gnu.org/gnu/emacs/windows/ + + This server contains other distributions, including the full Emacs + source distribution and a barebin distribution which can be installed + over it, as well as older releases of Emacs for Windows. + + Answers to frequently asked questions, and further information about + this port of GNU Emacs and related software packages can be found via + http: + + http://www.gnu.org/software/emacs/windows/ + +* Preliminaries + + Along with this file should be six subdirectories (bin, etc, info, + lisp, leim, site-lisp). If you have downloaded the barebin + distribution, then it will contain only the bin directory and the + built in documentation in etc/DOC-X, the rest of the subdirectories + are in the src distribution, which the barebin distribution is + designed to be used with. + +* Setting up Emacs + + To install Emacs, simply unpack all the files into a directory of + your choice, but note that you might encounter minor problems if + there is a space anywhere in the directory name. To complete the + installation process, you can optionally run the program addpm.exe + in the bin subdirectory. This will put an icon for Emacs in the + Start Menu under "Start -> Programs -> Gnu Emacs". + + Some users have reported that the Start Menu item is not created for + them. If this happens, just create your own shortcut to runemacs.exe, + eg. by dragging it on to the desktop or the Start button. + + Note that running addpm is now an optional step; Emacs is able to + locate all of its files without needing any information to be set in + the environment or the registry, although such settings will still + be obeyed if present. This is convenient for running Emacs on a + machine which disallows registry changes, or on which software + should not be installed. For instance, you can now run Emacs + directly from a CD or USB flash drive without copying or installing + anything on the machine itself. + +* Starting Emacs + + To run Emacs, simply select Emacs from the Start Menu, or invoke + runemacs.exe directly from Explorer or from a command prompt. This + will start Emacs in its default GUI mode, ready to use. If you have + never used Emacs before, you should follow the tutorial at this + point (select Emacs Tutorial from the Help menu), since Emacs is + quite different from ordinary Windows applications in many respects. + + If you want to use Emacs in tty or character mode within a command + window, you can start it by typing "emacs -nw" at the command prompt. + (Obviously, you need to ensure that the Emacs bin subdirectory is in + your PATH first, or specify the path to emacs.exe.) The -nw + (non-windowed) mode of operation is most useful if you have a telnet + server on your machine, allowing you to run Emacs remotely. + +* EXE files included + + Emacs comes with the following executable files in the bin directory. + + + emacs.exe - The main Emacs executable. As this is designed to run + as both a text-mode application (emacs -nw) and as a GUI application, + it will pop up a command prompt window if run directly from Explorer. + + + runemacs.exe - A wrapper for running Emacs as a GUI application + without popping up a command prompt window. + + + emacsclient.exe - A command-line client program that can + communicate with a running Emacs process. See the `Emacs Server' + node of the Emacs manual. + + + emacsclientw.exe - A version of emacsclient that does not open + a command-line window. + + + addpm.exe - A basic installer that creates Start Menu icons for Emacs. + Running this is optional. + + + cmdproxy.exe - Used internally by Emacs to work around problems with + the native shells in various versions of Windows. + + + ctags.exe, etags.exe - Tools for generating tag files. See the + `Tags' node of the Emacs manual. + + + ebrowse.exe - A tool for generating C++ browse information. See the + `Ebrowse' manual. + + + ddeclient.exe - A tool for interacting with DDE servers. + + + hexl.exe - A tool for converting files to hex dumps. See the + `Editing Binary Files' node of the Emacs manual. + + + movemail.exe - A helper application for safely moving mail from + a mail spool or POP server to a local user mailbox. See the + `Movemail' node of the Emacs manual. + +* Image support + + Emacs has built in support for XBM and PPM/PGM/PBM images, and the + libXpm library is bundled, providing XPM support (required for color + toolbar icons and splash screen). Source for libXpm should be available + on the same place as you got this binary distribution from. The version + of libXpm bundled with this version of Emacs is 3.5.7, based on x.org's + libXpm library from X11R7.3. + + Emacs can also support some other image formats with appropriate + libraries. These libraries are all available as part of GTK + download for Windows (http://www.gtk.org/download-windows.html), or + from the GnuWin32 project. Emacs will find them if the directory + they are installed in is on the PATH. + + PNG: requires the PNG reference library 1.4 or later, which will + be named libpng14.dll or libpng14-14.dll. LibPNG requires zlib, + which should come from the same source as you got libpng. + Starting with Emacs 23.3, the precompiled Emacs binaries are + built with libpng 1.4.x and later, and are incompatible with + earlier versions of libpng DLLs. So if you have libpng 1.2.x, + the PNG support will not work, and you will have to download + newer versions. + + JPEG: requires the Independant JPEG Group's libjpeg 6b or later, + which will be called jpeg62.dll, libjpeg.dll, jpeg-62.dll or jpeg.dll. + + TIFF: requires libTIFF 3.0 or later, which will be called libtiff3.dll + or libtiff.dll. + + GIF: requires libungif or giflib 4.1 or later, which will be + called giflib4.dll, libungif4.dll or libungif.dll. + + If you have image support DLLs under different names, customize the + value of `dynamic-library-alist'. + + In addition, Emacs can be compiled to support SVG. This precompiled + distribution has not been compiled that way, since the SVG library + or one or more of its extensive dependencies appear to be + unreliable under Windows. See nt/INSTALL in the src distribution if + you wish to compile Emacs with SVG support. + +* Uninstalling Emacs + + If you should need to uninstall Emacs, simply delete all the files + and subdirectories from the directory where it was unpacked (Emacs + does not install or update any files in system directories or + anywhere else). If you ran the addpm.exe program to create the + registry entries and the Start menu icon, then you can remove the + registry entries using regedit. All of the settings are written + under the Software\GNU\Emacs key in HKEY_LOCAL_MACHINE, or if you + didn't have administrator privileges when you installed, the same + key in HKEY_CURRENT_USER. Just delete the whole Software\GNU\Emacs + key. + + The Start menu entry can be removed by right-clicking on the Task bar + and selecting Properties, then using the Remove option on the Start + Menu Programs page. (If you installed under an account with + administrator privileges, then you need to click the Advanced button + and look for the Gnu Emacs menu item under All Users.) + +* Troubleshooting + + Unpacking the distributions + + If you encounter trouble trying to run Emacs, there are a number of + possible causes. Check the following for indications that the + distribution was not corrupted by the tools used to unpack it: + + * Be sure to disable CR/LF translation or the executables will + be unusable. Older versions of WinZipNT would enable this + translation by default. If you are using WinZipNT, disable it. + (I don't have WinZipNT myself, and I do not know the specific + commands necessary to disable it.) + + * Check that filenames were not truncated to 8.3. For example, + there should be a file lisp\abbrevlist.elc; if this has been + truncated to abbrevli.elc, your distribution has been corrupted + while unpacking and Emacs will not start. + + If you believe you have unpacked the distributions correctly and are + still encountering problems, see the section on Further Information + below. + + Virus scanners + + Some virus scanners interfere with Emacs' use of subprocesses. If you + are unable to use subprocesses and you use Dr. Solomon's WinGuard or + McAfee's Vshield, turn off "Scan all files" (WinGuard) or "boot sector + scanning" (McAfee exclusion properties). + +* Further information + + If you have access to the World Wide Web, I would recommend pointing + your favorite web browser to the following document (if you haven't + already): + + http://www.gnu.org/software/emacs/windows/ + + This document serves as an FAQ and a source for further information + about the Windows port and related software packages. + + In addition to the FAQ, there is a mailing list for discussing issues + related to the Windows port of Emacs. For information about the + list, see this Web page: + + http://lists.gnu.org/mailman/listinfo/help-emacs-windows + + To ask questions on the mailing list, send email to + help-emacs-windows@gnu.org. (You don't need to subscribe for that.) + To subscribe to the list or unsubscribe from it, fill the form you + find at http://lists.gnu.org/mailman/listinfo/help-emacs-windows as + explained there. + + Another valuable source of information and help which should not be + overlooked is the various Usenet news groups dedicated to Emacs. + These are particularly good for help with general issues which aren't + specific to the Windows port of Emacs. The main news groups to use + for seeking help are: + + gnu.emacs.help + comp.emacs + + There are also fairly regular postings and announcements of new or + updated Emacs packages on this group: + + gnu.emacs.sources + +* Reporting bugs + + If you encounter a bug in this port of Emacs, we would like to hear + about it. First check the FAQ on the web page above to see if the bug + is already known and if there are any workarounds. Then check whether + the bug has something to do with code in your .emacs file, e.g. by + invoking Emacs with the "-Q" option. + + If you decide that it is a bug in Emacs, use the built in bug + reporting facility to report it (from the menu; Help -> Send Bug Report). + If you have not yet configured Emacs for mail, then when you press + C-c C-c to send the report, it will ask you to paste the text of the + report into your mail client. If the bug is related to subprocesses, + also specify which shell you are using (e.g., include the values of + `shell-file-name' and `explicit-shell-file-name' in your message). + + Enjoy! + + +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. diff --git a/nt/addpm.c b/nt/addpm.c index f2bf00813be..8a5e1a435c9 100644 --- a/nt/addpm.c +++ b/nt/addpm.c @@ -62,11 +62,13 @@ DdeCallback (UINT uType, UINT uFmt, HCONV hconv, #define REG_GTK "SOFTWARE\\GTK\\2.0" #define REG_APP_PATH \ "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\emacs.exe" +#define REG_RUNEMACS_PATH \ + "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\runemacs.exe" static struct entry { - char *name; - char *value; + const char *name; + const char *value; } env_vars[] = { @@ -83,8 +85,7 @@ env_vars[] = }; BOOL -add_registry (path) - char *path; +add_registry (const char *path) { HKEY hrootkey = NULL; int i; @@ -112,7 +113,7 @@ add_registry (path) emacs_path = (char *) alloca (len); sprintf (emacs_path, "%s\\bin\\emacs.exe", path); - RegSetValueEx (hrootkey, NULL, 0, REG_SZ, emacs_path, len); + RegSetValueEx (hrootkey, NULL, 0, REG_EXPAND_SZ, emacs_path, len); /* Look for a GTK installation. If found, add it to the library search path for Emacs so that the image libraries it provides are available @@ -130,10 +131,26 @@ add_registry (path) /* Make sure the emacs bin directory continues to be searched first by including it as well. */ char *dll_paths; + HKEY runemacs_key = NULL; len = strlen (path) + 5 + size; dll_paths = (char *) alloca (size + strlen (path) + 1); sprintf (dll_paths, "%s\\bin;%s", path, gtk_path); - RegSetValueEx (hrootkey, "Path", 0, REG_SZ, dll_paths, len); + RegSetValueEx (hrootkey, "Path", 0, REG_EXPAND_SZ, + dll_paths, len); + + /* Set the same path for runemacs.exe, as the Explorer shell + looks this up, so the above does not take effect when + emacs.exe is spawned from runemacs.exe. */ + if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, REG_RUNEMACS_PATH, + 0, "", REG_OPTION_NON_VOLATILE, + KEY_WRITE, NULL, &runemacs_key, NULL) + == ERROR_SUCCESS) + { + RegSetValueEx (runemacs_key, "Path", 0, REG_EXPAND_SZ, + dll_paths, len); + + RegCloseKey (runemacs_key); + } } } RegCloseKey (gtk_key); @@ -161,7 +178,7 @@ add_registry (path) for (i = 0; i < (sizeof (env_vars) / sizeof (env_vars[0])); i++) { - char * value = env_vars[i].value ? env_vars[i].value : path; + const char * value = env_vars[i].value ? env_vars[i].value : path; if (RegSetValueEx (hrootkey, env_vars[i].name, 0, REG_EXPAND_SZ, @@ -175,16 +192,14 @@ add_registry (path) } int -main (argc, argv) - int argc; - char *argv[]; +main (int argc, char *argv[]) { char start_folder[MAX_PATH + 1]; int shortcuts_created = 0; int com_available = 1; char modname[MAX_PATH]; - char *prog_name; - char *emacs_path; + const char *prog_name; + const char *emacs_path; char *p; int quiet = 0; HRESULT result; @@ -315,10 +330,10 @@ main (argc, argv) if (SUCCEEDED (IPersistFile_Save (lnk, unicode_path, TRUE))) shortcuts_created = 1; IPersistFile_Release (lnk); - + } } - } + } } if (com_available) diff --git a/nt/addsection.c b/nt/addsection.c index dfbc2804208..df9d320bbfd 100644 --- a/nt/addsection.c +++ b/nt/addsection.c @@ -37,9 +37,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. PIMAGE_NT_HEADERS (__stdcall * pfnCheckSumMappedFile) (LPVOID BaseAddress, - DWORD FileLength, - LPDWORD HeaderSum, - LPDWORD CheckSum); + DWORD FileLength, + LPDWORD HeaderSum, + LPDWORD CheckSum); #undef min #undef max @@ -50,15 +50,15 @@ PIMAGE_NT_HEADERS /* File handling. */ typedef struct file_data { - char *name; - unsigned long size; - HANDLE file; - HANDLE file_mapping; - unsigned char *file_base; + const char *name; + unsigned long size; + HANDLE file; + HANDLE file_mapping; + unsigned char *file_base; } file_data; int -open_input_file (file_data *p_file, char *filename) +open_input_file (file_data *p_file, const char *filename) { HANDLE file; HANDLE file_mapping; @@ -90,7 +90,7 @@ open_input_file (file_data *p_file, char *filename) } int -open_output_file (file_data *p_file, char *filename, unsigned long size) +open_output_file (file_data *p_file, const char *filename, unsigned long size) { HANDLE file; HANDLE file_mapping; @@ -146,7 +146,7 @@ get_unrounded_section_size (PIMAGE_SECTION_HEADER p_section) /* Return pointer to section header for named section. */ IMAGE_SECTION_HEADER * -find_section (char * name, IMAGE_NT_HEADERS * nt_header) +find_section (const char *name, IMAGE_NT_HEADERS *nt_header) { PIMAGE_SECTION_HEADER section; int i; @@ -260,7 +260,7 @@ relocate_offset (DWORD offset, #define PTR_TO_RVA(ptr) ((DWORD)(ptr) - (DWORD) GetModuleHandle (NULL)) #define PTR_TO_OFFSET(ptr, pfile_data) \ - ((unsigned char *)(ptr) - (pfile_data)->file_base) + ((unsigned const char *)(ptr) - (pfile_data)->file_base) #define OFFSET_TO_PTR(offset, pfile_data) \ ((pfile_data)->file_base + (DWORD)(offset)) @@ -272,7 +272,7 @@ relocate_offset (DWORD offset, static void copy_executable_and_add_section (file_data *p_infile, file_data *p_outfile, - char *new_section_name, + const char *new_section_name, DWORD new_section_size) { unsigned char *dst; @@ -287,7 +287,7 @@ copy_executable_and_add_section (file_data *p_infile, #define COPY_CHUNK(message, src, size, verbose) \ do { \ - unsigned char *s = (void *)(src); \ + unsigned const char *s = (void *)(src); \ unsigned long count = (size); \ if (verbose) \ { \ diff --git a/nt/cmdproxy.c b/nt/cmdproxy.c index 2dbbfe00a2e..a73368b6a2d 100644 --- a/nt/cmdproxy.c +++ b/nt/cmdproxy.c @@ -43,12 +43,11 @@ extern int _snprintf (char *buffer, size_t count, const char *format, ...); /* These routines are used primarily to minimize the executable size. */ -#define stdin GetStdHandle (STD_INPUT_HANDLE) #define stdout GetStdHandle (STD_OUTPUT_HANDLE) #define stderr GetStdHandle (STD_ERROR_HANDLE) int -vfprintf(HANDLE hnd, char * msg, va_list args) +vfprintf (HANDLE hnd, const char * msg, va_list args) { DWORD bytes_written; char buf[1024]; @@ -58,7 +57,7 @@ vfprintf(HANDLE hnd, char * msg, va_list args) } int -fprintf(HANDLE hnd, char * msg, ...) +fprintf (HANDLE hnd, const char * msg, ...) { va_list args; int rc; @@ -71,7 +70,7 @@ fprintf(HANDLE hnd, char * msg, ...) } int -printf(char * msg, ...) +printf (const char * msg, ...) { va_list args; int rc; @@ -84,7 +83,7 @@ printf(char * msg, ...) } void -fail (char * msg, ...) +fail (const char * msg, ...) { va_list args; @@ -96,7 +95,7 @@ fail (char * msg, ...) } void -warn (char * msg, ...) +warn (const char * msg, ...) { va_list args; @@ -122,15 +121,15 @@ canon_filename (char *fname) return fname; } -char * -skip_space (char *str) +const char * +skip_space (const char *str) { while (isspace (*str)) str++; return str; } -char * -skip_nonspace (char *str) +const char * +skip_nonspace (const char *str) { while (*str && !isspace (*str)) str++; return str; @@ -140,9 +139,9 @@ int escape_char = '\\'; /* Get next token from input, advancing pointer. */ int -get_next_token (char * buf, char ** pSrc) +get_next_token (char * buf, const char ** pSrc) { - char * p = *pSrc; + const char * p = *pSrc; char * o = buf; p = skip_space (p); @@ -209,7 +208,7 @@ get_next_token (char * buf, char ** pSrc) else { /* Next token is delimited by whitespace. */ - char * p1 = skip_nonspace (p); + const char * p1 = skip_nonspace (p); memcpy (o, p, p1 - p); o += (p1 - p); *o = '\0'; @@ -224,9 +223,9 @@ get_next_token (char * buf, char ** pSrc) /* Search for EXEC file in DIR. If EXEC does not have an extension, DIR is searched for EXEC with the standard extensions appended. */ int -search_dir (char *dir, char *exec, int bufsize, char *buffer) +search_dir (const char *dir, const char *exec, int bufsize, char *buffer) { - char *exts[] = {".bat", ".cmd", ".exe", ".com"}; + const char *exts[] = {".bat", ".cmd", ".exe", ".com"}; int n_exts = sizeof (exts) / sizeof (char *); char *dummy; int i, rc; @@ -246,13 +245,13 @@ search_dir (char *dir, char *exec, int bufsize, char *buffer) any file extensions. If an absolute name for PROG cannot be found, return NULL. */ char * -make_absolute (char *prog) +make_absolute (const char *prog) { char absname[MAX_PATH]; char dir[MAX_PATH]; char curdir[MAX_PATH]; - char *p, *fname; - char *path; + char *p, *path; + const char *fname; int i; /* At least partial absolute path specified; search there. */ @@ -372,7 +371,7 @@ console_event_handler (DWORD event) /* Change from normal usage; return value indicates whether spawn succeeded or failed - program return code is returned separately. */ int -spawn (char * progname, char * cmdline, char * dir, int * retcode) +spawn (const char *progname, char *cmdline, const char *dir, int *retcode) { BOOL success = FALSE; SECURITY_ATTRIBUTES sec_attrs; @@ -410,7 +409,7 @@ spawn (char * progname, char * cmdline, char * dir, int * retcode) /* Return size of current environment block. */ int -get_env_size () +get_env_size (void) { char * start = GetEnvironmentStrings (); char * tmp = start; @@ -470,8 +469,8 @@ main (int argc, char ** argv) /* Due to problems with interaction between API functions that use "OEM" codepage vs API functions that use the "ANSI" codepage, we need to make things consistent by choosing one and sticking with it. */ - SetConsoleCP (GetACP()); - SetConsoleOutputCP (GetACP()); + SetConsoleCP (GetACP ()); + SetConsoleOutputCP (GetACP ()); /* Although Emacs always sets argv[0] to an absolute pathname, we might get run in other ways as well, so convert argv[0] to an @@ -509,7 +508,7 @@ main (int argc, char ** argv) /* Ask command.com to create an environment block with a reasonable amount of free space. */ envsize = get_env_size () + 300; - pass_through_args = (char **) alloca (argc * sizeof(char *)); + pass_through_args = (char **) alloca (argc * sizeof (char *)); num_pass_through_args = 0; while (--argc > 0) @@ -583,7 +582,7 @@ main (int argc, char ** argv) if (strpbrk (cmdline, copout_chars) == NULL) { - char *args; + const char *args; /* The program name is the first token of cmdline. Since filenames cannot legally contain embedded quotes, the value @@ -659,7 +658,6 @@ main (int argc, char ** argv) _snprintf (p, remlen, " /e:%d /c %s", envsize, cmdline); else _snprintf (p, remlen, " /c %s", cmdline); - remlen = maxlen - (p - buf); cmdline = buf; } else @@ -696,10 +694,7 @@ main (int argc, char ** argv) } if (run_command_dot_com) - { - _snprintf (p, remlen, " /e:%d", envsize); - remlen = maxlen - (p - cmdline); - } + _snprintf (p, remlen, " /e:%d", envsize); } } diff --git a/nt/config.nt b/nt/config.nt index 47881cb4267..8a203372936 100644 --- a/nt/config.nt +++ b/nt/config.nt @@ -1,5 +1,6 @@ /* GNU Emacs site configuration template file. -*- C -*- - Copyright (C) 1988, 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, + +Copyright (C) 1988, 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -137,7 +138,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #undef HAVE_STDLIB_H #undef HAVE_PWD_H #undef STDC_HEADERS -#undef TIME_WITH_SYS_TIME #undef HAVE_LIBDNET #undef HAVE_LIBPTHREADS @@ -211,8 +211,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #undef HAVE_SYSINFO #undef HAVE_RANDOM #undef HAVE_LRAND48 -#undef HAVE_BCOPY -#undef HAVE_BCMP +#undef HAVE_MEMCPY +#undef HAVE_MEMMOVE +#undef HAVE_MEMSET +#undef HAVE_MEMCMP #undef HAVE_LOGB #undef HAVE_FREXP #undef HAVE_FMOD @@ -279,6 +281,16 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #define INLINE #endif +#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) +#define EXTERNALLY_VISIBLE __attribute__((externally_visible)) +#else +#define EXTERNALLY_VISIBLE +#endif + +#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)) +#define HAVE___BUILTIN_UNWIND_INIT 1 +#endif + #undef EMACS_CONFIGURATION #undef EMACS_CONFIG_OPTIONS @@ -305,12 +317,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #undef config_machfile #include "m/intel386.h" -/* If no remapping takes place, static variables cannot be dumped as - pure, so don't worry about the `static' keyword. */ -#ifdef NO_REMAP -#undef static -#endif - /* Define `subprocesses' should be defined if you want to have code for asynchronous subprocesses (as used in M-x compile and M-x shell). @@ -318,24 +324,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #define subprocesses -/* Define LD_SWITCH_X_SITE to contain any special flags your loader - may need to deal with X Windows. For instance, if you've defined - HAVE_X_WINDOWS above and your X libraries aren't in a place that - your loader can find on its own, you might want to add "-L/..." or - something similar. */ -#undef LD_SWITCH_X_SITE - -/* Define LD_SWITCH_X_SITE_AUX with an -R option - in case it's needed (for Solaris, for example). */ -#undef LD_SWITCH_X_SITE_AUX - -/* Define C_SWITCH_X_SITE to contain any special flags your compiler - may need to deal with X Windows. For instance, if you've defined - HAVE_X_WINDOWS above and your X include files aren't in a place - that your compiler can find on its own, you might want to add - "-I/..." or something similar. */ -#undef C_SWITCH_X_SITE - /* Define STACK_DIRECTION here, but not if m/foo.h did. */ #ifndef STACK_DIRECTION #undef STACK_DIRECTION @@ -364,32 +352,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #define my_strftime nstrftime /* for strftime.c */ -/* The rest of the code currently tests the CPP symbol BSTRING. - Override any claims made by the system-description files. - Note that on some SCO version it is possible to have bcopy and not bcmp. */ -#undef BSTRING -#if defined (HAVE_BCOPY) && defined (HAVE_BCMP) -#define BSTRING -#endif - -/* Non-ANSI C compilers usually don't have volatile. */ -#ifndef HAVE_VOLATILE -#ifndef __STDC__ -#define volatile -#endif -#endif - #ifndef WINDOWSNT /* Some of the files of Emacs which are intended for use with other programs assume that if you have a config.h file, you must declare - the type of getenv. - - This declaration shouldn't appear when alloca.s or Makefile.in - includes config.h. */ -#ifndef NOT_C_CODE + the type of getenv. */ extern char *getenv (); #endif -#endif #endif /* EMACS_CONFIG_H */ @@ -423,16 +391,6 @@ extern char *getenv (); #define PROTOTYPES 1 #endif -#ifndef __P -#if defined PROTOTYPES -#define __P(args) args -#else -#define __P(args) () -#endif -#endif - -/* Don't include <string.h> during configure. */ -#ifndef NOT_C_CODE #ifdef HAVE_STRING_H #include "string.h" #endif @@ -442,7 +400,6 @@ extern char *getenv (); #ifdef HAVE_STDLIB_H #include <stdlib.h> #endif -#endif #ifndef NO_RETURN #if defined __GNUC__ && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR >= 5)) @@ -453,12 +410,10 @@ extern char *getenv (); #endif /* Redefine abort. */ -#ifndef NOT_C_CODE #ifdef HAVE_NTGUI #define abort w32_abort void w32_abort (void) NO_RETURN; #endif -#endif /* Prevent accidental use of features unavailable in older Windows versions we still support. */ diff --git a/nt/configure.bat b/nt/configure.bat index ff1d84abc51..9dc0e6da5b6 100755 --- a/nt/configure.bat +++ b/nt/configure.bat @@ -1,6 +1,6 @@ @echo off
rem ----------------------------------------------------------------------
-rem Configuration script for MS Windows 95/98/Me and NT/2000/XP
+rem Configuration script for MS Windows operating systems
rem Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
rem 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
@@ -22,7 +22,7 @@ rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/. rem ----------------------------------------------------------------------
rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
rem
-rem + MS Windows 95/98/Me or NT/2000/XP
+rem + MS Windows 95, NT or later
rem + either MSVC 2.x or later, or gcc-2.95 or later (with GNU make 3.75
rem or later) and the Mingw32 and W32 API headers and libraries.
rem + Visual Studio 2005 is not supported at this time.
@@ -80,6 +80,7 @@ rem Default settings. set prefix=
set nodebug=N
set noopt=N
+set enablechecking=N
set profile=N
set nocygwin=N
set COMPILER=
@@ -89,6 +90,8 @@ set userldflags= set doldflags=
set sep1=
set sep2=
+set sep3=
+set distfiles=
rem ----------------------------------------------------------------------
rem Handle arguments.
@@ -100,6 +103,7 @@ if "%1" == "--with-gcc" goto withgcc if "%1" == "--with-msvc" goto withmsvc
if "%1" == "--no-debug" goto nodebug
if "%1" == "--no-opt" goto noopt
+if "%1" == "--enable-checking" goto enablechecking
if "%1" == "--profile" goto profile
if "%1" == "--no-cygwin" goto nocygwin
if "%1" == "--cflags" goto usercflags
@@ -110,7 +114,9 @@ if "%1" == "--without-gif" goto withoutgif if "%1" == "--without-tiff" goto withouttiff
if "%1" == "--without-xpm" goto withoutxpm
if "%1" == "--with-svg" goto withsvg
+if "%1" == "--distfiles" goto distfiles
if "%1" == "" goto checkutils
+
:usage
echo Usage: configure [options]
echo Options:
@@ -119,6 +125,7 @@ echo. --with-gcc use GCC to compile Emacs echo. --with-msvc use MSVC to compile Emacs
echo. --no-debug exclude debug info from executables
echo. --no-opt disable optimization
+echo. --enable-checking enable checks and assertions
echo. --profile enable profiling
echo. --no-cygwin use -mno-cygwin option with GCC
echo. --cflags FLAG pass FLAG to compiler
@@ -129,57 +136,84 @@ echo. --without-gif do not use GIF library even if it is installed echo. --without-tiff do not use TIFF library even if it is installed
echo. --without-xpm do not use XPM library even if it is installed
echo. --with-svg use the RSVG library (experimental)
+echo. --distfiles path to files for make dist, e.g. libXpm.dll
goto end
+
rem ----------------------------------------------------------------------
+
:setprefix
shift
set prefix=%1
shift
goto again
+
rem ----------------------------------------------------------------------
+
:withgcc
set COMPILER=gcc
shift
goto again
+
rem ----------------------------------------------------------------------
+
:withmsvc
set COMPILER=cl
shift
goto again
+
rem ----------------------------------------------------------------------
+
:nodebug
set nodebug=Y
shift
goto again
+
rem ----------------------------------------------------------------------
+
:noopt
set noopt=Y
shift
goto again
+
+rem ----------------------------------------------------------------------
+
+:enablechecking
+set enablechecking=Y
+shift
+goto again
+
rem ----------------------------------------------------------------------
+
:profile
set profile=Y
shift
goto again
+
rem ----------------------------------------------------------------------
+
:nocygwin
set nocygwin=Y
shift
goto again
+
rem ----------------------------------------------------------------------
+
:usercflags
shift
set usercflags=%usercflags%%sep1%%1
set sep1= %nothing%
shift
goto again
+
rem ----------------------------------------------------------------------
+
:userldflags
shift
set userldflags=%userldflags%%sep2%%1
set sep2= %nothing%
shift
goto again
+
rem ----------------------------------------------------------------------
:withoutpng
@@ -226,7 +260,18 @@ set svgsupport=Y goto again
rem ----------------------------------------------------------------------
+
+:distfiles
+set HAVE_DISTFILES=1
+shift
+set distfiles=%distfiles%%sep3%%1
+set sep3= %nothing%
+shift
+goto again
+
+rem ----------------------------------------------------------------------
rem Check that necessary utilities (cp and rm) are present.
+
:checkutils
echo Checking for 'cp'...
cp configure.bat junk.bat
@@ -235,9 +280,11 @@ echo Checking for 'rm'... rm junk.bat
if exist junk.bat goto needrm
goto checkcompiler
+
:needcp
echo You need 'cp' (the Unix file copy program) to build Emacs.
goto end
+
:needrm
del junk.bat
echo You need 'rm' (the Unix file delete program) to build Emacs.
@@ -245,6 +292,7 @@ goto end rem ----------------------------------------------------------------------
rem Auto-detect compiler if not specified, and validate GCC if chosen.
+
:checkcompiler
if (%COMPILER%)==(cl) goto compilercheckdone
if (%COMPILER%)==(gcc) goto checkgcc
@@ -279,6 +327,7 @@ if exist junk.o set nocygwin=Y :chkapi
echo The failed program was: >>config.log
type junk.c >>config.log
+
:chkapiN
rm -f junk.c junk.o
rem ----------------------------------------------------------------------
@@ -298,8 +347,10 @@ echo {PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);} >>junk.c if (%nocygwin%) == (Y) goto chkapi1
set cf=%usercflags%
goto chkapi2
+
:chkapi1
set cf=%usercflags% -mno-cygwin
+
:chkapi2
echo on
gcc %cf% -c junk.c
@@ -307,9 +358,25 @@ gcc %cf% -c junk.c @echo gcc %cf% -c junk.c >>config.log
gcc %cf% -c junk.c >>config.log 2>&1
set cf=
-if exist junk.o goto gccOk
+if exist junk.o goto chkuser
echo The failed program was: >>config.log
type junk.c >>config.log
+goto nocompiler
+
+:chkuser
+rm -f junk.o
+echo int main (int argc, char *argv[]) {>junk.c
+echo char *usercflags = "%usercflags%";>>junk.c
+echo }>>junk.c
+echo gcc -Werror -c junk.c >>config.log
+gcc -Werror -c junk.c >>config.log 2>&1
+if exist junk.o goto gccOk
+echo.
+echo Error in --cflags argument: %usercflags%
+echo Backslashes and quotes cannot be used with --cflags. Please use forward
+echo slashes for filenames and paths (e.g. when passing directories to -I).
+rm -f junk.c
+goto end
:nocompiler
echo.
@@ -335,10 +402,12 @@ type junk.c >>config.log set mf=-mcpu=i686
rm -f junk.c junk.o
goto gccdebug
+
:gccMtuneOk
echo GCC supports -mtune=pentium4 >>config.log
set mf=-mtune=pentium4
rm -f junk.c junk.o
+
:gccdebug
rem Check for DWARF-2 debug info support, else default to stabs
echo main(){} >junk.c
@@ -350,6 +419,7 @@ type junk.c >>config.log set dbginfo=-gstabs+
rm -f junk.c junk.o
goto compilercheckdone
+
:gccdwarf
echo GCC supports DWARF-2 >>config.log
set dbginfo=-gdwarf-2 -g3
@@ -513,7 +583,37 @@ set HAVE_RSVG=1 :svgDone
rm -f junk.c junk.obj junk.err junk.out
+rem Any distfiles provided for building distribution? If no, we're done.
+if "(%HAVE_DISTFILES%)"=="()" goto :distFilesDone
+
+rem Any arguments to --distfiles specified? If no, we're done.
+if not "%distfiles%"=="" goto :checkDistFiles
+set distFilesOk=0
+echo No arguments specified for option --distfiles!
+goto distfilesDone
+
+:checkDistFiles
+echo Checking for distfiles...
+rem Check if all specified distfiles exist
+set fileNotFound=
+for %%d in (%distfiles%) do if not exist %%d set fileNotFound=%%d
+if not "%fileNotFound%"=="" goto distFilesNotFound
+
+set distFilesOK=1
+echo ...all distfiles found.
+goto :distFilesDone
+
+:distFilesNotFound
+set distFilesOk=0
+echo ...%fileNotFound% not found.
+set distfiles=
+goto :distfilesDone
+
+:distFilesDone
+set fileNotFound=
+
rem ----------------------------------------------------------------------
+
:genmakefiles
echo Generating makefiles
if %COMPILER% == gcc set MAKECMD=gmake
@@ -529,9 +629,11 @@ if not "(%mf%)" == "()" echo MCPU_FLAG=%mf%>>config.settings if not "(%dbginfo%)" == "()" echo DEBUG_INFO=%dbginfo%>>config.settings
if (%nodebug%) == (Y) echo NODEBUG=1 >>config.settings
if (%noopt%) == (Y) echo NOOPT=1 >>config.settings
+if (%enablechecking%) == (Y) echo ENABLECHECKS=1 >>config.settings
if (%profile%) == (Y) echo PROFILE=1 >>config.settings
if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings
if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix%>>config.settings
+if not "(%distfiles%)" == "()" echo DIST_FILES=%distfiles%>>config.settings
rem We go thru docflags because usercflags could be "-DFOO=bar" -something
rem and the if command cannot cope with this
for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y
@@ -544,6 +646,8 @@ echo. >>config.settings copy config.nt config.tmp
echo. >>config.tmp
echo /* Start of settings from configure.bat. */ >>config.tmp
+rem We write USER_CFLAGS and USER_LDFLAGS starting with a space to simplify
+rem processing of compiler options in w32.c:get_emacs_configuration_options
if (%docflags%) == (Y) echo #define USER_CFLAGS " %usercflags%">>config.tmp
if (%doldflags%) == (Y) echo #define USER_LDFLAGS " %userldflags%">>config.tmp
if (%profile%) == (Y) echo #define PROFILING 1 >>config.tmp
@@ -565,7 +669,8 @@ if not errorlevel 2 goto doCopy fc /b config.tmp ..\src\config.h >nul 2>&1
if errorlevel 1 goto doCopy
fc /b paths.h ..\src\epaths.h >nul 2>&1
-if errorlevel 0 goto dontCopy
+if not errorlevel 1 goto dontCopy
+
:doCopy
copy config.tmp ..\src\config.h
copy paths.h ..\src\epaths.h
@@ -595,6 +700,7 @@ fc /b foo.bar foo.bar >nul 2>&1 if not errorlevel 2 goto doUpdateSubdirs
fc /b subdirs.el ..\site-lisp\subdirs.el >nul 2>&1
if not errorlevel 1 goto dontUpdateSubdirs
+
:doUpdateSubdirs
if exist ..\site-lisp\subdirs.el del ..\site-lisp\subdirs.el
copy subdirs.el ..\site-lisp\subdirs.el
@@ -633,12 +739,19 @@ if (%tiffsupport%) == (N) goto checkgif echo Install libtiff development files or use --without-tiff
:checkgif
-if not "(%HAVE_GIF%)" == "()" goto donelibchecks
-if (%gifsupport%) == (N) goto donelibchecks
+if not "(%HAVE_GIF%)" == "()" goto checkdistfiles
+if (%gifsupport%) == (N) goto checkdistfiles
set libsOK=0
echo GIF support is missing.
echo Install giflib or libungif development files or use --without-gif
+:checkdistfiles
+if "(%HAVE_DISTFILES%)" == "()" goto donelibchecks
+if (%distFilesOk%) == (1) goto donelibchecks
+echo.
+echo Files specified with option --distfiles could not be found.
+echo Fix these issues before running make dist
+
:donelibchecks
if (%libsOK%) == (1) goto success
echo.
@@ -656,10 +769,12 @@ goto end echo Your environment size is too small. Please enlarge it and rerun configure.
echo For example, type "command.com /e:2048" to have 2048 bytes available.
set $foo$=
+
:end
set prefix=
set nodebug=
set noopt=
+set enablechecking=
set profile=
set nocygwin=
set COMPILER=
@@ -670,6 +785,9 @@ set userldflags= set doldflags=
set mingwflag=
set mf=
+set distfiles=
+set HAVE_DISTFILES=
+set distFilesOk=
set pngsupport=
set jpegsupport=
set gifsupport=
diff --git a/nt/ddeclient.c b/nt/ddeclient.c index 502f77f4ae7..abde2aa86ae 100644 --- a/nt/ddeclient.c +++ b/nt/ddeclient.c @@ -35,9 +35,7 @@ DdeCallback (UINT uType, UINT uFmt, HCONV hconv, CF_TEXT, XTYP_EXECUTE, 30000, NULL) int -main (argc, argv) - int argc; - char *argv[]; +main (int argc, char *argv[]) { DWORD idDde = 0; HCONV HConversation; diff --git a/nt/emacs-src.tags b/nt/emacs-src.tags new file mode 100644 index 00000000000..8c187133454 --- /dev/null +++ b/nt/emacs-src.tags @@ -0,0 +1,6 @@ + This file defines the regular expressions for etags to look for + in the src directory. It is used by the w32 build to work around + the annoyances of quoting command-line arguments with various + w32 shell. + +/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/ diff --git a/nt/emacs.manifest b/nt/emacs.manifest index 4c1894c335f..64c6f1edfb7 100644 --- a/nt/emacs.manifest +++ b/nt/emacs.manifest @@ -8,4 +8,14 @@ language="*"/> </dependentAssembly> </dependency> -</assembly>
\ No newline at end of file + <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" + name="emacs" type="win32"/> + <description>GNU Emacs</description> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> + <security> + <requestedPrivileges> + <requestedExecutionLevel level="asInvoker"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/nt/emacs.rc b/nt/emacs.rc index 5cb2d3516d9..9a71935f251 100644 --- a/nt/emacs.rc +++ b/nt/emacs.rc @@ -7,8 +7,8 @@ Emacs ICON icons\emacs.ico #endif VS_VERSION_INFO VERSIONINFO - FILEVERSION 23,2,91,0 - PRODUCTVERSION 23,2,91,0 + FILEVERSION 24,0,50,0 + PRODUCTVERSION 24,0,50,0 FILEFLAGSMASK 0x3FL #ifdef EMACSDEBUG FILEFLAGS 0x1L @@ -25,12 +25,12 @@ BEGIN BEGIN VALUE "CompanyName", "Free Software Foundation\0" VALUE "FileDescription", "GNU Emacs: The extensible self-documenting text editor\0" - VALUE "FileVersion", "23, 2, 91, 0\0" + VALUE "FileVersion", "24, 0, 50, 0\0" VALUE "InternalName", "Emacs\0" VALUE "LegalCopyright", "Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011\0" VALUE "OriginalFilename", "emacs.exe" VALUE "ProductName", "Emacs\0" - VALUE "ProductVersion", "23, 2, 91, 0\0" + VALUE "ProductVersion", "24, 0, 50, 0\0" VALUE "OLESelfRegister", "\0" END END diff --git a/nt/emacsclient.rc b/nt/emacsclient.rc index a5dc2d91915..27ee1437989 100644 --- a/nt/emacsclient.rc +++ b/nt/emacsclient.rc @@ -5,8 +5,8 @@ Emacs ICON icons\emacs.ico #endif VS_VERSION_INFO VERSIONINFO - FILEVERSION 23,2,91,0 - PRODUCTVERSION 23,2,91,0 + FILEVERSION 24,0,50,0 + PRODUCTVERSION 24,0,50,0 FILEFLAGSMASK 0x3FL #ifdef EMACSDEBUG FILEFLAGS 0x1L @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "Free Software Foundation\0" VALUE "FileDescription", "GNU EmacsClient: Client for the extensible self-documenting text editor\0" - VALUE "FileVersion", "23, 2, 91, 0\0" + VALUE "FileVersion", "24, 0, 50, 0\0" VALUE "InternalName", "EmacsClient\0" VALUE "LegalCopyright", "Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011\0" VALUE "OriginalFilename", "emacsclientw.exe" VALUE "ProductName", "EmacsClient\0" - VALUE "ProductVersion", "23, 2, 91, 0\0" + VALUE "ProductVersion", "24, 0, 50, 0\0" VALUE "OLESelfRegister", "\0" END END diff --git a/nt/gmake.defs b/nt/gmake.defs index 18db0b7feac..6c9d62223c6 100644 --- a/nt/gmake.defs +++ b/nt/gmake.defs @@ -96,6 +96,7 @@ THISDIR = . ifdef USING_SH sh_output := $(shell echo [Please ignore a syntax error on the next line - it is intentional] 1>&2) sh_output := $(shell echo foo") +# This single quote " is to fix fintification due to previous line ifeq "$(sh_output)" "" NEW_CYGWIN = 1 endif @@ -198,7 +199,14 @@ DEBUG_CFLAGS = -DEMACSDEBUG else DEBUG_CFLAGS = endif -CFLAGS = -I. $(ARCH_CFLAGS) $(DEBUG_CFLAGS) $(PROFILE_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) + +ifdef ENABLECHECKS +CHECKING_CFLAGS = -DENABLE_CHECKING -DXASSERTS -fno-crossjumping +else +CHECKING_CFLAGS = +endif + +CFLAGS = -I. $(ARCH_CFLAGS) $(DEBUG_CFLAGS) $(CHECKING_CFLAGS) $(PROFILE_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) EMACS_EXTRA_C_FLAGS = -DUSE_CRT_DLL=1 ifdef PROFILE diff --git a/nt/makefile.w32-in b/nt/makefile.w32-in index 88ea1290617..73920e152ce 100644 --- a/nt/makefile.w32-in +++ b/nt/makefile.w32-in @@ -23,6 +23,10 @@ # FIXME: This file uses DOS EOLs. Convert to Unix after 22.1 is out
# (and remove or replace this comment).
+VERSION = 24.0.50
+
+TMP_DIST_DIR = emacs-$(VERSION)
+
TRES = $(BLD)/emacs.res
CLIENTRES = $(BLD)/emacsclient.res
@@ -197,12 +201,16 @@ $(INSTALL_DIR)/bin: $(INSTALL_DIR) #
# Build and install emacs in INSTALL_DIR
#
-install: all $(INSTALL_DIR)/bin install-other-dirs-$(MAKETYPE)
+.PHONY: install-bin install-shortcuts
+
+install: install-bin install-shortcuts
+
+install-bin: all $(INSTALL_DIR)/bin install-other-dirs-$(MAKETYPE)
- $(CP) $(BLD)/addpm.exe $(INSTALL_DIR)/bin
- $(CP) $(BLD)/ddeclient.exe $(INSTALL_DIR)/bin
- $(CP) $(BLD)/cmdproxy.exe $(INSTALL_DIR)/bin
- $(CP) $(BLD)/runemacs.exe $(INSTALL_DIR)/bin
- - "$(INSTALL_DIR)/bin/addpm" -q
+ - $(CP) README.W32 $(INSTALL_DIR)
- $(DEL) ../same-dir.tst
- $(DEL) $(INSTALL_DIR)/same-dir.tst
echo SameDirTest > "$(INSTALL_DIR)/same-dir.tst"
@@ -238,6 +246,26 @@ install-other-dirs-gmake: $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp install
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim install
+install-shortcuts:
+ "$(INSTALL_DIR)/bin/addpm" -q
+
+dist: install-bin
+ mkdir $(TMP_DIST_DIR)
+ $(CP) "$(INSTALL_DIR)/BUGS" $(TMP_DIST_DIR)
+ $(CP) "$(INSTALL_DIR)/COPYING" $(TMP_DIST_DIR)
+ $(CP) "$(INSTALL_DIR)/README" $(TMP_DIST_DIR)
+ $(CP) "$(INSTALL_DIR)/README.W32" $(TMP_DIST_DIR)
+ $(CP) "$(INSTALL_DIR)/INSTALL" $(TMP_DIST_DIR)
+ $(CP_DIR) "$(INSTALL_DIR)/bin" $(TMP_DIST_DIR)
+ $(CP_DIR) "$(INSTALL_DIR)/etc" $(TMP_DIST_DIR)
+ $(CP_DIR) "$(INSTALL_DIR)/info" $(TMP_DIST_DIR)
+ $(CP_DIR) "$(INSTALL_DIR)/lisp" $(TMP_DIST_DIR)
+ $(CP_DIR) "$(INSTALL_DIR)/leim" $(TMP_DIST_DIR)
+ $(CP_DIR) "$(INSTALL_DIR)/site-lisp" $(TMP_DIST_DIR)
+ $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin
+ $(COMSPEC)$(ComSpec) /c $(ARGQUOTE)zipdist.bat $(VERSION)$(ARGQUOTE)
+ $(DEL_TREE) $(TMP_DIST_DIR)
+
force-info:
# Note that doc/emacs/makefile knows how to
# put the info files in $(infodir),
@@ -323,6 +351,7 @@ top-distclean: - $(DEL) stamp_BLD
- $(DEL) ../etc/DOC ../etc/DOC-X
- $(DEL) config.log Makefile
+ - $(DEL) ../README.W32
distclean: distclean-other-dirs-$(MAKETYPE) top-distclean
@@ -388,3 +417,16 @@ maintainer-clean-other-dirs-gmake: realclean: cleanall
- $(DEL_TREE) ../bin
+
+TAGS: TAGS-$(MAKETYPE)
+
+frc:
+TAGS-gmake: frc
+ ../lib-src/$(BLD)/etags $(CURDIR)/*.c
+ $(MAKE) $(MFLAGS) -C ../src TAGS TAGS-LISP
+ $(MAKE) $(MFLAGS) -C ../lib-src TAGS
+
+TAGS-nmake:
+ echo This target is not supported with NMake
+
+.PHONY: frc
diff --git a/nt/nmake.defs b/nt/nmake.defs index 9da2ac33453..a771f1df5d3 100644 --- a/nt/nmake.defs +++ b/nt/nmake.defs @@ -136,8 +136,15 @@ DEBUG_CFLAGS = -DEMACSDEBUG !else
DEBUG_CFLAGS =
!endif
+
+!ifdef ENABLECHECKS
+CHECKING_CFLAGS = -DENABLE_CHECKING -DXASSERTS
+!else
+CHECKING_CFLAGS =
+!endif
+
CFLAGS = -I. $(ARCH_CFLAGS) \
- $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)
+ $(DEBUG_CFLAGS) $(CHECKING_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)
EMACS_EXTRA_C_FLAGS =
SYS_LDFLAGS = -nologo -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj
diff --git a/nt/preprep.c b/nt/preprep.c index 142d64dfe57..285ff69b6db 100644 --- a/nt/preprep.c +++ b/nt/preprep.c @@ -1,4 +1,4 @@ -/* Pro-process emacs.exe for profiling by MSVC. +/* Pre-process emacs.exe for profiling by MSVC. Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. @@ -37,9 +37,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. PIMAGE_NT_HEADERS (__stdcall * pfnCheckSumMappedFile) (LPVOID BaseAddress, - DWORD FileLength, - LPDWORD HeaderSum, - LPDWORD CheckSum); + DWORD FileLength, + LPDWORD HeaderSum, + LPDWORD CheckSum); #undef min #undef max @@ -50,15 +50,15 @@ PIMAGE_NT_HEADERS /* File handling. */ typedef struct file_data { - char *name; - unsigned long size; - HANDLE file; - HANDLE file_mapping; - unsigned char *file_base; + const char *name; + unsigned long size; + HANDLE file; + HANDLE file_mapping; + unsigned char *file_base; } file_data; int -open_input_file (file_data *p_file, char *filename) +open_input_file (file_data *p_file, const char *filename) { HANDLE file; HANDLE file_mapping; @@ -90,7 +90,7 @@ open_input_file (file_data *p_file, char *filename) } int -open_output_file (file_data *p_file, char *filename, unsigned long size) +open_output_file (file_data *p_file, const char *filename, unsigned long size) { HANDLE file; HANDLE file_mapping; @@ -120,7 +120,7 @@ open_output_file (file_data *p_file, char *filename, unsigned long size) } int -open_inout_file (file_data *p_file, char *filename) +open_inout_file (file_data *p_file, const char *filename) { HANDLE file; HANDLE file_mapping; @@ -178,7 +178,7 @@ get_unrounded_section_size (PIMAGE_SECTION_HEADER p_section) /* Return pointer to section header for named section. */ IMAGE_SECTION_HEADER * -find_section (char * name, IMAGE_NT_HEADERS * nt_header) +find_section (const char *name, IMAGE_NT_HEADERS *nt_header) { PIMAGE_SECTION_HEADER section; int i; @@ -295,7 +295,7 @@ relocate_offset (DWORD offset, #define PTR_TO_RVA(ptr) ((DWORD)(ptr) - (DWORD) GetModuleHandle (NULL)) #define PTR_TO_OFFSET(ptr, pfile_data) \ - ((unsigned char *)(ptr) - (pfile_data)->file_base) + ((unsigned const char *)(ptr) - (pfile_data)->file_base) #define OFFSET_TO_PTR(offset, pfile_data) \ ((pfile_data)->file_base + (DWORD)(offset)) @@ -361,7 +361,7 @@ copy_executable_and_move_sections (file_data *p_infile, #define COPY_CHUNK(message, src, size) \ do { \ - unsigned char *s = (void *)(src); \ + unsigned const char *s = (void *)(src); \ unsigned long count = (size); \ printf ("%s\n", (message)); \ printf ("\t0x%08x Offset in input file.\n", s - p_infile->file_base); \ @@ -766,7 +766,7 @@ main (int argc, char **argv) PIMAGE_NT_HEADERS nt_header; file_data in_file, out_file; char out_filename[MAX_PATH], in_filename[MAX_PATH]; - char *ptr; + const char *ptr; strcpy (in_filename, argv[1]); strcpy (out_filename, argv[2]); diff --git a/nt/runemacs.c b/nt/runemacs.c index 6dec833631c..dc8503b7a36 100644 --- a/nt/runemacs.c +++ b/nt/runemacs.c @@ -43,7 +43,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <string.h> #include <malloc.h> -static void set_user_model_id (); +static void set_user_model_id (void); int WINAPI WinMain (HINSTANCE hSelf, HINSTANCE hPrev, LPSTR cmdline, int nShow) @@ -174,7 +174,8 @@ error: return 1; } -void set_user_model_id () +void +set_user_model_id (void) { HMODULE shell; HRESULT (WINAPI * set_user_model) (wchar_t * id); diff --git a/nt/zipdist.bat b/nt/zipdist.bat new file mode 100644 index 00000000000..af90f6173b9 --- /dev/null +++ b/nt/zipdist.bat @@ -0,0 +1,49 @@ +@echo off
+rem Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+rem Free Software Foundation, Inc.
+
+rem Author: Christoph Scholtes cschol2112 at gmail.com
+
+rem This file is part of GNU Emacs.
+
+rem GNU Emacs is free software: you can redistribute it and/or modify
+rem it under the terms of the GNU General Public License as published by
+rem the Free Software Foundation, either version 3 of the License, or
+rem (at your option) any later version.
+
+rem GNU Emacs is distributed in the hope that it will be useful,
+rem but WITHOUT ANY WARRANTY; without even the implied warranty of
+rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+rem GNU General Public License for more details.
+
+rem You should have received a copy of the GNU General Public License
+rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/.
+
+SETLOCAL
+rem arg 1: Emacs version number
+set EMACS_VER=%1
+
+set TMP_DIST_DIR=emacs-%EMACS_VER%
+
+rem Check, if 7zip is installed and available on path
+:ZIP_CHECK
+7z
+if %ERRORLEVEL% NEQ 0 goto :ZIP_ERROR
+goto ZIP_DIST
+
+:ZIP_ERROR
+echo.
+echo ERROR: Make sure 7zip is installed and available on the Windows Path!
+goto EXIT
+
+rem Build distributions
+:ZIP_DIST
+rem Build and verify full distribution
+7z a -bd -tZIP -mx=9 -x!.bzrignore -x!.gitignore -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory emacs-%EMACS_VER%-bin-i386.zip %TMP_DIST_DIR%
+7z t emacs-%EMACS_VER%-bin-i386.zip
+rem Build and verify binary only distribution
+7z a -bd -tZIP -mx=9 -x!.bzrignore -x!.gitignore -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory emacs-%EMACS_VER%-barebin-i386.zip %TMP_DIST_DIR%/README.W32 %TMP_DIST_DIR%/bin %TMP_DIST_DIR%/etc/DOC-X %TMP_DIST_DIR%/COPYING
+7z t emacs-%EMACS_VER%-barebin-i386.zip
+goto EXIT
+
+:EXIT
|