build both tty NetHack.exe and gui NetHackW.exe
Changes to be committed: modified: include/config.h modified: include/extern.h modified: include/flag.h modified: include/global.h modified: include/ntconf.h modified: include/wintty.h modified: src/cmd.c modified: src/files.c modified: src/options.c modified: sys/share/pcmain.c modified: sys/share/pcsys.c modified: sys/share/pcunix.c modified: sys/winnt/Makefile.gcc modified: sys/winnt/Makefile.msc modified: sys/winnt/nttty.c new file: sys/winnt/stubs.c modified: sys/winnt/winnt.c modified: util/makedefs.c modified: win/tty/wintty.c Adjust the code and the command line Makefile so that you no longer have to choose whether to build the tty version NetHack.exe, or the gui version NetHackW.exe. Both will now be built in a single 'nmake install' pass.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.5 pcmain.c $NHDT-Date: 1429135416 2015/04/15 22:03:36 $ $NHDT-Branch: win32-x64-working $:$NHDT-Revision: 1.60 $ */
|
||||
/* NetHack 3.5 pcmain.c $NHDT-Date: 1429675589 2015/04/22 04:06:29 $ $NHDT-Branch: win32-x64-working $:$NHDT-Revision: 1.61 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -55,6 +55,8 @@ extern void FDECL(nethack_exit,(int));
|
||||
#ifdef WIN32
|
||||
extern boolean getreturn_enabled; /* from sys/share/pcsys.c */
|
||||
extern int redirect_stdout; /* from sys/share/pcsys.c */
|
||||
char *NDECL(exename);
|
||||
char default_window_sys[] = "mswin";
|
||||
#endif
|
||||
|
||||
#if defined(MSWIN_GRAPHICS)
|
||||
@@ -79,7 +81,7 @@ unsigned _stklen = STKSIZ;
|
||||
* to help MinGW decide which entry point to choose. If both main and
|
||||
* WinMain exist, the resulting executable won't work correctly.
|
||||
*/
|
||||
#ifndef MSWIN_GRAPHICS
|
||||
#ifndef __MINGW32__
|
||||
int
|
||||
main(argc,argv)
|
||||
int argc;
|
||||
@@ -88,6 +90,10 @@ char *argv[];
|
||||
boolean resuming;
|
||||
|
||||
sys_early_init();
|
||||
#ifdef WIN32
|
||||
Strcpy(default_window_sys, "tty");
|
||||
#endif
|
||||
|
||||
resuming = pcmain(argc,argv);
|
||||
#ifdef LAN_FEATURES
|
||||
init_lan_features();
|
||||
@@ -97,7 +103,7 @@ char *argv[];
|
||||
/*NOTREACHED*/
|
||||
return 0;
|
||||
}
|
||||
#endif /*MSWIN_GRAPHICS*/
|
||||
#endif
|
||||
|
||||
boolean
|
||||
pcmain(argc,argv)
|
||||
@@ -142,7 +148,11 @@ char *argv[];
|
||||
#endif
|
||||
hname = "NetHack"; /* used for syntax messages */
|
||||
|
||||
#ifndef WIN32
|
||||
choose_windows(DEFAULT_WINDOW_SYS);
|
||||
#else
|
||||
choose_windows(default_window_sys);
|
||||
#endif
|
||||
|
||||
#if !defined(AMIGA) && !defined(GNUDOS)
|
||||
/* Save current directory and make sure it gets restored when
|
||||
@@ -217,7 +227,7 @@ char *argv[];
|
||||
# endif
|
||||
ami_wininit_data();
|
||||
#endif
|
||||
#ifdef WIN32CON
|
||||
#ifdef WIN32
|
||||
save_getreturn_status = getreturn_enabled;
|
||||
raw_clear_screen();
|
||||
getreturn_enabled = TRUE;
|
||||
@@ -267,16 +277,14 @@ char *argv[];
|
||||
* may do a prscore().
|
||||
*/
|
||||
if (!strncmp(argv[1], "-s", 2)) {
|
||||
#if defined(MSWIN_GRAPHICS) || defined(WIN32CON)
|
||||
#if defined(WIN32)
|
||||
int sfd = (int)_fileno(stdout);
|
||||
redirect_stdout = (sfd >= 0) ? !isatty(sfd) : 0;
|
||||
|
||||
# ifdef MSWIN_GRAPHICS
|
||||
if (!redirect_stdout) {
|
||||
raw_printf("-s is not supported for the Graphical Interface\n");
|
||||
nethack_exit(EXIT_SUCCESS);
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(CHDIR) && !defined(NOCWD_ASSUMPTIONS)
|
||||
@@ -336,11 +344,22 @@ char *argv[];
|
||||
chdirx(hackdir,1);
|
||||
#endif
|
||||
|
||||
#ifdef MSDOS
|
||||
/* We do this early for MSDOS because there are several
|
||||
* display/tile related options that affect init_nhwindows()
|
||||
#if defined(MSDOS) || defined (WIN32)
|
||||
/* In 3.6.0, several ports process options before they init
|
||||
* the window port. This allows settings that impact window
|
||||
* ports to be specified or read from the sys or user config files.
|
||||
*/
|
||||
process_options(argc, argv);
|
||||
|
||||
# ifdef WIN32
|
||||
/*
|
||||
if (!strncmpi(windowprocs.name, "mswin", 5))
|
||||
NHWinMainInit();
|
||||
else
|
||||
*/
|
||||
if (!strncmpi(windowprocs.name, "tty", 3))
|
||||
nttty_open(1);
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(MSDOS) || defined(WIN32)
|
||||
@@ -353,14 +372,14 @@ char *argv[];
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MSDOS
|
||||
#if defined(MSDOS) || defined(WIN32)
|
||||
init_nhwindows(&argc,argv);
|
||||
#else
|
||||
init_nhwindows(&argc,argv);
|
||||
process_options(argc, argv);
|
||||
#endif
|
||||
|
||||
#ifdef WIN32CON
|
||||
#ifdef WIN32
|
||||
toggle_mouse_support(); /* must come after process_options */
|
||||
#endif
|
||||
|
||||
@@ -637,6 +656,19 @@ char *argv[];
|
||||
case 'l':
|
||||
bigscreen = -1;
|
||||
break;
|
||||
#endif
|
||||
#ifdef WIN32
|
||||
case 'w': /* windowtype */
|
||||
if (strncmpi(&argv[0][2],"tty", 3)) {
|
||||
nttty_open(1);
|
||||
}
|
||||
/*
|
||||
else {
|
||||
NHWinMainInit();
|
||||
}
|
||||
*/
|
||||
choose_windows(&argv[0][2]);
|
||||
break;
|
||||
#endif
|
||||
case '@':
|
||||
flags.randomall = 1;
|
||||
@@ -751,6 +783,32 @@ authorize_wizard_mode()
|
||||
#define PATH_SEPARATOR '\\'
|
||||
# endif
|
||||
|
||||
|
||||
#ifdef WIN32
|
||||
static char exenamebuf[PATHLEN];
|
||||
|
||||
char *
|
||||
exename()
|
||||
{
|
||||
int bsize = PATHLEN;
|
||||
char *tmp = exenamebuf, *tmp2;
|
||||
|
||||
# ifdef UNICODE
|
||||
{
|
||||
TCHAR wbuf[PATHLEN * 4];
|
||||
GetModuleFileName((HANDLE)0, wbuf, PATHLEN * 4);
|
||||
WideCharToMultiByte(CP_ACP, 0, wbuf, -1, tmp, bsize, NULL, NULL);
|
||||
}
|
||||
# else
|
||||
*(tmp + GetModuleFileName((HANDLE)0, tmp, bsize)) = '\0';
|
||||
# endif
|
||||
tmp2 = strrchr(tmp, PATH_SEPARATOR);
|
||||
if (tmp2) *tmp2 = '\0';
|
||||
tmp2++;
|
||||
return tmp2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define EXEPATHBUFSZ 256
|
||||
char exepathbuf[EXEPATHBUFSZ];
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.5 pcsys.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
|
||||
/* NetHack 3.5 pcsys.c $NHDT-Date: 1429675591 2015/04/22 04:06:31 $ $NHDT-Branch: win32-x64-working $:$NHDT-Revision: 1.24 $ */
|
||||
/* NetHack 3.5 pcsys.c $Date: 2012/01/22 06:33:47 $ $Revision: 1.18 $ */
|
||||
/* SCCS Id: @(#)pcsys.c 3.5 2002/01/22 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -54,7 +54,7 @@ STATIC_DCL boolean NDECL(comspec_exists);
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef WIN32CON
|
||||
#ifdef WIN32
|
||||
extern int GUILaunched; /* from nttty.c */
|
||||
#endif
|
||||
|
||||
@@ -411,7 +411,7 @@ const char *str;
|
||||
return;
|
||||
}
|
||||
|
||||
#ifndef WIN32CON
|
||||
#ifndef WIN32
|
||||
void
|
||||
msmsg VA_DECL(const char *, fmt)
|
||||
VA_START(fmt);
|
||||
@@ -529,7 +529,7 @@ STATIC_OVL void msexit()
|
||||
restore_colors();
|
||||
# endif
|
||||
#endif
|
||||
#ifdef WIN32CON
|
||||
#ifdef WIN32
|
||||
/* Only if we started from the GUI, not the command prompt,
|
||||
* we need to get one last return, so the score board does
|
||||
* not vanish instantly after being created.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.5 pcunix.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
|
||||
/* NetHack 3.5 pcunix.c $NHDT-Date: 1429675591 2015/04/22 04:06:31 $ $NHDT-Branch: win32-x64-working $:$NHDT-Revision: 1.31 $ */
|
||||
/* NetHack 3.5 pcunix.c $Date: 2009/05/06 10:50:30 $ $Revision: 1.27 $ */
|
||||
/* SCCS Id: @(#)pcunix.c 3.5 1994/11/07 */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
@@ -192,8 +192,9 @@ getlock()
|
||||
if(c == 'y' || c == 'Y')
|
||||
# ifndef SELF_RECOVER
|
||||
if(eraseoldlocks()) {
|
||||
# if defined(WIN32CON)
|
||||
clear_screen(); /* display gets fouled up otherwise */
|
||||
# if defined(WIN32)
|
||||
if (!strncmpi(windowprocs.name, "tty", 3))
|
||||
clear_screen(); /* display gets fouled up otherwise */
|
||||
# endif
|
||||
goto gotlock;
|
||||
} else {
|
||||
@@ -205,8 +206,9 @@ getlock()
|
||||
}
|
||||
# else /*SELF_RECOVER*/
|
||||
if(recover_savefile()) {
|
||||
# if defined(WIN32CON)
|
||||
clear_screen(); /* display gets fouled up otherwise */
|
||||
# if defined(WIN32)
|
||||
if (!strncmpi(windowprocs.name, "tty", 3))
|
||||
clear_screen(); /* display gets fouled up otherwise */
|
||||
# endif
|
||||
goto gotlock;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user