Merge branch 'amiga-port' of https://github.com/ingpaschke/NetHack into NetHack-3.7
This commit is contained in:
@@ -229,6 +229,113 @@ mipspkg: dodata $(GAMEBIN) $(TARGETPFX)recover
|
||||
@echo MIPS package zip file $(TARGETPFX)nh370mips.zip
|
||||
endif # CROSS_TO_MIPS
|
||||
|
||||
|
||||
ifdef CROSS_TO_AMIGA
|
||||
$(TARGETPFX)amidos.o : ../sys/amiga/amidos.c $(HACK_H)
|
||||
$(TARGETPFX)amigst.o : ../sys/amiga/amigst.c $(HACK_H)
|
||||
$(TARGETPFX)amirip.o : ../sys/amiga/amirip.c $(HACK_H)
|
||||
$(TARGETPFX)amistack.o : ../sys/amiga/amistack.c $(HACK_H)
|
||||
$(TARGETPFX)amitty.o : ../sys/amiga/amitty.c $(HACK_H)
|
||||
$(TARGETPFX)amiwind.o : ../sys/amiga/amiwind.c \
|
||||
../sys/amiga/amimenu.c $(HACK_H)
|
||||
$(TARGETPFX)winami.o : ../sys/amiga/winami.c $(HACK_H)
|
||||
$(TARGETPFX)winchar.o : ../sys/amiga/winchar.c tile.c $(HACK_H)
|
||||
$(TARGETPFX)winfuncs.o : ../sys/amiga/winfuncs.c $(HACK_H)
|
||||
$(TARGETPFX)winkey.o : ../sys/amiga/winkey.c $(HACK_H)
|
||||
$(TARGETPFX)winamenu.o : ../sys/amiga/winamenu.c $(HACK_H)
|
||||
$(TARGETPFX)winreq.o : ../sys/amiga/winreq.c \
|
||||
../sys/amiga/colorwin.c \
|
||||
../sys/amiga/clipwin.c $(HACK_H)
|
||||
$(TARGETPFX)winstr.o : ../sys/amiga/winstr.c $(HACK_H)
|
||||
$(GAMEBIN) : $(HOBJ) $(LUACROSSLIB)
|
||||
$(TARGET_LINK) $(TARGET_LFLAGS) -o $(GAMEBIN) \
|
||||
$(HOBJ) $(WINLIB) $(TARGET_LIBS)
|
||||
#
|
||||
# Host-side IFF tile conversion tools (run on Linux, produce Amiga IFF files)
|
||||
#
|
||||
AMISRC = ../sys/amiga
|
||||
|
||||
$(TARGETPFX)xpm2iff_host: $(AMISRC)/xpm2iff_host.c
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(TARGETPFX)tomb.iff: $(AMISRC)/grave16.xpm $(TARGETPFX)xpm2iff_host
|
||||
$(TARGETPFX)xpm2iff_host $(AMISRC)/grave16.xpm $@
|
||||
|
||||
$(TARGETPFX)bmp2iff_host: $(AMISRC)/bmp2iff_host.c
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
$(TARGETPFX)tiles16.iff: ../dat/nhtiles.bmp $(TARGETPFX)bmp2iff_host
|
||||
$(TARGETPFX)bmp2iff_host -planes 4 ../dat/nhtiles.bmp $@
|
||||
$(TARGETPFX)tiles32.iff: ../dat/nhtiles.bmp $(TARGETPFX)bmp2iff_host
|
||||
$(TARGETPFX)bmp2iff_host -planes 5 ../dat/nhtiles.bmp $@
|
||||
|
||||
AMITILES = $(TARGETPFX)tiles16.iff $(TARGETPFX)tiles32.iff $(TARGETPFX)tomb.iff
|
||||
|
||||
AMIREGEX_URL = https://github.com/garyhouston/regex.git
|
||||
AMIREGEX_SRCDIR = $(AMISRC)/regex
|
||||
|
||||
.PHONY: fetch-regex amigapkg amitiles
|
||||
|
||||
fetch-regex:
|
||||
@DSTDIR=sys/amiga/regex; \
|
||||
if [ ! -d src ]; then DSTDIR=../$$DSTDIR; fi; \
|
||||
if [ -f $$DSTDIR/regcomp.c ]; then \
|
||||
echo "BSD regex already present"; \
|
||||
else \
|
||||
echo "Fetching BSD regex from $(AMIREGEX_URL)"; \
|
||||
tmpdir=$$(mktemp -d) && \
|
||||
git clone --depth 1 $(AMIREGEX_URL) $$tmpdir && \
|
||||
cd $$tmpdir && \
|
||||
sh ./mkh -p regcomp.c > regcomp.ih && \
|
||||
sh ./mkh -p engine.c > engine.ih && \
|
||||
sh ./mkh -p regexec.c > regexec.ih && \
|
||||
sh ./mkh -p regerror.c > regerror.ih && \
|
||||
sh ./mkh -i _REGEX_H_ regex2.h regcomp.c \
|
||||
regexec.c regerror.c regfree.c > regex.h && \
|
||||
cd - > /dev/null && \
|
||||
mkdir -p $$DSTDIR && \
|
||||
for f in regcomp.c regexec.c regerror.c regfree.c \
|
||||
engine.c regex.h regex2.h cclass.h cname.h \
|
||||
utils.h regcomp.ih engine.ih regexec.ih \
|
||||
regerror.ih \
|
||||
COPYRIGHT; do \
|
||||
cp $$tmpdir/$$f $$DSTDIR/; \
|
||||
done && \
|
||||
rm -rf $$tmpdir && \
|
||||
echo "BSD regex installed in $$DSTDIR"; \
|
||||
fi
|
||||
amitiles: $(AMITILES)
|
||||
|
||||
UUDECODE = ../util/uudecode
|
||||
|
||||
../util/uudecode: ../sys/share/uudecode.c
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
|
||||
amigapkg: $(AMITILES) ../util/uudecode
|
||||
mkdir -p $(TARGETPFX)pkg/tiles $(TARGETPFX)pkg/hack
|
||||
cp $(GAMEBIN) $(TARGETPFX)pkg/nethack
|
||||
cp ../dat/nhdat $(TARGETPFX)pkg/nhdat
|
||||
cp ../dat/license $(TARGETPFX)pkg/license
|
||||
cp ../dat/symbols $(TARGETPFX)pkg/symbols
|
||||
cp $(TARGETPFX)tiles16.iff $(TARGETPFX)pkg/tiles/tiles16.iff
|
||||
cp $(TARGETPFX)tiles32.iff $(TARGETPFX)pkg/tiles/tiles32.iff
|
||||
cp $(TARGETPFX)tomb.iff $(TARGETPFX)pkg/tomb.iff
|
||||
cp ../sys/msdos/sysconf $(TARGETPFX)pkg/sysconf
|
||||
cp ../doc/nethack.txt $(TARGETPFX)pkg/nethack.txt
|
||||
( cd $(TARGETPFX)pkg && ../../../util/uudecode ../../../sys/amiga/amifont8.uu && mv 8 hack/8 )
|
||||
( cd $(TARGETPFX)pkg && ../../../util/uudecode ../../../sys/amiga/amifont.uu )
|
||||
cp $(AMISRC)/nethack.cnf $(TARGETPFX)pkg/nethack.cnf
|
||||
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/dflticon.uu && \
|
||||
../../../util/uudecode ../../../sys/amiga/dflticon.uu )
|
||||
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/NHinfo.uu && \
|
||||
../../../util/uudecode ../../../sys/amiga/NHinfo.uu )
|
||||
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/NewGame.uu && \
|
||||
../../../util/uudecode ../../../sys/amiga/NewGame.uu )
|
||||
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/HackWB.uu && \
|
||||
../../../util/uudecode ../../../sys/amiga/HackWB.uu )
|
||||
touch $(TARGETPFX)pkg/record
|
||||
( cd $(TARGETPFX)pkg && zip -9r ../NH370AMI.ZIP * )
|
||||
@echo amiga package zip file $(TARGETPFX)NH370AMI.ZIP
|
||||
endif # CROSS_TO_AMIGA
|
||||
|
||||
ifdef CROSS_SHARED
|
||||
# shared file dependencies
|
||||
$(TARGETPFX)pcmain.o : ../sys/share/pcmain.c $(HACK_H)
|
||||
|
||||
@@ -38,6 +38,16 @@ override TARGETPFX = $(TARGETDIR)/
|
||||
override TARGET_LIBS=
|
||||
endif
|
||||
|
||||
ifdef CROSS_TO_AMIGA
|
||||
CROSS=1
|
||||
BUILD_TARGET_LUA=1
|
||||
CROSS_SHARED=1
|
||||
override TARGET = amiga
|
||||
override TARGETDIR=../targets/$(TARGET)
|
||||
override TARGETPFX = $(TARGETDIR)/
|
||||
override TARGET_LIBS=
|
||||
endif
|
||||
|
||||
ifdef CROSS
|
||||
override PREGAME=
|
||||
override BUILDMORE=
|
||||
|
||||
@@ -460,6 +460,97 @@ NCURSES_PLATFORM=MIPS
|
||||
endif # CROSS_TO_MIPS
|
||||
#=================================================================
|
||||
|
||||
#=================================================================
|
||||
|
||||
ifdef CROSS_TO_AMIGA
|
||||
#===============-=================================================
|
||||
# AmigaOS m68k cross-compile recipe
|
||||
#===============-=================================================
|
||||
# Uses an Amiga M68K cross-compiler on linux or macOS.
|
||||
#
|
||||
# Cross-compiler: https://franke.ms/git/bebbo/amiga-gcc
|
||||
# Install to /opt/amiga, then:
|
||||
# sys/unix/setup.sh sys/unix/hints/linux.370
|
||||
# make fetch-lua
|
||||
# make CROSS_TO_AMIGA=1 fetch-regex
|
||||
# make CROSS_TO_AMIGA=1 all
|
||||
# make CROSS_TO_AMIGA=1 package
|
||||
#=================================================================
|
||||
|
||||
CFLAGS += -DCROSSCOMPILE
|
||||
|
||||
#
|
||||
# Override the build tools and some obj files to
|
||||
# reflect the amiga-gcc cross-compiler.
|
||||
#
|
||||
TOOLTOP = /opt/amiga/bin
|
||||
TOOLARCH = -m68000
|
||||
override REGEXOBJ = $(TARGETPFX)posixregex.o
|
||||
AMIREGEXOBJ = $(TARGETPFX)regcomp.o $(TARGETPFX)regexec.o \
|
||||
$(TARGETPFX)regerror.o $(TARGETPFX)regfree.o
|
||||
override TARGET_CC = $(TOOLTOP)/m68k-amigaos-gcc
|
||||
override TARGET_CXX = $(TOOLTOP)/m68k-amigaos-c++
|
||||
override TARGET_AR = $(TOOLTOP)/m68k-amigaos-ar
|
||||
override TARGET_STUBEDIT=
|
||||
override TARGET_CFLAGS = -c -O2 -noixemul $(TOOLARCH) \
|
||||
-include sys/types.h \
|
||||
-I../include \
|
||||
-I../sys/amiga -I../win/share \
|
||||
$(LUAINCL) -DAMIGA -DNOTTYGRAPHICS -DNO_TERMS -DNO_SIGNAL \
|
||||
-DTILES_IN_GLYPHMAP $(PDCURSESDEF) \
|
||||
-DCROSSCOMPILE -DCROSSCOMPILE_TARGET -DCROSS_TO_AMIGA \
|
||||
-DAMIGA_VERSION_STRING=\""VER: NetHack 3.7.0"\"
|
||||
override TARGET_CXXFLAGS = $(TARGET_CFLAGS)
|
||||
LUA_TARGET_CFLAGS = $(TARGET_CFLAGS) -DLUA_32BITS=1
|
||||
ifeq "$(REGEXOBJ)" "$(TARGETPFX)cppregex.o"
|
||||
override TARGET_LINK = $(TARGET_CXX)
|
||||
else
|
||||
override TARGET_LINK = $(TARGET_CC)
|
||||
endif
|
||||
override TARGET_LFLAGS= $(TOOLARCH) -noixemul -Wl,--allow-multiple-definition
|
||||
override TARGET_LIBS += $(LIBLM)
|
||||
VARDATND += nhtiles.bmp
|
||||
override SYSSRC = ../sys/amiga/amidos.c ../sys/amiga/amigst.c \
|
||||
../sys/amiga/amimenu.c ../sys/amiga/amirip.c \
|
||||
../sys/amiga/amistack.c ../sys/amiga/amitty.c \
|
||||
../sys/amiga/amiwind.c ../sys/amiga/clipwin.c \
|
||||
../sys/amiga/colorwin.c \
|
||||
../sys/amiga/winami.c ../sys/amiga/winchar.c \
|
||||
../sys/amiga/winfuncs.c ../sys/amiga/winkey.c \
|
||||
../sys/amiga/winamenu.c ../sys/amiga/winreq.c \
|
||||
../sys/amiga/winstr.c ../sys/share/pcmain.c \
|
||||
../win/share/bmptiles.c ../win/share/giftiles.c \
|
||||
../win/share/tileset.c
|
||||
override SYSOBJ = $(TARGETPFX)amidos.o $(TARGETPFX)amigst.o \
|
||||
$(TARGETPFX)amirip.o $(TARGETPFX)amistack.o \
|
||||
$(TARGETPFX)amitty.o $(TARGETPFX)amiwind.o \
|
||||
$(TARGETPFX)winami.o $(TARGETPFX)winchar.o \
|
||||
$(TARGETPFX)winfuncs.o $(TARGETPFX)winkey.o \
|
||||
$(TARGETPFX)winamenu.o $(TARGETPFX)winreq.o \
|
||||
$(TARGETPFX)winstr.o $(TARGETPFX)pcmain.o \
|
||||
$(TARGETPFX)bmptiles.o $(TARGETPFX)giftiles.o \
|
||||
$(TARGETPFX)tileset.o \
|
||||
$(AMIREGEXOBJ)
|
||||
override WINLIB=
|
||||
override LUALIB=
|
||||
override LUALIBS=
|
||||
override TOPLUALIB=
|
||||
override DLLIB=
|
||||
override WINOBJ=
|
||||
override GAMEBIN = $(TARGETPFX)nethack
|
||||
override PACKAGE = amigapkg
|
||||
override PREGAME += mkdir -p $(TARGETDIR) ;
|
||||
override CLEANMORE += rm -r $(TARGETDIR) ;
|
||||
#
|
||||
# Rule for files in sys/amiga
|
||||
$(TARGETPFX)%.o : ../sys/amiga/%.c
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) -o$@ $<
|
||||
# Rule for BSD regex in sys/amiga/regex
|
||||
$(TARGETPFX)%.o : ../sys/amiga/regex/%.c
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) -I../sys/amiga/regex -o$@ $<
|
||||
endif # CROSS_TO_AMIGA
|
||||
#=================================================================
|
||||
|
||||
ifdef WANT_WIN_CURSES
|
||||
ifdef BUILD_PDCURSES
|
||||
# Rules for PDCurses files
|
||||
|
||||
Reference in New Issue
Block a user