cross-compile update

Update the cross-compiling doc at the top.

Remove sys/msdos/Makefile1.cross, sys/msdos/Makefile2.cross, and
sys/msdos/msdos-cross-compile.sh as they are no longer required.

Remove occurrences of CROSSCOMPILE_HOST as the host-side of a
cross-compile can be determined from:
    defined(CROSSCOMPILE) && !defined(CROSSCOMPILE_TARGET)
without the additional macro.
This commit is contained in:
nhmall
2020-09-29 15:01:37 -04:00
parent 476990b303
commit 945d10cfbc
8 changed files with 206 additions and 1972 deletions

View File

@@ -1,4 +1,4 @@
Cross-compiling NetHack 3.7 Last edit: May 31, 2020 Cross-compiling NetHack 3.7 Last edit: September 29, 2020
The NetHack 3.7 build process differs from the build process of previous The NetHack 3.7 build process differs from the build process of previous
versions in some important ways that make it possible to use a cross-compiler versions in some important ways that make it possible to use a cross-compiler
@@ -17,6 +17,7 @@ Part B Contents:
B2. What needs to be built and executed on the HOST? B2. What needs to be built and executed on the HOST?
B3. What needs to be built for the TARGET? B3. What needs to be built for the TARGET?
B4. Case sample: msdos B4. Case sample: msdos
B5. Case sample: amiga (started but incomplete)
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
Part A - Cross-compiling NetHack Part A - Cross-compiling NetHack
@@ -158,18 +159,15 @@ cross-compiling possible:
o There is no creation of platform-dependent files, such as the quest o There is no creation of platform-dependent files, such as the quest
text files, by makedefs during the build process. Instead, the quest text files, by makedefs during the build process. Instead, the quest
text files have been converted to Lua and are inserted into the game text files have been converted to Lua and are inserted into the game
package for processing by the embedded Lua <fixme: interpreter?> package for processing by the embedded Lua during execution of NetHack.
during execution of NetHack.
o There is no build-time level compiler involved. Instead, the level o There is no build-time level compiler involved. Instead, the level
descriptions have been converted to Lua and are inserted into the game descriptions have been converted to Lua and are inserted into the game
package for processing by the embeded Lua <fixme: interpreter?> package for processing by the embeded Lua during execution of NetHack.
during execution of NetHack.
o There is no build-time dungeon compiler involved. Instead, the dungeon o There is no build-time dungeon compiler involved. Instead, the dungeon
description has been converted to Lua and is inserted into the game description has been converted to Lua and is inserted into the game
package for processing by the embeded Lua <fixme: interpreter?> package for processing by the embeded Lua during execution of NetHack.
during execution of NetHack.
o Some of the build and option information that was formerly produced o Some of the build and option information that was formerly produced
during build time by makedefs, and contained information about the during build time by makedefs, and contained information about the
@@ -258,7 +256,7 @@ On the HOST, here are the mandatory things that have to be built.
a) Using the HOST native compiler, build HOST native utility makedefs a) Using the HOST native compiler, build HOST native utility makedefs
Compile and link the following with these compiler switches: Compile and link the following with these compiler switches:
-DCROSSCOMPILE and -DCROSSCOMPILE_HOST -DCROSSCOMPILE
from sources: util/makedefs.c, src/mdlib.c, src/monst.c, src/objects.c from sources: util/makedefs.c, src/mdlib.c, src/monst.c, src/objects.c
b) Execute HOST native makedefs utility, util/makedefs, as follows: b) Execute HOST native makedefs utility, util/makedefs, as follows:
@@ -452,67 +450,166 @@ Using the cross-compiler, build the following targets:
Cross-compiler used: Andrew Wu's djgpp cross-compiler Cross-compiler used: Andrew Wu's djgpp cross-compiler
Cross-compiler url: https://github.com/andrewwutw/build-djgpp Cross-compiler url: https://github.com/andrewwutw/build-djgpp
Cross-compiler pre-built binary downloads: Cross-compiler pre-built binary downloads:
https://github.com/andrewwutw/build-djgpp/releases/download/v2.9/ https://github.com/andrewwutw/build-djgpp/releases/download/v3.0/
Mac OS X pre-built binary: djgpp-osx-gcc550.tar.bz2 (tested) Cross-compiler bits tested:
Linux pre-built binary : djgpp-linux64-gcc550.tar.bz2 (tested) https://github.com/andrewwutw/build-djgpp
mingw pre-built binary : djgpp-mingw-gcc550-standalone.zip (untested) and the pre-built binary for your platform from:
https://github.com/andrewwutw/build-djgpp/releases/download/v3.0/
and a DOS-extender (for including in msdos packaging) from
http://sandmann.dotster.com/cwsdpmi/csdpmi7b.zip
and pdcurses from:
https://github.com/wmcbrine/PDCurses.git
The msdos cross-compile for NetHack 3.7 uses two phases of compiles: - A shell script to download that djgpp cross-compiler and associated
Phase1 is the host-side prerequisite stuff that needs to be done first. pieces for either linux or macOS is available:
Phase2 is the cross-compile pieces using the djgpp cross-compiler hosted on
Linux, Mac OS X, or Windows mingw.
First, on the host platform, you need to set up for a native Unix NetHack sh sys/msdos/fetch-cross-compiler.sh
build in the usual way. For example, on linux:
cd sys/unix
sh setup.sh hints/linux
cd ../..
make fetch-lua
Now, you could proceed to go ahead and issue That script won't install anything, it just does file fetches and stores
make all them in subfolders of lib. The linux.2020 and macOS.2020 hints files are
to build a native NetHack at that point if you wish, but it is not needed configured to find the cross-compiler there if you add
for the msdos cross-compile. CROSS_TO_MSDOS=1
on your make command line.
Instead, a test shell script has been put together that will next accomplish Note: Both the fetch-cross-compiler.sh script and and the msdos
each of the following tasks when it is executed. The shell script can be cross-compile and package procedures require unzip and zip to be available
invoked by: on your host build system.
sh sys/msdos/msdos-cross-compile.sh
but before you do that, please read the paragraphs below.
The shell script is meant to accomplish the following things: On your linux host:
Prep : the script downloads the djgpp cross-compiler for the host cd sys/unix ; sh setup.sh hints/linux.2020 ; cd ../..
platform into lib/djgpp (it doesn't install anything on the make fetch-lua
system, nor does it need to, it just downloads them into the
identified directories), it downloads a copy of the msdos
dos-extender into lib/djgpp/cwsdpmi for later packaging up with
the msdos game, and it downloads pdcurses into lib/pdcurses
for cross-compiling during the TARGET build.
Be certain to ensure the right products are at the url's On your macOS host:
identified above *before* you execute the Case sample msdos
cross-compile script. The correct products were at those url's
at the time this was written in Dec 2019, but we don't assume
any responsibility for what is at those url's now or in the
future. You need to check before executing the script.
Phase1 : the script uses the Makefile sys/msdos/Makefile1.cross cd sys/unix ; sh setup.sh hints/macOS.2020 ; cd ../..
to complete the host-side build steps using the native gcc make fetch-lua
compiler for the host platform. During phase1 the host obj
files are put in subfolder src/host_o to keep them separated
and distinguishable from the target obj files that will be
built in phase2.
Phase2 : the script uses the Makefile sys/msdos/Makefile2.cross The MSDOS cross-compile can then be carried out by specifying
to complete the target-side build steps using the CROSS_TO_MSDOS=1 on the make command line:
cross-compiler that was obtained during the prep step of the
script described above. During phase2 the target obj files
are put in src/msdos_o to keep them separated and
distinguishable from the host obj files
Package: the script then packages up the results that reside in make CROSS_TO_MSDOS=1 all
msdos-binary into a zip file which it places in lib called make CROSS_TO_MSDOS=1 package
nh370dos.zip.
You can explicitly include tty and curses support if desired. The default
you'll end up with is a tty-only cross-compile build:
make WANT_WIN_TTY=1 WANT_WIN_CURSES=1 CROSS_TO_MSDOS=1 all
make WANT_WIN_TTY=1 WANT_WIN_CURSES=1 CROSS_TO_MSDOS=1 package
Result: The "make package" target will bundle all of the necessary
components to run NetHack on msdos into a folder:
targets/msdos/pkg
and then it zips the contents of that folder into:
targets/msdos/nh370dos.zip
Also note that building the msdos targets using the make command
above, does not preclude you from building local linux or macOS
targets as well. Just drop the CROSS_TO_MSDOS=1 from the make
command line. That's because the cross-compiler hints additions are
enclosed inside ifdef sections and won't interfere with the
non-cross-compile build in that case.
+-------------------------+
| B5. Case sample: amiga |
+-------------------------+
Disclaimer: This is a minimal recipe, just to help someone else get
started if they have a desire to get a full cross-compile of
NetHack going for the Amiga.
See CAVEATS below.
Cross-compiler used: bebbo's amiga-gcc
Cross-compiler url: https://github.com/bebbo/amiga-gcc
To our knowledge, a pre-built copy of the cross-compiler isn't available,
so you will likely have to obtain the cross-compiler sources via git and
build it on your system.
The build prerequisite packages for building the compiler on Ubuntu can be
easily obtained:
sudo apt install make wget git gcc g++ lhasa libgmp-dev \
libmpfr-dev libmpc-dev flex bison gettext texinfo ncurses-dev \
autoconf rsync
The build prerequisite packages for macOS via homebrew are documented but
not tested by us any of us to date.
brew install bash wget make lhasa gmp mpfr libmpc flex gettext \
texinfo gcc make autoconf
After installing the prerequite packages and the cross-compiler
it was a straightforward build:
git clone https://github.com/bebbo/amiga-gcc.git
cd amiga-gcc
make update
[Note that you may have to take ownership of the files in the bebbo
repo via chown before succesfully carrying out the next steps]
make clean
make clean-prefix
date; make all -j3 >&b.log; date
The compiler pieces are installed in /opt/amiga by default. If you prefer,
you can alter the prefix before you build if you want. The instructions
for doing so were spelled out at the time of this writing at:
https://github.com/bebbo/amiga-gcc
On your linux host:
cd sys/unix ; sh setup.sh hints/linux.2020 ; cd ../..
make fetch-lua
On your macOS host:
cd sys/unix ; sh setup.sh hints/macOS.2020 ; cd ../..
make fetch-lua
The Amiga cross-compile can then be carried out by specifying
CROSS_TO_AMIGA=1 on the make command line:
make CROSS_TO_AMIGA=1 all
make CROSS_TO_AMIGA=1 package
You can explicitly include tty and curses support if desired, otherwise
you'll end up with a tty-only cross-compile build. The SDL1 pdcurses
support has not been tested.
make WANT_WIN_TTY=1 WANT_WIN_CURSES=1 CROSS_TO_AMIGA=1 all
Result: The "make package" target will bundle the (hopefully) necessary
components to run NetHack on msdos into a folder:
targets/amiga/pkg
and then it zips the contents of that folder into:
targets/amiga/nh370ami.zip
Also note that building the amiga targets using the make command
above, does not preclude you from building local linux or macOS
targets as well. Just drop the CROSS_TO_AMIGA=1 from the make
command line.
The cross-compiler hints additions are enclosed inside ifdef sections
and won't interfere with the non-cross-compile build in that case.
CAVEATS: The original NetHack Amiga build steps included the source for
some utilities that were built and executed on the amiga:
txt2iff and xpm2iff
as part of the NetHack build procedure on amiga.
Those did not compile out-of-the-box on the linux host. They
will either have to be:
- ported to build and run on the linux or macOS cross-compile
host
or
- their functionality will have to be rolled into amiga NetHack
itself and executed on the target Amiga the first time the game
is run, perhaps.
If you make headway, or are successful getting a working copy of
NetHack going on the amiga, drop us a note at devteam@nethack.org.
---

View File

@@ -29,7 +29,7 @@ struct cross_target_s cross_target = {
#if defined(NETHACK_GIT_SHA) #if defined(NETHACK_GIT_SHA)
const char *NetHack_git_sha const char *NetHack_git_sha
#if !defined(CROSSCOMPILE) || (defined(CROSSCOMPILE) && defined(CROSSCOMPILE_HOST)) #if !defined(CROSSCOMPILE) || !defined(CROSSCOMPILE_TARGET)
= NETHACK_GIT_SHA = NETHACK_GIT_SHA
#else #else
#ifdef NETHACK_HOST_GIT_SHA #ifdef NETHACK_HOST_GIT_SHA
@@ -41,7 +41,7 @@ const char *NetHack_git_sha
#if defined(NETHACK_GIT_BRANCH) #if defined(NETHACK_GIT_BRANCH)
const char *NetHack_git_branch const char *NetHack_git_branch
#if !defined(CROSSCOMPILE) || (defined(CROSSCOMPILE) && defined(CROSSCOMPILE_HOST)) #if !defined(CROSSCOMPILE) || !defined(CROSSCOMPILE_TARGET)
= NETHACK_GIT_BRANCH = NETHACK_GIT_BRANCH
#else #else
#ifdef NETHACK_HOST_GIT_BRANCH #ifdef NETHACK_HOST_GIT_BRANCH
@@ -429,7 +429,7 @@ void
store_version(nhfp) store_version(nhfp)
NHFILE *nhfp; NHFILE *nhfp;
{ {
#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_HOST) #if !defined(CROSSCOMPILE) || !defined(CROSSCOMPILE_TARGET)
static const struct version_info version_data = { static const struct version_info version_data = {
VERSION_NUMBER, VERSION_FEATURES, VERSION_NUMBER, VERSION_FEATURES,
VERSION_SANITY1, VERSION_SANITY2, VERSION_SANITY3 VERSION_SANITY1, VERSION_SANITY2, VERSION_SANITY3
@@ -439,7 +439,7 @@ NHFILE *nhfp;
#endif #endif
}; };
#if defined(CROSSCOMPILE) && !defined(CROSSCOMPILE_HOST) #if defined(CROSSCOMPILE) && defined(CROSSCOMPILE_TARGET)
version_data.incarnation = VERSION_NUMBER; /* actual version number */ version_data.incarnation = VERSION_NUMBER; /* actual version number */
version_data.feature_set = VERSION_FEATURES; /* bitmask of config settings */ version_data.feature_set = VERSION_FEATURES; /* bitmask of config settings */
version_data.entity_count = VERSION_SANITY1; /* # of monsters and objects */ version_data.entity_count = VERSION_SANITY1; /* # of monsters and objects */

View File

@@ -1,641 +0,0 @@
# NetHack 3.7 Makefile1.cross
# Cross-compile msdos version of NetHack using a
# linux-hosted djgpp cross-compiler.
#
# Makefile1.cross (this file) is for the host-side obj files and
# utilities that will run on the host platform only.
#
# Makefile2.cross is for the target platform obj files
# and utilities.
#
# Makefile2 utilizes the djgpp cross-compiler from Andrew Wu:
# https://github.com/andrewwutw/build-djgpp
#
# Currently, in NetHack 3.7, it is now feasible to cross-compile
# the game in a 2-stage process. Makefile1.cross (this file) carries
# out the 1st stage.
#
# The GNU Make has a problem if you include a drive spec below.
GAMEDIR =../msdos-binary
#
#==============================================================================
# This marks the end of the BUILD DECISIONS section.
#==============================================================================
#
# Directories, gcc likes unix style directory specs
#
OBJ = o
HOBJ = host_o
DAT = ../dat
DOC = ../doc
INCL = ../include
LIB = ../lib
MSYS = ../sys/msdos
SRC = ../src
SSHR = ../sys/share
UTIL = ../util
WIN = ../win/tty
WCURSES = ../win/curses
WSHR = ../win/share
#
# Executables.
#
HOST_CC = gcc
HOST_LINK = gcc
MAKEBIN = make
#
# Special libraries and how to link them in.
#
LIBS = -lpc
LIBRARIES = $(LIBS)
#
# Yacc/Lex off
#
YACC_LEX = N
#
# Uncomment the line below if you want to store all the level files,
# help files, etc. in a single library file.
#
USE_DLB = Y
#===============================================
#======= End of Modification Section ===========
#===============================================
################################################
# #
# Nothing below here should have to be changed.#
# #
################################################
# Changing this conditional block is not recommended
ifeq "$(USE_DLB)" "Y"
DLBFLG = -DDLB
else
DLBFLG =
endif
TERMLIB =
#==========================================
#================ MACROS ==================
#==========================================
# This section creates shorthand macros for many objects
# referenced later on in the Makefile.
#
# Have windows path styles available for use in commands
#
W_OBJ =$(subst /,\, $(OBJ))
W_INCL =$(subst /,\, $(INCL))
W_DAT =$(subst /,\, $(DAT))
W_DOC =$(subst /,\, $(DOC))
W_UTIL =$(subst /,\, $(UTIL))
W_SRC =$(subst /,\, $(SRC))
W_SSYS =$(subst /,\, $(SSYS))
W_MSWSYS =$(subst /,\, $(MSWSYS))
W_TTY =$(subst /,\, $(TTY))
W_MSWIN =$(subst /,\, $(MSWIN))
ifeq "$(ADD_CURSES)" "Y"
W_WCURSES =$(subst /,\, $(WCURSES))
endif
W_WSHR =$(subst /,\, $(WSHR))
W_GAMEDIR =$(subst /,\, $(GAMEDIR))
#
# Shorten up the location for some files
#
O = $(OBJ)/
HOST_O = $(HOBJ)/
U = $(UTIL)/
#==========================================
# Utility Objects.
#==========================================
MAKESRC = makedefs.c
MAKEDEFSOBJS = $(HOST_O)makedefs.o $(HOST_O)monst.o $(HOST_O)objects.o
LUA_QTEXT_FILE = "quest.lua"
#==========================================
# Tile related object files.
#==========================================
TILOBJ2 = $(HOST_O)tileset.o $(HOST_O)bmptiles.o $(HOST_O)giftiles.o
TEXTIO = $(HOST_O)tiletext.o $(HOST_O)tiletxt.o $(HOST_O)drawing.o $(HOST_O)monst.o \
$(HOST_O)objects.o
TEXTIO2 = $(HOST_O)tiletex2.o $(HOST_O)tiletxt2.o $(HOST_O)drawing.o $(HOST_O)monst.o \
$(HOST_O)objects.o
TILE_BMP = $(DAT)/NHTILES.BMP
TILEUTIL = $(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
#==========================================
# Object files.
#==========================================
DLBOBJ = $(HOST_O)dlb.o
ALLOBJ = $(MAKEDEFSOBJS) $(TILOBJ) $(TILOBJ2) $(TEXTIO) $(TEXTIO2)
#==========================================
# Header file macros
#==========================================
PATCHLEV_H = $(INCL)/patchlev.h
DGN_FILE_H = $(INCL)/align.h $(INCL)/dgn_file.h
DUNGEON_H = $(INCL)/align.h $(INCL)/dungeon.h
MONDATA_H = $(INCL)/align.h $(INCL)/mondata.h
MONST_H = $(INCL)/align.h $(INCL)/monst.h $(INCL)/mextra.h
PERMONST_H = $(INCL)/monattk.h $(INCL)/monflag.h $(INCL)/align.h \
$(INCL)/permonst.h
REGION_H = $(INCL)/region.h
RM_H = $(INCL)/align.h $(INCL)/rm.h
SKILLS_H = $(INCL)/skills.h
SP_LEV_H = $(INCL)/align.h $(INCL)/sp_lev.h
YOUPROP_H = $(PERMONST_H) $(MONDATA_H) $(INCL)/prop.h \
$(INCL)/pm.h $(INCL)/youprop.h
YOU_H = $(MONST_H) $(YOUPROP_H) $(INCL)/align.h \
$(INCL)/attrib.h $(INCL)/you.h
DISPLAY_H = $(MONDATA_H) $(INCL)/vision.h $(INCL)/display.h
PCCONF_H = $(INCL)/micro.h $(INCL)/system.h $(INCL)/pcconf.h \
$(MSYS)/pcvideo.h
DECL_H = $(YOU_H) $(INCL)/spell.h $(INCL)/color.h \
$(INCL)/obj.h $(INCL)/onames.h $(INCL)/pm.h \
$(INCL)/decl.h
GLOBAL_H = $(PCCONF_H) $(INCL)/coord.h $(INCL)/global.h
CONFIG_H = $(INCL)/config.h $(INCL)/config1.h $(INCL)/tradstdc.h \
$(INCL)/global.h $(INCL)/coord.h $(INCL)/vmsconf.h \
$(INCL)/system.h $(INCL)/nhlua.h $(INCL)/unixconf.h \
$(INCL)/micro.h $(INCL)/pcconf.h $(INCL)/ntconf.h
HACK_H = $(INCL)/hack.h $(CONFIG_H) $(INCL)/lint.h $(INCL)/align.h \
$(INCL)/dungeon.h $(INCL)/monsym.h $(INCL)/mkroom.h \
$(INCL)/objclass.h $(INCL)/youprop.h $(INCL)/prop.h \
$(INCL)/permonst.h $(INCL)/monattk.h \
$(INCL)/monflag.h $(INCL)/mondata.h $(INCL)/pm.h \
$(INCL)/wintype.h $(INCL)/context.h $(INCL)/rm.h \
$(INCL)/botl.h $(INCL)/rect.h \
$(INCL)/region.h $(INCL)/decl.h $(INCL)/quest.h \
$(INCL)/spell.h $(INCL)/color.h $(INCL)/obj.h \
$(INCL)/you.h $(INCL)/attrib.h $(INCL)/monst.h \
$(INCL)/mextra.h $(INCL)/skills.h $(INCL)/onames.h \
$(INCL)/timeout.h $(INCL)/trap.h $(INCL)/flag.h \
$(INCL)/vision.h $(INCL)/display.h $(INCL)/engrave.h \
$(INCL)/winprocs.h $(INCL)/sys.h $(INCL)/wintty.h \
$(INCL)/trampoli.h
DLB_H = $(INCL)/dlb.h
ifeq ($(SUPPRESS_GRAPHICS),Y)
TILE_H =
else
TILE_H = $(WSHR)/tile.h $(INCL)/tileset.h
endif
ifeq ($(USE_DLB),Y)
DLB = dlb
DLBOBJS = $(HOST_O)dlb_main.o $(HOST_O)dlb.o $(HOST_O)alloc.o $(HOST_O)panic.o
else
DLB =
DLBOBJS =
endif
#==========================================
# More compiler setup macros
#==========================================
#
CURSESDEF=
CURSESLIB=
INCLDIR=-I../include -I../sys/msdos
# Debugging
#cflags = -pg -c $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DSUPPRESS_GRAPHICS -DCROSSCOMPILE -CROSSCOMPILE_HOST
#LFLAGS = -pg
#
#cflags = -c -O $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DSUPPRESS_GRAPHICS -DCROSSCOMPILE -DCROSSCOMPILE_HOST
#LFLAGS =
#
# Debugging
#cflags = -g -c $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DUSE_TILES -DCROSSCOMPILE -DCROSSCOMPILE_HOST
#LFLAGS = -g
#
# Normal
cflags = -c -O $(INCLDIR) $(DLBFLG) $(CURSESDEF) -DUSE_TILES -DCROSSCOMPILE -DCROSSCOMPILE_HOST
LFLAGS =
#==========================================
#================ RULES ==================
#==========================================
.SUFFIXES: .o .til .uu .c .y .l
#==========================================
# Rules for host files in src
#==========================================
$(HOST_O)%.o : $(SRC)/%.c
$(HOST_CC) $(cflags) -o$@ $<
#==========================================
# Rules for host files in sys/msdos
#==========================================
$(HOST_O)%.o : $(MSYS)/%.c
$(HOST_CC) $(cflags) -I../sys/msdos -o$@ $<
#==========================================
# Rules for host files in util
#==========================================
$(HOST_O)%.o : $(SRC)/%.c
$(HOST_CC) $(cflags) -o$@ $<
$(HOST_O)%.o : $(UTIL)/%.c
$(HOST_CC) $(cflags) -o$@ $<
$(HOST_O)%.o : %.c
$(HOST_CC) $(cflags) -o$@ $<
#==========================================
# Rules for host files in win/share
#==========================================
$(HOST_O)%.o : $(WSHR)/%.c
$(HOST_CC) $(cflags) -I../win/share -o$@ $<
#==========================================
# Primary Targets.
#==========================================
# The default target.
all : prereq
prereq: $(HOST_O)prereq.tag
@echo Done.
default: prereq
util: $(HOST_O)utility.tag
$(HOST_O)utility.tag: $(INCL)/date.h $(INCL)/trap.h $(INCL)/onames.h \
$(INCL)/pm.h vis_tab.c $(TILEUTIL) $(SRC)/tile.c
echo host utilities made > $@
tileutil: $(U)gif2txt $(U)txt2ppm
@echo Optional tile development utilities are up to date.
$(HOST_O)prereq.tag: $(INCL)/nhlua.h hobj.tag $(U)makedefs \
$(HOST_O)utility.tag $(DAT)/nhdat
echo prereq done >$@
ifeq "$(LUA_VERSION)" "5.3.5"
LUAVER=5.3.5
else
LUAVER=5.4.0
endif
$(INCL)/nhlua.h:
cd $(INCL); \
echo '/* nhlua.h - generated by Makefile1.cross */' > $@; \
echo '#include "../lib/lua-$(LUAVER)/src/lua.h"' >> $@; \
sed -e '/(lua_error)/!d' -e '/(lua_error)/s/;/ NORETURN;/1' < $(LIB)/lua-$(LUAVER)/src/lua.h >> $@; \
echo '#include "../lib/lua-$(LUAVER)/src/lualib.h"' >> $@; \
echo '#include "../lib/lua-$(LUAVER)/src/lauxlib.h"' >> $@; \
echo '/*nhlua.h*/' >> $@; \
cd $(SRC)
#==========================================
# Other host targets.
#==========================================
#note that dir below assumes bin/dir from djgpp distribution
#
$(DAT)/nhdat: $(U)dlb_main $(DAT)/data $(DAT)/rumors \
$(DAT)/oracles \
$(DAT)/bogusmon $(DAT)/engrave $(DAT)/epitaph $(DAT)/tribute
cd $(DAT); \
pwd; \
cp $(MSYS)/msdoshlp.txt .; \
ls -1 data oracles options 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)
$(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
$(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
# make data.base an 8.3 filename to prevent an make warning
DATABASE = $(DAT)/data.bas
$(DAT)/data: $(HOST_O)utility.tag $(DATABASE)
$(U)makedefs -d
$(DAT)/rumors: $(HOST_O)utility.tag $(DAT)/rumors.tru $(DAT)/rumors.fal
$(U)makedefs -r
$(DAT)/oracles: $(HOST_O)utility.tag $(DAT)/oracles.txt
$(U)makedefs -h
$(DAT)/bogusmon: $(HOST_O)utility.tag $(DAT)/bogusmon.txt
$(U)makedefs -s
$(DAT)/engrave: $(HOST_O)utility.tag $(DAT)/engrave.txt
$(U)makedefs -s
$(DAT)/epitaph: $(HOST_O)utility.tag $(DAT)/epitaph.txt
$(U)makedefs -s
#===============================================
# Create directory for holding host object files
#===============================================
hobj.tag:
mkdir -p ./$(HOBJ)
echo directory ready ./$(HOBJ)
#==========================================
# Makedefs Stuff
#==========================================
$(U)makedefs: $(MAKEDEFSOBJS)
$(HOST_LINK) $(LFLAGS) -o$@ $(MAKEDEFSOBJS)
$(HOST_O)makedefs.o: $(U)makedefs.c $(SRC)/mdlib.c $(CONFIG_H) $(INCL)/permonst.h \
$(INCL)/objclass.h $(INCL)/monsym.h \
$(INCL)/artilist.h $(INCL)/dungeon.h $(INCL)/obj.h \
$(INCL)/monst.h $(INCL)/you.h $(INCL)/flag.h \
$(INCL)/dlb.h $(INCL)/patchlevel.h
#=============================================
# Header file moves required for tile support
#=============================================
ifeq ($(SUPPRESS_GRAPHICS),Y)
else
#
# Tile Mapping
#
$(SRC)/tile.c: $(U)tilemap
@$(U)tilemap
@echo A new $@ has been created
$(U)tilemap: $(HOST_O)tilemap.o
$(HOST_LINK) $(LFLAGS) -o$@ $(HOST_O)tilemap.o
$(HOST_O)tilemap.o: $(WSHR)/tilemap.c $(HACK_H) $(TILE_H)
$(HOST_CC) $(cflags) -I$(WSHR) -I$(MSYS) -DSTATUES_LOOK_LIKE_MONSTERS -o$@ $(WSHR)/tilemap.c
#==========================================
# Tile Utilities
# Required for tile support
#==========================================
#$(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 $@
@cd $(SRC)
$(U)tile2bmp: $(HOST_O)tile2bmp.o $(TEXTIO)
-rm -f temp.a
ar r temp.a $(TEXTIO)
$(HOST_LINK) $(LFLAGS) -o$@ $(HOST_O)tile2bmp.o temp.a
#$(U)tile2bin: $(HOST_O)tile2bin.o $(TEXTIO)
# -rm -f temp.a
# ar r temp.a $(TEXTIO)
# $(HOST_LINK) $(LFLAGS) -o$@ $(HOST_O)tile2bin.o temp.a
#$(U)til2bin2: $(HOST_O)til2bin2.o $(TEXTIO2)
# -rm -f temp.a
# ar r temp.a $(TEXTIO2)
# $(HOST_LINK) $(LFLAGS) -o$@ $(HOST_O)til2bin2.o temp.a
#$(U)thintile: $(HOST_O)thintile.o
# $(HOST_LINK) $(LFLAGS) -o$@ $(HOST_O)thintile.o
#$(HOST_O)thintile.o: $(HACK_H) $(WSHR)/tile.h $(WSHR)/thintile.c
# -rm -f temp.a
# ar r temp.a $(TEXTIO)
# $(HOST_LINK) $(LFLAGS) -o$@ $(HOST_O)tile2bmp.o temp.a
#$(HOST_O)thintile.o: $(HACK_H) $(WSHR)/tile.h $(WSHR)/thintile.c
# $(HOST_CC) $(cflags) -I$(MSYS) -I$(WSHR) -DTILE -DOVERVIEW_FILE -o$@ $(WSHR)/thintile.c
#$(HOST_O)thintile.tag: $(U)thintile $(TILEFILES)
# $(U)thintile
# echo thintiles created >$@
$(HOST_O)tile2bmp.o: $(HACK_H) $(TILE_H) $(WSHR)/tile2bmp.c
$(HOST_CC) $(cflags) -I$(MSYS) -I$(WSHR) -o$@ $(WSHR)/tile2bmp.c
#$(HOST_O)tile2bin.o: $(HACK_H) $(TILE_H) $(MSYS)/pctiles.h $(MSYS)/pcvideo.h $(MSYS)/tile2bin.c
# $(HOST_CC) $(cflags) -I$(MSYS) -I$(WSHR) -o$@ $(MSYS)/tile2bin.c
#$(HOST_O)til2bin2.o: $(HACK_H) $(TILE_H) $(MSYS)/pctiles.h $(MSYS)/pcvideo.h $(MSYS)/tile2bin.c
# $(HOST_CC) $(cflags) -I$(MSYS) -I$(WSHR) -DTILE_X=8 -DOVERVIEW_FILE -o$@ $(MSYS)/tile2bin.c
$(HOST_O)tiletext.o: $(CONFIG_H) $(TILE_H) $(WSHR)/tiletext.c
$(HOST_CC) $(cflags) -I$(MSYS) -I$(WSHR) -o$@ $(WSHR)/tiletext.c
$(HOST_O)tiletex2.o: $(CONFIG_H) $(TILE_H) $(WSHR)/tiletext.c
$(HOST_CC) $(cflags) -I$(MSYS) -I$(WSHR) -DTILE_X=8 -o$@ $(WSHR)/tiletext.c
$(HOST_O)tiletxt.o: $(CONFIG_H) $(TILE_H) $(WSHR)/tilemap.c
$(HOST_CC) $(cflags) -I$(MSYS) -I$(WSHR) -DTILETEXT -o$@ $(WSHR)/tilemap.c
$(HOST_O)tiletxt2.o: $(CONFIG_H) $(TILE_H) $(WSHR)/tilemap.c
$(HOST_CC) $(cflags) -I$(MSYS) -I$(WSHR) -DTILETEXT -DTILE_X=8 -o$@ $(WSHR)/tilemap.c
#
# Optional GIF Utilities (for development)
#
$(U)gif2txt: $(GIFREADERS) $(TEXTIO)
$(HOST_LINK) $(LFLAGS) -o$@ $(GIFREADERS) $(TEXTIO)
$(U)gif2txt2: $(GIFREAD2) $(TEXTIO2)
$(HOST_LINK) $(LFLAGS) -o$@ $(GIFREAD2) $(TEXTIO2)
$(U)txt2ppm: $(PPMWRITERS) $(TEXTIO)
$(HOST_LINK) $(LFLAGS) -o$@ $(PPMWRITERS) $(TEXTIO)
$(U)txt2ppm2: $(PPMWRIT2) $(TEXTIO2)
$(HOST_LINK) $(LFLAGS) -o$@ $(PPMWRIT2) $(TEXTIO2)
$(HOST_O)gifread.o: $(CONFIG_H) $(WSHR)/tile.h $(WSHR)/gifread.c
$(HOST_O)gifread2.o: $(CONFIG_H) $(WSHR)/tile.h $(WSHR)/gifread.c
$(HOST_CC) $(cflags) -DTILE_X=8 -o$@ $(WSHR)/gifread.c
ppmwrite.c: $(WSHR)/ppmwrite.c
cp $(WSHR)/ppmwrite.c .
$(HOST_O)ppmwrite.o: $(CONFIG_H) $(WSHR)/tile.h
$(HOST_O)ppmwrit2.o: $(CONFIG_H) $(WSHR)/tile.h ppmwrite.c
$(HOST_CC) $(cflags) -DTILE_X=8 -o$@ ppmwrite.c
#
# Optional tile viewer (development sources only)
#
$(U)viewtib: $(HOST_O)viewtib.o
$(HOST_LINK) $(LFLAGS) -o$@ $(HOST_O)viewtib.o $(LIBRARIES)
$(HOST_O)viewtib.o: $(MSYS)/viewtib.c
endif
#==========================================
# Other host Util Dependencies.
#==========================================
$(HOST_O)monst.o: $(CONFIG_H) $(PERMONST_H) $(INCL)/monsym.h \
$(INCL)/color.h monst.c
$(HOST_CC) $(cflags) -o$@ monst.c
$(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
$(HOST_O)panic.o: $(CONFIG_H) $(U)panic.c
$(HOST_CC) $(cflags) -o$@ $(U)panic.c
#==========================================
# Housekeeping for host side.
#==========================================
clean:
-rm $(HOBJ)/*.o
-rm ./msdos_o/*.o
if [ -f $(HOST_O)prereq.tag ]; then rm $(HOST_O)prereq.tag; fi;
if [ -f hobj.tag ]; then rm hobj.tag; fi;
if [ -f $(HOST_O)utility.tag ]; then rm $(HOST_O)utility.tag; fi;
if [ -f temp.a ]; then rm temp.a; fi;
spotless: clean
if [ -f $(INCL)/pm.h ]; then rm $(INCL)/pm.h; fi;
## if [ -f $(U)dgn_flex.c ]; then rm $(U)dgn_flex.c; fi;
## if [ -f $(U)dgn_lex.c ]; then rm $(U)dgn_lex.c; fi;
# if [ -f $(U)makedefs ]; then rm $(U)makedefs; fi;
## if [ -f $(U)dgn_comp ]; then rm $(U)dgn_comp; fi;
# if [ -f $(U)recover.exe ]; then rm $(U)recover.exe; fi;
# if [ -f $(U)tilemap ]; then rm $(U)tilemap; fi;
# if [ -f $(U)tile2bmp ]; then rm $(U)tile2bmp; fi;
## if [ -f $(U)tile2bin ]; then rm $(U)tile2bin; fi;
## if [ -f $(U)til2bin2 ]; then rm $(U)til2bin2; fi;
## if [ -f $(U)thintile ]; then rm $(U)thintile; fi;
# if [ -f $(U)dlb_main ]; then rm $(U)dlb_main; 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)/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;
# if [ -f $(DAT)/engrave ]; then rm $(DAT)/engrave; fi;
# if [ -f $(DAT)/epitaph ]; then rm $(DAT)/epitaph; fi;
# if [ -f $(DAT)/dlb.lst ]; then rm $(DAT)/dlb.lst; fi;
# if [ -f $(DAT)/nhdat ]; then rm $(DAT)/nhdat; fi;
# if [ -f $(DAT)/*.lev ]; then rm $(DAT)/*.lev; fi;
# if [ -f $(TILE_BMP) ]; then rm $(TILE_BMP); 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;
#==========================================
# Host Utility Dependencies
#==========================================
# src dependencies
$(HOST_O)drawing.o: $(CONFIG_H) $(INCL)/color.h $(INCL)/rm.h \
$(INCL)/objclass.h $(INCL)/monsym.h
$(HOST_O)vis_tab.o: vis_tab.c $(CONFIG_H) $(INCL)/vis_tab.h
$(HOST_O)alloc.o: alloc.c $(CONFIG_H)
$(HOST_O)dlb.o: dlb.c $(CONFIG_H) $(INCL)/dlb.h
$(HOST_CC) $(cflags) -I../sys/msdos -o$@ dlb.c
$(HOST_O)monst.o: monst.c $(CONFIG_H) $(INCL)/permonst.h $(INCL)/align.h \
$(INCL)/monattk.h $(INCL)/monflag.h $(INCL)/monsym.h \
$(INCL)/color.h
$(HOST_O)objects.o: objects.c $(CONFIG_H) $(INCL)/obj.h $(INCL)/objclass.h \
$(INCL)/prop.h $(INCL)/skills.h $(INCL)/color.h
$(HOST_O)tileset.o: $(WSHR)/tileset.c $(HACK_H)
$(HOST_O)bmptiles.o: $(WSHR)/bmptiles.c $(INCL)/config.h $(INCL)/tileset.h $(INCL)/integer.h
$(HOST_O)giftiles.o: $(WSHR)/giftiles.c $(INCL)/config.h $(INCL)/tileset.h $(INCL)/integer.h
# end of file

File diff suppressed because it is too large Load Diff

View File

@@ -1,129 +0,0 @@
#!/bin/sh
#set -x
if [ -z "$TRAVIS_BUILD_DIR" ]; then
export DJGPP_TOP=$(pwd)/lib/djgpp
else
export DJGPP_TOP="$TRAVIS_BUILD_DIR/lib/djgpp"
fi
if [ -z "$GCCVER" ]; then
export GCCVER=gcc1010
fi
if [ -z "$LUA_VERSION" ]; then
export LUA_VERSION=5.4.0
fi
if [ ! -d "$(pwd)/lib" ]; then
echo "Set up for Unix build and 'make fetch-lua' first."
exit 1
fi
#DJGPP_URL="https://github.com/andrewwutw/build-djgpp/releases/download/v2.9/"
DJGPP_URL="https://github.com/andrewwutw/build-djgpp/releases/download/v3.0/"
if [ "$(uname)" = "Darwin" ]; then
#Mac
DJGPP_FILE="djgpp-osx-$GCCVER.tar.bz2"
if [ -z "HINTS" ]; then
export HINTS=macOS.2020
fi
elif [ "$(expr substr $(uname -s) 1 5)" = "Linux" ]; then
#Linux
DJGPP_FILE="djgpp-linux64-$GCCVER.tar.bz2"
if [ -z "$HINTS" ]; then
export HINTS=linux.2020
fi
elif [ "$(expr substr $(uname -s) 1 10)" = "MINGW32_NT" ]; then
#mingw
DJGPP_FILE="djgpp-mingw-$GCCVER-standalone.zip"
else
echo "No DJGPP release for you, sorry."
exit 1
fi
DJGPP_URL="$DJGPP_URL$DJGPP_FILE"
# export
if [ ! -d lib ]; then
mkdir -p lib
fi
cd lib
if [ ! -f "$DJGPP_FILE" ]; then
if [ "$(uname)" = "Darwin" ]; then
#Mac
curl -L $DJGPP_URL -o $DJGPP_FILE
else
wget --no-hsts "$DJGPP_URL"
fi
fi
if [ ! -d djgpp/i586-pc-msdosdjgpp ]; then
tar xjf "$DJGPP_FILE"
rm -f $DJGPP_FILE
fi
# DOS-extender for use with djgpp
if [ ! -d djgpp/cwsdpmi ]; then
if [ "$(uname)" = "Darwin" ]; then
#Mac
curl http://sandmann.dotster.com/cwsdpmi/csdpmi7b.zip -o csdpmi7b.zip
else
wget --no-hsts http://sandmann.dotster.com/cwsdpmi/csdpmi7b.zip
fi
cd djgpp
mkdir -p cwsdpmi
cd cwsdpmi
unzip ../../csdpmi7b.zip
cd ../../
rm csdpmi7b.zip
fi
# 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 ../
# Don't fail the build if lua fetch failed because we cannot do anything about it
# but don't bother proceeding forward either
if [ ! -d "lib/lua-$LUA_VERSION/src" ]; then
exit 0
fi
#echo after dos extender
cd src
mkdir -p ../msdos-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 ../sys/msdos/Makefile1.cross
#cat ../include/date.h
export GCC_EXEC_PREFIX=$DJGPP_TOP/lib/gcc/
# export
#pwd
make -f ../sys/msdos/Makefile2.cross
unset GCC_EXEC_PREFIX
#pwd
if [ -f ../lib/djgpp/cwsdpmi/bin/CWSDPMI.EXE ]; then
cp ../lib/djgpp/cwsdpmi/bin/CWSDPMI.EXE ../msdos-binary/CWSDPMI.EXE;
fi
# ls -l ../msdos-binary
cd ../msdos-binary
zip -9 ../lib/NH370DOS.ZIP *
cd ../
ls -l lib/NH370DOS.ZIP

View File

@@ -127,7 +127,7 @@ ifdef CROSS_TO_MSDOS
# Source from http://www.lua.org/ftp/lua-5.4.0.tar.gz # Source from http://www.lua.org/ftp/lua-5.4.0.tar.gz
#================================================================= #=================================================================
CFLAGS += -DCROSSCOMPILE -DCROSSCOMPILE_HOST CFLAGS += -DCROSSCOMPILE
# #
# Override the build tools and some obj files to # Override the build tools and some obj files to
@@ -195,7 +195,7 @@ ifdef CROSS_TO_AMIGA
# Amiga m68k from https://github.com/bebbo/amiga-gcc # Amiga m68k from https://github.com/bebbo/amiga-gcc
#================================================================= #=================================================================
CFLAGS += -DCROSSCOMPILE -DCROSSCOMPILE_HOST CFLAGS += -DCROSSCOMPILE
# #
# Override the build tools and some obj files to # Override the build tools and some obj files to

View File

@@ -253,12 +253,10 @@ U = $(UTIL)^\
!IFDEF TEST_CROSSCOMPILE !IFDEF TEST_CROSSCOMPILE
HOST=_host HOST=_host
CROSSCOMPILE_TARGET= -DCROSSCOMPILE_TARGET CROSSCOMPILE_TARGET= -DCROSSCOMPILE_TARGET
CROSSCOMPILE_HOST= -DCROSSCOMPILE_HOST
CROSSCOMPILE= -DCROSSCOMPILE CROSSCOMPILE= -DCROSSCOMPILE
!ELSE !ELSE
HOST= HOST=
CROSSCOMPILE_TARGET= CROSSCOMPILE_TARGET=
CROSSCOMPILE_HOST=
CROSSCOMPILE= CROSSCOMPILE=
!ENDIF !ENDIF
@@ -1064,7 +1062,7 @@ $(U)nhsizes3.exe: $(O)nhsizes3.o
$(link) $(lflagsBuild) -out:$@ $(O)nhsizes.o $(O)panic$(HOST).o $(O)alloc$(HOST).o $(link) $(lflagsBuild) -out:$@ $(O)nhsizes.o $(O)panic$(HOST).o $(O)alloc$(HOST).o
$(O)nhsizes3.o: $(CONFIG_H) nhsizes3.c $(O)nhsizes3.o: $(CONFIG_H) nhsizes3.c
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ nhsizes3.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -Fo$@ nhsizes3.c
$(U)makedefs.exe: $(MAKEDEFSOBJS) $(U)makedefs.exe: $(MAKEDEFSOBJS)
@echo Linking $(@:\=/) @echo Linking $(@:\=/)
@@ -1077,8 +1075,8 @@ $(O)makedefs.o: $(U)makedefs.c $(SRC)\mdlib.c $(CONFIG_H) $(INCL)\permonst.h \
$(INCL)\dlb.h $(INCL)\dlb.h
@if not exist $(OBJ)\*.* echo creating directory $(OBJ:\=/) @if not exist $(OBJ)\*.* echo creating directory $(OBJ:\=/)
@if not exist $(OBJ)\*.* mkdir $(OBJ) @if not exist $(OBJ)\*.* mkdir $(OBJ)
@$(cc) -DENUM_PM $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ $(U)makedefs.c @$(cc) -DENUM_PM $(cflagsBuild) $(CROSSCOMPILE) -Fo$@ $(U)makedefs.c
# @$(cc) -DENUM_PM $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /EP -Fo$@ $(U)makedefs.c >makedefs.c.preprocessed # @$(cc) -DENUM_PM $(cflagsBuild) $(CROSSCOMPILE) /EP -Fo$@ $(U)makedefs.c >makedefs.c.preprocessed
# #
# date.h should be remade every time any of the source or include # date.h should be remade every time any of the source or include
@@ -1109,7 +1107,7 @@ $(U)uudecode.exe: $(O)uudecode.o
@$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(O)uudecode.o @$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(O)uudecode.o
$(O)uudecode.o: $(SSYS)\uudecode.c $(O)uudecode.o: $(SSYS)\uudecode.c
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /D_CRT_SECURE_NO_DEPRECATE -Fo$@ $(SSYS)\uudecode.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) /D_CRT_SECURE_NO_DEPRECATE -Fo$@ $(SSYS)\uudecode.c
$(MSWSYS)\NetHack.ico : $(U)uudecode.exe $(MSWSYS)\nhico.uu $(MSWSYS)\NetHack.ico : $(U)uudecode.exe $(MSWSYS)\nhico.uu
chdir $(MSWSYS) chdir $(MSWSYS)
@@ -1208,7 +1206,7 @@ $(U)dlb.exe: $(DLBOBJ_HOST) $(O)dlb$(HOST).o
!IFDEF TEST_CROSSCOMPILE !IFDEF TEST_CROSSCOMPILE
$(O)dlb$(HOST).o: $(O)dlb_main$(HOST).o $(O)alloc$(HOST).o $(O)panic$(HOST).o $(INCL)\dlb.h $(O)dlb$(HOST).o: $(O)dlb_main$(HOST).o $(O)alloc$(HOST).o $(O)panic$(HOST).o $(INCL)\dlb.h
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /Fo$@ $(SRC)\dlb.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) /Fo$@ $(SRC)\dlb.c
!ENDIF !ENDIF
$(O)dlb.o: $(O)dlb_main.o $(O)alloc.o $(O)panic.o $(INCL)\dlb.h $(O)dlb.o: $(O)dlb_main.o $(O)alloc.o $(O)panic.o $(INCL)\dlb.h
@@ -1216,11 +1214,11 @@ $(O)dlb.o: $(O)dlb_main.o $(O)alloc.o $(O)panic.o $(INCL)\dlb.h
!IFDEF TEST_CROSSCOMPILE !IFDEF TEST_CROSSCOMPILE
$(O)dlb_main$(HOST).o: $(UTIL)\dlb_main.c $(INCL)\config.h $(INCL)\dlb.h $(O)dlb_main$(HOST).o: $(UTIL)\dlb_main.c $(INCL)\config.h $(INCL)\dlb.h
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /Fo$@ $(UTIL)\dlb_main.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) /Fo$@ $(UTIL)\dlb_main.c
!ENDIF !ENDIF
$(O)dlb_main.o: $(UTIL)\dlb_main.c $(INCL)\config.h $(INCL)\dlb.h $(O)dlb_main.o: $(UTIL)\dlb_main.c $(INCL)\config.h $(INCL)\dlb.h
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) /Fo$@ $(UTIL)\dlb_main.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) /Fo$@ $(UTIL)\dlb_main.c
$(DAT)\porthelp: $(MSWSYS)\porthelp $(DAT)\porthelp: $(MSWSYS)\porthelp
@copy $(MSWSYS)\porthelp $@ >nul @copy $(MSWSYS)\porthelp $@ >nul
@@ -1277,28 +1275,28 @@ $(U)tilemap.exe: $(O)tilemap.o
@$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(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) $(O)tilemap.o: $(WSHR)\tilemap.c $(HACK_H)
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ $(WSHR)\tilemap.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -Fo$@ $(WSHR)\tilemap.c
$(O)tiletx32.o: $(WSHR)\tilemap.c $(HACK_H) $(O)tiletx32.o: $(WSHR)\tilemap.c $(HACK_H)
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /DTILETEXT /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tilemap.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) /DTILETEXT /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tilemap.c
$(O)tiletxt.o: $(WSHR)\tilemap.c $(HACK_H) $(O)tiletxt.o: $(WSHR)\tilemap.c $(HACK_H)
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) /DTILETEXT -Fo$@ $(WSHR)\tilemap.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) /DTILETEXT -Fo$@ $(WSHR)\tilemap.c
$(O)gifread.o: $(WSHR)\gifread.c $(CONFIG_H) $(TILE_H) $(O)gifread.o: $(WSHR)\gifread.c $(CONFIG_H) $(TILE_H)
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) -Fo$@ $(WSHR)\gifread.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -I$(WSHR) -Fo$@ $(WSHR)\gifread.c
$(O)gifrd32.o: $(WSHR)\gifread.c $(CONFIG_H) $(TILE_H) $(O)gifrd32.o: $(WSHR)\gifread.c $(CONFIG_H) $(TILE_H)
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\gifread.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\gifread.c
$(O)ppmwrite.o: $(WSHR)\ppmwrite.c $(CONFIG_H) $(TILE_H) $(O)ppmwrite.o: $(WSHR)\ppmwrite.c $(CONFIG_H) $(TILE_H)
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) -Fo$@ $(WSHR)\ppmwrite.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -I$(WSHR) -Fo$@ $(WSHR)\ppmwrite.c
$(O)tiletext.o: $(WSHR)\tiletext.c $(CONFIG_H) $(TILE_H) $(O)tiletext.o: $(WSHR)\tiletext.c $(CONFIG_H) $(TILE_H)
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) -Fo$@ $(WSHR)\tiletext.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -I$(WSHR) -Fo$@ $(WSHR)\tiletext.c
$(O)tilete32.o: $(WSHR)\tiletext.c $(CONFIG_H) $(TILE_H) $(O)tilete32.o: $(WSHR)\tiletext.c $(CONFIG_H) $(TILE_H)
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tiletext.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -I$(WSHR) /DTILE_X=32 /DTILE_Y=32 -Fo$@ $(WSHR)\tiletext.c
#========================================== #==========================================
# Optional Tile Utilities # Optional Tile Utilities
@@ -1357,10 +1355,10 @@ $(U)til2bm32.exe: $(O)til2bm32.o $(TEXT_IO32)
<< <<
$(O)tile2bmp.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h $(O)tile2bmp.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) /DPACKED_FILE /Fo$@ $(WSHR)\tile2bmp.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -I$(WSHR) /DPACKED_FILE /Fo$@ $(WSHR)\tile2bmp.c
$(O)til2bm32.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h $(O)til2bm32.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) /DPACKED_FILE /DTILE_X=32 /DTILE_Y=32 /Fo$@ $(WSHR)\tile2bmp.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -I$(WSHR) /DPACKED_FILE /DTILE_X=32 /DTILE_Y=32 /Fo$@ $(WSHR)\tile2bmp.c
$(U)tile2x11.exe: $(O)tile2x11.o $(O)tiletext.o $(O)tiletxt.o $(O)alloc.o \ $(U)tile2x11.exe: $(O)tile2x11.o $(O)tiletext.o $(O)tiletxt.o $(O)alloc.o \
$(O)panic.o $(O)monst.o $(O)objects.o $(O)panic.o $(O)monst.o $(O)objects.o
@@ -1377,7 +1375,7 @@ $(U)tile2x11.exe: $(O)tile2x11.o $(O)tiletext.o $(O)tiletxt.o $(O)alloc.o \
<< <<
$(O)tile2x11.o: $(X11)\tile2x11.c $(HACK_H) $(TILE_H) $(INCL)\tile2x11.h $(O)tile2x11.o: $(X11)\tile2x11.c $(HACK_H) $(TILE_H) $(INCL)\tile2x11.h
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -I$(WSHR) /DPACKED_FILE /Fo$@ $(X11)\tile2x11.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -I$(WSHR) /DPACKED_FILE /Fo$@ $(X11)\tile2x11.c
$(SRC)\x11tiles: $(U)tile2x11.exe $(WSHR)\monsters.txt $(WSHR)\objects.txt \ $(SRC)\x11tiles: $(U)tile2x11.exe $(WSHR)\monsters.txt $(WSHR)\objects.txt \
$(WSHR)\other.txt \ $(WSHR)\other.txt \
@@ -1509,7 +1507,7 @@ $(O)sfstruct.o: $(HACK_H) $(SRC)\sfstruct.c
!IFDEF TEST_CROSSCOMPILE !IFDEF TEST_CROSSCOMPILE
$(O)mdlib$(HOST).o: $(SRC)\mdlib.c $(O)mdlib$(HOST).o: $(SRC)\mdlib.c
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ $(SRC)\mdlib.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -Fo$@ $(SRC)\mdlib.c
!ENDIF !ENDIF
$(O)mdlib.o: $(SRC)\mdlib.c $(O)mdlib.o: $(SRC)\mdlib.c
@@ -1523,13 +1521,13 @@ $(O)mdlib.o: $(SRC)\mdlib.c
# These have dual-roles and need to be build for host and target platforms. # These have dual-roles and need to be build for host and target platforms.
# #
$(O)panic_host.o: $(U)panic.c $(CONFIG_H) $(O)panic_host.o: $(U)panic.c $(CONFIG_H)
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ $(U)panic.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -Fo$@ $(U)panic.c
$(O)panic.o: $(U)panic.c $(CONFIG_H) $(O)panic.o: $(U)panic.c $(CONFIG_H)
@$(cc) $(cflagsBuild) -Fo$@ $(U)panic.c @$(cc) $(cflagsBuild) -Fo$@ $(U)panic.c
$(O)drawing_host.o: drawing.c $(CONFIG_H) $(O)drawing_host.o: drawing.c $(CONFIG_H)
@$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_HOST) -Fo$@ drawing.c @$(cc) $(cflagsBuild) $(CROSSCOMPILE) -Fo$@ drawing.c
$(O)drawing.o: drawing.c $(CONFIG_H) $(INCL)\color.h $(INCL)\rm.h \ $(O)drawing.o: drawing.c $(CONFIG_H) $(INCL)\color.h $(INCL)\rm.h \
$(INCL)\objclass.h $(INCL)\monsym.h $(INCL)\objclass.h $(INCL)\monsym.h

View File

@@ -1135,13 +1135,13 @@ do_date()
char githash[BUFSZ], gitbranch[BUFSZ]; char githash[BUFSZ], gitbranch[BUFSZ];
char *c, cbuf[60], buf[BUFSZ]; char *c, cbuf[60], buf[BUFSZ];
const char *ul_sfx; const char *ul_sfx;
#if defined(CROSSCOMPILE) && defined(CROSSCOMPILE_HOST) #if defined(CROSSCOMPILE) && !defined(CROSSCOMPILE_TARGET)
int steps = 0; int steps = 0;
const char ind[] = " "; const char ind[] = " ";
const char *xpref = "HOST_"; const char *xpref = "HOST_";
#else #else
const char *xpref = (const char *) 0; const char *xpref = (const char *) 0;
#endif /* CROSSCOMPILE && CROSSCOMPILE_HOST */ #endif /* CROSSCOMPILE && !CROSSCOMPILE_TARGET */
/* before creating date.h, make sure that xxx_GRAPHICS and /* before creating date.h, make sure that xxx_GRAPHICS and
DEFAULT_WINDOW_SYS have been set up in a viable fashion */ DEFAULT_WINDOW_SYS have been set up in a viable fashion */
@@ -1243,10 +1243,10 @@ do_date()
ul_sfx = "L"; ul_sfx = "L";
#endif #endif
#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_HOST) #if !defined(CROSSCOMPILE) || !defined(CROSSCOMPILE_TARGET)
Fprintf(ofp, Fprintf(ofp,
"\n#if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_HOST)\n"); "\n#if !defined(CROSSCOMPILE) || !defined(CROSSCOMPILE_TARGET)\n");
#endif /* CROSSCOMPILE || CROSSCOMPILE_HOST */ #endif /* CROSSCOMPILE || !CROSSCOMPILE_TARGET */
if (date_via_env) if (date_via_env)
Fprintf(ofp, "#define SOURCE_DATE_EPOCH (%lu%s) /* via getenv() */\n", Fprintf(ofp, "#define SOURCE_DATE_EPOCH (%lu%s) /* via getenv() */\n",
(unsigned long) clocktim, ul_sfx); (unsigned long) clocktim, ul_sfx);
@@ -1282,13 +1282,13 @@ do_date()
Fprintf(ofp, "#define NETHACK_GIT_BRANCH \"%s\"\n", gitbranch); Fprintf(ofp, "#define NETHACK_GIT_BRANCH \"%s\"\n", gitbranch);
} }
if (xpref && get_gitinfo(githash, gitbranch)) { if (xpref && get_gitinfo(githash, gitbranch)) {
Fprintf(ofp, "#else /* !CROSSCOMPILE || CROSSCOMPILE_HOST */\n"); Fprintf(ofp, "#else /* !CROSSCOMPILE || !CROSSCOMPILE_TARGET */\n");
Fprintf(ofp, "#define NETHACK_%sGIT_SHA \"%s\"\n", Fprintf(ofp, "#define NETHACK_%sGIT_SHA \"%s\"\n",
xpref, githash); xpref, githash);
Fprintf(ofp, "#define NETHACK_%sGIT_BRANCH \"%s\"\n", Fprintf(ofp, "#define NETHACK_%sGIT_BRANCH \"%s\"\n",
xpref, gitbranch); xpref, gitbranch);
} }
Fprintf(ofp, "#endif /* !CROSSCOMPILE || CROSSCOMPILE_HOST */\n"); Fprintf(ofp, "#endif /* !CROSSCOMPILE || !CROSSCOMPILE_TARGET */\n");
Fprintf(ofp, "\n"); Fprintf(ofp, "\n");
#ifdef AMIGA #ifdef AMIGA
{ {