change references from winnt to windows
rename sys/winnt to sys/windows move vs (visual studio) folder out of win/win32 and into sys/windows rename include/ntconf.h to include/windconf.h rename winnt.c to windsys.c place visual studio projects into individual subfolders. This will hopefully resolve GitHub issue #484 as well.
This commit is contained in:
323
sys/windows/Install.windows
Normal file
323
sys/windows/Install.windows
Normal file
@@ -0,0 +1,323 @@
|
||||
Copyright (c) NetHack Development Team 1990-2021
|
||||
NetHack may be freely redistributed. See license for details.
|
||||
==============================================================
|
||||
Instructions for compiling and installing
|
||||
NetHack 3.7 on a Windows system
|
||||
(Windows 7/8.x/10 or later only)
|
||||
==============================================================
|
||||
Last revision: $NHDT-Date: 1594155895 2020/07/07 21:04:55 $
|
||||
|
||||
Credit for the porting of NetHack to the Win32 Console Subsystem goes to
|
||||
the NT Porting Team started by Michael Allison.
|
||||
|
||||
Credit for the Win32 Graphical version of NetHack (aka "NetHack for
|
||||
Windows" or NetHackW) goes to Alex Kompel who initially developed and
|
||||
contributed the port.
|
||||
|
||||
Alex Kompel, Dion Nicolaas, Yitzhak Sapir, Derek S. Ray, Michael Allison,
|
||||
Pasi Kallinen, Bart House, and Janet Walz contributed to the maintainance
|
||||
of the tty and graphical windows versions of NetHack 3.7.0.
|
||||
|
||||
You can build a TTY version of NetHack and a Windows Graphical
|
||||
version. You can use one of the following build environments:
|
||||
|
||||
o A copy of Microsoft Visual Studio 2017 Community Edition or
|
||||
a copy of Microsoft Visual Studio 2019 Community Edition
|
||||
|
||||
OR
|
||||
|
||||
o (Untested for 3.7) A copy of MinGW. MinGW is a collection of header
|
||||
files and import libraries with which native Windows32 programs
|
||||
can be built; the MinGW distribution contains the GNU Compiler
|
||||
Collection. You can download MinGW at
|
||||
http://www.mingw.org/
|
||||
Earlier versions of MinGW will not allow you to build the Windows
|
||||
Graphical version.
|
||||
|
||||
/---------------------------------------------\
|
||||
| Directories for a Win32 NetHack build |
|
||||
\---------------------------------------------/
|
||||
|
||||
|
||||
(NetHack-top)
|
||||
|
|
||||
+-----+-----+------+------+-----+-------------+--------~------+
|
||||
| | | | | | | |
|
||||
util dat doc include src sys win lib (external)
|
||||
| | |
|
||||
+------+ +------+ +-----------+
|
||||
| | | | | |
|
||||
share windows tty win32 Lua-5.4.3 pdcurses
|
||||
|
|
||||
vs
|
||||
|
||||
/--------------------------------------------------------\
|
||||
| Building And Running Using Visual Studio 2017 or 2019 |
|
||||
\--------------------------------------------------------/
|
||||
|
||||
Before proceeding, please obtain the lua-5.4.3 sources and copy them to
|
||||
the new directory lib\lua-5.4.3\src. This source can be obtained either from
|
||||
http://www.lua.org/ftp/lua-5.4.3.tar.gz or from the git hub mirror
|
||||
https://github.com/lua/lua.git using the tag 'v5.4.3'. The build expects
|
||||
to find lua files such as 'lua.h' at 'lib\lua-5.4.3\src\lua.h'.
|
||||
|
||||
If you are NOT using Visual Studio 2017 or 2019 IDE, or you prefer to build
|
||||
using a Make utility and a Makefile proceed to "Building Using Make".
|
||||
|
||||
When using either Visual Studio 2017 or 2019, you simply need to load the
|
||||
solution file within the IDE, build the solution and run the version
|
||||
of NetHack you wish to run.
|
||||
|
||||
The Visual Studio NetHack solution file can be found here:
|
||||
win\win32\vs\NetHack.sln
|
||||
|
||||
Before executing the steps to build listed in the next paragraph,
|
||||
decide if you want to include optional curses window-port. See
|
||||
the note just below entitled "Optional curses window-port support."
|
||||
|
||||
So the steps are:
|
||||
1. Launch the IDE.
|
||||
2. Open the appropriate solution file.
|
||||
3. Select the build configuration you wish to use (Release, Debug, etc.).
|
||||
4. From the build menu, select build solution.
|
||||
5. Type F5 to start debugging.
|
||||
|
||||
You can also build all the projects for all platforms and configurations
|
||||
using a "build.bat" batch file found in the same directory as the solution.
|
||||
|
||||
Open a developer command prompt for the version of Visual Studio you are
|
||||
using. Change to the directory win\win32\vs and run "build.bat".
|
||||
|
||||
* Optional curses window-port support *
|
||||
|
||||
Since 3.6.2, the community patch for a window-port that uses curses has been
|
||||
incorporated into the NetHack source code tree. That window-port, which
|
||||
evolved from work originally done by Karl Garrison, has been used in several
|
||||
NetHack variants and on nethack.alt.org and on www.hardfought.org/nethack/.
|
||||
|
||||
If you want to include the curses window-port support in your Visual Studio
|
||||
build, you will have to first obtain the PDCurses sources from
|
||||
https://github.com/wmcbrine/PDCurses
|
||||
and have them available prior to building NetHack. There are two ways to
|
||||
enable curses window-port support during the VS build: Either set the
|
||||
environment variable PDCURSES to a folder containing a PDCurses
|
||||
repository/source-tree
|
||||
OR
|
||||
Place the PDCurses folder alongside the NetHack source repository prior
|
||||
to proceeding with steps 1 through 5 above.
|
||||
|
||||
|
||||
/-------------------------------------------\
|
||||
| Building From the Command Line Using Make |
|
||||
\-------------------------------------------/
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
-- Beginning of prerequisite step --
|
||||
|
||||
The first step in building either version of NetHack via Makefile is to
|
||||
execute sys\windows\nhsetup.bat to move some files to their required locations.
|
||||
|
||||
From the command prompt:
|
||||
cd sys\windows
|
||||
nhsetup
|
||||
|
||||
From a Windows explorer window:
|
||||
double-click on nhsetup.bat
|
||||
|
||||
If you wish to build from the command line, proceed to "BUILDING FROM
|
||||
THE COMMAND LINE."
|
||||
|
||||
-- end of prerequisite step --
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
Two different versions of NetHack will be built for Windows from the
|
||||
command line using the Makefile approach:
|
||||
A tty port utilizing the Win32 Console I/O subsystem, Console
|
||||
NetHack;
|
||||
A Win32 native port built on the Windows API, Graphical NetHack or
|
||||
NetHackW.
|
||||
|
||||
The executable for Console NetHack will be named NetHack.exe. The
|
||||
executable for Graphical NetHack will be named NetHackW.exe. The
|
||||
Makefile configuration will build both; NetHackW.exe and NetHack.exe
|
||||
will be able to use the same datafiles, save files and bones files.
|
||||
|
||||
Since the last official release of NetHack, compilers and computer
|
||||
architectures have evolved and you can now choose whether to build
|
||||
a 32-bit x86 version, or a 64-bit x64 version. The default Makefile
|
||||
is set up for a 32-bit x86 version, but that's only because it will
|
||||
run on the most number of existing Windows environments.
|
||||
|
||||
NetHack's save files and bones files in the 3.7.0 release have not yet
|
||||
evolved enough to allow them to interchange between the 32-bit version
|
||||
and the 64-bit version (or between different platforms). Hopefully
|
||||
that will change in an upcoming release.
|
||||
|
||||
I. Dispelling the Myths:
|
||||
|
||||
Compiling NetHack for Windows is not as easy as it sounds, nor as hard
|
||||
as it looks, however it will behoove you to read this entire section
|
||||
through before beginning the task.
|
||||
|
||||
We have provided a Makefile for each of the following compilers:
|
||||
|
||||
o Microsoft Visual Studio 2017 or 2019 C++ Compiler
|
||||
The Community Editions are fine and available at no cost
|
||||
o MinGW 2.0 (with GCC 3.2)
|
||||
|
||||
The Microsoft Visual Studio makefile was created for use
|
||||
with MS NMAKE which is provided with the Microsoft compiler.
|
||||
The supplied Makefile may work with earlier versions of the Microsoft
|
||||
compiler, but that has not been tested.
|
||||
|
||||
The GCC Makefile was created for use with GNU Make version 3.79.1,
|
||||
which comes with the MinGW package.
|
||||
|
||||
You may find it useful to obtain copies of lex (flex) and yacc
|
||||
(bison, or byacc). While not strictly necessary to compile nethack,
|
||||
they are required should you desire to make any changes to the level
|
||||
and dungeon compilers.
|
||||
|
||||
II. To compile your copy of NetHack on a Windows machine:
|
||||
|
||||
Setting Up
|
||||
|
||||
1. It almost goes without saying that you should make sure that your
|
||||
tools are set up and running correctly. That includes ensuring that
|
||||
all the necessary environment variables for the compiler environment
|
||||
are set correctly.
|
||||
|
||||
Change your current directory to the src subfolder of the nethack
|
||||
source tree.
|
||||
cd src
|
||||
|
||||
GCC
|
||||
|
||||
For the GCC Makefile, add <mingw>\bin to your path, where <mingw>
|
||||
is your MinGW root directory.).
|
||||
|
||||
Change your current directory to src subfolder of the nethack
|
||||
source tree.
|
||||
cd src
|
||||
|
||||
2. Since 3.6.2, the community patch for an optional curses window-port
|
||||
has been incorporated into the NetHack source code tree. That
|
||||
window-port, which evolved from work originally done by Karl Garrison,
|
||||
has been used in several NetHack variants and on nethack.alt.org and
|
||||
on www.hardfought.org/nethack/. The optional curses window-port is
|
||||
available for Windows, Mac OS X, and Unix (and also DOS).
|
||||
|
||||
If you want to include the optional curses window-port support in your
|
||||
command line Makefile build, you will have to first obtain the
|
||||
PDCurses sources from https://github.com/wmcbrine/PDCurses
|
||||
and have that source code tree available prior to building NetHack.
|
||||
Edit your Makefile and in Question 4 of the four decisions you can
|
||||
make in there, uncomment these two lines:
|
||||
ADD_CURSES=Y
|
||||
PDCURSES_TOP=..\..\pdcurses
|
||||
|
||||
Adjust the PDCURSES_TOP macro so that it points to the correct
|
||||
location for the top of the PDCurses source tree if it differs from
|
||||
the path shown.
|
||||
|
||||
3. Make sure all the necessary files are in the appropriate directory
|
||||
structure. You should have a main NetHack top directory with
|
||||
subdirectories dat, doc, include, src, sys\share, sys\windows,
|
||||
win\tty, util.
|
||||
|
||||
If you are including the optional Curses window port into your
|
||||
build,then you will need the top of the PDCurses sources in a
|
||||
folder parallel to the top of the NetHack folder (or you will need
|
||||
to change the value of the PDCURSES_TOP macro in the Makefile to
|
||||
specify the appropriate location.
|
||||
|
||||
(You can check the file "Files" in your top level directory for a
|
||||
more complete listing of what file is in which directory.)
|
||||
|
||||
If you downloaded or ftp'd the sources from a UNIX system, the lines
|
||||
will probably end in UNIX-style newlines, instead of the carriage
|
||||
return and line feed pairs used by Windows. Some programs have
|
||||
trouble with them, so you may need to convert them. The compiler
|
||||
should not have any problems with them however.
|
||||
|
||||
4. Edit your Makefile if you wish, but it is not required unless
|
||||
you are altering the build options.
|
||||
|
||||
If you are recompiling after patching your sources, or if you got
|
||||
your files from somewhere other than the official distribution,
|
||||
"touch makedefs.c" to ensure that certain files (onames.h and pm.h)
|
||||
are remade, lest potentially troublesome timestamps fool your make
|
||||
(or nmake) utility.
|
||||
|
||||
Compiling
|
||||
|
||||
5. Now that everything is set up...
|
||||
|
||||
For the Visual Studio compiler, as mentioned above, you should now be
|
||||
at the command prompt to carry out the build and your current
|
||||
directory should be the src subdirectory in the NetHack source tree.
|
||||
|
||||
In the src subdirectory, issue this command:
|
||||
nmake install
|
||||
|
||||
For GCC:
|
||||
Change your current directory to the NetHack src directory.
|
||||
Issue this command:
|
||||
mingw32-make -f Makefile.gcc install
|
||||
|
||||
If you get any errors along the way then something has not been set
|
||||
up correctly. The time it takes to compile depends on your
|
||||
particular machine of course, but you should be able to go for lunch
|
||||
and return to find everything finished. The less memory, and slower
|
||||
your machine, the longer the lunch you may take. :-)
|
||||
|
||||
In any case, it is likely that the command prompt window where you
|
||||
are doing the compiling will be occupied for a while. If all goes
|
||||
well, you will get an NetHack executable.
|
||||
|
||||
Notes:
|
||||
|
||||
1. To install an update of NetHack after changing something, change
|
||||
your current directory to src and issue the appropriate command for
|
||||
your compiler:
|
||||
|
||||
For Microsoft compiler:
|
||||
nmake
|
||||
|
||||
For GCC:
|
||||
mingw32-make -f Makefile.gcc
|
||||
|
||||
If you add, delete, or reorder monsters or objects, or you change
|
||||
the format of saved level files, delete any save and bones files.
|
||||
(Trying to use such files sometimes produces amusing confusions on
|
||||
the game's part, but usually crashes.)
|
||||
|
||||
If you made changes to any of the level compiler software, you may
|
||||
have to delete dgn_flex.c, dgn_yacc.c, lev_flex.c, and lev_yacc.c
|
||||
from the util directory to ensure that they are remade.
|
||||
|
||||
2. Depending on the build and compiler and tools used above, the
|
||||
executable produced by the TTY build is either:
|
||||
- a 32-bit (x86), flat-address space, non-overlayed .exe file,
|
||||
which should run on any recent Win32 environment.
|
||||
or
|
||||
- a 64-bit (x64) .exe file,
|
||||
which should run on any 64-bit Windows O/S.
|
||||
|
||||
Note that saved games are NOT compatible between the 32-bit and the
|
||||
64-bit versions at this time.
|
||||
|
||||
NetHack.exe is the tty version. NetHackW.exe is the graphical version.
|
||||
Play NetHack.
|
||||
|
||||
PROBLEMS
|
||||
|
||||
If you discover a bug and wish to report it, or if you have comments
|
||||
or suggestions we recommend using our "Contact Us" web page at:
|
||||
http://www.nethack.org/common/contact.html
|
||||
|
||||
If you don't have access to the web, or you want to send us a patch
|
||||
to the NetHack source code feel free to drop us a line c/o:
|
||||
DevTeam (at) nethack.org
|
||||
|
||||
Happy NetHacking!
|
||||
Reference in New Issue
Block a user