Merge branch 'NetHack-3.7'
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
/*-Copyright (c) Robert Patrick Rankin, 2017. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
#ifdef MAKEDEFS_C
|
||||
#if defined(MAKEDEFS_C) || defined (MDLIB_C)
|
||||
/* in makedefs.c, all we care about is the list of names */
|
||||
|
||||
#define A(nam, typ, s1, s2, mt, atk, dfn, cry, inv, al, cl, rac, cost, clr) nam
|
||||
@@ -32,7 +32,7 @@ static const char *artifact_names[] = {
|
||||
/* clang-format on */
|
||||
|
||||
static NEARDATA struct artifact artilist[] = {
|
||||
#endif /* MAKEDEFS_C */
|
||||
#endif /* MAKEDEFS_C || MDLIB_C */
|
||||
|
||||
/* Artifact cost rationale:
|
||||
* 1. The more useful the artifact, the better its cost.
|
||||
@@ -256,7 +256,7 @@ A("The Palantir of Westernesse", CRYSTAL_BALL,
|
||||
|
||||
#undef A
|
||||
|
||||
#ifndef MAKEDEFS_C
|
||||
#if !defined(MAKEDEFS_C) && !defined(MDLIB_C)
|
||||
#undef NO_ATTK
|
||||
#undef NO_DFNS
|
||||
#undef DFNS
|
||||
|
||||
@@ -16,7 +16,7 @@ E char *FDECL(fmt_ptr, (const genericptr));
|
||||
|
||||
/* This next pre-processor directive covers almost the entire file,
|
||||
* interrupted only occasionally to pick up specific functions as needed. */
|
||||
#if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
|
||||
#if !defined(MAKEDEFS_C) && !defined(MDLIB_C) && !defined(LEV_LEX_C)
|
||||
|
||||
/* ### allmain.c ### */
|
||||
|
||||
@@ -583,10 +583,10 @@ E boolean FDECL(hurtle_jump, (genericptr_t, int, int));
|
||||
E boolean FDECL(hurtle_step, (genericptr_t, int, int));
|
||||
|
||||
/* ### drawing.c ### */
|
||||
#endif /* !MAKEDEFS_C && !LEV_LEX_C */
|
||||
#endif /* !MAKEDEFS_C && !MDLIB_C && !LEV_LEX_C */
|
||||
E int FDECL(def_char_to_objclass, (CHAR_P));
|
||||
E int FDECL(def_char_to_monclass, (CHAR_P));
|
||||
#if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
|
||||
#if !defined(MAKEDEFS_C) && !defined(MDLIB_C) && !defined(LEV_LEX_C)
|
||||
E void FDECL(switch_symbols, (int));
|
||||
E void FDECL(assign_graphics, (int));
|
||||
E void NDECL(init_symbols);
|
||||
@@ -713,9 +713,9 @@ E int NDECL(done2);
|
||||
E void FDECL(done_intr, (int));
|
||||
#endif
|
||||
E void FDECL(done_in_by, (struct monst *, int));
|
||||
#endif /* !MAKEDEFS_C && !LEV_LEX_C */
|
||||
#endif /* !MAKEDEFS_C && MDLIB_C && !LEV_LEX_C */
|
||||
E void VDECL(panic, (const char *, ...)) PRINTF_F(1, 2) NORETURN;
|
||||
#if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
|
||||
#if !defined(MAKEDEFS_C) && !defined(MDLIB_C) && !defined(LEV_LEX_C)
|
||||
E void FDECL(done, (int));
|
||||
E void FDECL(container_contents, (struct obj *, BOOLEAN_P,
|
||||
BOOLEAN_P, BOOLEAN_P));
|
||||
@@ -1663,10 +1663,14 @@ E char *NDECL(lan_username);
|
||||
#endif
|
||||
|
||||
/* ### nhlsel.c ### */
|
||||
#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_TARGET)
|
||||
E struct selectionvar *FDECL(l_selection_check, (lua_State *, int));
|
||||
E int FDECL(l_selection_register, (lua_State *));
|
||||
#endif
|
||||
|
||||
/* ### nhlua.c ### */
|
||||
|
||||
#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_TARGET)
|
||||
E lua_State * NDECL(nhl_init);
|
||||
E boolean FDECL(nhl_loadlua, (lua_State *, const char *));
|
||||
E boolean FDECL(load_lua, (const char *));
|
||||
@@ -1685,14 +1689,21 @@ E int FDECL(get_table_boolean_opt, (lua_State *, const char *, int));
|
||||
E int FDECL(get_table_option, (lua_State *, const char *, const char *, const char *const *));
|
||||
E int FDECL(str_lines_max_width, (const char *));
|
||||
E char *FDECL(stripdigits, (char *));
|
||||
#endif /* !CROSSCOMPILE || CROSSCOMPILE_TARGET */
|
||||
|
||||
/* ### nhregex.c ### */
|
||||
|
||||
E struct nhregex *NDECL(regex_init);
|
||||
E boolean FDECL(regex_compile, (const char *, struct nhregex *));
|
||||
E const char *FDECL(regex_error_desc, (struct nhregex *));
|
||||
E boolean FDECL(regex_match, (const char *, struct nhregex *));
|
||||
E void FDECL(regex_free, (struct nhregex *));
|
||||
|
||||
/* ### mdlib.c ### */
|
||||
|
||||
E void NDECL(runtime_info_init);
|
||||
E const char *FDECL(do_runtime_info, (int *));
|
||||
|
||||
/* ### nttty.c ### */
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -2405,7 +2416,7 @@ E void NDECL(sysopt_release);
|
||||
E void FDECL(sysopt_seduce_set, (int));
|
||||
|
||||
/* ### sp_lev.c ### */
|
||||
|
||||
#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_TARGET)
|
||||
E boolean FDECL(check_room, (xchar *, xchar *, xchar *, xchar *, BOOLEAN_P));
|
||||
E boolean FDECL(create_room, (XCHAR_P, XCHAR_P, XCHAR_P, XCHAR_P, XCHAR_P,
|
||||
XCHAR_P, XCHAR_P, XCHAR_P));
|
||||
@@ -2434,6 +2445,7 @@ E void FDECL(set_floodfillchk_match_under, (XCHAR_P));
|
||||
E void FDECL(selection_do_ellipse, (struct selectionvar *, int, int, int, int, int));
|
||||
E void NDECL(update_croom);
|
||||
E void FDECL(l_register_des, (lua_State *));
|
||||
#endif /* !CROSSCOMPILE || CROSSCOMPILE_TARGET */
|
||||
|
||||
/* ### spell.c ### */
|
||||
|
||||
@@ -3069,7 +3081,7 @@ E int FDECL(destroy_mitem, (struct monst *, int, int));
|
||||
E int FDECL(resist, (struct monst *, CHAR_P, int, int));
|
||||
E void NDECL(makewish);
|
||||
|
||||
#endif /* !MAKEDEFS_C && !LEV_LEX_C */
|
||||
#endif /* !MAKEDEFS_C && !MDLIB_C && !LEV_LEX_C */
|
||||
|
||||
#undef E
|
||||
|
||||
|
||||
@@ -124,6 +124,41 @@ typedef uchar nhsym;
|
||||
#define LARGEST_INT 32767
|
||||
|
||||
#include "coord.h"
|
||||
|
||||
#if defined(CROSSCOMPILE)
|
||||
struct cross_target_s {
|
||||
const char *build_date;
|
||||
const char *copyright_banner_c;
|
||||
const char *git_sha;
|
||||
const char *git_branch;
|
||||
const char *version_string;
|
||||
const char *version_id;
|
||||
unsigned long version_number;
|
||||
unsigned long version_features;
|
||||
unsigned long ignored_features;
|
||||
unsigned long version_sanity1;
|
||||
unsigned long version_sanity2;
|
||||
unsigned long version_sanity3;
|
||||
unsigned long build_time;
|
||||
};
|
||||
extern struct cross_target_s cross_target;
|
||||
#if defined(CROSSCOMPILE_TARGET) && !defined(MAKEDEFS_C)
|
||||
#define BUILD_DATE cross_target.build_date /* "Wed Apr 1 00:00:01 2020" */
|
||||
#define COPYRIGHT_BANNER_C cross_target.copyright_banner_c
|
||||
#define NETHACK_GIT_SHA cross_target.git_sha
|
||||
#define NETHACK_GIT_BRANCH cross_target.git_branch
|
||||
#define VERSION_ID cross_target.version_id
|
||||
#define IGNORED_FEATURES cross_target.ignored_features
|
||||
#define VERSION_FEATURES cross_target.version_features
|
||||
#define VERSION_NUMBER cross_target.version_number
|
||||
#define VERSION_SANITY1 cross_target.version_sanity1
|
||||
#define VERSION_SANITY2 cross_target.version_sanity2
|
||||
#define VERSION_SANITY3 cross_target.version_sanity3
|
||||
#define VERSION_STRING cross_target.version_string
|
||||
#define BUILD_TIME cross_target.build_time /* (1574157640UL) */
|
||||
#endif /* CROSSCOMPILE_TARGET && !MAKEDEFS_C */
|
||||
#endif /* CROSSCOMPILE */
|
||||
|
||||
/*
|
||||
* Automatic inclusions for the subsidiary files.
|
||||
* Please don't change the order. It does matter.
|
||||
|
||||
@@ -15,7 +15,7 @@ struct qtmsg {
|
||||
long offset, size, summary_size;
|
||||
};
|
||||
|
||||
#ifdef MAKEDEFS_C /***** MAKEDEFS *****/
|
||||
#if defined(MAKEDEFS_C) || defined(MDLIB_C) /***** MAKEDEFS *****/
|
||||
|
||||
#define N_MSG 100 /* arbitrary */
|
||||
|
||||
@@ -47,7 +47,7 @@ struct qthdr {
|
||||
"Too many messages in class (line %d)\nAdjust N_MSG in qtext.h and " \
|
||||
"recompile.\n"
|
||||
|
||||
#else /***** !MAKEDEFS *****/
|
||||
#else /***** !MAKEDEFS && !MDLIB_C *****/
|
||||
|
||||
struct qtlists {
|
||||
struct qtmsg *common,
|
||||
@@ -113,6 +113,6 @@ struct qtlists {
|
||||
#define QTN_DEMONIC 20
|
||||
|
||||
#define QT_BANISHED 60
|
||||
#endif /***** !MAKEDEFS *****/
|
||||
#endif /***** !MAKEDEFS && !MDLIB_C *****/
|
||||
|
||||
#endif /* QTEXT_H */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* NetHack 3.7 sfproto.h Tue Jun 25 09:57:33 2019 */
|
||||
/* Copyright (c) NetHack Development Team 2018. */
|
||||
/* NetHack 3.7 sfproto.h */
|
||||
/* Copyright (c) NetHack Development Team 2019. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE! */
|
||||
|
||||
@@ -527,7 +527,7 @@ E char *FDECL(tgetstr, (const char *, char **));
|
||||
E char *FDECL(tgoto, (const char *, int, int));
|
||||
#endif
|
||||
|
||||
#if defined(ALLOC_C) || defined(MAKEDEFS_C)
|
||||
#if defined(ALLOC_C) || defined(MAKEDEFS_C) || defined(MDLIB_C)
|
||||
E genericptr_t FDECL(malloc, (size_t));
|
||||
E genericptr_t FDECL(realloc, (genericptr_t, size_t));
|
||||
#endif
|
||||
@@ -569,6 +569,7 @@ E int FDECL(atoi, (const char *));
|
||||
#endif /* !__cplusplus && !__GO32__ */
|
||||
#endif /* WIN32 */
|
||||
|
||||
#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_TARGET)
|
||||
#include "lua.h"
|
||||
#include "lualib.h"
|
||||
#include "lauxlib.h"
|
||||
@@ -578,5 +579,5 @@ E int FDECL(atoi, (const char *));
|
||||
#else
|
||||
#define LUA_INTCAST(i) (i)
|
||||
#endif
|
||||
|
||||
#endif /* !CROSSCOMPILE || CROSSCOMPILE_TARGET */
|
||||
#endif /* SYSTEM_H */
|
||||
|
||||
@@ -25,6 +25,9 @@ early_init()
|
||||
decl_globals_init();
|
||||
objects_globals_init();
|
||||
monst_globals_init();
|
||||
#if defined(OPTIONS_AT_RUNTIME) || defined(CROSSCOMPILE_TARGET)
|
||||
runtime_info_init();
|
||||
#endif
|
||||
sys_early_init();
|
||||
}
|
||||
|
||||
|
||||
761
src/mdlib.c
Normal file
761
src/mdlib.c
Normal file
@@ -0,0 +1,761 @@
|
||||
/* NetHack 3.7 mdlib.c $NHDT-Date: 1562180226 2019/07/03 18:57:06 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.149 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Kenneth Lorber, Kensington, Maryland, 2015. */
|
||||
/* Copyright (c) M. Stephenson, 1990, 1991. */
|
||||
/* Copyright (c) Dean Luick, 1990. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/*
|
||||
* This can be linked into a binary to provide the functionality
|
||||
* via the contained functions, or it can be #included directly
|
||||
* into util/makedefs.c to provide it there.
|
||||
*/
|
||||
|
||||
#ifndef MAKEDEFS_C
|
||||
#define MDLIB_C
|
||||
#include "config.h"
|
||||
#ifdef MONITOR_HEAP
|
||||
#undef free /* makedefs, mdlib don't use the alloc and free in src/alloc.c */
|
||||
#endif
|
||||
#include "permonst.h"
|
||||
#include "objclass.h"
|
||||
#include "monsym.h"
|
||||
#include "artilist.h"
|
||||
#include "dungeon.h"
|
||||
#include "obj.h"
|
||||
#include "monst.h"
|
||||
#include "you.h"
|
||||
#include "context.h"
|
||||
#include "flag.h"
|
||||
#include "dlb.h"
|
||||
#include <ctype.h>
|
||||
/* version information */
|
||||
#ifdef SHORT_FILENAMES
|
||||
#include "patchlev.h"
|
||||
#else
|
||||
#include "patchlevel.h"
|
||||
#endif
|
||||
#define Fprintf (void) fprintf
|
||||
#define Fclose (void) fclose
|
||||
#define Unlink (void) unlink
|
||||
#if !defined(AMIGA) || defined(AZTEC_C)
|
||||
#define rewind(fp) fseek((fp), 0L, SEEK_SET) /* guarantee a return value */
|
||||
#endif /* AMIGA || AZTEC_C */
|
||||
|
||||
#endif /* !MAKEDEFS_C */
|
||||
|
||||
void NDECL(build_options);
|
||||
static char *FDECL(bannerc_string, (char *, const char *));
|
||||
static void FDECL(opt_out_words, (char *, int *));
|
||||
static void NDECL(build_savebones_compat_string);
|
||||
static int idxopttext, done_runtime_opt_init_once = 0;
|
||||
#define MAXOPT 30
|
||||
static char rttimebuf[MAXOPT];
|
||||
static char *opttext[ROWNO] = {0};
|
||||
char optbuf[BUFSZ];
|
||||
static struct version_info version;
|
||||
static const char opt_indent[] = " ";
|
||||
|
||||
#ifndef MAKEDEFS_C
|
||||
static int FDECL(case_insensitive_comp, (const char *, const char *));
|
||||
static void NDECL(make_version);
|
||||
static char *FDECL(version_id_string, (char *, const char *));
|
||||
static char *FDECL(version_string, (char *, const char *));
|
||||
static char *FDECL(eos, (char *));
|
||||
/* REPRODUCIBLE_BUILD will change this to TRUE */
|
||||
static boolean date_via_env = FALSE;
|
||||
#endif /* !MAKEDEFS_C */
|
||||
|
||||
struct win_info {
|
||||
const char *id, /* DEFAULT_WINDOW_SYS string */
|
||||
*name; /* description, often same as id */
|
||||
};
|
||||
|
||||
static struct win_info window_opts[] = {
|
||||
#ifdef TTY_GRAPHICS
|
||||
{ "tty",
|
||||
/* testing 'USE_TILES' here would bring confusion because it could
|
||||
apply to another interface such as X11, so check MSDOS explicitly
|
||||
instead; even checking TTY_TILES_ESCCODES would probably be
|
||||
confusing to most users (and it will already be listed separately
|
||||
in the compiled options section so users aware of it can find it) */
|
||||
#ifdef MSDOS
|
||||
"traditional text with optional 'tiles' graphics"
|
||||
#else
|
||||
/* assume that one or more of IBMgraphics, DECgraphics, or MACgraphics
|
||||
can be enabled; we can't tell from here whether that is accurate */
|
||||
"traditional text with optional line-drawing"
|
||||
#endif
|
||||
},
|
||||
#endif /*TTY_GRAPHICS */
|
||||
#ifdef CURSES_GRAPHICS
|
||||
{ "curses", "terminal-based graphics" },
|
||||
#endif
|
||||
#ifdef X11_GRAPHICS
|
||||
{ "X11", "X11" },
|
||||
#endif
|
||||
#ifdef QT_GRAPHICS /* too vague; there are multiple incompatible versions */
|
||||
{ "Qt", "Qt" },
|
||||
#endif
|
||||
#ifdef GNOME_GRAPHICS /* unmaintained/defunct */
|
||||
{ "Gnome", "Gnome" },
|
||||
#endif
|
||||
#ifdef MAC /* defunct OS 9 interface */
|
||||
{ "mac", "Mac" },
|
||||
#endif
|
||||
#ifdef AMIGA_INTUITION /* unmaintained/defunct */
|
||||
{ "amii", "Amiga Intuition" },
|
||||
#endif
|
||||
#ifdef GEM_GRAPHICS /* defunct Atari interface */
|
||||
{ "Gem", "Gem" },
|
||||
#endif
|
||||
#ifdef MSWIN_GRAPHICS /* win32 */
|
||||
{ "mswin", "mswin" },
|
||||
#endif
|
||||
#ifdef BEOS_GRAPHICS /* unmaintained/defunct */
|
||||
{ "BeOS", "BeOS InterfaceKit" },
|
||||
#endif
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
/*
|
||||
* Use this to explicitly mask out features during version checks.
|
||||
*
|
||||
* ZEROCOMP, RLECOMP, and ZLIB_COMP describe compression features
|
||||
* that the port/plaform which wrote the savefile was capable of
|
||||
* dealing with. Don't reject a savefile just because the port
|
||||
* reading the savefile doesn't match on all/some of them.
|
||||
* The actual compression features used to produce the savefile are
|
||||
* recorded in the savefile_info structure immediately following the
|
||||
* version_info, and that is what needs to be checked against the
|
||||
* feature set of the port that is reading the savefile back in.
|
||||
* That check is done in src/restore.c now.
|
||||
*
|
||||
*/
|
||||
#ifndef MD_IGNORED_FEATURES
|
||||
#define MD_IGNORED_FEATURES \
|
||||
(0L | (1L << 19) /* SCORE_ON_BOTL */ \
|
||||
| (1L << 27) /* ZEROCOMP */ \
|
||||
| (1L << 28) /* RLECOMP */ \
|
||||
)
|
||||
#endif /* MD_IGNORED_FEATUES */
|
||||
|
||||
static void
|
||||
make_version()
|
||||
{
|
||||
register int i;
|
||||
|
||||
/*
|
||||
* integer version number
|
||||
*/
|
||||
version.incarnation = ((unsigned long) VERSION_MAJOR << 24)
|
||||
| ((unsigned long) VERSION_MINOR << 16)
|
||||
| ((unsigned long) PATCHLEVEL << 8)
|
||||
| ((unsigned long) EDITLEVEL);
|
||||
/*
|
||||
* encoded feature list
|
||||
* Note: if any of these magic numbers are changed or reassigned,
|
||||
* EDITLEVEL in patchlevel.h should be incremented at the same time.
|
||||
* The actual values have no special meaning, and the category
|
||||
* groupings are just for convenience.
|
||||
*/
|
||||
version.feature_set = (unsigned long) (0L
|
||||
/* levels and/or topology (0..4) */
|
||||
/* monsters (5..9) */
|
||||
#ifdef MAIL_STRUCTURES
|
||||
| (1L << 6)
|
||||
#endif
|
||||
/* objects (10..14) */
|
||||
/* flag bits and/or other global variables (15..26) */
|
||||
#ifdef TEXTCOLOR
|
||||
| (1L << 17)
|
||||
#endif
|
||||
#ifdef INSURANCE
|
||||
| (1L << 18)
|
||||
#endif
|
||||
#ifdef SCORE_ON_BOTL
|
||||
| (1L << 19)
|
||||
#endif
|
||||
/* data format (27..31)
|
||||
* External compression methods such as COMPRESS and ZLIB_COMP
|
||||
* do not affect the contents and are thus excluded from here */
|
||||
#ifdef ZEROCOMP
|
||||
| (1L << 27)
|
||||
#endif
|
||||
#ifdef RLECOMP
|
||||
| (1L << 28)
|
||||
#endif
|
||||
);
|
||||
/*
|
||||
* Value used for object & monster sanity check.
|
||||
* (NROFARTIFACTS<<24) | (NUM_OBJECTS<<12) | (NUMMONS<<0)
|
||||
*/
|
||||
for (i = 1; artifact_names[i]; i++)
|
||||
continue;
|
||||
version.entity_count = (unsigned long) (i - 1);
|
||||
for (i = 1; objects[i].oc_class != ILLOBJ_CLASS; i++)
|
||||
continue;
|
||||
version.entity_count = (version.entity_count << 12) | (unsigned long) i;
|
||||
for (i = 0; mons[i].mlet; i++)
|
||||
continue;
|
||||
version.entity_count = (version.entity_count << 12) | (unsigned long) i;
|
||||
/*
|
||||
* Value used for compiler (word size/field alignment/padding) check.
|
||||
*/
|
||||
version.struct_sizes1 =
|
||||
(((unsigned long) sizeof(struct context_info) << 24)
|
||||
| ((unsigned long) sizeof(struct obj) << 17)
|
||||
| ((unsigned long) sizeof(struct monst) << 10)
|
||||
| ((unsigned long) sizeof(struct you)));
|
||||
version.struct_sizes2 = (((unsigned long) sizeof(struct flag) << 10) |
|
||||
/* free bits in here */
|
||||
#ifdef SYSFLAGS
|
||||
((unsigned long) sizeof(struct sysflag)));
|
||||
#else
|
||||
((unsigned long) 0L));
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
static char *
|
||||
version_string(outbuf, delim)
|
||||
char *outbuf;
|
||||
const char *delim;
|
||||
{
|
||||
Sprintf(outbuf, "%d%s%d%s%d", VERSION_MAJOR, delim, VERSION_MINOR, delim,
|
||||
PATCHLEVEL);
|
||||
#if (NH_DEVEL_STATUS != NH_STATUS_RELEASED)
|
||||
Sprintf(eos(outbuf), "-%d", EDITLEVEL);
|
||||
#endif
|
||||
return outbuf;
|
||||
}
|
||||
|
||||
static char *
|
||||
version_id_string(outbuf, build_date)
|
||||
char *outbuf;
|
||||
const char *build_date;
|
||||
{
|
||||
char subbuf[64], versbuf[64];
|
||||
char betabuf[64];
|
||||
|
||||
#if (NH_DEVEL_STATUS != NH_STATUS_RELEASED)
|
||||
#if (NH_DEVEL_STATUS == NH_STATUS_BETA)
|
||||
Strcpy(betabuf, " Beta");
|
||||
#else
|
||||
Strcpy(betabuf, " Work-in-progress");
|
||||
#endif
|
||||
#else
|
||||
betabuf[0] = '\0';
|
||||
#endif
|
||||
subbuf[0] = '\0';
|
||||
#ifdef PORT_SUB_ID
|
||||
subbuf[0] = ' ';
|
||||
Strcpy(&subbuf[1], PORT_SUB_ID);
|
||||
#endif
|
||||
|
||||
Sprintf(outbuf, "%s NetHack%s Version %s%s - last %s %s.", PORT_ID,
|
||||
subbuf, version_string(versbuf, "."), betabuf,
|
||||
date_via_env ? "revision" : "build", build_date);
|
||||
return outbuf;
|
||||
}
|
||||
|
||||
static char *
|
||||
bannerc_string(outbuf, build_date)
|
||||
char *outbuf;
|
||||
const char *build_date;
|
||||
{
|
||||
char subbuf[64], versbuf[64];
|
||||
|
||||
subbuf[0] = '\0';
|
||||
#ifdef PORT_SUB_ID
|
||||
subbuf[0] = ' ';
|
||||
Strcpy(&subbuf[1], PORT_SUB_ID);
|
||||
#endif
|
||||
#if (NH_DEVEL_STATUS != NH_STATUS_RELEASED)
|
||||
#if (NH_DEVEL_STATUS == NH_STATUS_BETA)
|
||||
Strcat(subbuf, " Beta");
|
||||
#else
|
||||
Strcat(subbuf, " Work-in-progress");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Sprintf(outbuf, " Version %s %s%s, %s %s.",
|
||||
version_string(versbuf, "."), PORT_ID, subbuf,
|
||||
date_via_env ? "revised" : "built", &build_date[4]);
|
||||
#if 0
|
||||
Sprintf(outbuf, "%s NetHack%s %s Copyright 1985-%s (built %s)",
|
||||
PORT_ID, subbuf, version_string(versbuf,"."), RELEASE_YEAR,
|
||||
&build_date[4]);
|
||||
#endif
|
||||
return outbuf;
|
||||
}
|
||||
|
||||
static int
|
||||
case_insensitive_comp(s1, s2)
|
||||
const char *s1;
|
||||
const char *s2;
|
||||
{
|
||||
uchar u1, u2;
|
||||
|
||||
for (;; s1++, s2++) {
|
||||
u1 = (uchar) *s1;
|
||||
if (isupper(u1))
|
||||
u1 = tolower(u1);
|
||||
u2 = (uchar) *s2;
|
||||
if (isupper(u2))
|
||||
u2 = tolower(u2);
|
||||
if (u1 == '\0' || u1 != u2)
|
||||
break;
|
||||
}
|
||||
return u1 - u2;
|
||||
}
|
||||
|
||||
static char *
|
||||
eos(str)
|
||||
char *str;
|
||||
{
|
||||
while (*str)
|
||||
str++;
|
||||
return str;
|
||||
}
|
||||
|
||||
static char save_bones_compat_buf[BUFSZ];
|
||||
|
||||
static void
|
||||
build_savebones_compat_string()
|
||||
{
|
||||
#ifdef VERSION_COMPATIBILITY
|
||||
unsigned long uver = VERSION_COMPATIBILITY;
|
||||
#endif
|
||||
Strcpy(save_bones_compat_buf,
|
||||
"save and bones files accepted from version");
|
||||
#ifdef VERSION_COMPATIBILITY
|
||||
Sprintf(eos(save_bones_compat_buf), "s %lu.%lu.%lu through %d.%d.%d",
|
||||
((uver & 0xFF000000L) >> 24), ((uver & 0x00FF0000L) >> 16),
|
||||
((uver & 0x0000FF00L) >> 8), VERSION_MAJOR, VERSION_MINOR,
|
||||
PATCHLEVEL);
|
||||
#else
|
||||
Sprintf(eos(save_bones_compat_buf), " %d.%d.%d only", VERSION_MAJOR,
|
||||
VERSION_MINOR, PATCHLEVEL);
|
||||
#endif
|
||||
}
|
||||
|
||||
static const char *build_opts[] = {
|
||||
#ifdef AMIGA_WBENCH
|
||||
"Amiga WorkBench support",
|
||||
#endif
|
||||
#ifdef ANSI_DEFAULT
|
||||
"ANSI default terminal",
|
||||
#endif
|
||||
#ifdef TEXTCOLOR
|
||||
"color",
|
||||
#endif
|
||||
#ifdef TTY_GRAPHICS
|
||||
#ifdef TTY_TILES_ESCCODES
|
||||
"console escape codes for tile hinting",
|
||||
#endif
|
||||
#endif
|
||||
#ifdef COM_COMPL
|
||||
"command line completion",
|
||||
#endif
|
||||
#ifdef LIFE
|
||||
"Conway's Game of Life",
|
||||
#endif
|
||||
#ifdef COMPRESS
|
||||
"data file compression",
|
||||
#endif
|
||||
#ifdef ZLIB_COMP
|
||||
"ZLIB data file compression",
|
||||
#endif
|
||||
#ifdef DLB
|
||||
#ifndef VERSION_IN_DLB_FILENAME
|
||||
"data librarian",
|
||||
#else
|
||||
"data librarian with a version-dependent name",
|
||||
#endif
|
||||
#endif
|
||||
#ifdef DUMPLOG
|
||||
"end-of-game dumplogs",
|
||||
#endif
|
||||
#ifdef HOLD_LOCKFILE_OPEN
|
||||
"exclusive lock on level 0 file",
|
||||
#endif
|
||||
#if defined(MSGHANDLER) && (defined(POSIX_TYPES) || defined(__GNUC__))
|
||||
"external program as a message handler",
|
||||
#endif
|
||||
#ifdef MFLOPPY
|
||||
"floppy drive support",
|
||||
#endif
|
||||
#ifdef INSURANCE
|
||||
"insurance files for recovering from crashes",
|
||||
#endif
|
||||
#ifdef LOGFILE
|
||||
"log file",
|
||||
#endif
|
||||
#ifdef XLOGFILE
|
||||
"extended log file",
|
||||
#endif
|
||||
#ifdef PANICLOG
|
||||
"errors and warnings log file",
|
||||
#endif
|
||||
#ifdef MAIL_STRUCTURES
|
||||
"mail daemon",
|
||||
#endif
|
||||
#if defined(GNUDOS) || defined(__DJGPP__)
|
||||
"MSDOS protected mode",
|
||||
#endif
|
||||
#ifdef NEWS
|
||||
"news file",
|
||||
#endif
|
||||
#ifdef OVERLAY
|
||||
#ifdef MOVERLAY
|
||||
"MOVE overlays",
|
||||
#else
|
||||
#ifdef VROOMM
|
||||
"VROOMM overlays",
|
||||
#else
|
||||
"overlays",
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
/* pattern matching method will be substituted by nethack at run time */
|
||||
"pattern matching via :PATMATCH:",
|
||||
#ifdef USE_ISAAC64
|
||||
"pseudo random numbers generated by ISAAC64",
|
||||
#ifdef DEV_RANDOM
|
||||
#ifdef NHSTDC
|
||||
/* include which specific one */
|
||||
"strong PRNG seed available from " DEV_RANDOM,
|
||||
#else
|
||||
"strong PRNG seed available from DEV_RANDOM",
|
||||
#endif
|
||||
#else
|
||||
#ifdef WIN32
|
||||
"strong PRNG seed available from CNG BCryptGenRandom()",
|
||||
#endif
|
||||
#endif /* DEV_RANDOM */
|
||||
#else /* ISAAC64 */
|
||||
#ifdef RANDOM
|
||||
"pseudo random numbers generated by random()",
|
||||
#else
|
||||
"pseudo random numbers generated by C rand()",
|
||||
#endif
|
||||
#endif /* ISAAC64 */
|
||||
#ifdef SELECTSAVED
|
||||
"restore saved games via menu",
|
||||
#endif
|
||||
#ifdef SCORE_ON_BOTL
|
||||
"score on status line",
|
||||
#endif
|
||||
#ifdef CLIPPING
|
||||
"screen clipping",
|
||||
#endif
|
||||
#ifdef NO_TERMS
|
||||
#ifdef MAC
|
||||
"screen control via mactty",
|
||||
#endif
|
||||
#ifdef SCREEN_BIOS
|
||||
"screen control via BIOS",
|
||||
#endif
|
||||
#ifdef SCREEN_DJGPPFAST
|
||||
"screen control via DJGPP fast",
|
||||
#endif
|
||||
#ifdef SCREEN_VGA
|
||||
"screen control via VGA graphics",
|
||||
#endif
|
||||
#ifdef WIN32CON
|
||||
"screen control via WIN32 console I/O",
|
||||
#endif
|
||||
#endif /* NO_TERMS */
|
||||
#ifdef SHELL
|
||||
"shell command",
|
||||
#endif
|
||||
"traditional status display",
|
||||
#ifdef STATUS_HILITES
|
||||
"status via windowport with highlighting",
|
||||
#else
|
||||
"status via windowport without highlighting",
|
||||
#endif
|
||||
#ifdef SUSPEND
|
||||
"suspend command",
|
||||
#endif
|
||||
#ifdef TTY_GRAPHICS
|
||||
#ifdef TERMINFO
|
||||
"terminal info library",
|
||||
#else
|
||||
#if defined(TERMLIB) || (!defined(MICRO) && !defined(WIN32))
|
||||
"terminal capability library",
|
||||
#endif
|
||||
#endif
|
||||
#endif /*TTY_GRAPHICS*/
|
||||
#ifdef USE_XPM
|
||||
"tiles file in XPM format",
|
||||
#endif
|
||||
#ifdef GRAPHIC_TOMBSTONE
|
||||
"graphical RIP screen",
|
||||
#endif
|
||||
#ifdef TIMED_DELAY
|
||||
"timed wait for display effects",
|
||||
#endif
|
||||
#ifdef USER_SOUNDS
|
||||
"user sounds",
|
||||
#endif
|
||||
#ifdef PREFIXES_IN_USE
|
||||
"variable playground",
|
||||
#endif
|
||||
#ifdef VISION_TABLES
|
||||
"vision tables",
|
||||
#endif
|
||||
#ifdef ZEROCOMP
|
||||
"zero-compressed save files",
|
||||
#endif
|
||||
#ifdef RLECOMP
|
||||
"run-length compression of map in save files",
|
||||
#endif
|
||||
#ifdef SYSCF
|
||||
"system configuration at run-time",
|
||||
#endif
|
||||
save_bones_compat_buf,
|
||||
"and basic NetHack features"
|
||||
};
|
||||
|
||||
static void
|
||||
opt_out_words(str, length_p)
|
||||
char *str; /* input, but modified during processing */
|
||||
int *length_p; /* in/out */
|
||||
{
|
||||
char *word;
|
||||
|
||||
while (*str) {
|
||||
word = index(str, ' ');
|
||||
#if 0
|
||||
/* treat " (" as unbreakable space */
|
||||
if (word && *(word + 1) == '(')
|
||||
word = index(word + 1, ' ');
|
||||
#endif
|
||||
if (word)
|
||||
*word = '\0';
|
||||
if (*length_p + (int) strlen(str) > COLNO - 5) {
|
||||
opttext[idxopttext] = strdup(optbuf);
|
||||
if (idxopttext < (MAXOPT - 1))
|
||||
idxopttext++;
|
||||
Sprintf(optbuf, "%s", opt_indent),
|
||||
*length_p = (int) strlen(opt_indent);
|
||||
} else {
|
||||
Sprintf(eos(optbuf), " "), (*length_p)++;
|
||||
}
|
||||
Sprintf(eos(optbuf),
|
||||
"%s", str), *length_p += (int) strlen(str);
|
||||
str += strlen(str) + (word ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
build_options()
|
||||
{
|
||||
char buf[BUFSZ];
|
||||
int i, length, winsyscnt;
|
||||
|
||||
build_savebones_compat_string();
|
||||
opttext[idxopttext] = strdup(optbuf);
|
||||
if (idxopttext < (MAXOPT - 1))
|
||||
idxopttext++;
|
||||
Sprintf(optbuf,
|
||||
"%sNetHack version %d.%d.%d%s\n",
|
||||
opt_indent,
|
||||
VERSION_MAJOR, VERSION_MINOR, PATCHLEVEL,
|
||||
#if (NH_DEVEL_STATUS != NH_STATUS_RELEASED)
|
||||
#if (NH_DEVEL_STATUS == NH_STATUS_BETA)
|
||||
" [beta]"
|
||||
#else
|
||||
" [work-in-progress]"
|
||||
#endif
|
||||
#else
|
||||
""
|
||||
#endif /* NH_DEVEL_STATUS == NH_STATUS_RELEASED */
|
||||
);
|
||||
opttext[idxopttext] = strdup(optbuf);
|
||||
if (idxopttext < (MAXOPT - 1))
|
||||
idxopttext++;
|
||||
Sprintf(optbuf,
|
||||
"Options compiled into this edition:");
|
||||
opttext[idxopttext] = strdup(optbuf);
|
||||
if (idxopttext < (MAXOPT - 1))
|
||||
idxopttext++;
|
||||
optbuf[0] = '\0';
|
||||
length = COLNO + 1; /* force 1st item onto new line */
|
||||
for (i = 0; i < SIZE(build_opts); i++) {
|
||||
opt_out_words(strcat(strcpy(buf, build_opts[i]),
|
||||
(i < SIZE(build_opts) - 1) ? "," : "."),
|
||||
&length);
|
||||
}
|
||||
opttext[idxopttext] = strdup(optbuf);
|
||||
if (idxopttext < (MAXOPT - 1))
|
||||
idxopttext++;
|
||||
optbuf[0] = '\0';
|
||||
winsyscnt = SIZE(window_opts) - 1;
|
||||
opttext[idxopttext] = strdup(optbuf);
|
||||
if (idxopttext < (MAXOPT - 1))
|
||||
idxopttext++;
|
||||
Sprintf(optbuf, "Supported windowing system%s:",
|
||||
(winsyscnt > 1) ? "s" : "");
|
||||
opttext[idxopttext] = strdup(optbuf);
|
||||
if (idxopttext < (MAXOPT - 1))
|
||||
idxopttext++;
|
||||
optbuf[0] = '\0';
|
||||
length = COLNO + 1; /* force 1st item onto new line */
|
||||
for (i = 0; i < winsyscnt; i++) {
|
||||
Sprintf(buf, "\"%s\"", window_opts[i].id);
|
||||
if (strcmp(window_opts[i].name, window_opts[i].id))
|
||||
Sprintf(eos(buf), " (%s)", window_opts[i].name);
|
||||
/*
|
||||
* 1 : foo.
|
||||
* 2 : foo and bar (note no period; comes from 'with default' below)
|
||||
* 3+: for, bar, and quux
|
||||
*/
|
||||
opt_out_words(strcat(buf, (winsyscnt == 1) ? "." /* no 'default' */
|
||||
: (winsyscnt == 2 && i == 0) ? " and"
|
||||
: (i == winsyscnt - 2) ? ", and"
|
||||
: ","),
|
||||
&length);
|
||||
}
|
||||
if (winsyscnt > 1) {
|
||||
Sprintf(buf, "with a default of \"%s\".", DEFAULT_WINDOW_SYS);
|
||||
opt_out_words(buf, &length);
|
||||
}
|
||||
opttext[idxopttext] = strdup(optbuf);
|
||||
if (idxopttext < (MAXOPT - 1))
|
||||
idxopttext++;
|
||||
optbuf[0] = '\0';
|
||||
|
||||
/* end with a blank line */
|
||||
opttext[idxopttext] = strdup(optbuf);
|
||||
if (idxopttext < (MAXOPT - 1))
|
||||
idxopttext++;
|
||||
optbuf[0] = '\0';
|
||||
return;
|
||||
}
|
||||
|
||||
#if defined(__DATE__) && defined(__TIME__)
|
||||
#define extract_field(t,s,n,z) \
|
||||
do { \
|
||||
for (i = 0; i < n; ++i) \
|
||||
t[i] = s[i + z]; \
|
||||
t[i] = '\0'; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
void
|
||||
runtime_info_init()
|
||||
{
|
||||
int i;
|
||||
char tmpbuf[BUFSZ], *strp;
|
||||
const char *mth[] = {
|
||||
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
|
||||
struct tm t = {0};
|
||||
time_t timeresult;
|
||||
|
||||
if (!done_runtime_opt_init_once) {
|
||||
done_runtime_opt_init_once = 1;
|
||||
build_savebones_compat_string();
|
||||
/* construct the current version number */
|
||||
make_version();
|
||||
/*
|
||||
* In a cross-compiled environment, you can't execute
|
||||
* the target binaries during the build, so we can't
|
||||
* use makedefs to write the values of the build
|
||||
* date and time to a file for retrieval. Not for
|
||||
* information meaningful to the target execution
|
||||
* environment.
|
||||
*
|
||||
* How can we capture the build date/time of the target
|
||||
* binaries in such a situation? We need to rely on the
|
||||
* cross-compiler itself to do it for us during the
|
||||
* cross-compile.
|
||||
*
|
||||
* To that end, we are going to make use of the
|
||||
* following pre-defined preprocessor macros for this:
|
||||
* gcc, msvc, clang __DATE__ "Feb 12 1996"
|
||||
* gcc, msvc, clang __TIME__ "23:59:01"
|
||||
*
|
||||
*/
|
||||
|
||||
#if defined(__DATE__) && defined(__TIME__)
|
||||
if (sizeof __DATE__ + sizeof __TIME__ + sizeof "123" <
|
||||
sizeof rttimebuf)
|
||||
Sprintf(rttimebuf, "%s %s", __DATE__, __TIME__);
|
||||
/* "Feb 12 1996 23:59:01"
|
||||
01234567890123456789 */
|
||||
if ((int) strlen(rttimebuf) == 20) {
|
||||
extract_field(tmpbuf, rttimebuf, 4, 7); /* year */
|
||||
t.tm_year = atoi(tmpbuf) - 1900;
|
||||
extract_field(tmpbuf, rttimebuf, 3, 0); /* mon */
|
||||
for (i = 0; i < SIZE(mth); ++i)
|
||||
if (!case_insensitive_comp(tmpbuf, mth[i])) {
|
||||
t.tm_mon = i;
|
||||
break;
|
||||
}
|
||||
extract_field(tmpbuf, rttimebuf, 2, 4); /* mday */
|
||||
strp = tmpbuf;
|
||||
if (*strp == ' ')
|
||||
strp++;
|
||||
t.tm_mday = atoi(strp);
|
||||
extract_field(tmpbuf, rttimebuf, 2, 12); /* hour */
|
||||
t.tm_hour = atoi(tmpbuf);
|
||||
extract_field(tmpbuf, rttimebuf, 2, 15); /* min */
|
||||
t.tm_min = atoi(tmpbuf);
|
||||
extract_field(tmpbuf, rttimebuf, 2, 18); /* sec */
|
||||
t.tm_sec = atoi(tmpbuf);
|
||||
timeresult = mktime(&t);
|
||||
#if defined(CROSSCOMPILE_TARGET) && !defined(MAKEDEFS_C)
|
||||
BUILD_TIME = (unsigned long) timeresult;
|
||||
BUILD_DATE = rttimebuf;
|
||||
#endif
|
||||
#else /* __DATE__ && __TIME__ */
|
||||
nhUse(strp);
|
||||
#endif /* __DATE__ && __TIME__ */
|
||||
|
||||
#if defined(CROSSCOMPILE_TARGET) && !defined(MAKEDEFS_C)
|
||||
VERSION_NUMBER = version.incarnation;
|
||||
VERSION_FEATURES = version.feature_set;
|
||||
#ifdef MD_IGNORED_FEATURES
|
||||
IGNORED_FEATURES = MD_IGNORED_FEATURES;
|
||||
#endif
|
||||
VERSION_SANITY1 = version.entity_count;
|
||||
VERSION_SANITY2 = version.struct_sizes1;
|
||||
VERSION_SANITY3 = version.struct_sizes2;
|
||||
|
||||
VERSION_STRING = strdup(version_string(tmpbuf, "."));
|
||||
VERSION_ID = strdup(version_id_string(tmpbuf, BUILD_DATE));
|
||||
COPYRIGHT_BANNER_C = strdup(bannerc_string(tmpbuf, BUILD_DATE));
|
||||
#ifdef HOST_NETHACK_GIT_SHA
|
||||
NETHACK_GIT_SHA = strdup(HOST_NETHACK_GIT_SHA);
|
||||
#endif
|
||||
#ifdef HOST_NETHACK_GIT_BRANCH
|
||||
NETHACK_GIT_BRANCH = strdup(HOST_NETHACK_GIT_BRANCH);
|
||||
#endif
|
||||
#endif /* CROSSCOMPILE_TARGET && !MAKEDEFS_C */
|
||||
}
|
||||
idxopttext = 0;
|
||||
build_options();
|
||||
}
|
||||
}
|
||||
|
||||
const char *
|
||||
do_runtime_info(rtcontext)
|
||||
int *rtcontext;
|
||||
{
|
||||
const char *retval = (const char *) 0;
|
||||
|
||||
if (!done_runtime_opt_init_once)
|
||||
runtime_info_init();
|
||||
if (idxopttext && rtcontext)
|
||||
if (*rtcontext >= 0 && *rtcontext < (MAXOPT - 1)) {
|
||||
retval = opttext[*rtcontext];
|
||||
*rtcontext += 1;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*mdlib.c*/
|
||||
@@ -1,5 +1,5 @@
|
||||
/* NetHack 3.7 sfdata.c $Date$ $Revision$ */
|
||||
/* Copyright (c) NetHack Development Team 2018. */
|
||||
/* NetHack 3.7 sfdata.c */
|
||||
/* Copyright (c) NetHack Development Team 2019. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE! */
|
||||
@@ -12,9 +12,6 @@
|
||||
#include "wintype.h"
|
||||
#include "sfproto.h"
|
||||
|
||||
#define BUILD_DATE "Tue Jun 25 09:57:33 2019"
|
||||
#define BUILD_TIME (1561471053L)
|
||||
|
||||
#define NHTYPE_SIMPLE 1
|
||||
#define NHTYPE_COMPLEX 2
|
||||
struct nhdatatypes_t {
|
||||
|
||||
@@ -19,11 +19,44 @@
|
||||
#include "patchlevel.h"
|
||||
#endif
|
||||
|
||||
#if defined(CROSSCOMPILE)
|
||||
struct cross_target_s cross_target = {
|
||||
/* https://groups.google.com/forum/#!original/
|
||||
comp.sources.games/91SfKYg_xzI/dGnR3JnspFkJ */
|
||||
"Tue, 28-Jul-87 13:18:57 EDT",
|
||||
"Version 1.0, built Jul 28 13:18:57 1987.",
|
||||
"0000000000000000000000000000000000000000",
|
||||
"master",
|
||||
"1.0.0-0",
|
||||
"NetHack Version 1.0.0-0 - last build Tue Jul 28 13:18:57 1987.",
|
||||
0x01010000UL,
|
||||
0x00000000UL,
|
||||
0x00000000UL,
|
||||
0x00000000UL,
|
||||
0x00000000UL,
|
||||
0x00000000UL,
|
||||
554476737UL,
|
||||
};
|
||||
#endif /* CROSSCOMPILE */
|
||||
|
||||
#if defined(NETHACK_GIT_SHA)
|
||||
const char *NetHack_git_sha = NETHACK_GIT_SHA;
|
||||
const char *NetHack_git_sha
|
||||
#if !defined(CROSSCOMPILE) || (defined(CROSSCOMPILE) && defined(CROSSCOMPILE_HOST))
|
||||
= NETHACK_GIT_SHA
|
||||
#else
|
||||
= NETHACK_HOST_GIT_SHA
|
||||
#endif
|
||||
;
|
||||
#endif
|
||||
|
||||
#if defined(NETHACK_GIT_BRANCH)
|
||||
const char *NetHack_git_branch = NETHACK_GIT_BRANCH;
|
||||
const char *NetHack_git_branch
|
||||
#if !defined(CROSSCOMPILE) || (defined(CROSSCOMPILE) && defined(CROSSCOMPILE_HOST))
|
||||
= NETHACK_GIT_BRANCH
|
||||
#else
|
||||
= NETHACK_HOST_GIT_BRANCH
|
||||
#endif
|
||||
;
|
||||
#endif
|
||||
|
||||
static void FDECL(insert_rtoption, (char *));
|
||||
@@ -98,7 +131,12 @@ doversion()
|
||||
int
|
||||
doextversion()
|
||||
{
|
||||
#if defined(OPTIONS_AT_RUNTIME) || defined(CROSSCOMPILE_TARGET)
|
||||
const char *rtbuf;
|
||||
int rtcontext = 0;
|
||||
#else
|
||||
dlb *f;
|
||||
#endif
|
||||
char buf[BUFSZ], *p = 0;
|
||||
winid win = create_nhwindow(NHW_TEXT);
|
||||
|
||||
@@ -119,12 +157,15 @@ doextversion()
|
||||
putstr(win, 0, p);
|
||||
}
|
||||
|
||||
#if defined(OPTIONS_AT_RUNTIME) || defined(CROSSCOMPILE_TARGET)
|
||||
#else
|
||||
f = dlb_fopen(OPTIONS_USED, "r");
|
||||
if (!f) {
|
||||
putstr(win, 0, "");
|
||||
Sprintf(buf, "[Configuration '%s' not available?]", OPTIONS_USED);
|
||||
putstr(win, 0, buf);
|
||||
} else {
|
||||
#endif
|
||||
/*
|
||||
* already inserted above:
|
||||
* + outdented program name and version plus build date and time
|
||||
@@ -146,8 +187,15 @@ doextversion()
|
||||
*/
|
||||
boolean prolog = TRUE; /* to skip indented program name */
|
||||
|
||||
#if defined(OPTIONS_AT_RUNTIME) || defined(CROSSCOMPILE_TARGET)
|
||||
while ((rtbuf = do_runtime_info(&rtcontext))) {
|
||||
if ((int) strlen(rtbuf) >= (BUFSZ - 1))
|
||||
continue;
|
||||
Strcpy(buf, rtbuf);
|
||||
#else
|
||||
while (dlb_fgets(buf, BUFSZ, f)) {
|
||||
(void) strip_newline(buf);
|
||||
#endif
|
||||
if (index(buf, '\t') != 0)
|
||||
(void) tabexpand(buf);
|
||||
|
||||
@@ -167,10 +215,16 @@ doextversion()
|
||||
if (*buf)
|
||||
putstr(win, 0, buf);
|
||||
}
|
||||
#if defined(OPTIONS_AT_RUNTIME) || defined(CROSSCOMPILE_TARGET)
|
||||
#else
|
||||
(void) dlb_fclose(f);
|
||||
#endif
|
||||
display_nhwindow(win, FALSE);
|
||||
destroy_nhwindow(win);
|
||||
#if defined(OPTIONS_AT_RUNTIME) || defined(CROSSCOMPILE_TARGET)
|
||||
#else
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -370,11 +424,23 @@ void
|
||||
store_version(nhfp)
|
||||
NHFILE *nhfp;
|
||||
{
|
||||
#if !defined(CROSSCOMPILE) || (defined(CROSSCOMPILE) && defined(CROSSCOMPILE_HOST))
|
||||
static const struct version_info version_data = {
|
||||
VERSION_NUMBER, VERSION_FEATURES,
|
||||
VERSION_SANITY1, VERSION_SANITY2, VERSION_SANITY3
|
||||
#else
|
||||
struct version_info version_data = {
|
||||
0UL,0UL,0UL,0UL,0Ul
|
||||
#endif
|
||||
};
|
||||
|
||||
#if defined(CROSSCOMPILE) && !defined(CROSSCOMPILE_HOST)
|
||||
version_data.incarnation = VERSION_NUMBER; /* actual version number */
|
||||
version_data.feature_set = VERSION_FEATURES; /* bitmask of config settings */
|
||||
version_data.entity_count = VERSION_SANITY1; /* # of monsters and objects */
|
||||
version_data.struct_sizes1 = VERSION_SANITY2; /* size of key structs */
|
||||
version_data.struct_sizes2 = VERSION_SANITY3; /* size of more key structs */
|
||||
#endif
|
||||
if (nhfp->structlevel) {
|
||||
bufoff(nhfp->fd);
|
||||
/* bwrite() before bufon() uses plain write() */
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
# for testing the msdos port build of the evolving NetHack code.0
|
||||
#
|
||||
# The GNU Make has a problem if you include a drive spec below.
|
||||
GAMEDIR =../binary
|
||||
GAMEDIR =../msdos-binary
|
||||
|
||||
#
|
||||
#==============================================================================
|
||||
@@ -143,9 +143,11 @@ TEXTIO = $(HOST_O)tiletext.o $(HOST_O)tiletxt.o $(HOST_O)drawing.o $(HOST_O
|
||||
TEXTIO2 = $(HOST_O)tiletex2.o $(HOST_O)tiletxt2.o $(HOST_O)drawing.o $(HOST_O)decl.o $(HOST_O)monst.o \
|
||||
$(HOST_O)objects.o
|
||||
|
||||
TILE_BMP = $(DAT)/nhtiles.bmp
|
||||
PLANAR_TIB = $(DAT)/NETHACK1.TIB
|
||||
OVERVIEW_TIB = $(DAT)/NETHACKO.TIB
|
||||
TILE_BMP = $(DAT)/NHTILES.BMP
|
||||
|
||||
TILEUTIL = $(TILOBJ) $(U)tile2bin $(U)til2bin2 $(TILE_BMP)
|
||||
TILEUTIL = $(TILOBJ) $(U)tile2bin $(U)til2bin2 $(TILE_BMP) $(PLANAR_TIB) $(OVERVIEW_TIB)
|
||||
|
||||
TILEFILES = $(WSHR)/monsters.txt $(WSHR)/objects.txt $(WSHR)/other.txt
|
||||
|
||||
@@ -226,18 +228,18 @@ CURSESDEF=
|
||||
CURSESLIB=
|
||||
INCLDIR=-I../include -I../sys/msdos
|
||||
# Debugging
|
||||
#cflags = -pg -c $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DSUPPRESS_GRAPHICS
|
||||
#cflags = -pg -c $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DSUPPRESS_GRAPHICS -DCROSSCOMPILE -CROSSCOMPILE_HOST
|
||||
#LFLAGS = -pg
|
||||
#
|
||||
cflags = -c -O $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DSUPPRESS_GRAPHICS
|
||||
LFLAGS =
|
||||
#cflags = -c -O $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DSUPPRESS_GRAPHICS -DCROSSCOMPILE -DCROSSCOMPILE_HOST
|
||||
#LFLAGS =
|
||||
#
|
||||
# Debugging
|
||||
#cflags = -g -c $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DUSE_TILES
|
||||
#cflags = -g -c $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DUSE_TILES -DCROSSCOMPILE -DCROSSCOMPILE_HOST
|
||||
#LFLAGS = -g
|
||||
#
|
||||
# Normal
|
||||
cflags = -c -O $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DUSE_TILES
|
||||
cflags = -c -O $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DUSE_TILES -DCROSSCOMPILE -DCROSSCOMPILE_HOST
|
||||
LFLAGS =
|
||||
|
||||
#==========================================
|
||||
@@ -318,6 +320,7 @@ $(DAT)/nhdat: $(U)dlb_main $(DAT)/data $(DAT)/rumors \
|
||||
ls -1 data oracles options quest.dat rumors help hh >dlb.lst; \
|
||||
ls -1 cmdhelp history opthelp wizhelp license >>dlb.lst; \
|
||||
ls -1 bogusmon engrave epitaph tribute msdoshlp.txt >>dlb.lst; \
|
||||
ls -1 *.lua >>dlb.lst; \
|
||||
$(U)dlb_main cvIf dlb.lst nhdat
|
||||
cd $(SRC)
|
||||
|
||||
@@ -480,7 +483,19 @@ $(HOST_O)tilemap.o: $(WSHR)/tilemap.c $(HACK_H) $(TILE_H)
|
||||
# Required for tile support
|
||||
#==========================================
|
||||
|
||||
$(DAT)/nhtiles.bmp: $(TILEFILES) $(U)tile2bmp
|
||||
$(DAT)/NetHack1.tib: $(TILEFILES) $(U)tile2bin
|
||||
@echo Creating binary tile files
|
||||
cd $(DAT)
|
||||
$(U)tile2bin
|
||||
cd $(SRC)
|
||||
|
||||
$(DAT)/NetHacko.tib: $(HOST_O)thintile.tag $(TILEFILES2) $(U)til2bin2
|
||||
@echo Creating overview binary tile files
|
||||
cd $(DAT)
|
||||
$(U)til2bin2
|
||||
cd $(SRC)
|
||||
|
||||
$(DAT)/NHTILES.BMP: $(TILEFILES) $(U)tile2bmp
|
||||
@echo Creating binary tile files which may take some time
|
||||
@cd $(DAT)
|
||||
@$(U)tile2bmp $@
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# NetHack 3.6 Makefile2.cross
|
||||
# NetHack 3.7 Makefile2.cross
|
||||
# Cross-compile msdos version of NetHack using a
|
||||
# linux-hosted djgpp cross-compiler.
|
||||
#
|
||||
@@ -11,17 +11,17 @@
|
||||
# Makefile2 utilizes the djgpp cross-compiler from Andrew Wu:
|
||||
# https://github.com/andrewwutw/build-djgpp
|
||||
#
|
||||
# Currently, in NetHack 3.6, the cross-compile for msdos cannot be
|
||||
# used to build the entire game to a playable point but it is useful
|
||||
# for testing the msdos port build of the evolving NetHack code.
|
||||
# In NetHack 3.7, the cross-compile for msdos can be used to
|
||||
# build the entire game to a complete ms-dos package and
|
||||
# result (in theory).
|
||||
#
|
||||
|
||||
# Game Installation Variables
|
||||
# NOTE: Make sure GAMEDIR exists before make is started.
|
||||
|
||||
GAME = nethack
|
||||
GAME = NETHACK
|
||||
# The GNU Make has a problem if you include a drive spec below (unfortunately).
|
||||
GAMEDIR =../binary
|
||||
GAMEDIR =../msdos-binary
|
||||
|
||||
# Optional PDCurses support
|
||||
# Uncomment these and set them appropriately if you want to
|
||||
@@ -39,6 +39,20 @@ PDCURSES_TOP=../../pdcurses
|
||||
# Set top of djgpp if not specified through ENV variables prior to make:
|
||||
#DJGPP_TOP = $(HOME)/djgpp
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Location of LUA
|
||||
#
|
||||
# Original source needs to be obtained from:
|
||||
# http://www.lua.org/ftp/lua-5.3.5.tar.gz
|
||||
#
|
||||
# This build assumes that the LUA sources are located
|
||||
# at the specified location. If they are actually elsewhere
|
||||
# you'll need to specify the correct spot below in order to
|
||||
# successfully build NetHack-3.7.
|
||||
#
|
||||
ADD_LUA=Y
|
||||
LUATOP=../lib/lua-5.3.5
|
||||
#
|
||||
#
|
||||
#==============================================================================
|
||||
# This marks the end of the BUILD DECISIONS section.
|
||||
@@ -47,7 +61,8 @@ PDCURSES_TOP=../../pdcurses
|
||||
# Directories, gcc likes unix style directory specs
|
||||
#
|
||||
|
||||
OBJ = o
|
||||
TARGET = msdos
|
||||
OBJ = $(TARGET)_o
|
||||
HOBJ = host_o
|
||||
DAT = ../dat
|
||||
DOC = ../doc
|
||||
@@ -73,6 +88,7 @@ endif
|
||||
TARGET_CC = $(DJGPP_TOP)/i586-pc-msdosdjgpp/bin/gcc
|
||||
TARGET_LINK = $(DJGPP_TOP)/i586-pc-msdosdjgpp/bin/gcc
|
||||
TARGET_STUBEDIT = $(DJGPP_TOP)/i586-pc-msdosdjgpp/bin/stubedit
|
||||
TARGET_AR = $(DJGPP_TOP)/i586-pc-msdosdjgpp/bin/ar
|
||||
MAKEBIN = make
|
||||
|
||||
#
|
||||
@@ -164,7 +180,7 @@ SUPPRESS_GRAPHICS =
|
||||
# #
|
||||
################################################
|
||||
|
||||
GAMEFILE = $(GAMEDIR)/$(GAME).exe
|
||||
GAMEFILE = $(GAMEDIR)/$(GAME).EXE
|
||||
|
||||
# Changing this conditional block is not recommended
|
||||
ifeq "$(USE_DLB)" "Y"
|
||||
@@ -208,82 +224,60 @@ O = $(OBJ)/
|
||||
HOST_O = $(HOBJ)/
|
||||
U = $(UTIL)/
|
||||
|
||||
#==========================================
|
||||
# Utility Objects.
|
||||
#==========================================
|
||||
|
||||
VGAOBJ = $(O)vidvga.o $(O)vidvesa.o
|
||||
|
||||
MAKESRC = makedefs.c
|
||||
|
||||
#SPLEVSRC = lev_yacc.c lev_$(LEX).c lev_main.c panic.c
|
||||
|
||||
#DGNCOMPSRC = dgn_yacc.c dgn_$(LEX).c dgn_main.c
|
||||
|
||||
MAKEDEFSOBJS = $(HOST_O)makedefs.o $(HOST_O)monst.o $(HOST_O)objects.o
|
||||
|
||||
#SPLEVOBJS = $(HOST_O)lev_yacc.o $(HOST_O)lev_$(LEX).o $(HOST_O)lev_main.o $(HOST_O)alloc.o \
|
||||
# $(HOST_O)monst.o $(HOST_O)objects.o $(HOST_O)panic.o \
|
||||
# $(HOST_O)drawing.o $(HOST_O)decl.o $(O)stubvid.o
|
||||
|
||||
#DGNCOMPOBJS = $(HOST_O)dgn_yacc.o $(HOST_O)dgn_$(LEX).o $(HOST_O)dgn_main.o $(HOST_O)alloc.o \
|
||||
# $(HOST_O)panic.o
|
||||
|
||||
RECOVOBJS = $(O)recover.o
|
||||
|
||||
|
||||
#==========================================
|
||||
# Tile related object files.
|
||||
#==========================================
|
||||
|
||||
ifeq ($(SUPPRESS_GRAPHICS),Y)
|
||||
TILOBJ =
|
||||
TILOBJ2 =
|
||||
TEXTIO =
|
||||
TEXTIO2 =
|
||||
TILE_BMP =
|
||||
TILEUTIL =
|
||||
TILEFILES =
|
||||
TILEFILES2 =
|
||||
GIFREADERS =
|
||||
GIFREAD2 =
|
||||
PPMWRITERS =
|
||||
PPMWRIT2 =
|
||||
#ifeq ($(SUPPRESS_GRAPHICS),Y)
|
||||
#TILOBJ =
|
||||
#TILOBJ2 =
|
||||
#TEXTIO =
|
||||
#TEXTIO2 =
|
||||
#TILE_BMP =
|
||||
#TILEUTIL =
|
||||
#TILEFILES =
|
||||
#TILEFILES2 =
|
||||
#GIFREADERS =
|
||||
#GIFREAD2 =
|
||||
#PPMWRITERS =
|
||||
#PPMWRIT2 =
|
||||
#
|
||||
#else
|
||||
#
|
||||
#TILOBJ = $(O)tile.o $(VIDEO_OBJ)
|
||||
#
|
||||
#TILOBJ2 = $(O)tileset.o $(O)bmptiles.o $(O)giftiles.o
|
||||
#
|
||||
#TEXTIO = $(HOST_O)tiletext.o $(HOST_O)tiletxt.o $(HOST_O)drawing.o $(HOST_O)decl.o $(HOST_O)monst.o \
|
||||
# $(HOST_O)objects.o $(HOST_O)stubvid.o
|
||||
#
|
||||
#TEXTIO2 = $(HOST_O)tiletex2.o $(HOST_O)tiletxt2.o $(HOST_O)drawing.o $(HOST_O)decl.o $(HOST_O)monst.o \
|
||||
# $(HOST_O)objects.o $(HOST_O)stubvid.o
|
||||
#TILEUTIL = $(TILOBJ) $(U)tile2bin $(U)til2bin2 $(TILE_BMP) $(PLANAR_TIB) $(OVERVIEW_TIB)
|
||||
#
|
||||
#TILEFILES = $(WSHR)/monsters.txt $(WSHR)/objects.txt $(WSHR)/other.txt
|
||||
#
|
||||
#TILEFILES2 = $(WSHR)/monthin.txt $(WSHR)/objthin.txt $(WSHR)/oththin.txt
|
||||
#
|
||||
#GIFREADERS = $(HOST_O)gifread.o $(HOST_O)alloc.o $(HOST_O)panic.o
|
||||
#
|
||||
#GIFREAD2 = $(HOST_O)gifread2.o $(HOST_O)alloc.o $(HOST_O)panic.o
|
||||
#
|
||||
#PPMWRITERS = $(HOST_O)ppmwrite.o $(HOST_O)alloc.o $(HOST_O)panic.o
|
||||
#
|
||||
#PPMWRIT2 = $(HOST_O)ppmwrit2.o $(HOST_O)alloc.o $(HOST_O)panic.o
|
||||
#endif
|
||||
|
||||
else
|
||||
PLANAR_TIB = $(DAT)/NETHACK1.tib
|
||||
OVERVIEW_TIB = $(DAT)/NETHACKO.tib
|
||||
TILE_BMP = $(DAT)/NHTILES.BMP
|
||||
|
||||
TILOBJ = $(O)tile.o $(VGAOBJ)
|
||||
|
||||
TILOBJ2 = $(O)tileset.o $(O)bmptiles.o $(O)giftiles.o
|
||||
|
||||
TEXTIO = $(HOST_O)tiletext.o $(HOST_O)tiletxt.o $(HOST_O)drawing.o $(HOST_O)decl.o $(HOST_O)monst.o \
|
||||
$(HOST_O)objects.o $(HOST_O)stubvid.o
|
||||
|
||||
TEXTIO2 = $(HOST_O)tiletex2.o $(HOST_O)tiletxt2.o $(HOST_O)drawing.o $(HOST_O)decl.o $(HOST_O)monst.o \
|
||||
$(HOST_O)objects.o $(HOST_O)stubvid.o
|
||||
|
||||
TILE_BMP = $(DAT)/nhtiles.bmp
|
||||
|
||||
TILEUTIL = $(TILOBJ) $(U)tile2bin $(U)til2bin2 $(TILE_BMP)
|
||||
|
||||
TILEFILES = $(WSHR)/monsters.txt $(WSHR)/objects.txt $(WSHR)/other.txt
|
||||
|
||||
TILEFILES2 = $(WSHR)/monthin.txt $(WSHR)/objthin.txt $(WSHR)/oththin.txt
|
||||
|
||||
GIFREADERS = $(HOST_O)gifread.o $(HOST_O)alloc.o $(HOST_O)panic.o
|
||||
|
||||
GIFREAD2 = $(HOST_O)gifread2.o $(HOST_O)alloc.o $(HOST_O)panic.o
|
||||
|
||||
PPMWRITERS = $(HOST_O)ppmwrite.o $(HOST_O)alloc.o $(HOST_O)panic.o
|
||||
|
||||
PPMWRIT2 = $(HOST_O)ppmwrit2.o $(HOST_O)alloc.o $(HOST_O)panic.o
|
||||
endif
|
||||
|
||||
#REGEX = $(O)pmatchregex.o
|
||||
#REGEX = $(O)cppregex.o
|
||||
REGEX = $(O)posixreg.o
|
||||
|
||||
DLBOBJ = $(O)dlb.o
|
||||
##REGEX = $(O)pmatchregex.o
|
||||
##REGEX = $(O)cppregex.o
|
||||
REGEX = $(O)posixreg.o
|
||||
DLBOBJ = $(O)dlb.o
|
||||
VIDEO_OBJ = $(O)vidvga.o $(O)vidvesa.o $(O)tile.o $(O)tileset.o $(O)bmptiles.o $(O)giftiles.o
|
||||
RECOVOBJS = $(O)recover.o
|
||||
|
||||
# Object files for the game itself.
|
||||
|
||||
@@ -310,13 +304,19 @@ VOBJ19 = $(O)trap.o $(O)u_init.o $(O)uhitm.o $(O)vault.o $(O)vision.o
|
||||
VOBJ20 = $(O)vis_tab.o $(O)weapon.o $(O)were.o $(O)wield.o $(O)windows.o
|
||||
VOBJ21 = $(O)wintty.o $(O)wizard.o $(O)worm.o $(O)worn.o $(O)write.o
|
||||
VOBJ22 = $(O)zap.o $(O)light.o $(O)dlb.o $(O)dig.o $(O)teleport.o
|
||||
VOBJ23 = $(O)region.o $(O)sys.o $(REGEX) $(O)isaac64.o
|
||||
VOBJ23 = $(O)region.o $(O)sys.o $(REGEX) $(O)isaac64.o $(VIDEO_OBJ)
|
||||
VOBJ24 = $(O)sfbase.o $(O)sfdata.o
|
||||
VOBJ25 = $(O)sfstruct.o $(O)sfascii.o $(O)sflendian.o
|
||||
|
||||
SOBJ = $(O)msdos.o $(O)sound.o $(O)pcsys.o $(O)tty.o $(O)unix.o \
|
||||
SOBJ = $(O)msdos.o $(O)pcsys.o $(O)tty.o $(O)unix.o \
|
||||
$(O)video.o $(O)vidtxt.o $(O)pckeys.o
|
||||
|
||||
VVOBJ = $(O)version.o
|
||||
|
||||
ifeq "$(ADD_LUA)" "Y"
|
||||
LUAOBJ = $(O)nhlua.o $(O)nhlsel.o
|
||||
endif
|
||||
|
||||
ifeq "$(ADD_CURSES)" "Y"
|
||||
CURSESOBJ= $(O)cursdial.o $(O)cursinit.o $(O)cursinvt.o $(O)cursmain.o \
|
||||
$(O)cursmesg.o $(O)cursmisc.o $(O)cursstat.o $(O)curswins.o
|
||||
@@ -328,11 +328,54 @@ VOBJ = $(VOBJ01) $(VOBJ02) $(VOBJ03) $(VOBJ04) $(VOBJ05) \
|
||||
$(VOBJ06) $(VOBJ07) $(VOBJ08) $(VOBJ09) $(VOBJ10) \
|
||||
$(VOBJ11) $(VOBJ12) $(VOBJ13) $(VOBJ14) $(VOBJ15) \
|
||||
$(VOBJ16) $(VOBJ17) $(VOBJ18) $(VOBJ19) $(VOBJ20) \
|
||||
$(VOBJ21) $(VOBJ22) $(VOBJ23) \
|
||||
$(CURSESOBJ)
|
||||
$(VOBJ21) $(VOBJ22) $(VOBJ23) $(VOBJ24) $(VOBJ25) \
|
||||
$(LUAOBJ) $(CURSESOBJ)
|
||||
|
||||
ALLOBJ = $(VOBJ) $(SOBJ) $(TILOBJ) $(TILOBJ2) $(VVOBJ)
|
||||
|
||||
ifeq "$(ADD_LUA)" "Y"
|
||||
#===============-=================================================
|
||||
# LUA library
|
||||
# Source from http://www.lua.org/ftp/lua-5.3.5.tar.gz
|
||||
#=================================================================
|
||||
|
||||
LUASRC = $(LUATOP)/src
|
||||
LUALIB = $(O)lua535s.a
|
||||
#LUADLL = $(O)lua535.a
|
||||
LUAINCL = -I$(LUASRC)
|
||||
#LUAFLAGS = unix added -lm here?
|
||||
LUATARGETS = lua.exe luac.exe $(LUALIB)
|
||||
#LUATARGETS = $(LUADLL) $(LUALIB)
|
||||
|
||||
LUASRCFILES = lapi.c lauxlib.c lbaselib.c lbitlib.c lcode.c \
|
||||
lcorolib.c lctype.c ldblib.c ldebug.c ldo.c \
|
||||
ldump.c lfunc.c lgc.c linit.c liolib.c llex.c \
|
||||
lmathlib.c lmem.c loadlib.c lobject.c lopcodes.c \
|
||||
loslib.c lparser.c lstate.c lstring.c lstrlib.c \
|
||||
ltable.c ltablib.c ltm.c lundump.c lutf8lib.c \
|
||||
lvm.c lzio.c
|
||||
|
||||
LUAOBJFILES1 = $(O)lapi.o $(O)lauxlib.o $(O)lbaselib.o $(O)lbitlib.o \
|
||||
$(O)lcode.o $(O)lcorolib.o $(O)lctype.o $(O)ldblib.o
|
||||
LUAOBJFILES2 = $(O)ldebug.o $(O)ldo.o $(O)ldump.o $(O)lfunc.o \
|
||||
$(O)lgc.o $(O)linit.o $(O)liolib.o $(O)llex.o
|
||||
LUAOBJFILES3 = $(O)lmathlib.o $(O)lmem.o $(O)loadlib.o $(O)lobject.o \
|
||||
$(O)lopcodes.o $(O)loslib.o $(O)lparser.o $(O)lstate.o
|
||||
LUAOBJFILES3 = $(O)lstring.o $(O)lstrlib.o $(O)ltable.o $(O)ltablib.o \
|
||||
$(O)ltm.o $(O)lundump.o $(O)lutf8lib.o $(O)lvm.o $(O)lzio.o
|
||||
|
||||
#LUAOBJFILES = $(O)lapi.o $(O)lauxlib.o $(O)lbaselib.o $(O)lbitlib.o \
|
||||
# $(O)lcode.o $(O)lcorolib.o $(O)lctype.o $(O)ldblib.o \
|
||||
# $(O)ldebug.o $(O)ldo.o $(O)ldump.o $(O)lfunc.o \
|
||||
# $(O)lgc.o $(O)linit.o $(O)liolib.o $(O)llex.o \
|
||||
# $(O)lmathlib.o $(O)lmem.o $(O)loadlib.o $(O)lobject.o \
|
||||
# $(O)lopcodes.o $(O)loslib.o $(O)lparser.o $(O)lstate.o \
|
||||
# $(O)lstring.o $(O)lstrlib.o $(O)ltable.o $(O)ltablib.o \
|
||||
# $(O)ltm.o $(O)lundump.o $(O)lutf8lib.o $(O)lvm.o $(O)lzio.o
|
||||
|
||||
LUALIBOBJS = $(LUAOBJFILES1) $(LUAOBJFILES2) $(LUAOBJFILES3) $(LUAOBJFILES4)
|
||||
endif
|
||||
|
||||
ifeq "$(ADD_CURSES)" "Y"
|
||||
#==========================================
|
||||
# PDCurses build macros
|
||||
@@ -419,11 +462,6 @@ DLB =
|
||||
DLBOBJS =
|
||||
endif
|
||||
|
||||
ifdef DJGPP
|
||||
DJ1 = $(dir $(DJGPP))
|
||||
CWSDPMI = $(subst /,\,$(DJ1))bin\CWSDPMI.*
|
||||
endif
|
||||
|
||||
#==========================================
|
||||
# More compiler setup macros
|
||||
#==========================================
|
||||
@@ -435,21 +473,21 @@ CURSESDEF=
|
||||
CURSESLIB=
|
||||
endif
|
||||
|
||||
INCLDIR=-I../include -I../sys/msdos
|
||||
INCLDIR=-I../include -I../sys/msdos $(LUAINCL)
|
||||
|
||||
# Debugging
|
||||
#cflags = -pg -c $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DSUPPRESS_GRAPHICS
|
||||
#cflags = -pg -c $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DSUPPRESS_GRAPHICS -DCROSSCOMPILE -DCROSSCOMPILE_TARGET
|
||||
#LFLAGS = -pg
|
||||
|
||||
cflags = -c -O $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DSUPPRESS_GRAPHICS
|
||||
LFLAGS =
|
||||
#cflags = -c -O $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DSUPPRESS_GRAPHICS -DCROSSCOMPILE-DCROSSCOMPILE_TARGET
|
||||
#LFLAGS =
|
||||
|
||||
# Debugging
|
||||
#cflags = -g -c $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DUSE_TILES
|
||||
#cflags = -g -c $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DUSE_TILES -DCROSSCOMPILE -DCROSSCOMPILE_TARGET
|
||||
#LFLAGS = -g
|
||||
|
||||
# Normal
|
||||
cflags = -c -O $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DUSE_TILES
|
||||
cflags = -c -O $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DUSE_TILES -DCROSSCOMPILE -DCROSSCOMPILE_TARGET
|
||||
LFLAGS =
|
||||
|
||||
#==========================================
|
||||
@@ -523,6 +561,15 @@ $(OBJ)/%.o : $(PDCSRC)/%.c
|
||||
$(OBJ)/%.o : $(PDCDOS)/%.c
|
||||
$(TARGET_CC) $(PDCINCL) $(cflags) -o$@ $<
|
||||
|
||||
ifeq "$(ADD_LUA)" "Y"
|
||||
#==========================================
|
||||
# Rules for LUA files
|
||||
#==========================================
|
||||
|
||||
$(OBJ)/%.o : $(LUASRC)/%.c
|
||||
$(TARGET_CC) $(cflags) -o$@ $<
|
||||
endif
|
||||
|
||||
#==========================================
|
||||
# Primary Targets.
|
||||
#==========================================
|
||||
@@ -538,8 +585,6 @@ default: $(GAMEFILE)
|
||||
|
||||
util: $(O)utility.tag
|
||||
|
||||
#LEVCOMPEXE = $(U)lev_comp
|
||||
|
||||
$(O)utility.tag: $(INCL)/date.h $(INCL)/trap.h $(INCL)/onames.h \
|
||||
$(INCL)/pm.h vis_tab.c $(TILEUTIL)
|
||||
echo utilities made > $@
|
||||
@@ -553,201 +598,119 @@ recover.exe: $(U)recover
|
||||
|
||||
$(O)install.tag: $(DAT)/nhdat $(GAMEFILE)
|
||||
ifeq ($(USE_DLB),Y)
|
||||
cp $(DAT)/nhdat $(GAMEDIR)
|
||||
cp $(DAT)/license $(GAMEDIR)
|
||||
cp $(DAT)/nhdat $(GAMEDIR)/NHDAT
|
||||
cp $(DAT)/license $(GAMEDIR)/LICENSE
|
||||
else
|
||||
cp $(DAT)/*. $(GAMEDIR)
|
||||
cp $(DAT)/*.dat $(GAMEDIR)
|
||||
cp $(DAT)/*.lev $(GAMEDIR)
|
||||
cp $(MSYS)/msdoshlp.txt $(GAMEDIR))
|
||||
ifeq "$(ADD_LUA)" "Y"
|
||||
cp $(DAT)/*.lua $(GAMEDIR)
|
||||
endif
|
||||
endif
|
||||
ifdef TERMLIB
|
||||
cp $(SSHR)/termcap $(GAMEDIR))
|
||||
cp $(SSHR)/termcap $(GAMEDIR)/TERMCAP)
|
||||
endif
|
||||
# if [ -f $(TILE_BMP) ]; then rm $(TILE_BMP); fi;
|
||||
if [ -f $(TILE_BMP) ]; then cp $(TILE_BMP) $(GAMEDIR); fi;
|
||||
if [ -f $(DAT)/symbols ]; then cp $(DAT)/symbols $(GAMEDIR); fi;
|
||||
if [ -f $(SSHR)/NetHack.cnf ]; then cp $(SSHR)/NetHack.cnf $(GAMEDIR); fi;
|
||||
-touch $(GAMEDIR)/record
|
||||
if [ -f ../sys/winnt/sysconf ]; then cp ../sys/winnt/sysconf $(GAMEDIR); fi;
|
||||
if [ -f $(DOC)/nethack.txt ]; then cp $(DOC)/nethack.txt $(GAMEDIR); fi;
|
||||
ifdef CWSDPMI
|
||||
if [ -f $(CWSDPMI) ]; then cp $(CWSDPMI) $(GAMEDIR); fi;
|
||||
else
|
||||
@echo Could not find a copy of CWSDPMI.EXE to put into $(GAMEDIR)
|
||||
endif
|
||||
if [ -f $(TILE_BMP) ]; then cp $(TILE_BMP) $(GAMEDIR)/NHTILES.BMP; fi;
|
||||
if [ -f $(DAT)/symbols ]; then cp $(DAT)/symbols $(GAMEDIR)/SYMBOLS; fi;
|
||||
if [ -f $(SSHR)/NetHack.cnf ]; then cp $(SSHR)/NetHack.cnf $(GAMEDIR)/NETHACK.CNF; fi;
|
||||
-touch $(GAMEDIR)/RECORD
|
||||
if [ -f ../sys/winnt/sysconf ]; then cp ../sys/winnt/sysconf $(GAMEDIR)/SYSCONF; fi;
|
||||
if [ -f $(DOC)/nethack.txt ]; then cp $(DOC)/nethack.txt $(GAMEDIR)/NETHACK.TXT; fi;
|
||||
# if [ -f $(PLANAR_TIB) ]; then cp $(PLANAR_TIB) $(GAMEDIR)/$(PLANAR_TIB^^); fi;
|
||||
# if [ -f $(OVERVIEW_TIB ]; then cp $(OVERVIEW_TIB) $(GAMEDIR)/$(OVERVIEW_TIB^^); fi;
|
||||
@echo install done > $@
|
||||
|
||||
#==========================================
|
||||
# The main target.
|
||||
#==========================================
|
||||
|
||||
$(GAMEFILE): $(O)obj.tag $(PATCHLEV_H) $(PDCLIB) \
|
||||
$(GAMEFILE): $(O)obj.tag $(PDCLIB) $(LUALIB) \
|
||||
$(O)utility.tag $(ALLOBJ) $(O)$(GAME).lnk
|
||||
if [ -f temp.a ]; then rm temp.a; fi;
|
||||
@ar r temp.a $(VOBJ01)
|
||||
@ar r temp.a $(VOBJ02)
|
||||
@ar r temp.a $(VOBJ03)
|
||||
@ar r temp.a $(VOBJ04)
|
||||
@ar r temp.a $(VOBJ05)
|
||||
@ar r temp.a $(VOBJ06)
|
||||
@ar r temp.a $(VOBJ07)
|
||||
@ar r temp.a $(VOBJ08)
|
||||
@ar r temp.a $(VOBJ09)
|
||||
@ar r temp.a $(VOBJ10)
|
||||
@ar r temp.a $(VOBJ11)
|
||||
@ar r temp.a $(VOBJ12)
|
||||
@ar r temp.a $(VOBJ13)
|
||||
@ar r temp.a $(VOBJ14)
|
||||
@ar r temp.a $(VOBJ15)
|
||||
@ar r temp.a $(VOBJ16)
|
||||
@ar r temp.a $(VOBJ17)
|
||||
@ar r temp.a $(VOBJ18)
|
||||
@ar r temp.a $(VOBJ19)
|
||||
@ar r temp.a $(VOBJ20)
|
||||
@ar r temp.a $(VOBJ21)
|
||||
@ar r temp.a $(VOBJ22)
|
||||
@ar r temp.a $(VOBJ23)
|
||||
@ar r temp.a $(VOBJ24)
|
||||
@ar r temp.a $(VOBJ25)
|
||||
@ar r temp.a $(SOBJ)
|
||||
@ar r temp.a $(TILOBJ)
|
||||
@ar r temp.a $(TILOBJ2)
|
||||
@ar r temp.a $(VVOBJ)
|
||||
ifeq "$(ADD_CURSES)" "Y"
|
||||
@ar r temp.a $(CURSESOBJ)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ01)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ02)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ03)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ04)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ05)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ06)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ07)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ08)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ09)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ10)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ11)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ12)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ13)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ14)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ15)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ16)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ17)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ18)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ19)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ20)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ21)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ22)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ23)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ24)
|
||||
@$(TARGET_AR) r temp.a $(VOBJ25)
|
||||
@$(TARGET_AR) r temp.a $(VIDEO_OBJ)
|
||||
@$(TARGET_AR) r temp.a $(SOBJ)
|
||||
@$(TARGET_AR) r temp.a $(TILOBJ)
|
||||
@$(TARGET_AR) r temp.a $(TILOBJ2)
|
||||
ifeq "$(ADD_LUA)" "Y"
|
||||
@$(TARGET_AR) r temp.a $(LUAOBJ)
|
||||
endif
|
||||
$(TARGET_LINK) $(LFLAGS) -o$(GAME).exe temp.a $(PDCLIB) $(LIBRARIES) $(ZLIB)
|
||||
@$(TARGET_AR) r temp.a $(VVOBJ)
|
||||
ifeq "$(ADD_CURSES)" "Y"
|
||||
@$(TARGET_AR) r temp.a $(CURSESOBJ)
|
||||
endif
|
||||
$(TARGET_LINK) $(LFLAGS) -o$(GAME).exe temp.a $(PDCLIB) $(LUALIB) $(LIBRARIES) $(ZLIB)
|
||||
$(TARGET_STUBEDIT) $(GAME).exe minstack=2048K
|
||||
cp $(GAME).exe $(GAMEFILE)
|
||||
rm $(GAME).exe
|
||||
|
||||
$(O)$(GAME).lnk: $(ALLOBJ)
|
||||
echo $(VOBJ01) > $(subst /,\,$@)
|
||||
echo $(VOBJ02) >> $(subst /,\,$@)
|
||||
echo $(VOBJ03) >> $(subst /,\,$@)
|
||||
echo $(VOBJ04) >> $(subst /,\,$@)
|
||||
echo $(VOBJ05) >> $(subst /,\,$@)
|
||||
echo $(VOBJ06) >> $(subst /,\,$@)
|
||||
echo $(VOBJ07) >> $(subst /,\,$@)
|
||||
echo $(VOBJ08) >> $(subst /,\,$@)
|
||||
echo $(VOBJ09) >> $(subst /,\,$@)
|
||||
echo $(VOBJ10) >> $(subst /,\,$@)
|
||||
echo $(VOBJ11) >> $(subst /,\,$@)
|
||||
echo $(VOBJ12) >> $(subst /,\,$@)
|
||||
echo $(VOBJ13) >> $(subst /,\,$@)
|
||||
echo $(VOBJ14) >> $(subst /,\,$@)
|
||||
echo $(VOBJ15) >> $(subst /,\,$@)
|
||||
echo $(VOBJ16) >> $(subst /,\,$@)
|
||||
echo $(VOBJ17) >> $(subst /,\,$@)
|
||||
echo $(VOBJ18) >> $(subst /,\,$@)
|
||||
echo $(VOBJ19) >> $(subst /,\,$@)
|
||||
echo $(VOBJ20) >> $(subst /,\,$@)
|
||||
echo $(VOBJ21) >> $(subst /,\,$@)
|
||||
echo $(VOBJ22) >> $(subst /,\,$@)
|
||||
echo $(VOBJ23) >> $(subst /,\,$@)
|
||||
echo $(VOBJ24) >> $(subst /,\,$@)
|
||||
echo $(VOBJ25) >> $(subst /,\,$@)
|
||||
echo $(SOBJ) >> $(subst /,\,$@)
|
||||
echo $(TILOBJ) >> $(subst /,\,$@)
|
||||
echo $(TILOBJ2) >> $(subst /,\,$@)
|
||||
echo $(VVOBJ) >> $(subst /,\,$@)
|
||||
echo $(VOBJ01) > $@
|
||||
echo $(VOBJ02) >> $@
|
||||
echo $(VOBJ03) >> $@
|
||||
echo $(VOBJ04) >> $@
|
||||
echo $(VOBJ05) >> $@
|
||||
echo $(VOBJ06) >> $@
|
||||
echo $(VOBJ07) >> $@
|
||||
echo $(VOBJ08) >> $@
|
||||
echo $(VOBJ09) >> $@
|
||||
echo $(VOBJ10) >> $@
|
||||
echo $(VOBJ11) >> $@
|
||||
echo $(VOBJ12) >> $@
|
||||
echo $(VOBJ13) >> $@
|
||||
echo $(VOBJ14) >> $@
|
||||
echo $(VOBJ15) >> $@
|
||||
echo $(VOBJ16) >> $@
|
||||
echo $(VOBJ17) >> $@
|
||||
echo $(VOBJ18) >> $@
|
||||
echo $(VOBJ19) >> $@
|
||||
echo $(VOBJ20) >> $@
|
||||
echo $(VOBJ21) >> $@
|
||||
echo $(VOBJ22) >> $@
|
||||
echo $(VOBJ23) >> $@
|
||||
echo $(VOBJ24) >> $@
|
||||
echo $(VOBJ25) >> $@
|
||||
echo $(SOBJ) >> $@
|
||||
echo $(TILOBJ) >> $@
|
||||
echo $(TILOBJ2) >> $@
|
||||
ifeq "$(ADD_LUA)" "Y"
|
||||
echo $(LUAOBJ) >> $@
|
||||
endif
|
||||
echo $(VVOBJ) >> $@
|
||||
ifeq "$(ADD_CURSES)" "Y"
|
||||
echo $(CURSESOBJ) >> $(subst /,\,$@)
|
||||
echo $(CURSESOBJ) >> $@
|
||||
endif
|
||||
|
||||
#==========================================
|
||||
#=========== SECONDARY TARGETS ============
|
||||
#==========================================
|
||||
#
|
||||
# The following include files depend on makedefs to be created.
|
||||
#
|
||||
# date.h should be remade every time any of the source or include
|
||||
# files is modified.
|
||||
#
|
||||
#
|
||||
#$(INCL)/date.h : $(U)makedefs
|
||||
# -$(U)makedefs -v
|
||||
#
|
||||
#$(INCL)/onames.h: $(U)makedefs
|
||||
# -$(U)makedefs -o
|
||||
#
|
||||
#$(INCL)/pm.h: $(U)makedefs
|
||||
# -$(U)makedefs -p
|
||||
#
|
||||
#monstr.c: $(U)makedefs
|
||||
# -$(U)makedefs -m
|
||||
#
|
||||
#$(INCL)/vis_tab.h: $(U)makedefs
|
||||
# -$(U)makedefs -z
|
||||
#
|
||||
#vis_tab.c: $(U)makedefs
|
||||
# -$(U)makedefs -z
|
||||
#
|
||||
#==========================================
|
||||
# Level Compiler Dependencies
|
||||
#==========================================
|
||||
#
|
||||
#$(U)lev_comp: $(SPLEVOBJS)
|
||||
# -rm -f temp.a
|
||||
# @ar ru temp.a $(SPLEVOBJS)
|
||||
# $(HOST_LINK) $(LFLAGS) -o$@ temp.a
|
||||
#
|
||||
#$(HOST_O)lev_yacc.o: $(HACK_H) $(SP_LEV_H) $(INCL)/lev_comp.h $(U)lev_yacc.c
|
||||
# $(HOST_CC) $(cflags) -o$@ $(U)lev_yacc.c
|
||||
#
|
||||
#$(HOST_O)lev_$(LEX).o: $(HACK_H) $(SP_LEV_H) $(INCL)/lev_comp.h \
|
||||
# $(U)lev_$(LEX).c
|
||||
# $(HOST_CC) $(cflags) -o$@ $(U)lev_$(LEX).c
|
||||
#
|
||||
#$(HOST_O)lev_main.o: $(HACK_H) $(INCL)/sp_lev.h $(INCL)/date.h $(U)lev_main.c
|
||||
#
|
||||
#$(U)lev_yacc.c: $(SSHR)/lev_yacc.c
|
||||
# @echo ---
|
||||
# @echo For now, we will copy the prebuilt
|
||||
# @echo lev_comp.c from $(SSHR) into $(U) and use that.
|
||||
# @cp $(SSHR)/lev_yacc.c $(U)lev_yacc.c
|
||||
# @echo.>>$(U)lev_yacc.c
|
||||
#
|
||||
#$(INCL)/lev_comp.h : $(SSHR)/lev_comp.h
|
||||
# @echo For now, we will copy the prebuilt lev_comp.h
|
||||
# @echo from $(SSHR) into $(INCL) and use that.
|
||||
# @cp $(SSHR)/lev_comp.h $@
|
||||
#$(U)lev_lex.c: $(SSHR)/lev_lex.c
|
||||
# @echo.>>$(INCL)/lev_comp.h
|
||||
# @echo For now, we will copy the prebuilt lev_lex.c
|
||||
# @echo from $(SSHR) into $(U) and use it.
|
||||
# @cp $(SSHR)/lev_lex.c $@
|
||||
# @echo.>>$@
|
||||
#
|
||||
#==========================================
|
||||
# Dungeon Dependencies
|
||||
#==========================================
|
||||
#
|
||||
#$(U)dgn_comp: $(DGNCOMPOBJS)
|
||||
# $(HOST_LINK) $(LFLAGS) -o$@ $(DGNCOMPOBJS)
|
||||
#
|
||||
#$(U)dgn_yacc.c: $(SSHR)/dgn_yacc.c
|
||||
# @echo ---
|
||||
# @echo For now, we will copy the prebuilt $(U)dgn_yacc.c and
|
||||
# @echo dgn_comp.h from $(SSHR) into $(U) and use that.
|
||||
# @cp $(SSHR)/dgn_yacc.c $(U)dgn_yacc.c
|
||||
# @echo.>>$(U)dgn_yacc.c
|
||||
#
|
||||
#$(INCL)/dgn_comp.h: $(SSHR)/dgn_comp.h
|
||||
# @echo ---
|
||||
# @echo For now, we will copy the prebuilt dgn_comp.h
|
||||
# @echo from $(SSHR) into $(INCL) and use that.
|
||||
# @cp $(SSHR)/dgn_comp.h $@
|
||||
# @echo.>>$(INCL)/dgn_comp.h
|
||||
#
|
||||
#$(U)dgn_$(LEX).c: $(SSHR)/dgn_lex.c $(INCL)/dgn_comp.h
|
||||
# @echo ---
|
||||
# @echo For now, we will copy the prebuilt dgn_lex.c
|
||||
# @echo from $(SSHR) into $(U) and use it.
|
||||
# @cp $(SSHR)/dgn_lex.c $@
|
||||
# @echo.>>$@
|
||||
|
||||
#==========================================
|
||||
# Recover Utility
|
||||
#==========================================
|
||||
@@ -810,109 +773,32 @@ $(O)objects.o: $(CONFIG_H) $(INCL)/obj.h $(INCL)/objclass.h \
|
||||
$(O)dat.tag: $(DAT)/nhdat
|
||||
@echo dat done >$@
|
||||
|
||||
#$(HOST_O)monst.o: $(CONFIG_H) $(PERMONST_H) $(INCL)/monsym.h \
|
||||
# $(INCL)/color.h monst.c
|
||||
# $(HOST_CC) $(cflags) -o$@ monst.c
|
||||
#=============================================================
|
||||
# Lua
|
||||
#=============================================================
|
||||
|
||||
#$(HOST_O)objects.o: $(CONFIG_H) $(INCL)/obj.h $(INCL)/objclass.h \
|
||||
# $(INCL)/prop.h $(INCL)/color.h objects.c
|
||||
# $(HOST_CC) $(cflags) -o$@ objects.c
|
||||
lua.exe: $(O)lua.o $(LUALIB)
|
||||
$(TARGET_LINK) $(LFLAGS) -o$@ $(O)lua.o $(LUALIB)
|
||||
|
||||
#$(O)panic.o: $(CONFIG_H) $(U)panic.c
|
||||
luac.exe: $(O)luac.o $(LUALIB)
|
||||
$(TARGET_LINK) $(LFLAGSU) -o$@ $(O)luac.o $(LUALIB)
|
||||
|
||||
# make data.base an 8.3 filename to prevent an make warning
|
||||
#DATABASE = $(DAT)/data.bas
|
||||
#
|
||||
#
|
||||
#
|
||||
#$(DAT)/data: $(O)utility.tag $(DATABASE)
|
||||
# $(U)makedefs -d
|
||||
#
|
||||
#$(DAT)/rumors: $(O)utility.tag $(DAT)/rumors.tru $(DAT)/rumors.fal
|
||||
# $(U)makedefs -r
|
||||
#
|
||||
#$(DAT)/quest.dat: $(O)utility.tag $(DAT)/quest.txt
|
||||
# $(U)makedefs -q
|
||||
#
|
||||
#$(DAT)/oracles: $(O)utility.tag $(DAT)/oracles.txt
|
||||
# $(U)makedefs -h
|
||||
#
|
||||
#$(DAT)/bogusmon: $(O)utility.tag $(DAT)/bogusmon.txt
|
||||
# $(U)makedefs -s
|
||||
#
|
||||
#$(DAT)/engrave: $(O)utility.tag $(DAT)/engrave.txt
|
||||
# $(U)makedefs -s
|
||||
#
|
||||
#$(DAT)/epitaph: $(O)utility.tag $(DAT)/epitaph.txt
|
||||
# $(U)makedefs -s
|
||||
#
|
||||
#$(O)sp_lev.tag: $(O)utility.tag \
|
||||
# $(DAT)/bigroom.des $(DAT)/castle.des \
|
||||
# $(DAT)/endgame.des $(DAT)/gehennom.des $(DAT)/knox.des \
|
||||
# $(DAT)/medusa.des $(DAT)/oracle.des $(DAT)/tower.des \
|
||||
# $(DAT)/yendor.des $(DAT)/arch.des $(DAT)/barb.des \
|
||||
# $(DAT)/caveman.des $(DAT)/healer.des $(DAT)/knight.des \
|
||||
# $(DAT)/monk.des $(DAT)/priest.des $(DAT)/ranger.des \
|
||||
# $(DAT)/rogue.des $(DAT)/samurai.des $(DAT)/tourist.des \
|
||||
# $(DAT)/valkyrie.des $(DAT)/wizard.des
|
||||
# cd $(DAT)
|
||||
# $(U)lev_comp bigroom.des
|
||||
# $(U)lev_comp castle.des
|
||||
# $(U)lev_comp endgame.des
|
||||
# $(U)lev_comp gehennom.des
|
||||
# $(U)lev_comp knox.des
|
||||
# $(U)lev_comp mines.des
|
||||
# $(U)lev_comp medusa.des
|
||||
# $(U)lev_comp oracle.des
|
||||
# $(U)lev_comp sokoban.des
|
||||
# $(U)lev_comp tower.des
|
||||
# $(U)lev_comp yendor.des
|
||||
# $(U)lev_comp arch.des
|
||||
# $(U)lev_comp barb.des
|
||||
# $(U)lev_comp caveman.des
|
||||
# $(U)lev_comp healer.des
|
||||
# $(U)lev_comp knight.des
|
||||
# $(U)lev_comp monk.des
|
||||
# $(U)lev_comp priest.des
|
||||
# $(U)lev_comp ranger.des
|
||||
# $(U)lev_comp rogue.des
|
||||
# $(U)lev_comp samurai.des
|
||||
# $(U)lev_comp tourist.des
|
||||
# $(U)lev_comp valkyrie.des
|
||||
# $(U)lev_comp wizard.des
|
||||
# cd $(SRC)
|
||||
# echo sp_levs done > $@
|
||||
#
|
||||
#$(DAT)/dungeon: $(O)utility.tag $(DAT)/dungeon.def
|
||||
# $(U)makedefs -e
|
||||
# cd $(DAT)
|
||||
# $(U)dgn_comp dungeon.pdf
|
||||
# cd $(SRC)
|
||||
$(O)lua.o: $(LUASRC)/lua.c
|
||||
$(O)luac.o: $(LUASRC)/luac.c
|
||||
|
||||
#==========================================
|
||||
# DLB stuff
|
||||
# Lua lib
|
||||
#==========================================
|
||||
|
||||
#note that dir below assumes bin/dir from djgpp distribution
|
||||
#
|
||||
#$(DAT)/nhdat: $(U)dlb_main $(DAT)/data $(DAT)/rumors $(DAT)/dungeon \
|
||||
# $(DAT)/oracles $(DAT)/quest.dat $(O)sp_lev.tag \
|
||||
# $(DAT)/bogusmon $(DAT)/engrave $(DAT)/epitaph $(DAT)/tribute
|
||||
# echo dat done >$(O)dat.tag
|
||||
# cd $(DAT)
|
||||
# copy $(MSYS)/msdoshlp.txt .
|
||||
# @$(LS) data dungeon oracles options quest.dat rumors help hh >dlb.lst
|
||||
# @$(LS) cmdhelp history opthelp wizhelp license msdoshlp.txt >>dlb.lst
|
||||
# @$(LS) bogusmon engrave epitaph tribute >>dlb.lst
|
||||
# $(LS) $(subst /,\,*.lev) >>dlb.lst
|
||||
# $(U)dlb_main cvIf dlb.lst nhdat
|
||||
# cd $(SRC)
|
||||
#
|
||||
#$(U)dlb_main: $(DLBOBJS)
|
||||
# $(HOST_LINK) $(LFLAGS) -o$@ $(DLBOBJS)
|
||||
#
|
||||
#$(HOST_O)dlb_main.o: $(U)dlb_main.c $(INCL)/config.h $(DLB_H)
|
||||
# $(HOST_CC) $(cflags) -o$@ $(U)dlb_main.c
|
||||
$(LUALIB): $(LUALIBOBJS)
|
||||
$(TARGET_AR) rcS $@ $(LUAOBJFILES1)
|
||||
$(TARGET_AR) rcS $@ $(LUAOBJFILES2)
|
||||
$(TARGET_AR) rcS $@ $(LUAOBJFILES3)
|
||||
$(TARGET_AR) rcS $@ $(LUAOBJFILES4)
|
||||
|
||||
#$(LUADLL): $(LUALIBOBJS)
|
||||
# $(TARGET_CC) -shared -Wl,--export-all-symbols \
|
||||
# -Wl,--add-stdcall-alias -o $@ $<
|
||||
|
||||
#==========================================
|
||||
# Housekeeping.
|
||||
@@ -927,24 +813,17 @@ clean:
|
||||
|
||||
spotless: clean
|
||||
|
||||
if [ -f dgn_flex.c ]; then rm dgn_flex.c; fi;
|
||||
if [ -f dgn_lex.c ]; then rm dgn_lex.c; fi;
|
||||
if [ -f $(U)dgn_comp.exe ]; then rm $(U)dgn_comp.exe; fi;
|
||||
if [ -f $(U)recover.exe ]; then rm $(U)recover.exe; fi;
|
||||
if [ -f $(INCL)/vis_tab.h ]; then rm $(INCL)/vis_tab.h; fi;
|
||||
if [ -f $(INCL)/onames.h ]; then rm $(INCL)/onames.h; fi;
|
||||
if [ -f $(INCL)/pm.h ]; then rm $(INCL)/pm.h; fi;
|
||||
if [ -f $(INCL)/date.h ]; then rm $(INCL)/date.h; fi;
|
||||
if [ -f $(INCL)/dgn_comp.h ]; then rm $(INCL)/dgn_comp.h; fi;
|
||||
if [ -f $(INCL)/lev_comp.h ]; then rm $(INCL)/lev_comp.h; fi;
|
||||
# if [ -f $(SRC)/monstr.c ]; then rm $(SRC)/monstr.c; fi;
|
||||
if [ -f $(SRC)/vis_tab.c ]; then rm $(SRC)/vis_tab.c; fi;
|
||||
if [ -f $(SRC)/tile.c ]; then rm $(SRC)/tile.c; fi;
|
||||
if [ -f $(DAT)/options ]; then rm $(DAT)/options; fi;
|
||||
if [ -f $(DAT)/data ]; then rm $(DAT)/data; fi;
|
||||
if [ -f $(DAT)/rumors ]; then rm $(DAT)/rumors; fi;
|
||||
if [ -f $(DAT)/dungeon.pdf ]; then rm $(DAT)/dungeon.pdf; fi;
|
||||
if [ -f $(DAT)/dungeon ]; then rm $(DAT)/dungeon; fi;
|
||||
if [ -f $(DAT)/oracles ]; then rm $(DAT)/oracles; fi;
|
||||
if [ -f $(DAT)/quest.dat ]; then rm $(DAT)/quest.dat; fi;
|
||||
if [ -f $(DAT)/bogusmon ]; then rm $(DAT)/bogusmon; fi;
|
||||
@@ -952,10 +831,11 @@ spotless: clean
|
||||
if [ -f $(DAT)/epitaph ]; then rm $(DAT)/epitaph; fi;
|
||||
if [ -f $(DAT)/dlb.lst ]; then rm $(DAT)/dlb.lst; fi;
|
||||
if [ -f $(TILE_BMP) ]; then rm $(TILE_BMP); fi;
|
||||
if [ -f $(PLANAR_TIB) ]; then rm $(PLANAR_TIB); fi;
|
||||
if [ -f $(OVERVIEW_TIB) ]; then rm $(OVERVIEW_TIB); fi;
|
||||
if [ -f $(WSHR)/monthin.txt ]; then rm $(WSHR)/monthin.txt; fi;
|
||||
if [ -f $(WSHR)/objthin.txt ]; then rm $(WSHR)/objthin.txt; fi;
|
||||
if [ -f $(WSHR)/oththin.txt ]; then rm $(WSHR)/oththin.txt; fi;
|
||||
-rm $(DAT)/*.lev
|
||||
|
||||
#==========================================
|
||||
# Create directory for holding object files
|
||||
@@ -1077,8 +957,8 @@ $(O)wintext.o: ../win/X11/wintext.c $(HACK_H) $(INCL)/winX.h $(INCL)/xwindow.h
|
||||
$(TARGET_CC) $(cflags) -o$@ ../win/X11/wintext.c
|
||||
$(O)winval.o: ../win/X11/winval.c $(HACK_H) $(INCL)/winX.h
|
||||
$(TARGET_CC) $(cflags) -o$@ ../win/X11/winval.c
|
||||
$(O)tile.o: tile.c $(HACK_H)
|
||||
$(HOST_O)tile.o: tile.c $(HACK_H)
|
||||
#$(O)tile.o: tile.c $(HACK_H)
|
||||
#$(HOST_O)tile.o: tile.c $(HACK_H)
|
||||
$(O)gnaskstr.o: ../win/gnome/gnaskstr.c ../win/gnome/gnaskstr.h \
|
||||
../win/gnome/gnmain.h
|
||||
$(TARGET_CC) $(cflags) $(GNOMEINC) -o$@ ../win/gnome/gnaskstr.c
|
||||
@@ -1130,7 +1010,6 @@ $(O)load_img.o: ../win/gem/load_img.c $(INCL)/load_img.h
|
||||
$(TARGET_CC) $(cflags) -o$@ ../win/gem/load_img.c
|
||||
$(O)gr_rect.o: ../win/gem/gr_rect.c $(INCL)/gr_rect.h
|
||||
$(TARGET_CC) $(cflags) -o$@ ../win/gem/gr_rect.c
|
||||
$(O)tile.o: tile.c $(HACK_H)
|
||||
$(O)qt_win.o: ../win/Qt/qt_win.cpp $(HACK_H) $(INCL)/func_tab.h \
|
||||
$(INCL)/dlb.h $(PATCHLEV_H) $(INCL)/tile2x11.h \
|
||||
$(INCL)/qt_win.h $(INCL)/qt_clust.h $(INCL)/qt_kde0.h \
|
||||
|
||||
60
sys/msdos/msdos-cross-compile.sh
Normal file
60
sys/msdos/msdos-cross-compile.sh
Normal file
@@ -0,0 +1,60 @@
|
||||
#!/bin/sh
|
||||
if [ -z "$TRAVIS_BUIILD_DIR" ]; then
|
||||
export DJGPP_TOP=$(pwd)/djgpp
|
||||
else
|
||||
export DJGPP_TOP="$TRAVIS_BUILD_DIR/djgpp"
|
||||
fi
|
||||
export
|
||||
cd util
|
||||
if [ ! -d ../djgpp/i586-pc-msdosdjgpp ]; then
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
#Mac
|
||||
wget --no-hsts https://github.com/andrewwutw/build-djgpp/releases/download/v2.9/djgpp-osx-gcc550.tar.bz2
|
||||
elif [ "$(expr substr $(uname -s) 1 5)" = "Linux" ]; then
|
||||
#Linux
|
||||
wget --no-hsts https://github.com/andrewwutw/build-djgpp/releases/download/v2.9/djgpp-linux64-gcc550.tar.bz2
|
||||
elif [ "$(expr substr $(uname -s) 1 10)" = "MINGW32_NT" ]; then
|
||||
#mingw
|
||||
wget --no-hsts https://github.com/andrewwutw/build-djgpp/releases/download/v2.9/djgpp-mingw-gcc550-standalone.zip
|
||||
fi
|
||||
if [ ! -d djgpp/i586-pc-msdosdjgpp ]; then
|
||||
tar xjf util/djgpp-linux64-gcc550.tar.bz2
|
||||
fi
|
||||
fi
|
||||
cd ../
|
||||
# PDCurses
|
||||
if [ ! -d "../pdcurses" ]; then
|
||||
echo "Getting ../pdcurses from https://github.com/wmcbrine/PDCurses.git"
|
||||
git clone --depth 1 https://github.com/wmcbrine/PDCurses.git ../pdcurses
|
||||
fi
|
||||
cd djgpp
|
||||
# DOS-extender for use with djgpp
|
||||
if [ ! -d cwsdpmi ]; then
|
||||
wget --no-hsts http://sandmann.dotster.com/cwsdpmi/csdpmi7b.zip
|
||||
mkdir -p cwsdpmi
|
||||
cd cwsdpmi
|
||||
unzip ../csdpmi7b.zip
|
||||
cd ../
|
||||
rm csdpmi7b.zip
|
||||
fi
|
||||
cd ../src
|
||||
pwd
|
||||
mkdir -p ../binary
|
||||
cp ../dat/data.base ../dat/data.bas
|
||||
cp ../include/patchlevel.h ../include/patchlev.h
|
||||
cp ../doc/Guidebook.txt ../doc/guidebk.txt
|
||||
cp ../sys/share/posixregex.c ../sys/share/posixreg.c
|
||||
cp ../sys/msdos/Makefile1.cross ../src/Makefile1
|
||||
cp ../sys/msdos/Makefile2.cross ../src/Makefile2
|
||||
make -f Makefile1
|
||||
cat ../include/date.h
|
||||
export GCC_EXEC_PREFIX=$DJGPP_TOP/lib/gcc/
|
||||
export
|
||||
pwd
|
||||
make -f Makefile2
|
||||
unset GCC_EXEC_PREFIX
|
||||
if [ -f $TRAVIS_BUILD_DIR/djgpp/cwsdpmi/bin/cwsdpmi.exe ]; then
|
||||
cp $TRAVIS_BUILD_DIR/djgpp/cwsdpmi/bin/cwsdpmi.exe ../binary/CWSDPMI.EXE;
|
||||
fi
|
||||
ls -l ../binary
|
||||
|
||||
@@ -145,6 +145,12 @@ DEBUGINFO = Y
|
||||
#
|
||||
LUATOP=..\..\lua-5.3.5
|
||||
#
|
||||
#
|
||||
#==============================================================================
|
||||
#
|
||||
#TEST_CROSSCOMPILE=Y
|
||||
#OPTIONS_AT_RUNTIME=Y
|
||||
#
|
||||
#==============================================================================
|
||||
#======================== End of Modification Section =========================
|
||||
#==============================================================================
|
||||
@@ -314,6 +320,28 @@ REGEX = $(O)cppregex.o
|
||||
|
||||
TTYOBJ = $(O)topl.o $(O)getline.o $(O)wintty.o
|
||||
|
||||
!IFDEF TEST_CROSSCOMPILE
|
||||
CROSSDEFINE_TARGET = -DCROSSCOMPILE_TARGET
|
||||
CROSSDEFINE_HOST = -DCROSSCOMPILE_HOST
|
||||
CROSSCOMPILE = -DCROSSCOMPILE
|
||||
CROSSDEFINES = $(CROSSCOMPILE) $(CROSSDEFINE_HOST) $(CROSSDEFINE_TARGET)
|
||||
OPTIONS_AT_RUNTIME=Y
|
||||
!ELSE
|
||||
CROSSDEFINE_TARGET =
|
||||
CROSSDEFINE_HOST =
|
||||
CROSSCOMPILE =
|
||||
CROSSDEFINES =
|
||||
CROSSDEFINES =
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OPTIONS_AT_RUNTIME)" == "Y"
|
||||
MDLIB = $(O)mdlib.o
|
||||
RUNTIMEOPTDEF=-DOPTIONS_AT_RUNTIME
|
||||
!ELSE
|
||||
MDLIB =
|
||||
RUNTIMEOPTDEF=
|
||||
!ENDIF
|
||||
|
||||
!IFNDEF ADD_CURSES
|
||||
CURSESOBJ=
|
||||
!ELSE
|
||||
@@ -330,7 +358,7 @@ OBJS = $(VOBJ01) $(VOBJ02) $(VOBJ03) $(VOBJ04) $(VOBJ05) \
|
||||
$(VOBJ16) $(VOBJ17) $(VOBJ18) $(VOBJ19) $(VOBJ20) \
|
||||
$(VOBJ21) $(VOBJ22) $(VOBJ23) $(VOBJ24) $(VOBJ25) \
|
||||
$(VOBJ26) $(VOBJ27) $(VOBJ28) $(VOBJ29) $(VOBJ30) \
|
||||
$(REGEX) $(CURSESOBJ)
|
||||
$(REGEX) $(CURSESOBJ) $(MDLIB)
|
||||
|
||||
GUIOBJ = $(O)mhaskyn.o $(O)mhdlg.o \
|
||||
$(O)mhfont.o $(O)mhinput.o $(O)mhmain.o $(O)mhmap.o \
|
||||
@@ -608,7 +636,7 @@ CURSESLIB=
|
||||
ccommon= -c -nologo -D"_CONSOLE" -D"_CRT_NONSTDC_NO_DEPRECATE" -D"_CRT_SECURE_NO_DEPRECATE" \
|
||||
-D"_LIB" -D"_SCL_SECURE_NO_DEPRECATE" -D"_VC80_UPGRADE=0x0600" -D"DLB" -D"_MBCS" \
|
||||
-DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -D"NDEBUG" -D"YY_NO_UNISTD_H" \
|
||||
-DHAS_STDINT_H -DHAS_INLINE $(CURSESDEF) \
|
||||
-DHAS_STDINT_H -DHAS_INLINE $(CURSESDEF) $(RUNTIMEOPTDEF) \
|
||||
-EHsc -fp:precise -Gd -GF -GS -Gy \
|
||||
$(CL_RECENT) -WX- -Zc:forScope -Zc:wchar_t -Zi
|
||||
cdebug= -analyze- -D"_DEBUG" -MTd -RTC1 -Od
|
||||
@@ -708,20 +736,20 @@ DLB =
|
||||
#==========================================
|
||||
|
||||
.c{$(OBJ)}.o:
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $<
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
{$(SRC)}.c{$(OBJ)}.o:
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $<
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
#==========================================
|
||||
# Rules for files in sys\share
|
||||
#==========================================
|
||||
|
||||
{$(SSYS)}.c{$(OBJ)}.o:
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $<
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
{$(SSYS)}.cpp{$(OBJ)}.o:
|
||||
@$(cc) $(cflagsBuild) /EHsc -Fo$@ $<
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) /EHsc -Fo$@ $<
|
||||
|
||||
#==========================================
|
||||
# Rules for files in sys\winnt
|
||||
@@ -738,14 +766,14 @@ DLB =
|
||||
#==========================================
|
||||
|
||||
{$(UTIL)}.c{$(OBJ)}.o:
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $<
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
#==========================================
|
||||
# Rules for files in win\share
|
||||
#==========================================
|
||||
|
||||
{$(WSHR)}.c{$(OBJ)}.o:
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $<
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
{$(WSHR)}.h{$(INCL)}.h:
|
||||
@copy $< $@
|
||||
@@ -758,7 +786,7 @@ DLB =
|
||||
#==========================================
|
||||
|
||||
{$(TTY)}.c{$(OBJ)}.o:
|
||||
$(cc) $(cflagsBuild) -Fo$@ $<
|
||||
$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
|
||||
#==========================================
|
||||
@@ -766,14 +794,14 @@ DLB =
|
||||
#==========================================
|
||||
|
||||
{$(MSWIN)}.c{$(OBJ)}.o:
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $<
|
||||
$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
#==========================================
|
||||
# Rules for files in win\curses
|
||||
#==========================================
|
||||
|
||||
{$(WCURSES)}.c{$(OBJ)}.o:
|
||||
@$(cc) -DPDC_NCMOUSE $(PDCINCL) $(cflagsBuild) -Fo$@ $<
|
||||
@$(cc) -DPDC_NCMOUSE $(PDCINCL) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
#{$(WCURSES)}.txt{$(DAT)}.txt:
|
||||
# @copy $< $@
|
||||
@@ -783,20 +811,20 @@ DLB =
|
||||
#==========================================
|
||||
|
||||
{$(PDCURSES_TOP)}.c{$(OBJ)}.o:
|
||||
@$(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $<
|
||||
@$(cc) $(PDCINCL) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
{$(PDCSRC)}.c{$(OBJ)}.o:
|
||||
@$(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $<
|
||||
@$(cc) $(PDCINCL) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
{$(PDCWINCON)}.c{$(OBJ)}.o:
|
||||
@$(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $<
|
||||
@$(cc) $(PDCINCL) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
#==========================================
|
||||
# Rules for LUA files
|
||||
#==========================================
|
||||
|
||||
{$(LUASRC)}.c{$(OBJ)}.o:
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $<
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $<
|
||||
|
||||
#==========================================
|
||||
#=============== TARGETS ==================
|
||||
@@ -1063,7 +1091,7 @@ $(U)nhsizes.exe: $(O)nhsizes.o
|
||||
$(link) $(lflagsBuild) -out:$@ $(O)nhsizes.o $(O)panic.o $(O)alloc.o
|
||||
|
||||
$(O)nhsizes.o: $(CONFIG_H) nhsizes.c
|
||||
@$(cc) $(cflagsBuild) -Fo$@ nhsizes.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ nhsizes.c
|
||||
|
||||
$(U)makedefs.exe: $(MAKEOBJS)
|
||||
@echo Linking $(@:\=/)
|
||||
@@ -1074,7 +1102,8 @@ $(O)makedefs.o: $(CONFIG_H) $(INCL)\monattk.h $(INCL)\monflag.h $(INCL)\objcla
|
||||
$(U)makedefs.c
|
||||
@if not exist $(OBJ)\*.* echo creating directory $(OBJ:\=/)
|
||||
@if not exist $(OBJ)\*.* mkdir $(OBJ)
|
||||
@$(cc) -DENUM_PM $(cflagsBuild) -Fo$@ $(U)makedefs.c
|
||||
$(cc) -DENUM_PM $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $(U)makedefs.c
|
||||
# $(cc) -DENUM_PM $(cflagsBuild) $(CROSSDEFINES) /EP -Fo$@ $(U)makedefs.c >makedefs.c.preprocessed
|
||||
|
||||
#
|
||||
# date.h should be remade every time any of the source or include
|
||||
@@ -1105,7 +1134,7 @@ $(U)uudecode.exe: $(O)uudecode.o
|
||||
@$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(O)uudecode.o
|
||||
|
||||
$(O)uudecode.o: $(SSYS)\uudecode.c
|
||||
@$(cc) $(cflagsBuild) /D_CRT_SECURE_NO_DEPRECATE -Fo$@ $(SSYS)\uudecode.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) /D_CRT_SECURE_NO_DEPRECATE -Fo$@ $(SSYS)\uudecode.c
|
||||
|
||||
$(MSWSYS)\NetHack.ico : $(U)uudecode.exe $(MSWSYS)\nhico.uu
|
||||
chdir $(MSWSYS)
|
||||
@@ -1271,10 +1300,10 @@ $(U)dlb_main.exe: $(DLBOBJ) $(O)dlb.o
|
||||
<<
|
||||
|
||||
$(O)dlb.o: $(O)dlb_main.o $(O)alloc.o $(O)panic.o $(INCL)\dlb.h
|
||||
@$(cc) $(cflagsBuild) /Fo$@ $(SRC)\dlb.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) /Fo$@ $(SRC)\dlb.c
|
||||
|
||||
$(O)dlb_main.o: $(UTIL)\dlb_main.c $(INCL)\config.h $(INCL)\dlb.h
|
||||
@$(cc) $(cflagsBuild) /Fo$@ $(UTIL)\dlb_main.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) /Fo$@ $(UTIL)\dlb_main.c
|
||||
|
||||
$(DAT)\porthelp: $(MSWSYS)\porthelp
|
||||
@copy $(MSWSYS)\porthelp $@ >nul
|
||||
@@ -1320,7 +1349,7 @@ $(U)recover.exe: $(RECOVOBJS)
|
||||
$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(RECOVOBJS)
|
||||
|
||||
$(O)recover.o: $(CONFIG_H) $(U)recover.c $(MSWSYS)\win32api.h
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $(U)recover.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $(U)recover.c
|
||||
|
||||
#==========================================
|
||||
# Tile Mapping
|
||||
@@ -1335,28 +1364,28 @@ $(U)tilemap.exe: $(O)tilemap.o
|
||||
@$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(O)tilemap.o
|
||||
|
||||
$(O)tilemap.o: $(WSHR)\tilemap.c $(HACK_H)
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $(WSHR)\tilemap.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $(WSHR)\tilemap.c
|
||||
|
||||
$(O)tiletx32.o: $(WSHR)\tilemap.c $(HACK_H)
|
||||
@$(cc) $(cflagsBuild) /DTILETEXT /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tilemap.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) /DTILETEXT /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tilemap.c
|
||||
|
||||
$(O)tiletxt.o: $(WSHR)\tilemap.c $(HACK_H)
|
||||
@$(cc) $(cflagsBuild) /DTILETEXT -Fo$@ $(WSHR)\tilemap.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) /DTILETEXT -Fo$@ $(WSHR)\tilemap.c
|
||||
|
||||
$(O)gifread.o: $(WSHR)\gifread.c $(CONFIG_H) $(TILE_H)
|
||||
@$(cc) $(cflagsBuild) -I$(WSHR) -Fo$@ $(WSHR)\gifread.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -I$(WSHR) -Fo$@ $(WSHR)\gifread.c
|
||||
|
||||
$(O)gifrd32.o: $(WSHR)\gifread.c $(CONFIG_H) $(TILE_H)
|
||||
@$(cc) $(cflagsBuild) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\gifread.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\gifread.c
|
||||
|
||||
$(O)ppmwrite.o: $(WSHR)\ppmwrite.c $(CONFIG_H) $(TILE_H)
|
||||
@$(cc) $(cflagsBuild) -I$(WSHR) -Fo$@ $(WSHR)\ppmwrite.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -I$(WSHR) -Fo$@ $(WSHR)\ppmwrite.c
|
||||
|
||||
$(O)tiletext.o: $(WSHR)\tiletext.c $(CONFIG_H) $(TILE_H)
|
||||
@$(cc) $(cflagsBuild) -I$(WSHR) -Fo$@ $(WSHR)\tiletext.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -I$(WSHR) -Fo$@ $(WSHR)\tiletext.c
|
||||
|
||||
$(O)tilete32.o: $(WSHR)\tiletext.c $(CONFIG_H) $(TILE_H)
|
||||
@$(cc) $(cflagsBuild) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tiletext.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tiletext.c
|
||||
|
||||
#==========================================
|
||||
# Optional Tile Utilities
|
||||
@@ -1414,10 +1443,10 @@ $(U)til2bm32.exe: $(O)til2bm32.o $(TEXT_IO32)
|
||||
<<
|
||||
|
||||
$(O)tile2bmp.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
|
||||
@$(cc) $(cflagsBuild) -I$(WSHR) /DPACKED_FILE /Fo$@ $(WSHR)\tile2bmp.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -I$(WSHR) /DPACKED_FILE /Fo$@ $(WSHR)\tile2bmp.c
|
||||
|
||||
$(O)til2bm32.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
|
||||
@$(cc) $(cflagsBuild) -I$(WSHR) /DPACKED_FILE /DTILE_X=32 /DTILE_Y=32 /Fo$@ $(WSHR)\tile2bmp.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -I$(WSHR) /DPACKED_FILE /DTILE_X=32 /DTILE_Y=32 /Fo$@ $(WSHR)\tile2bmp.c
|
||||
|
||||
#===============================================================================
|
||||
# PDCurses
|
||||
@@ -1427,7 +1456,7 @@ $(O)pdcurses.lib : $(PDCLIBOBJS) $(PDCOBJS)
|
||||
lib -nologo /out:$@ $(PDCLIBOBJS) $(PDCOBJS)
|
||||
|
||||
$(O)pdcscrn.o : $(PDCURSES_HEADERS) $(PDCWINCON)\pdcscrn.c $(MSWSYS)\stub-pdcscrn.c
|
||||
$(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $(MSWSYS)\stub-pdcscrn.c
|
||||
$(cc) $(PDCINCL) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $(MSWSYS)\stub-pdcscrn.c
|
||||
|
||||
#===============================================================================
|
||||
# LUA
|
||||
@@ -1448,7 +1477,25 @@ $(O)lua$(LUAVER)-static.lib: $(LUAOBJFILES)
|
||||
$(O)lua.o: $(LUASRC)\lua.c
|
||||
$(O)luac.o: $(LUASRC)\luac.c
|
||||
$(O)lapi.o: $(LUASRC)\lapi.c
|
||||
@$(cc) $(cflagsBuild) -wd4244 -Fo$@ $(LUASRC)\lapi.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -wd4244 -Fo$@ $(LUASRC)\lapi.c
|
||||
|
||||
#===============================================================================
|
||||
# CROSSCOMPILE
|
||||
#===============================================================================
|
||||
|
||||
# Under a cross-compile, some of the values stored statically into
|
||||
# text files cannot be trusted as being representative of the
|
||||
# settings and features used on the build of the target binaries.
|
||||
#
|
||||
# We move some of that stuff into the game run-time by separating
|
||||
# out the functions into src\mdlib.c to get some of the required
|
||||
# functionality at game runtime instead of from a previously written
|
||||
# data file.
|
||||
#
|
||||
|
||||
$(O)mdlib.o: $(SRC)\mdlib.c
|
||||
$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSDEFINE_TARGET) -DMAKEDEFS_MDOBJ -Fo$@ $(SRC)\mdlib.c
|
||||
# $(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSDEFINE_TARGET) -DMAKEDEFS_MDOBJ /EP -Fo$@ $(SRC)\mdlib.c >mdlib.c.preprocessed
|
||||
|
||||
#===============================================================================
|
||||
# Housekeeping
|
||||
@@ -1642,31 +1689,32 @@ $(DAT)\dungeon: $(O)utility.tag $(DAT)\dungeon.def
|
||||
#
|
||||
|
||||
$(O)nttty.o: $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h $(MSWSYS)\nttty.c
|
||||
@$(cc) $(cflagsBuild) -I$(WSHR) -Fo$@ $(MSWSYS)\nttty.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -I$(WSHR) -Fo$@ $(MSWSYS)\nttty.c
|
||||
$(O)winnt.o: $(HACK_H) $(MSWSYS)\win32api.h $(MSWSYS)\winnt.c
|
||||
@$(cc) $(cflagsBuild) -I$(MSWSYS) -I$(MSWIN) -Fo$@ $(MSWSYS)\win10.c
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $(MSWSYS)\winnt.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -I$(MSWSYS) -I$(MSWIN) -Fo$@ $(MSWSYS)\win10.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $(MSWSYS)\winnt.c
|
||||
$(O)ntsound.o: $(HACK_H) $(MSWSYS)\ntsound.c
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $(MSWSYS)\ntsound.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $(MSWSYS)\ntsound.c
|
||||
$(O)windmain.o: $(MSWSYS)\windmain.c $(HACK_H)
|
||||
|
||||
#if you aren't linking in the full gui then
|
||||
#include the following stub for proper linkage.
|
||||
|
||||
$(O)guistub.o: $(HACK_H) $(MSWSYS)\stubs.c
|
||||
@$(cc) $(cflagsBuild) -DGUISTUB -Fo$@ $(MSWSYS)\stubs.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -DGUISTUB -Fo$@ $(MSWSYS)\stubs.c
|
||||
|
||||
#
|
||||
# WIN32 dependencies
|
||||
#
|
||||
|
||||
$(O)NetHackW.o: $(HACK_H) $(MSWIN)\NetHackW.c
|
||||
@$(cc) $(cflagsBuild) -I$(MSWSYS) -I$(MSWIN) -Fo$@ $(MSWIN)\NetHackW.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -I$(MSWSYS) -I$(MSWIN) -Fo$@ $(MSWIN)\NetHackW.c
|
||||
|
||||
#if you aren't linking in the full tty then
|
||||
#include the following stub for proper linkage.
|
||||
|
||||
$(O)ttystub.o: $(HACK_H) $(MSWSYS)\stubs.c
|
||||
@$(cc) $(cflagsBuild) -DTTYSTUB -Fo$@ $(MSWSYS)\stubs.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -DTTYSTUB -Fo$@ $(MSWSYS)\stubs.c
|
||||
|
||||
#
|
||||
#============================================
|
||||
@@ -1675,19 +1723,19 @@ $(O)ttystub.o: $(HACK_H) $(MSWSYS)\stubs.c
|
||||
|
||||
$(O)sfbase.o: $(HACK_H) $(INCL)\sfproto.h $(INCL)\sfprocs.h \
|
||||
$(SRC)\sfbase.c
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $(SRC)\sfbase.c
|
||||
# @$(cc) $(cflagsBuild) -Fo$@ $(SRC)\sfbase.c
|
||||
|
||||
$(O)sfdata.o: $(HACK_H) $(INCL)\sfprocs.h $(SRC)\sfdata.c
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $(SRC)\sfdata.c
|
||||
# @$(cc) $(cflagsBuild) -Fo$@ $(SRC)\sfdata.c
|
||||
|
||||
$(O)sfstruct.o: $(HACK_H) $(SRC)\sfstruct.c
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $(SRC)\sfstruct.c
|
||||
# @$(cc) $(cflagsBuild) -Fo$@ $(SRC)\sfstruct.c
|
||||
|
||||
$(O)sfascii.o: $(HACK_H) $(INCL)\sfprocs.h $(SRC)\sfascii.c
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $(SRC)\sfascii.c
|
||||
# @$(cc) $(cflagsBuild) -Fo$@ $(SRC)\sfascii.c
|
||||
|
||||
$(O)sflendian.o: $(HACK_H) $(INCL)\sfprocs.h $(SRC)\sflendian.c
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $(SRC)\sflendian.c
|
||||
# @$(cc) $(cflagsBuild) -Fo$@ $(SRC)\sflendian.c
|
||||
|
||||
$(SRC)\sfdata.c: $(U)readtags.exe $(U)nethack.tags
|
||||
$(U)readtags.exe
|
||||
@@ -1699,7 +1747,7 @@ $(U)readtags.exe: $(O)readtags.o
|
||||
@$(link) $(lflagsBuild) -out:$@ $(O)readtags.o
|
||||
|
||||
$(O)readtags.o: $(U)readtags.c $(U)nethack.tags $(CONFIG_H) $(PATCHLEVEL_H)
|
||||
@$(cc) $(cflagsBuild) $(TEMPL) -Fo$@ $(U)readtags.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) $(TEMPL) -Fo$@ $(U)readtags.c
|
||||
|
||||
#
|
||||
#tested only with exuberant ctags from http://ctags.sourceforge.net
|
||||
@@ -1763,14 +1811,14 @@ $(U)nethack.tags: $(CTAGDEP)
|
||||
#
|
||||
|
||||
$(O)panic.o: $(U)panic.c $(CONFIG_H)
|
||||
@$(cc) $(cflagsBuild) -Fo$@ $(U)panic.c
|
||||
@$(cc) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ $(U)panic.c
|
||||
|
||||
#
|
||||
# sys/share dependencies
|
||||
#
|
||||
|
||||
(O)cppregex.o: $(O)cppregex.cpp $(HACK_H)
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\cppregex.cpp
|
||||
@$(CC) $(cflagsBuild) $(CROSSDEFINES) -Fo$@ ..\sys\share\cppregex.cpp
|
||||
|
||||
#
|
||||
# curses window port dependencies
|
||||
@@ -1798,126 +1846,126 @@ $(O)curswins.o: $(WCURSES)\curswins.c $(WCURSES)\curswins.h $(INCL)\wincurs.h
|
||||
#
|
||||
|
||||
$(O)tos.o: ..\sys\atari\tos.c $(HACK_H) $(INCL)\tcap.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\sys\atari\tos.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\sys\atari\tos.c
|
||||
$(O)pctty.o: ..\sys\share\pctty.c $(HACK_H)
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\pctty.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\pctty.c
|
||||
$(O)isaac64.o: ..\src\isaac64.c $(HACK_H) $(INCL)\isaac64.h $(INCL)\integer.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\src\isaac64.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\src\isaac64.c
|
||||
$(O)random.o: ..\sys\share\random.c $(HACK_H)
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\random.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\random.c
|
||||
$(O)ioctl.o: ..\sys\share\ioctl.c $(HACK_H) $(INCL)\tcap.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\ioctl.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\ioctl.c
|
||||
$(O)unixtty.o: ..\sys\share\unixtty.c $(HACK_H)
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\unixtty.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\unixtty.c
|
||||
$(O)unixmain.o: ..\sys\unix\unixmain.c $(HACK_H) $(INCL)\dlb.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\sys\unix\unixmain.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\sys\unix\unixmain.c
|
||||
$(O)unixunix.o: ..\sys\unix\unixunix.c $(HACK_H)
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\sys\unix\unixunix.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\sys\unix\unixunix.c
|
||||
$(O)unixres.o: ..\sys\unix\unixres.c $(CONFIG_H)
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\sys\unix\unixres.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\sys\unix\unixres.c
|
||||
$(O)bemain.o: ..\sys\be\bemain.c $(HACK_H) $(INCL)\dlb.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\sys\be\bemain.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\sys\be\bemain.c
|
||||
$(O)getline.o: ..\win\tty\getline.c $(HACK_H) $(INCL)\func_tab.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\getline.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\getline.c
|
||||
$(O)termcap.o: ..\win\tty\termcap.c $(HACK_H) $(INCL)\tcap.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\termcap.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\termcap.c
|
||||
$(O)topl.o: ..\win\tty\topl.c $(HACK_H) $(INCL)\tcap.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\topl.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\topl.c
|
||||
$(O)wintty.o: ..\win\tty\wintty.c $(HACK_H) $(INCL)\dlb.h $(INCL)\tcap.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\wintty.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\tty\wintty.c
|
||||
#$(O)Window.o: ..\win\X11\Window.c $(INCL)\xwindowp.h $(INCL)\xwindow.h \
|
||||
# $(CONFIG_H)
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\Window.c
|
||||
$(O)dialogs.o: ..\win\X11\dialogs.c $(CONFIG_H)
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\dialogs.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\dialogs.c
|
||||
$(O)winX.o: ..\win\X11\winX.c $(HACK_H) $(INCL)\winX.h $(INCL)\dlb.h \
|
||||
..\win\X11\nh72icon ..\win\X11\nh56icon ..\win\X11\nh32icon
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winX.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winX.c
|
||||
$(O)winmap.o: ..\win\X11\winmap.c $(INCL)\xwindow.h $(HACK_H) $(INCL)\dlb.h \
|
||||
$(INCL)\winX.h $(INCL)\tile2x11.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmap.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmap.c
|
||||
$(O)winmenu.o: ..\win\X11\winmenu.c $(HACK_H) $(INCL)\winX.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmenu.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmenu.c
|
||||
$(O)winmesg.o: ..\win\X11\winmesg.c $(INCL)\xwindow.h $(HACK_H) $(INCL)\winX.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmesg.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmesg.c
|
||||
$(O)winmisc.o: ..\win\X11\winmisc.c $(HACK_H) $(INCL)\func_tab.h \
|
||||
$(INCL)\winX.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmisc.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winmisc.c
|
||||
$(O)winstat.o: ..\win\X11\winstat.c $(HACK_H) $(INCL)\winX.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winstat.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winstat.c
|
||||
$(O)wintext.o: ..\win\X11\wintext.c $(HACK_H) $(INCL)\winX.h $(INCL)\xwindow.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\wintext.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\wintext.c
|
||||
$(O)winval.o: ..\win\X11\winval.c $(HACK_H) $(INCL)\winX.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winval.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winval.c
|
||||
$(O)tile.o: $(SRC)\tile.c $(HACK_H)
|
||||
$(O)gnaskstr.o: ..\win\gnome\gnaskstr.c ..\win\gnome\gnaskstr.h \
|
||||
..\win\gnome\gnmain.h
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnaskstr.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnaskstr.c
|
||||
$(O)gnbind.o: ..\win\gnome\gnbind.c ..\win\gnome\gnbind.h ..\win\gnome\gnmain.h \
|
||||
..\win\gnome\gnmenu.h ..\win\gnome\gnaskstr.h \
|
||||
..\win\gnome\gnyesno.h
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnbind.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnbind.c
|
||||
$(O)gnglyph.o: ..\win\gnome\gnglyph.c ..\win\gnome\gnglyph.h $(INCL)\tile2x11.h
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnglyph.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnglyph.c
|
||||
$(O)gnmain.o: ..\win\gnome\gnmain.c ..\win\gnome\gnmain.h ..\win\gnome\gnsignal.h \
|
||||
..\win\gnome\gnbind.h ..\win\gnome\gnopts.h $(HACK_H) \
|
||||
$(INCL)\date.h
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmain.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmain.c
|
||||
$(O)gnmap.o: ..\win\gnome\gnmap.c ..\win\gnome\gnmap.h ..\win\gnome\gnglyph.h \
|
||||
..\win\gnome\gnsignal.h $(HACK_H)
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmap.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmap.c
|
||||
$(O)gnmenu.o: ..\win\gnome\gnmenu.c ..\win\gnome\gnmenu.h ..\win\gnome\gnmain.h \
|
||||
..\win\gnome\gnbind.h $(INCL)\func_tab.h
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmenu.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmenu.c
|
||||
$(O)gnmesg.o: ..\win\gnome\gnmesg.c ..\win\gnome\gnmesg.h ..\win\gnome\gnsignal.h
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmesg.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnmesg.c
|
||||
$(O)gnopts.o: ..\win\gnome\gnopts.c ..\win\gnome\gnopts.h ..\win\gnome\gnglyph.h \
|
||||
..\win\gnome\gnmain.h ..\win\gnome\gnmap.h $(HACK_H)
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnopts.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnopts.c
|
||||
$(O)gnplayer.o: ..\win\gnome\gnplayer.c ..\win\gnome\gnplayer.h \
|
||||
..\win\gnome\gnmain.h $(HACK_H)
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnplayer.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnplayer.c
|
||||
$(O)gnsignal.o: ..\win\gnome\gnsignal.c ..\win\gnome\gnsignal.h \
|
||||
..\win\gnome\gnmain.h
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnsignal.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnsignal.c
|
||||
$(O)gnstatus.o: ..\win\gnome\gnstatus.c ..\win\gnome\gnstatus.h \
|
||||
..\win\gnome\gnsignal.h ..\win\gnome\gn_xpms.h \
|
||||
..\win\gnome\gnomeprv.h
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnstatus.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnstatus.c
|
||||
$(O)gntext.o: ..\win\gnome\gntext.c ..\win\gnome\gntext.h ..\win\gnome\gnmain.h \
|
||||
..\win\gnome\gn_rip.h
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gntext.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gntext.c
|
||||
$(O)gnyesno.o: ..\win\gnome\gnyesno.c ..\win\gnome\gnbind.h ..\win\gnome\gnyesno.h
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnyesno.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnyesno.c
|
||||
$(O)gnworn.o: ..\win\gnome\gnworn.c ..\win\gnome\gnworn.h ..\win\gnome\gnglyph.h \
|
||||
..\win\gnome\gnsignal.h ..\win\gnome\gnomeprv.h
|
||||
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnworn.c
|
||||
# @$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnworn.c
|
||||
$(O)wingem.o: ..\win\gem\wingem.c $(HACK_H) $(INCL)\func_tab.h $(INCL)\dlb.h \
|
||||
$(INCL)\patchlevel.h $(INCL)\wingem.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\gem\wingem.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\gem\wingem.c
|
||||
$(O)wingem1.o: ..\win\gem\wingem1.c $(INCL)\gem_rsc.h $(INCL)\load_img.h \
|
||||
$(INCL)\gr_rect.h $(INCL)\wintype.h $(INCL)\wingem.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\gem\wingem1.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\gem\wingem1.c
|
||||
$(O)load_img.o: ..\win\gem\load_img.c $(INCL)\load_img.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\gem\load_img.c
|
||||
$(O)gr_rect.o: ..\win\gem\gr_rect.c $(INCL)\gr_rect.h
|
||||
@$(CC) $(cflagsBuild) -Fo$@ ..\win\gem\gr_rect.c
|
||||
# @$(CC) $(cflagsBuild) -Fo$@ ..\win\gem\gr_rect.c
|
||||
$(O)tile.o: $(SRC)\tile.c $(HACK_H)
|
||||
$(O)qt_win.o: ..\win\Qt\qt_win.cpp $(HACK_H) $(INCL)\func_tab.h \
|
||||
$(INCL)\dlb.h $(INCL)\patchlevel.h $(INCL)\tile2x11.h \
|
||||
$(INCL)\qt_win.h $(INCL)\qt_clust.h $(INCL)\qt_kde0.h \
|
||||
$(INCL)\qt_xpms.h qt_win.moc qt_kde0.moc qttableview.moc
|
||||
$(CXX) $(CXXFLAGS) -Fo$@ ..\win\Qt\qt_win.cpp
|
||||
# $(CXX) $(CXXFLAGS) -Fo$@ ..\win\Qt\qt_win.cpp
|
||||
$(O)qt_clust.o: ..\win\Qt\qt_clust.cpp $(INCL)\qt_clust.h
|
||||
$(CXX) $(CXXFLAGS) -Fo$@ ..\win\Qt\qt_clust.cpp
|
||||
# $(CXX) $(CXXFLAGS) -Fo$@ ..\win\Qt\qt_clust.cpp
|
||||
$(O)qttableview.o: ..\win\Qt\qttableview.cpp $(INCL)\qttableview.h
|
||||
$(CXX) $(CXXFLAGS) -Fo$@ ..\win\Qt\qttableview.cpp
|
||||
# $(CXX) $(CXXFLAGS) -Fo$@ ..\win\Qt\qttableview.cpp
|
||||
$(O)wc_chainin.o: ..\win\chain\wc_chainin.c $(HACK_H)
|
||||
@$(cc) $(cflagsBuild) -Fo$@ ..\win\chain\wc_chainin.c
|
||||
# @$(cc) $(cflagsBuild) -Fo$@ ..\win\chain\wc_chainin.c
|
||||
$(O)wc_chainout.o: ..\win\chain\wc_chainout.c $(HACK_H)
|
||||
@$(cc) $(cflagsBuild) -Fo$@ ..\win\chain\wc_chainout.c
|
||||
# @$(cc) $(cflagsBuild) -Fo$@ ..\win\chain\wc_chainout.c
|
||||
$(O)wc_trace.o: ..\win\chain\wc_trace.c $(HACK_H) $(INCL)\func_tab.h
|
||||
@$(cc) $(cflagsBuild) -Fo$@ ..\win\chain\wc_trace.c
|
||||
# @$(cc) $(cflagsBuild) -Fo$@ ..\win\chain\wc_trace.c
|
||||
$(O)vis_tab.o: vis_tab.c $(CONFIG_H) $(INCL)\vis_tab.h
|
||||
$(O)allmain.o: allmain.c $(HACK_H)
|
||||
$(O)alloc.o: alloc.c $(CONFIG_H)
|
||||
@@ -2023,11 +2071,11 @@ $(O)uhitm.o: uhitm.c $(HACK_H)
|
||||
$(O)vault.o: vault.c $(HACK_H)
|
||||
$(O)version.o: version.c $(HACK_H) $(INCL)\dlb.h $(INCL)\date.h \
|
||||
$(INCL)\patchlevel.h
|
||||
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSDEFINE_TARGET) -Fo$@ version.c
|
||||
$(O)vision.o: vision.c $(HACK_H) $(INCL)\vis_tab.h
|
||||
$(O)weapon.o: weapon.c $(HACK_H)
|
||||
$(O)were.o: were.c $(HACK_H)
|
||||
$(O)wield.o: wield.c $(HACK_H)
|
||||
$(O)windmain.o: $(MSWSYS)\windmain.c $(HACK_H)
|
||||
#$(O)windows.o: windows.c $(HACK_H) $(INCL)\wingem.h $(INCL)\winGnome.h
|
||||
$(O)wizard.o: wizard.c $(HACK_H) $(INCL)\qtext.h
|
||||
$(O)worm.o: worm.c $(HACK_H) $(INCL)\lev.h
|
||||
|
||||
642
util/makedefs.c
642
util/makedefs.c
@@ -53,7 +53,7 @@
|
||||
#endif
|
||||
|
||||
#if defined(UNIX) && !defined(LINT) && !defined(GCC_WARN)
|
||||
static const char SCCS_Id[] UNUSED = "@(#)makedefs.c\t3.6\t2019/05/07";
|
||||
static const char SCCS_Id[] UNUSED = "@(#)makedefs.c\t3.7\t2019/11/19";
|
||||
#endif
|
||||
|
||||
/* names of files to be generated */
|
||||
@@ -156,7 +156,6 @@ void FDECL(do_makedefs, (char *));
|
||||
void NDECL(do_objs);
|
||||
void NDECL(do_data);
|
||||
void NDECL(do_dungeon);
|
||||
void NDECL(do_date);
|
||||
void NDECL(do_options);
|
||||
void NDECL(do_monstr);
|
||||
void NDECL(do_permonst);
|
||||
@@ -164,6 +163,7 @@ void NDECL(do_questtxt);
|
||||
void NDECL(do_rumors);
|
||||
void NDECL(do_oracles);
|
||||
void NDECL(do_vision);
|
||||
void NDECL(do_date);
|
||||
|
||||
extern void NDECL(monst_globals_init); /* monst.c */
|
||||
extern void NDECL(objects_globals_init); /* objects.c */
|
||||
@@ -172,22 +172,13 @@ static char *FDECL(name_file, (const char *, const char *));
|
||||
static void FDECL(delete_file, (const char *template, const char *));
|
||||
static FILE *FDECL(getfp, (const char *, const char *, const char *));
|
||||
static void FDECL(do_ext_makedefs, (int, char **));
|
||||
|
||||
static void NDECL(make_version);
|
||||
static char *FDECL(version_string, (char *, const char *));
|
||||
static char *FDECL(version_id_string, (char *, const char *));
|
||||
static char *FDECL(bannerc_string, (char *, const char *));
|
||||
static char *FDECL(xcrypt, (const char *));
|
||||
static unsigned long FDECL(read_rumors_file,
|
||||
(const char *, int *, long *, unsigned long));
|
||||
static boolean FDECL(get_gitinfo, (char *, char *));
|
||||
static void FDECL(do_rnd_access_file, (const char *));
|
||||
static boolean FDECL(d_filter, (char *));
|
||||
static boolean FDECL(h_filter, (char *));
|
||||
static void NDECL(build_savebones_compat_string);
|
||||
static void NDECL(windowing_sanity);
|
||||
static void FDECL(opt_out_words, (char *, int *));
|
||||
|
||||
static boolean FDECL(qt_comment, (char *));
|
||||
static boolean FDECL(qt_control, (char *));
|
||||
static int FDECL(get_hdr, (char *));
|
||||
@@ -211,8 +202,8 @@ static int FDECL(clear_path, (int, int, int, int));
|
||||
static char *FDECL(fgetline, (FILE*));
|
||||
static char *FDECL(tmpdup, (const char *));
|
||||
static char *FDECL(limit, (char *, int));
|
||||
static char *FDECL(eos, (char *));
|
||||
static int FDECL(case_insensitive_comp, (const char *, const char *));
|
||||
static void NDECL(windowing_sanity);
|
||||
static boolean FDECL(get_gitinfo, (char *, char *));
|
||||
|
||||
/* input, output, tmp */
|
||||
static FILE *ifp, *ofp, *tfp;
|
||||
@@ -228,6 +219,22 @@ static boolean use_enum =
|
||||
extern unsigned _stklen = STKSIZ;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Some of the routines in this source file were moved into .../src/mdlib
|
||||
* to facilitate the use of a cross-compiler generation of some of the
|
||||
* information for the target environment during the game compile portion
|
||||
* under the cross-compiler and/or at runtime in some cases.
|
||||
*/
|
||||
/* These actually reside in src/mdlib.c */
|
||||
static int FDECL(case_insensitive_comp, (const char *, const char *));
|
||||
static void NDECL(make_version);
|
||||
static char *FDECL(version_id_string, (char *, const char *));
|
||||
static char *FDECL(version_string, (char *, const char *));
|
||||
static char *FDECL(eos, (char *));
|
||||
/* REPRODUCIBLE_BUILD will change this to TRUE */
|
||||
static boolean date_via_env = FALSE;
|
||||
#include "../src/mdlib.c"
|
||||
|
||||
#ifdef MACsansMPWTOOL
|
||||
int
|
||||
main(void)
|
||||
@@ -295,7 +302,6 @@ char *argv[];
|
||||
/*NOTREACHED*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void
|
||||
@@ -1069,180 +1075,6 @@ rumors_failure:
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Use this to explicitly mask out features during version checks.
|
||||
*
|
||||
* ZEROCOMP, RLECOMP, and ZLIB_COMP describe compression features
|
||||
* that the port/plaform which wrote the savefile was capable of
|
||||
* dealing with. Don't reject a savefile just because the port
|
||||
* reading the savefile doesn't match on all/some of them.
|
||||
* The actual compression features used to produce the savefile are
|
||||
* recorded in the savefile_info structure immediately following the
|
||||
* version_info, and that is what needs to be checked against the
|
||||
* feature set of the port that is reading the savefile back in.
|
||||
* That check is done in src/restore.c now.
|
||||
*
|
||||
*/
|
||||
#define IGNORED_FEATURES \
|
||||
(0L | (1L << 19) /* SCORE_ON_BOTL */ \
|
||||
| (1L << 27) /* ZEROCOMP */ \
|
||||
| (1L << 28) /* RLECOMP */ \
|
||||
)
|
||||
|
||||
static void
|
||||
make_version()
|
||||
{
|
||||
register int i;
|
||||
|
||||
/*
|
||||
* integer version number
|
||||
*/
|
||||
version.incarnation = ((unsigned long) VERSION_MAJOR << 24)
|
||||
| ((unsigned long) VERSION_MINOR << 16)
|
||||
| ((unsigned long) PATCHLEVEL << 8)
|
||||
| ((unsigned long) EDITLEVEL);
|
||||
/*
|
||||
* encoded feature list
|
||||
* Note: if any of these magic numbers are changed or reassigned,
|
||||
* EDITLEVEL in patchlevel.h should be incremented at the same time.
|
||||
* The actual values have no special meaning, and the category
|
||||
* groupings are just for convenience.
|
||||
*/
|
||||
version.feature_set = (unsigned long) (0L
|
||||
/* levels and/or topology (0..4) */
|
||||
/* monsters (5..9) */
|
||||
#ifdef MAIL_STRUCTURES
|
||||
| (1L << 6)
|
||||
#endif
|
||||
/* objects (10..14) */
|
||||
/* flag bits and/or other global variables (15..26) */
|
||||
#ifdef TEXTCOLOR
|
||||
| (1L << 17)
|
||||
#endif
|
||||
#ifdef INSURANCE
|
||||
| (1L << 18)
|
||||
#endif
|
||||
#ifdef SCORE_ON_BOTL
|
||||
| (1L << 19)
|
||||
#endif
|
||||
/* data format (27..31)
|
||||
* External compression methods such as COMPRESS and ZLIB_COMP
|
||||
* do not affect the contents and are thus excluded from here */
|
||||
#ifdef ZEROCOMP
|
||||
| (1L << 27)
|
||||
#endif
|
||||
#ifdef RLECOMP
|
||||
| (1L << 28)
|
||||
#endif
|
||||
);
|
||||
/*
|
||||
* Value used for object & monster sanity check.
|
||||
* (NROFARTIFACTS<<24) | (NUM_OBJECTS<<12) | (NUMMONS<<0)
|
||||
*/
|
||||
for (i = 1; artifact_names[i]; i++)
|
||||
continue;
|
||||
version.entity_count = (unsigned long) (i - 1);
|
||||
for (i = 1; objects[i].oc_class != ILLOBJ_CLASS; i++)
|
||||
continue;
|
||||
version.entity_count = (version.entity_count << 12) | (unsigned long) i;
|
||||
for (i = 0; mons[i].mlet; i++)
|
||||
continue;
|
||||
version.entity_count = (version.entity_count << 12) | (unsigned long) i;
|
||||
/*
|
||||
* Value used for compiler (word size/field alignment/padding) check.
|
||||
*/
|
||||
version.struct_sizes1 =
|
||||
(((unsigned long) sizeof(struct context_info) << 24)
|
||||
| ((unsigned long) sizeof(struct obj) << 17)
|
||||
| ((unsigned long) sizeof(struct monst) << 10)
|
||||
| ((unsigned long) sizeof(struct you)));
|
||||
version.struct_sizes2 = (((unsigned long) sizeof(struct flag) << 10) |
|
||||
/* free bits in here */
|
||||
#ifdef SYSFLAGS
|
||||
((unsigned long) sizeof(struct sysflag)));
|
||||
#else
|
||||
((unsigned long) 0L));
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
/* REPRODUCIBLE_BUILD will change this to TRUE */
|
||||
static boolean date_via_env = FALSE;
|
||||
|
||||
static char *
|
||||
version_string(outbuf, delim)
|
||||
char *outbuf;
|
||||
const char *delim;
|
||||
{
|
||||
Sprintf(outbuf, "%d%s%d%s%d", VERSION_MAJOR, delim, VERSION_MINOR, delim,
|
||||
PATCHLEVEL);
|
||||
#if (NH_DEVEL_STATUS != NH_STATUS_RELEASED)
|
||||
Sprintf(eos(outbuf), "-%d", EDITLEVEL);
|
||||
#endif
|
||||
return outbuf;
|
||||
}
|
||||
|
||||
static char *
|
||||
version_id_string(outbuf, build_date)
|
||||
char *outbuf;
|
||||
const char *build_date;
|
||||
{
|
||||
char subbuf[64], versbuf[64];
|
||||
char betabuf[64];
|
||||
|
||||
#if (NH_DEVEL_STATUS != NH_STATUS_RELEASED)
|
||||
#if (NH_DEVEL_STATUS == NH_STATUS_BETA)
|
||||
Strcpy(betabuf, " Beta");
|
||||
#else
|
||||
Strcpy(betabuf, " Work-in-progress");
|
||||
#endif
|
||||
#else
|
||||
betabuf[0] = '\0';
|
||||
#endif
|
||||
|
||||
subbuf[0] = '\0';
|
||||
#ifdef PORT_SUB_ID
|
||||
subbuf[0] = ' ';
|
||||
Strcpy(&subbuf[1], PORT_SUB_ID);
|
||||
#endif
|
||||
|
||||
Sprintf(outbuf, "%s NetHack%s Version %s%s - last %s %s.", PORT_ID,
|
||||
subbuf, version_string(versbuf, "."), betabuf,
|
||||
date_via_env ? "revision" : "build", build_date);
|
||||
return outbuf;
|
||||
}
|
||||
|
||||
static char *
|
||||
bannerc_string(outbuf, build_date)
|
||||
char *outbuf;
|
||||
const char *build_date;
|
||||
{
|
||||
char subbuf[64], versbuf[64];
|
||||
|
||||
subbuf[0] = '\0';
|
||||
#ifdef PORT_SUB_ID
|
||||
subbuf[0] = ' ';
|
||||
Strcpy(&subbuf[1], PORT_SUB_ID);
|
||||
#endif
|
||||
#if (NH_DEVEL_STATUS != NH_STATUS_RELEASED)
|
||||
#if (NH_DEVEL_STATUS == NH_STATUS_BETA)
|
||||
Strcat(subbuf, " Beta");
|
||||
#else
|
||||
Strcat(subbuf, " Work-in-progress");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Sprintf(outbuf, " Version %s %s%s, %s %s.",
|
||||
version_string(versbuf, "."), PORT_ID, subbuf,
|
||||
date_via_env ? "revised" : "built", &build_date[4]);
|
||||
#if 0
|
||||
Sprintf(outbuf, "%s NetHack%s %s Copyright 1985-%s (built %s)",
|
||||
PORT_ID, subbuf, version_string(versbuf,"."), RELEASE_YEAR,
|
||||
&build_date[4]);
|
||||
#endif
|
||||
return outbuf;
|
||||
}
|
||||
|
||||
void
|
||||
do_date()
|
||||
{
|
||||
@@ -1254,6 +1086,13 @@ do_date()
|
||||
char githash[BUFSZ], gitbranch[BUFSZ];
|
||||
char *c, cbuf[60], buf[BUFSZ];
|
||||
const char *ul_sfx;
|
||||
#if defined(CROSSCOMPILE) && defined(CROSSCOMPILE_HOST)
|
||||
int steps = 0;
|
||||
const char ind[] = " ";
|
||||
const char *xpref = "HOST_";
|
||||
#else
|
||||
const char *xpref = (const char *) 0;
|
||||
#endif /* CROSSCOMPILE && CROSSCOMPILE_HOST */
|
||||
|
||||
/* before creating date.h, make sure that xxx_GRAPHICS and
|
||||
DEFAULT_WINDOW_SYS have been set up in a viable fashion */
|
||||
@@ -1345,7 +1184,7 @@ do_date()
|
||||
#else
|
||||
/* ordinary build: use current date+time */
|
||||
Strcpy(cbuf, ctime(&clocktim));
|
||||
#endif
|
||||
#endif /* REPRODUCIBLE_BUILD */
|
||||
|
||||
if ((c = index(cbuf, '\n')) != 0)
|
||||
*c = '\0'; /* strip off the '\n' */
|
||||
@@ -1354,6 +1193,20 @@ do_date()
|
||||
#else
|
||||
ul_sfx = "L";
|
||||
#endif
|
||||
|
||||
#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_HOST)
|
||||
Fprintf(ofp, "\n#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_HOST)\n");
|
||||
#if 0
|
||||
Fprintf(ofp, "/* On a CROSSCOMPILE build, NetHack is built in two steps:\n");
|
||||
Fprintf(ofp, " *%s%d. %s\n",
|
||||
ind, ++steps, "Build makedefs and its prerequisites, and");
|
||||
Fprintf(ofp, " *%s %s\n",
|
||||
ind, "execute makedefs to generate date.h, onames.h, and pm.h.");
|
||||
Fprintf(ofp, " *%s%d. %s\n *%s %s\n */\n\n", ind, ++steps,
|
||||
"Build the rest of NetHack using the cross-compiler",
|
||||
ind, "to generate the game code for target platform.");
|
||||
#endif
|
||||
#endif /* CROSSCOMPILE || CROSSCOMPILE_HOST */
|
||||
if (date_via_env)
|
||||
Fprintf(ofp, "#define SOURCE_DATE_EPOCH (%lu%s) /* via getenv() */\n",
|
||||
(unsigned long) clocktim, ul_sfx);
|
||||
@@ -1368,9 +1221,9 @@ do_date()
|
||||
ul_sfx);
|
||||
Fprintf(ofp, "#define VERSION_FEATURES 0x%08lx%s\n", version.feature_set,
|
||||
ul_sfx);
|
||||
#ifdef IGNORED_FEATURES
|
||||
#ifdef MD_IGNORED_FEATURES
|
||||
Fprintf(ofp, "#define IGNORED_FEATURES 0x%08lx%s\n",
|
||||
(unsigned long) IGNORED_FEATURES, ul_sfx);
|
||||
(unsigned long) MD_IGNORED_FEATURES, ul_sfx);
|
||||
#endif
|
||||
Fprintf(ofp, "#define VERSION_SANITY1 0x%08lx%s\n", version.entity_count,
|
||||
ul_sfx);
|
||||
@@ -1384,11 +1237,19 @@ do_date()
|
||||
version_id_string(buf, cbuf));
|
||||
Fprintf(ofp, "#define COPYRIGHT_BANNER_C \\\n \"%s\"\n",
|
||||
bannerc_string(buf, cbuf));
|
||||
Fprintf(ofp, "\n");
|
||||
if (get_gitinfo(githash, gitbranch)) {
|
||||
Fprintf(ofp, "#define NETHACK_GIT_SHA \"%s\"\n", githash);
|
||||
Fprintf(ofp, "#define NETHACK_GIT_BRANCH \"%s\"\n", gitbranch);
|
||||
}
|
||||
if (xpref && get_gitinfo(githash, gitbranch)) {
|
||||
Fprintf(ofp, "#else /* !CROSSCOMPILE || CROSSCOMPILE_HOST */\n");
|
||||
Fprintf(ofp, "#define NETHACK_%sGIT_SHA \"%s\"\n",
|
||||
xpref, githash);
|
||||
Fprintf(ofp, "#define NETHACK_%sGIT_BRANCH \"%s\"\n",
|
||||
xpref, gitbranch);
|
||||
}
|
||||
Fprintf(ofp, "#endif /* !CROSSCOMPILE || CROSSCOMPILE_HOST */\n");
|
||||
Fprintf(ofp, "\n");
|
||||
#ifdef AMIGA
|
||||
{
|
||||
struct tm *tm = localtime((time_t *) &clocktim);
|
||||
@@ -1462,281 +1323,28 @@ char *githash, *gitbranch;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int
|
||||
case_insensitive_comp(s1, s2)
|
||||
const char *s1;
|
||||
const char *s2;
|
||||
void
|
||||
do_options()
|
||||
{
|
||||
uchar u1, u2;
|
||||
const char *optline;
|
||||
int infocontext = 0;
|
||||
|
||||
for (;; s1++, s2++) {
|
||||
u1 = (uchar) *s1;
|
||||
if (isupper(u1))
|
||||
u1 = tolower(u1);
|
||||
u2 = (uchar) *s2;
|
||||
if (isupper(u2))
|
||||
u2 = tolower(u2);
|
||||
if (u1 == '\0' || u1 != u2)
|
||||
break;
|
||||
windowing_sanity();
|
||||
filename[0] = '\0';
|
||||
#ifdef FILE_PREFIX
|
||||
Strcat(filename, file_prefix);
|
||||
#endif
|
||||
Sprintf(eos(filename), DATA_TEMPLATE, OPTIONS_FILE);
|
||||
if (!(ofp = fopen(filename, WRTMODE))) {
|
||||
perror(filename);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
return u1 - u2;
|
||||
while ((optline = do_runtime_info(&infocontext)))
|
||||
Fprintf(ofp, "%s\n", optline);
|
||||
Fclose(ofp);
|
||||
return;
|
||||
}
|
||||
|
||||
static char save_bones_compat_buf[BUFSZ];
|
||||
|
||||
static void
|
||||
build_savebones_compat_string()
|
||||
{
|
||||
#ifdef VERSION_COMPATIBILITY
|
||||
unsigned long uver = VERSION_COMPATIBILITY;
|
||||
#endif
|
||||
Strcpy(save_bones_compat_buf,
|
||||
"save and bones files accepted from version");
|
||||
#ifdef VERSION_COMPATIBILITY
|
||||
Sprintf(eos(save_bones_compat_buf), "s %lu.%lu.%lu through %d.%d.%d",
|
||||
((uver & 0xFF000000L) >> 24), ((uver & 0x00FF0000L) >> 16),
|
||||
((uver & 0x0000FF00L) >> 8), VERSION_MAJOR, VERSION_MINOR,
|
||||
PATCHLEVEL);
|
||||
#else
|
||||
Sprintf(eos(save_bones_compat_buf), " %d.%d.%d only", VERSION_MAJOR,
|
||||
VERSION_MINOR, PATCHLEVEL);
|
||||
#endif
|
||||
}
|
||||
|
||||
static const char *build_opts[] = {
|
||||
#ifdef AMIGA_WBENCH
|
||||
"Amiga WorkBench support",
|
||||
#endif
|
||||
#ifdef ANSI_DEFAULT
|
||||
"ANSI default terminal",
|
||||
#endif
|
||||
#ifdef TEXTCOLOR
|
||||
"color",
|
||||
#endif
|
||||
#ifdef TTY_GRAPHICS
|
||||
#ifdef TTY_TILES_ESCCODES
|
||||
"console escape codes for tile hinting",
|
||||
#endif
|
||||
#endif
|
||||
#ifdef COM_COMPL
|
||||
"command line completion",
|
||||
#endif
|
||||
#ifdef LIFE
|
||||
"Conway's Game of Life",
|
||||
#endif
|
||||
#ifdef COMPRESS
|
||||
"data file compression",
|
||||
#endif
|
||||
#ifdef ZLIB_COMP
|
||||
"ZLIB data file compression",
|
||||
#endif
|
||||
#ifdef DLB
|
||||
#ifndef VERSION_IN_DLB_FILENAME
|
||||
"data librarian",
|
||||
#else
|
||||
"data librarian with a version-dependent name",
|
||||
#endif
|
||||
#endif
|
||||
#ifdef DUMPLOG
|
||||
"end-of-game dumplogs",
|
||||
#endif
|
||||
#ifdef HOLD_LOCKFILE_OPEN
|
||||
"exclusive lock on level 0 file",
|
||||
#endif
|
||||
#if defined(MSGHANDLER) && (defined(POSIX_TYPES) || defined(__GNUC__))
|
||||
"external program as a message handler",
|
||||
#endif
|
||||
#ifdef MFLOPPY
|
||||
"floppy drive support",
|
||||
#endif
|
||||
#ifdef INSURANCE
|
||||
"insurance files for recovering from crashes",
|
||||
#endif
|
||||
#ifdef LOGFILE
|
||||
"log file",
|
||||
#endif
|
||||
#ifdef XLOGFILE
|
||||
"extended log file",
|
||||
#endif
|
||||
#ifdef PANICLOG
|
||||
"errors and warnings log file",
|
||||
#endif
|
||||
#ifdef MAIL_STRUCTURES
|
||||
"mail daemon",
|
||||
#endif
|
||||
#ifdef GNUDOS
|
||||
"MSDOS protected mode",
|
||||
#endif
|
||||
#ifdef NEWS
|
||||
"news file",
|
||||
#endif
|
||||
#ifdef OVERLAY
|
||||
#ifdef MOVERLAY
|
||||
"MOVE overlays",
|
||||
#else
|
||||
#ifdef VROOMM
|
||||
"VROOMM overlays",
|
||||
#else
|
||||
"overlays",
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
/* pattern matching method will be substituted by nethack at run time */
|
||||
"pattern matching via :PATMATCH:",
|
||||
#ifdef USE_ISAAC64
|
||||
"pseudo random numbers generated by ISAAC64",
|
||||
#ifdef DEV_RANDOM
|
||||
#ifdef NHSTDC
|
||||
/* include which specific one */
|
||||
"strong PRNG seed available from " DEV_RANDOM,
|
||||
#else
|
||||
"strong PRNG seed available from DEV_RANDOM",
|
||||
#endif
|
||||
#else
|
||||
#ifdef WIN32
|
||||
"strong PRNG seed available from CNG BCryptGenRandom()",
|
||||
#endif
|
||||
#endif /* DEV_RANDOM */
|
||||
#else /* ISAAC64 */
|
||||
#ifdef RANDOM
|
||||
"pseudo random numbers generated by random()",
|
||||
#else
|
||||
"pseudo random numbers generated by C rand()",
|
||||
#endif
|
||||
#endif
|
||||
#ifdef SELECTSAVED
|
||||
"restore saved games via menu",
|
||||
#endif
|
||||
#ifdef SCORE_ON_BOTL
|
||||
"score on status line",
|
||||
#endif
|
||||
#ifdef CLIPPING
|
||||
"screen clipping",
|
||||
#endif
|
||||
#ifdef NO_TERMS
|
||||
#ifdef MAC
|
||||
"screen control via mactty",
|
||||
#endif
|
||||
#ifdef SCREEN_BIOS
|
||||
"screen control via BIOS",
|
||||
#endif
|
||||
#ifdef SCREEN_DJGPPFAST
|
||||
"screen control via DJGPP fast",
|
||||
#endif
|
||||
#ifdef SCREEN_VGA
|
||||
"screen control via VGA graphics",
|
||||
#endif
|
||||
#ifdef WIN32CON
|
||||
"screen control via WIN32 console I/O",
|
||||
#endif
|
||||
#endif
|
||||
#ifdef SHELL
|
||||
"shell command",
|
||||
#endif
|
||||
"traditional status display",
|
||||
#ifdef STATUS_HILITES
|
||||
"status via windowport with highlighting",
|
||||
#else
|
||||
"status via windowport without highlighting",
|
||||
#endif
|
||||
#ifdef SUSPEND
|
||||
"suspend command",
|
||||
#endif
|
||||
#ifdef TTY_GRAPHICS
|
||||
#ifdef TERMINFO
|
||||
"terminal info library",
|
||||
#else
|
||||
#if defined(TERMLIB) || (!defined(MICRO) && !defined(WIN32))
|
||||
"terminal capability library",
|
||||
#endif
|
||||
#endif
|
||||
#endif /*TTY_GRAPHICS*/
|
||||
/*#ifdef X11_GRAPHICS*/
|
||||
#ifdef USE_XPM
|
||||
"tiles file in XPM format",
|
||||
#endif
|
||||
/*#endif*/
|
||||
/*#if (defined(QT_GRAPHICS) || defined(X11_GRAPHICS)*/
|
||||
#ifdef GRAPHIC_TOMBSTONE
|
||||
"graphical RIP screen",
|
||||
#endif
|
||||
/*#endif*/
|
||||
#ifdef TIMED_DELAY
|
||||
"timed wait for display effects",
|
||||
#endif
|
||||
#ifdef USER_SOUNDS
|
||||
"user sounds",
|
||||
#endif
|
||||
#ifdef PREFIXES_IN_USE
|
||||
"variable playground",
|
||||
#endif
|
||||
#ifdef VISION_TABLES
|
||||
"vision tables",
|
||||
#endif
|
||||
#ifdef ZEROCOMP
|
||||
"zero-compressed save files",
|
||||
#endif
|
||||
#ifdef RLECOMP
|
||||
"run-length compression of map in save files",
|
||||
#endif
|
||||
#ifdef SYSCF
|
||||
"system configuration at run-time",
|
||||
#endif
|
||||
save_bones_compat_buf,
|
||||
"and basic NetHack features"
|
||||
};
|
||||
|
||||
struct win_info {
|
||||
const char *id, /* DEFAULT_WINDOW_SYS string */
|
||||
*name; /* description, often same as id */
|
||||
};
|
||||
static struct win_info window_opts[] = {
|
||||
#ifdef TTY_GRAPHICS
|
||||
{ "tty",
|
||||
/* testing 'USE_TILES' here would bring confusion because it could
|
||||
apply to another interface such as X11, so check MSDOS explicitly
|
||||
instead; even checking TTY_TILES_ESCCODES would probably be
|
||||
confusing to most users (and it will already be listed separately
|
||||
in the compiled options section so users aware of it can find it) */
|
||||
#ifdef MSDOS
|
||||
"traditional text with optional 'tiles' graphics"
|
||||
#else
|
||||
/* assume that one or more of IBMgraphics, DECgraphics, or MACgraphics
|
||||
can be enabled; we can't tell from here whether that is accurate */
|
||||
"traditional text with optional line-drawing"
|
||||
#endif
|
||||
},
|
||||
#endif
|
||||
#ifdef CURSES_GRAPHICS
|
||||
{ "curses", "terminal-based graphics" },
|
||||
#endif
|
||||
#ifdef X11_GRAPHICS
|
||||
{ "X11", "X11" },
|
||||
#endif
|
||||
#ifdef QT_GRAPHICS /* too vague; there are multiple incompatible versions */
|
||||
{ "Qt", "Qt" },
|
||||
#endif
|
||||
#ifdef GNOME_GRAPHICS /* unmaintained/defunct */
|
||||
{ "Gnome", "Gnome" },
|
||||
#endif
|
||||
#ifdef MAC /* defunct OS 9 interface */
|
||||
{ "mac", "Mac" },
|
||||
#endif
|
||||
#ifdef AMIGA_INTUITION /* unmaintained/defunct */
|
||||
{ "amii", "Amiga Intuition" },
|
||||
#endif
|
||||
#ifdef GEM_GRAPHICS /* defunct Atari interface */
|
||||
{ "Gem", "Gem" },
|
||||
#endif
|
||||
#ifdef MSWIN_GRAPHICS /* win32 */
|
||||
{ "mswin", "mswin" },
|
||||
#endif
|
||||
#ifdef BEOS_GRAPHICS /* unmaintained/defunct */
|
||||
{ "BeOS", "BeOS InterfaceKit" },
|
||||
#endif
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
static void
|
||||
windowing_sanity()
|
||||
{
|
||||
@@ -1776,107 +1384,6 @@ windowing_sanity()
|
||||
#endif /*DEFAULT_WINDOW_SYS*/
|
||||
}
|
||||
|
||||
static const char opt_indent[] = " ";
|
||||
|
||||
static void
|
||||
opt_out_words(str, length_p)
|
||||
char *str; /* input, but modified during processing */
|
||||
int *length_p; /* in/out */
|
||||
{
|
||||
char *word;
|
||||
|
||||
while (*str) {
|
||||
word = index(str, ' ');
|
||||
#if 0
|
||||
/* treat " (" as unbreakable space */
|
||||
if (word && *(word + 1) == '(')
|
||||
word = index(word + 1, ' ');
|
||||
#endif
|
||||
if (word)
|
||||
*word = '\0';
|
||||
if (*length_p + (int) strlen(str) > COLNO - 5)
|
||||
Fprintf(ofp, "\n%s", opt_indent),
|
||||
*length_p = (int) strlen(opt_indent);
|
||||
else
|
||||
Fprintf(ofp, " "), (*length_p)++;
|
||||
Fprintf(ofp, "%s", str), *length_p += (int) strlen(str);
|
||||
str += strlen(str) + (word ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
do_options()
|
||||
{
|
||||
char buf[BUFSZ];
|
||||
int i, length, winsyscnt;
|
||||
|
||||
windowing_sanity();
|
||||
|
||||
filename[0] = '\0';
|
||||
#ifdef FILE_PREFIX
|
||||
Strcat(filename, file_prefix);
|
||||
#endif
|
||||
Sprintf(eos(filename), DATA_TEMPLATE, OPTIONS_FILE);
|
||||
if (!(ofp = fopen(filename, WRTMODE))) {
|
||||
perror(filename);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
build_savebones_compat_string();
|
||||
Fprintf(ofp, "\n%sNetHack version %d.%d.%d%s\n",
|
||||
opt_indent,
|
||||
VERSION_MAJOR, VERSION_MINOR, PATCHLEVEL,
|
||||
#if (NH_DEVEL_STATUS != NH_STATUS_RELEASED)
|
||||
#if (NH_DEVEL_STATUS == NH_STATUS_BETA)
|
||||
" [beta]"
|
||||
#else
|
||||
" [work-in-progress]"
|
||||
#endif
|
||||
#else
|
||||
""
|
||||
#endif
|
||||
);
|
||||
|
||||
Fprintf(ofp, "\nOptions compiled into this edition:\n");
|
||||
length = COLNO + 1; /* force 1st item onto new line */
|
||||
for (i = 0; i < SIZE(build_opts); i++) {
|
||||
opt_out_words(strcat(strcpy(buf, build_opts[i]),
|
||||
(i < SIZE(build_opts) - 1) ? "," : "."),
|
||||
&length);
|
||||
}
|
||||
Fprintf(ofp, "\n"); /* terminate last line of words */
|
||||
|
||||
winsyscnt = SIZE(window_opts) - 1;
|
||||
Fprintf(ofp, "\nSupported windowing system%s:\n",
|
||||
(winsyscnt > 1) ? "s" : "");
|
||||
length = COLNO + 1; /* force 1st item onto new line */
|
||||
for (i = 0; i < winsyscnt; i++) {
|
||||
Sprintf(buf, "\"%s\"", window_opts[i].id);
|
||||
if (strcmp(window_opts[i].name, window_opts[i].id))
|
||||
Sprintf(eos(buf), " (%s)", window_opts[i].name);
|
||||
/*
|
||||
* 1 : foo.
|
||||
* 2 : foo and bar (note no period; comes from 'with default' below)
|
||||
* 3+: for, bar, and quux
|
||||
*/
|
||||
opt_out_words(strcat(buf, (winsyscnt == 1) ? "." /* no 'default' */
|
||||
: (winsyscnt == 2 && i == 0) ? " and"
|
||||
: (i == winsyscnt - 2) ? ", and"
|
||||
: ","),
|
||||
&length);
|
||||
}
|
||||
if (winsyscnt > 1) {
|
||||
Sprintf(buf, "with a default of \"%s\".", DEFAULT_WINDOW_SYS);
|
||||
opt_out_words(buf, &length);
|
||||
}
|
||||
Fprintf(ofp, "\n"); /* terminate last line of words */
|
||||
|
||||
/* end with a blank line */
|
||||
Fprintf(ofp, "\n");
|
||||
Fclose(ofp);
|
||||
return;
|
||||
}
|
||||
|
||||
/* routine to decide whether to discard something from data.base */
|
||||
static boolean
|
||||
d_filter(line)
|
||||
@@ -2904,15 +2411,6 @@ const char *str;
|
||||
return buf;
|
||||
}
|
||||
|
||||
static char *
|
||||
eos(str)
|
||||
char *str;
|
||||
{
|
||||
while (*str)
|
||||
str++;
|
||||
return str;
|
||||
}
|
||||
|
||||
/*
|
||||
* macro used to control vision algorithms:
|
||||
* VISION_TABLES => generate tables
|
||||
|
||||
@@ -68,6 +68,8 @@ struct needs_array_handling {
|
||||
#define SFI_PROTO c_sfiproto
|
||||
#define SFDATA c_sfdata
|
||||
#define SFPROTO c_sfproto
|
||||
#define SFPROTO_NAME "../include/sfproto.h"
|
||||
#define SFDATA_NAME "../src/sfdata.c"
|
||||
|
||||
static char *fgetline(FILE*);
|
||||
static void quit(void);
|
||||
@@ -287,6 +289,8 @@ char *argv[];
|
||||
showthem();
|
||||
#endif
|
||||
generate_c_files();
|
||||
printf("Created %s\n", SFDATA_NAME);
|
||||
printf("Created %s\n", SFPROTO_NAME);
|
||||
exit(EXIT_SUCCESS);
|
||||
/*NOTREACHED*/
|
||||
return 0;
|
||||
@@ -783,19 +787,50 @@ struct tagstruct *t;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* TIME_type: type of the argument to time(); we actually use &(time_t) */
|
||||
#if defined(BSD) && !defined(POSIX_TYPES)
|
||||
#define TIME_type long *
|
||||
#else
|
||||
#define TIME_type time_t *
|
||||
#endif
|
||||
/* LOCALTIME_type: type of the argument to localtime() */
|
||||
#if (defined(ULTRIX) && !(defined(ULTRIX_PROTO) || defined(NHSTDC))) \
|
||||
|| (defined(BSD) && !defined(POSIX_TYPES))
|
||||
#define LOCALTIME_type long *
|
||||
#else
|
||||
#define LOCALTIME_type time_t *
|
||||
#endif
|
||||
|
||||
char *preamble[] = {
|
||||
"/* Copyright (c) NetHack Development Team 2018. */\n",
|
||||
const char *preamble[] = {
|
||||
"/* Copyright (c) NetHack Development Team %d. */\n",
|
||||
"/* NetHack may be freely redistributed. See license for details. */\n\n",
|
||||
"/* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE! */\n\n",
|
||||
"#include \"hack.h\"\n",
|
||||
"#include \"artifact.h\"\n",
|
||||
"#include \"func_tab.h\"\n",
|
||||
"#include \"lev.h\"\n",
|
||||
"#include \"integer.h\"\n",
|
||||
"#include \"wintype.h\"\n",
|
||||
"#include \"integer.h\"\n",
|
||||
"#include \"wintype.h\"\n",
|
||||
(char *)0
|
||||
};
|
||||
char crbuf[BUFSZ];
|
||||
|
||||
static const char *get_preamble(n)
|
||||
int n;
|
||||
{
|
||||
const char *r = preamble[n];
|
||||
|
||||
if (!n) {
|
||||
time_t datetime = 0;
|
||||
struct tm *lt;
|
||||
|
||||
(void) time((TIME_type) &datetime);
|
||||
lt = localtime((LOCALTIME_type) &datetime);
|
||||
Sprintf(crbuf, preamble[0], (1900 + lt->tm_year));
|
||||
r = crbuf;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
static void output_types(fp1)
|
||||
FILE *fp1;
|
||||
@@ -862,10 +897,10 @@ static void generate_c_files()
|
||||
int okeydokey, x, a;
|
||||
boolean did_i;
|
||||
|
||||
SFDATA = fopen("../src/sfdata.c", "w");
|
||||
SFDATA = fopen(SFDATA_NAME, "w");
|
||||
if (!SFDATA) return;
|
||||
|
||||
SFPROTO = fopen("../include/sfproto.h", "w");
|
||||
SFPROTO = fopen(SFPROTO_NAME, "w");
|
||||
if (!SFPROTO) return;
|
||||
|
||||
SFO_DATA = fopen("../src/sfo_data.tmp", "w");
|
||||
@@ -892,10 +927,10 @@ static void generate_c_files()
|
||||
*c = '\0'; /* strip off the '\n' */
|
||||
|
||||
/* begin sfproto.h */
|
||||
Fprintf(SFPROTO,"/* NetHack %d.%d sfproto.h\t%s */\n",
|
||||
VERSION_MAJOR, VERSION_MINOR, cbuf);
|
||||
Fprintf(SFPROTO,"/* NetHack %d.%d sfproto.h */\n",
|
||||
VERSION_MAJOR, VERSION_MINOR);
|
||||
for (j = 0; j < 3; ++j)
|
||||
Fprintf(SFPROTO, "%s", preamble[j]);
|
||||
Fprintf(SFPROTO, "%s", get_preamble(j));
|
||||
Fprintf(SFPROTO, "#ifndef SFPROTO_H\n#define SFPROTO_H\n\n");
|
||||
Fprintf(SFPROTO, "#include \"hack.h\"\n#include \"integer.h\"\n#include \"wintype.h\"\n\n"
|
||||
"#define E extern\n\n");
|
||||
@@ -950,13 +985,11 @@ static void generate_c_files()
|
||||
Fprintf(SFI_PROTO, "/* generated input functions */\n");
|
||||
|
||||
/* begin sfdata.c */
|
||||
Fprintf(SFDATA,"/* NetHack %d.%d sfdata.c\t$Date$ $Revision$ */\n",
|
||||
Fprintf(SFDATA,"/* NetHack %d.%d sfdata.c */\n",
|
||||
VERSION_MAJOR, VERSION_MINOR);
|
||||
for (j = 0; preamble[j]; ++j)
|
||||
Fprintf(SFDATA, "%s", preamble[j]);
|
||||
Fprintf(SFDATA, "%s", get_preamble(j));
|
||||
Fprintf(SFDATA, "#include \"sfproto.h\"\n\n");
|
||||
Fprintf(SFDATA, "#define BUILD_DATE \"%s\"\n", cbuf);
|
||||
Fprintf(SFDATA, "#define BUILD_TIME (%ldL)\n\n", (long) clocktim);
|
||||
Fprintf(SFDATA, "#define NHTYPE_SIMPLE 1\n");
|
||||
Fprintf(SFDATA, "#define NHTYPE_COMPLEX 2\n");
|
||||
Fprintf(SFDATA, "struct nhdatatypes_t {\n");
|
||||
|
||||
@@ -4,7 +4,11 @@
|
||||
|
||||
#include "winMS.h"
|
||||
#include <commdlg.h>
|
||||
#if !defined(CROSSCOMPILE)
|
||||
#include "date.h"
|
||||
#else
|
||||
#include "config.h"
|
||||
#endif
|
||||
#include "patchlevel.h"
|
||||
#include "resource.h"
|
||||
#include "mhmsg.h"
|
||||
@@ -1063,11 +1067,11 @@ About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
SetDlgItemText(hDlg, IDC_ABOUT_VERSION,
|
||||
NH_A2W(buf, wbuf, sizeof(wbuf)));
|
||||
|
||||
Sprintf(buf, "%s\n%s\n%s\n%s",
|
||||
COPYRIGHT_BANNER_A, COPYRIGHT_BANNER_B,
|
||||
COPYRIGHT_BANNER_C, COPYRIGHT_BANNER_D);
|
||||
SetDlgItemText(hDlg, IDC_ABOUT_COPYRIGHT,
|
||||
NH_A2W(COPYRIGHT_BANNER_A "\n" COPYRIGHT_BANNER_B
|
||||
"\n" COPYRIGHT_BANNER_C
|
||||
"\n" COPYRIGHT_BANNER_D,
|
||||
wbuf, BUFSZ));
|
||||
NH_A2W(buf, wbuf, sizeof(wbuf)));
|
||||
|
||||
/* center dialog in the main window */
|
||||
GetWindowRect(GetNHApp()->hMainWnd, &main_rt);
|
||||
|
||||
@@ -8,7 +8,11 @@
|
||||
#include "mhsplash.h"
|
||||
#include "mhmsg.h"
|
||||
#include "mhfont.h"
|
||||
#if !defined(CROSSCOMPILE)
|
||||
#include "date.h"
|
||||
#else
|
||||
#include "config.h"
|
||||
#endif
|
||||
#include "patchlevel.h"
|
||||
#include "dlb.h"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user