More Microsoft Visual Studio 2010 Express compiler build
More updates to support the latest freely downloadable Microsoft compiler.
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
Copyright (c) NetHack Development Team 1990-2010
|
||||
Copyright (c) NetHack Development Team 1990-2012
|
||||
NetHack may be freely redistributed. See license for details.
|
||||
==============================================================
|
||||
Instructions for compiling and installing
|
||||
NetHack 3.5 on a Windows 200x, XP, or Windows 7 system
|
||||
Instructions for compiling and installing
|
||||
NetHack 3.5 on a Windows system
|
||||
(Windows XP and Windows 2003 or later only)
|
||||
==============================================================
|
||||
Last revision: $Date$
|
||||
|
||||
@@ -21,7 +22,16 @@ You can build either the TTY version of NetHack or the Windows Graphical
|
||||
version. In either case you can use one of the following build
|
||||
environments:
|
||||
|
||||
o A copy of Microsoft Visual C++ Express 2010
|
||||
o A copy of Microsoft Visual Studio 2010 Express
|
||||
The current NetHack code has not been tested with earlier versions
|
||||
of the compiler.
|
||||
|
||||
64-bit Note: To build a 64-bit target with the Express edition, you
|
||||
will also need to download and install the
|
||||
Windows Software Development Kit version 7.1
|
||||
Visual Studio 2010 Express does not include a 64 bit
|
||||
C compiler by default.
|
||||
(http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx)
|
||||
|
||||
OR
|
||||
|
||||
@@ -97,14 +107,14 @@ I. Dispelling the Myths:
|
||||
|
||||
We have provided a Makefile for each of the following compilers:
|
||||
|
||||
o Microsoft Visual C++ 2010 Express Edition
|
||||
o Microsoft Visual Studio 2010 Express Visual C++ Compiler
|
||||
o Borland C 5.5.1
|
||||
o MinGW 2.0 (with GCC 3.2)
|
||||
|
||||
The Microsoft Visual C Makefile was created for use with MS NMAKE
|
||||
which is provided with the Microsoft compiler. The supplied Makefile
|
||||
has not been tested with any other versions of the Microsoft 32-bit
|
||||
compiler.
|
||||
The Microsoft Visual Studio 2010 Express 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 Borland C Makefile was created for use with Borland MAKE which
|
||||
is provided with the Borland compiler.
|
||||
@@ -126,10 +136,33 @@ Setting Up
|
||||
all the necessary environment variables for the compiler environment
|
||||
are set correctly.
|
||||
|
||||
For Visual Studio 2010 Express Edition, the installation will have
|
||||
placed a command prompt option on the menus that is properly configured
|
||||
for building. These instructions assume that you are using that to start
|
||||
your command prompt window for building.
|
||||
For Visual Studio 2010 Express, the installation should have placed
|
||||
a command prompt option on the Start menus that is properly configured
|
||||
for building:
|
||||
From
|
||||
Start | All Programs | Microsoft Visual Studio 2010 Express
|
||||
Select
|
||||
Visual Studio Command Prompt 2010
|
||||
|
||||
|
||||
64-bit Note: The additional installation of Microsoft Windows SDK V7.1
|
||||
will have placed a command prompt option on the Start menus
|
||||
that is properly configured for building as well, but
|
||||
supports the Windows SDK tools. That is what should be
|
||||
used if you wish to target an x64 build for example.
|
||||
From
|
||||
Start | All Programs | Microsoft Windows SDK v7.1
|
||||
Select
|
||||
Windows SDK 7.1 Command Prompt
|
||||
|
||||
Then, for an x86 (32-bit) target run the following at the
|
||||
command prompt:
|
||||
SETENV /x86
|
||||
|
||||
If you prefer to target an x64 (64-bit) build run the
|
||||
following at the command prompt:
|
||||
SETENV /x64
|
||||
|
||||
|
||||
For the GCC Makefile, add <mingw>\bin to your path, where <mingw>
|
||||
is your MinGW root directory.).
|
||||
@@ -221,16 +254,48 @@ Setting Up
|
||||
|
||||
Compiling
|
||||
|
||||
5. Now that everything is set up, change your current directory to src.
|
||||
5. Now that everything is set up...
|
||||
|
||||
For Microsoft compiler:
|
||||
nmake install
|
||||
For Visual Studio 2010 Express, as mentioned above, the installation should
|
||||
have placed a command prompt option on the Start menus that is properly configured
|
||||
for building:
|
||||
From
|
||||
Start | All Programs | Microsoft Visual Studio 2010 Express
|
||||
Select
|
||||
Visual Studio Command Prompt 2010
|
||||
Change your current directory to the NetHack src directory.
|
||||
Issue this command:
|
||||
nmake install
|
||||
|
||||
64-bit Note: As previously mentioned, you should start your
|
||||
command prompt from the Windows SDK v7.1 menu
|
||||
which is properly configured for building using
|
||||
the Windows SDK tools.
|
||||
From
|
||||
Start | All Programs | Microsoft Windows SDK v7.1
|
||||
Select
|
||||
Windows SDK 7.1 Command Prompt
|
||||
Change your current directory to the NetHack src directory.
|
||||
|
||||
Then, for an x86 (32-bit) target run the following at the
|
||||
command prompt:
|
||||
SETENV /x86
|
||||
nmake install
|
||||
|
||||
If you prefer to target an x64 (64-bit) build run the
|
||||
following at the command prompt:
|
||||
SETENV /x64
|
||||
nmake install
|
||||
|
||||
For Borland compiler:
|
||||
make /f Makefile.bcc install
|
||||
Change your current directory to the NetHack src directory.
|
||||
Issue this command:
|
||||
make /f Makefile.bcc install
|
||||
|
||||
For GCC:
|
||||
mingw32-make -f Makefile.gcc install
|
||||
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
|
||||
@@ -266,22 +331,22 @@ Notes:
|
||||
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. The executable produced by the TTY build is a 32-bit, flat-address
|
||||
space, non-overlayed .exe file, which should run on any true Win32
|
||||
environment with console I/O support.
|
||||
|
||||
The executable built by the graphical built is a 32-bit,
|
||||
flat-address space, non-overlayed .exe file, which should run on any
|
||||
true Win32 graphical environment.
|
||||
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 true Win32 environment.
|
||||
or
|
||||
- a 64-bit (x64) .exe file,
|
||||
which should run on any 64-bit Windows O/S.
|
||||
|
||||
To run NetHack, proceed to RUNNING NETHACK.
|
||||
|
||||
/--------------------------------\
|
||||
| BUILDING USING VISUAL C's IDE |
|
||||
\--------------------------------/
|
||||
/-------------------------------------------------\
|
||||
| BUILDING USING VISUAL STUDIO 2010 EXPRESS IDE |
|
||||
\-------------------------------------------------/
|
||||
|
||||
Only the Win32 native port built on the Windows API, or Graphical
|
||||
NetHack, can be built using the Visual C IDE.
|
||||
Only the native port built on the Windows API, or Graphical
|
||||
NetHack, can be built using the Visual Studo 2010 Express IDE.
|
||||
|
||||
I. Dispelling the Myths:
|
||||
|
||||
@@ -294,15 +359,18 @@ I. Dispelling the Myths:
|
||||
as described at the top of this document. If you didn't, you must go
|
||||
back and do so before proceeding.
|
||||
|
||||
II. To compile your copy of NetHack for Windows on a Windows NT/2000/XP
|
||||
machine using the Visual C IDE:
|
||||
II. To compile your copy of NetHack for Windows on a Windows machine
|
||||
using the Visual Studio 2010 Express IDE:
|
||||
|
||||
Setting Up
|
||||
|
||||
1. It almost goes without saying that you should make sure that your
|
||||
tools are set up and running correctly. (For the Microsoft Visual C
|
||||
IDE it should correctly fire up when you choose it in your Start |
|
||||
Programs menus.)
|
||||
tools are set up and running correctly. (For the Microsoft Visual
|
||||
Studio 2010 ExpressIDE it should correctly fire up when you choose
|
||||
it:
|
||||
Start | All Programs | Microsoft Visual Studio 2010 Express
|
||||
and select
|
||||
Visual C++ 2010 Express
|
||||
|
||||
2. Make sure all the NetHack files are in the appropriate directory
|
||||
structure. You should have a main directory with subdirectories
|
||||
@@ -351,11 +419,15 @@ Setting Up
|
||||
3. Ready your tool.
|
||||
Note: It's possible to build a graphical version using the Makefile,
|
||||
as explained above. However, the IDE build has full game
|
||||
functionality and is the officially released build.
|
||||
functionality.
|
||||
|
||||
Start the Visual C++ 2010 Express Edition IDE.
|
||||
In the Visual C++ 2010 Express Edition IDE menus, choose:
|
||||
File | Open | Project/Solution
|
||||
Start the Visual Studio 2010 Express IDE:
|
||||
Start | All Programs | Microsoft Visual Studio 2010 Express
|
||||
and select
|
||||
Visual C++ 2010 Express
|
||||
|
||||
In the Visual C++ 2010 Express IDE menus, choose:
|
||||
File | Open Project/Solution
|
||||
|
||||
|
||||
4. Set up for the build.
|
||||
@@ -363,31 +435,39 @@ Setting Up
|
||||
In the Visual C dialog box, navigate to the top of
|
||||
your NetHack source directory.
|
||||
|
||||
In there, highlight "nethack.sln" for Visual C++ 2010
|
||||
Express Edition and click on Open.
|
||||
In there, highlight "nethack.sln" for Visual C++ 2010 Express Edition
|
||||
and click on Open.
|
||||
|
||||
Once the workspace or solution has been opened, you should see
|
||||
the following list in the Visual C selection left pane:
|
||||
+ makedefs
|
||||
+ dgncomp
|
||||
+ dgnstuff
|
||||
+ dlb_main
|
||||
+ levcomp
|
||||
+ levstuff
|
||||
+ makedefs
|
||||
+ nethackw
|
||||
+ recover
|
||||
+ tile2bmp
|
||||
+ tilemap
|
||||
+ uudecode
|
||||
|
||||
For Visual C++ 2010 Express Edition, highlight 'nethackw' and
|
||||
select:
|
||||
Project | Set as Startup Project
|
||||
On the Visual C++ 2010 Express IDE menus, NetHackW should be the startup
|
||||
project in bold, but if it isn't make it so by right-clicking and
|
||||
choosing "set as Startup Project."
|
||||
|
||||
In Visual C++ 2010 Express Edition, you can just choose "Debug" or
|
||||
"Release" right on the menu in the "solutions configuration" box.
|
||||
In Visual C 2010 Express IDE menus right-click on
|
||||
"Solution NetHack (12 Projects)" and select "Configuration Manager."
|
||||
|
||||
The build of NetHackW which does not contain all the
|
||||
debugging information is smaller, and runs slightly quicker.
|
||||
Set the "Active Solution Configuration" to either
|
||||
Debug
|
||||
or
|
||||
Release
|
||||
and click the "Close" button.
|
||||
|
||||
|
||||
The Release build of NetHackW which does not contain all the
|
||||
debugging information and is smaller, and runs slightly quicker.
|
||||
The Debug build of NetHackW will spend time writing debug information
|
||||
to the disk as the game is played. Unless you are debugging or
|
||||
enhancing NetHack for Windows, you probably will want to choose the
|
||||
@@ -397,16 +477,18 @@ Building
|
||||
|
||||
5. Start your build.
|
||||
|
||||
In the Visual C++ 2010 Express Edition menus once again, highlight
|
||||
NetHackW, right-click and choose:
|
||||
Build
|
||||
This starts the build. It is likely that the IDE message window
|
||||
On the Visual C++ Express IDE menus once again, choose:
|
||||
Debug | Build Solution
|
||||
or press <F7> to accomplish the same thing.
|
||||
|
||||
That starts the build. It is likely that the IDE message window
|
||||
where you are doing the compiling will be occupied for a while.
|
||||
|
||||
6. If all has gone well to this point, you should now have a NetHack
|
||||
executable called NetHackW.exe in the "binary" directory, along with
|
||||
all the support files that it needs.
|
||||
|
||||
|
||||
|
||||
/-----------------\
|
||||
| RUNNING NETHACK |
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
# NetHack 3.5 Makefile.msc $Date$ $Revision$
|
||||
# Copyright (c) NetHack PC Development Team 1993-2010
|
||||
# Copyright (c) NetHack PC Development Team 1993-2012
|
||||
#
|
||||
# NetHack 3.5.x Makefile for MS Visual C++
|
||||
# NetHack 3.5.x Makefile for MS Visual Studio Visual C++ compiler
|
||||
#
|
||||
# Win32 Compilers Tested:
|
||||
# - Microsoft Visual C++ 2005 Express, with the Platform SDK
|
||||
# - Microsoft 32 bit Visual C++ V4.x
|
||||
# - Microsoft 32 bit Visual C++ V6.0 SP3, SP4
|
||||
# - Microsoft Visual Studio 2010 Express
|
||||
# - Microsoft Visual Studio 2010 Express, with the Platform SDK
|
||||
#
|
||||
# This is used for building two versions of NetHack:
|
||||
# A tty port utilizing the Win32 Console I/O subsystem, Console
|
||||
@@ -25,10 +24,7 @@
|
||||
# If you have any questions read the sys/winnt/Install.nt file included
|
||||
# with the distribution.
|
||||
#==============================================================================
|
||||
# Do not delete the following 3 lines.
|
||||
#
|
||||
TARGETOS=BOTH
|
||||
APPVER=4.0
|
||||
# Do not delete the following line.
|
||||
!include <win32.mak>
|
||||
|
||||
# Graphical interface
|
||||
@@ -214,11 +210,15 @@ cdebug = -Zi -Od
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
cflags2 = $(cflags:-W4=-W3)
|
||||
#More verbose below
|
||||
#cflags2 = $(cflags) -wd4131
|
||||
|
||||
#==========================================
|
||||
# Util builds
|
||||
#==========================================
|
||||
|
||||
cflagsUtil = $(cdebug) $(cflags) $(INCLDIR) \
|
||||
cflagsUtil = $(cdebug) $(cflags2) $(INCLDIR) \
|
||||
$(WINPFLAG) $(DLBFLG)
|
||||
lflagsUtil = $(ldebug) $(lflags) $(conlibs)
|
||||
|
||||
@@ -232,14 +232,14 @@ LIBS= user32.lib winmm.lib $(ZLIB)
|
||||
|
||||
!IF ("$(GRAPHICAL)"=="Y")
|
||||
|
||||
cflagsGame = $(cdebug) $(cflags) $(guiflags) $(INCLDIR) \
|
||||
$(WINPFLAG) $(DLBFLG) $(GAMEPDBFILE) $(GAMEMAPFILE)
|
||||
cflagsGame = $(cdebug) $(cflags2) $(guiflags) $(INCLDIR) \
|
||||
$(WINPFLAG) $(DLBFLG) $(GAMEPDBFILE) $(GAMEMAPFILE) /W3
|
||||
lflagsGame = $(ldebug) $(lflags) $(guilibs)
|
||||
|
||||
!ELSE
|
||||
|
||||
cflagsGame = $(cdebug) $(cflags) $(conflags) $(INCLDIR) \
|
||||
$(WINPFLAG) $(DLBFLG) $(GAMEPDBFILE) $(GAMEMAPFILE)
|
||||
cflagsGame = $(cdebug) $(cflags2) $(conflags) $(INCLDIR) \
|
||||
$(WINPFLAG) $(DLBFLG) $(GAMEPDBFILE) $(GAMEMAPFILE) /W3
|
||||
lflagsGame = $(ldebug) $(lflags) $(conlibs)
|
||||
|
||||
!ENDIF
|
||||
@@ -682,17 +682,17 @@ $(U)nhsizes.exe: $(O)nhsizes.o
|
||||
$(link) $(lflagsUtil) -out:$@ $(O)nhsizes.o $(O)panic.o $(O)alloc.o
|
||||
|
||||
$(O)nhsizes.o: $(CONFIG_H) nhsizes.c
|
||||
$(CC) $(cflagsUtil) -Fo$@ nhsizes.c
|
||||
@$(CC) $(cflagsUtil) -Fo$@ nhsizes.c
|
||||
|
||||
$(U)makedefs.exe: $(MAKEOBJS)
|
||||
$(link) $(lflagsUtil) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(MAKEOBJS)
|
||||
@$(link) $(lflagsUtil) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(MAKEOBJS)
|
||||
|
||||
$(O)makedefs.o: $(CONFIG_H) $(INCL)\monattk.h $(INCL)\monflag.h $(INCL)\objclass.h \
|
||||
$(INCL)\monsym.h $(INCL)\qtext.h $(INCL)\patchlevel.h \
|
||||
$(U)makedefs.c
|
||||
@if not exist $(OBJ)\*.* echo creating directory $(OBJ)
|
||||
@if not exist $(OBJ)\*.* mkdir $(OBJ)
|
||||
@$(CC) $(cflagsUtil) -Fo$@ $(U)makedefs.c
|
||||
$(CC) $(cflagsUtil) -Fo$@ $(U)makedefs.c
|
||||
|
||||
#
|
||||
# date.h should be remade every time any of the source or include
|
||||
@@ -1091,7 +1091,13 @@ $(O)til2bm32.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(INCL)\win32api.h
|
||||
|
||||
spotless: clean
|
||||
! IF ("$(OBJ)"!="")
|
||||
-rmdir $(OBJ) /s /Q
|
||||
if exist $(OBJ)\* rmdir $(OBJ) /s /Q
|
||||
if exist $(GAMEDIR)\nhdefkey.dll del $(GAMEDIR)\nhdefkey.dll
|
||||
if exist $(GAMEDIR)\nh340key.dll del $(GAMEDIR)\nh340key.dll
|
||||
if exist $(GAMEDIR)\nhraykey.dll del $(GAMEDIR)\nhraykey.dll
|
||||
if exist $(GAMEDIR)\NetHack.exe del $(GAMEDIR)\NetHack.exe
|
||||
if exist $(GAMEDIR)\NetHack.pdb del $(GAMEDIR)\NetHack.pdb
|
||||
if exist $(GAMEDIR)\nhdat del $(GAMEDIR)\nhdat
|
||||
! ENDIF
|
||||
if exist $(INCL)\date.h del $(INCL)\date.h
|
||||
if exist $(INCL)\onames.h del $(INCL)\onames.h
|
||||
@@ -1156,6 +1162,36 @@ clean:
|
||||
if exist $(SRC)\*.lnk del $(SRC)\*.lnk
|
||||
if exist $(SRC)\*.map del $(SRC)\*.map
|
||||
if exist $(O)install.tag del $(O)install.tag
|
||||
if exist $(O)console.res del $(O)console.res
|
||||
if exist $(O)dgncomp.MAP del $(O)dgncomp.MAP
|
||||
if exist $(O)dgncomp.PDB del $(O)dgncomp.PDB
|
||||
if exist $(O)dlb_main.MAP del $(O)dlb_main.MAP
|
||||
if exist $(O)dlb_main.PDB del $(O)dlb_main.PDB
|
||||
if exist $(O)gamedir.tag del $(O)gamedir.tag
|
||||
if exist $(O)levcomp.MAP del $(O)levcomp.MAP
|
||||
if exist $(O)levcomp.PDB del $(O)levcomp.PDB
|
||||
if exist $(O)makedefs.MAP del $(O)makedefs.MAP
|
||||
if exist $(O)makedefs.PDB del $(O)makedefs.PDB
|
||||
if exist $(O)nh340key.def del $(O)nh340key.def
|
||||
if exist $(O)nh340key.exp del $(O)nh340key.exp
|
||||
if exist $(O)nh340key.lib del $(O)nh340key.lib
|
||||
if exist $(O)nh340key.map del $(O)nh340key.map
|
||||
if exist $(O)nh340key.PDB del $(O)nh340key.PDB
|
||||
if exist $(O)nhdefkey.def del $(O)nhdefkey.def
|
||||
if exist $(O)nhdefkey.exp del $(O)nhdefkey.exp
|
||||
if exist $(O)nhdefkey.lib del $(O)nhdefkey.lib
|
||||
if exist $(O)nhdefkey.map del $(O)nhdefkey.map
|
||||
if exist $(O)nhdefkey.PDB del $(O)nhdefkey.PDB
|
||||
if exist $(O)nhraykey.def del $(O)nhraykey.def
|
||||
if exist $(O)nhraykey.exp del $(O)nhraykey.exp
|
||||
if exist $(O)nhraykey.lib del $(O)nhraykey.lib
|
||||
if exist $(O)nhraykey.map del $(O)nhraykey.map
|
||||
if exist $(O)nhraykey.PDB del $(O)nhraykey.PDB
|
||||
if exist $(O)obj.tag del $(O)obj.tag
|
||||
if exist $(O)sp_lev.tag del $(O)sp_lev.tag
|
||||
if exist $(O)uudecode.MAP del $(O)uudecode.MAP
|
||||
if exist $(O)uudecode.PDB del $(O)uudecode.PDB
|
||||
|
||||
! IF ("$(WINPFLAG)"!="")
|
||||
if exist $(TILEBMP16) del $(TILEBMP16)
|
||||
if exist $(TILEBMP32) del $(TILEBMP32)
|
||||
|
||||
Reference in New Issue
Block a user