Place the last known Amiga cross-compile effort into the outdated folder
tree.
This shell script was meant to be run from the top of the NetHack tree:
outdated/sys/unix/cross-amiga.sh
It attempts two things:
1. obtain the source-code for the Amiga cross compiler and build it
from scratch. Warning: it pulls a number of the required packages
from the internet and installs them. (Linux was tested, but the macOS
usage never was).
2. move the outdated hints file and hints include files for Amiga
into the live tree for someone attempting to resurrect an Amiga port.
It doesn't tinker with any of the files needed for the NetHack-3.7
work-in-progess for other platforms.
Once the shell script completes those things, the cross-compile build
steps would be:
i) cd sys/unix ; sh setup.sh hints/cross-amiga ; cd ../..
ii) make CROSS_TO_AMIGA=1 all
iii) make CROSS_TO_AMIGA=1 package
225 lines
7.8 KiB
Plaintext
225 lines
7.8 KiB
Plaintext
#===============-=================================================
|
|
# NetHack 3.7 include/cross-amiga-pre
|
|
#
|
|
# Cross-compiling -PRE section for amiga
|
|
#
|
|
|
|
CROSS=1
|
|
CROSS_TO_AMIGA=1
|
|
BUILD_TARGET_LUA=1
|
|
BUILD_PDCURSES=1
|
|
CROSS_SHARED=1
|
|
override TARGET = amiga
|
|
override TARGETDIR=../targets/$(TARGET)
|
|
override TARGETPFX = $(TARGETDIR)/
|
|
override TARGET_LIBS=
|
|
|
|
ifdef CROSS
|
|
override PREGAME=
|
|
override BUILDMORE=
|
|
override CLEANMORE=
|
|
override PACKAGE=
|
|
endif
|
|
|
|
ifdef BUILD_TARGET_LUA
|
|
#===============-=================================================
|
|
# LUA library
|
|
# Source from http://www.lua.org/ftp/lua-5.4.4.tar.gz
|
|
#=================================================================
|
|
LUA_VERSION ?=5.4.4
|
|
LUATOP ?= ../lib/lua-$(LUA_VERSION)
|
|
LUASRCDIR ?= $(LUATOP)/src
|
|
LUAOBJFILES1 = $(TARGETPFX)lapi.o $(TARGETPFX)lauxlib.o \
|
|
$(TARGETPFX)lbaselib.o $(TARGETPFX)lcode.o \
|
|
$(TARGETPFX)lcorolib.o $(TARGETPFX)lctype.o \
|
|
$(TARGETPFX)ldblib.o
|
|
ifeq "$(LUA_VERSION)" "5.3.5"
|
|
LUAOBJFILES1 += $(TARGETPFX)lbitlib.o
|
|
endif
|
|
LUAOBJFILES2 = $(TARGETPFX)ldebug.o $(TARGETPFX)ldo.o $(TARGETPFX)ldump.o \
|
|
$(TARGETPFX)lfunc.o $(TARGETPFX)lgc.o $(TARGETPFX)linit.o \
|
|
$(TARGETPFX)liolib.o $(TARGETPFX)llex.o
|
|
LUAOBJFILES3 = $(TARGETPFX)lmathlib.o $(TARGETPFX)lmem.o \
|
|
$(TARGETPFX)loadlib.o $(TARGETPFX)lobject.o \
|
|
$(TARGETPFX)lopcodes.o $(TARGETPFX)loslib.o \
|
|
$(TARGETPFX)lparser.o $(TARGETPFX)lstate.o
|
|
LUAOBJFILES4 = $(TARGETPFX)lstring.o $(TARGETPFX)lstrlib.o \
|
|
$(TARGETPFX)ltable.o $(TARGETPFX)ltablib.o \
|
|
$(TARGETPFX)ltm.o $(TARGETPFX)lundump.o \
|
|
$(TARGETPFX)lutf8lib.o $(TARGETPFX)lvm.o $(TARGETPFX)lzio.o
|
|
LUALIBOBJS = $(LUAOBJFILES1) $(LUAOBJFILES2) $(LUAOBJFILES3) $(LUAOBJFILES4)
|
|
LUACROSSLIB = $(TARGETPFX)lua$(subst .,,$(LUA_VERSION)).a
|
|
LUAINCL = -I$(LUASRCDIR)
|
|
override BUILDMORE += $(LUACROSSLIB)
|
|
override CLEANMORE += rm -f $(LUACROSSLIB) ;
|
|
override TARGET_LIBS += $(LUACROSSLIB) -lm
|
|
else
|
|
LUAINCL=
|
|
endif # BUILD_TARGET_LUA
|
|
|
|
ifdef BUILD_PDCURSES
|
|
#===============-=================================================
|
|
# PD Curses library
|
|
#===============-=================================================
|
|
ifdef WANT_WIN_CURSES
|
|
PDCTOP = ../lib/pdcurses
|
|
PDCURSESDEF= -I../lib/pdcurses -I../lib/pdcurses/dos \
|
|
-D"CURSES_GRAPHICS" -D"CURSES_BRIEF_INCLUDE"
|
|
PDCLIBOBJ1= $(TARGETPFX)addch.o $(TARGETPFX)addchstr.o \
|
|
$(TARGETPFX)addstr.o $(TARGETPFX)attr.o \
|
|
$(TARGETPFX)beep.o $(TARGETPFX)bkgd.o \
|
|
$(TARGETPFX)border.o $(TARGETPFX)clear.o \
|
|
$(TARGETPFX)color.o $(TARGETPFX)delch.o \
|
|
$(TARGETPFX)deleteln.o $(TARGETPFX)getch.o \
|
|
$(TARGETPFX)getstr.o $(TARGETPFX)getyx.o \
|
|
$(TARGETPFX)inch.o
|
|
PDCLIBOBJ2= $(TARGETPFX)inchstr.o $(TARGETPFX)initscr.o \
|
|
$(TARGETPFX)inopts.o $(TARGETPFX)insch.o \
|
|
$(TARGETPFX)insstr.o $(TARGETPFX)instr.o \
|
|
$(TARGETPFX)kernel.o $(TARGETPFX)keyname.o \
|
|
$(TARGETPFX)mouse.o $(TARGETPFX)move.o \
|
|
$(TARGETPFX)outopts.o $(TARGETPFX)overlay.o
|
|
PDCLIBOBJ3= $(TARGETPFX)pad.o $(TARGETPFX)panel.o $(TARGETPFX)printw.o \
|
|
$(TARGETPFX)refresh.o $(TARGETPFX)scanw.o \
|
|
$(TARGETPFX)scr_dump.o $(TARGETPFX)scroll.o \
|
|
$(TARGETPFX)slk.o $(TARGETPFX)termattr.o
|
|
PDCLIBOBJ4= $(TARGETPFX)touch.o $(TARGETPFX)util.o $(TARGETPFX)window.o \
|
|
$(TARGETPFX)debug.o
|
|
PDCLIBOBJS = $(PDCLIBOBJ1) $(PDCLIBOBJ2) $(PDCLIBOBJ3) $(PDCLIBOBJ4)
|
|
PDCLIB = $(TARGETPFX)pdclib.a
|
|
PDCINCL = -I$(PDCTOP) -I$(PDCTOP)/pdcurses
|
|
PDCOBJS = $(TARGETPFX)pdcclip.o $(TARGETPFX)pdcdisp.o \
|
|
$(TARGETPFX)pdcgetsc.o $(TARGETPFX)pdckbd.o \
|
|
$(TARGETPFX)pdcscrn.o $(TARGETPFX)pdcsetsc.o \
|
|
$(TARGETPFX)pdcutil.o
|
|
override TARGET_LIBS += $(PDCLIB)
|
|
ifdef CROSS_TO_MSDOS
|
|
endif
|
|
override BUILDMORE += $(PDCLIB)
|
|
override CLEANMORE += rm -f $(PDCLIB) ;
|
|
else #WANT_WIN_CURSES
|
|
PDCURSESDEF=
|
|
PDCLIBOBJS=
|
|
PDCOBJS=
|
|
PDCLIB=
|
|
PDCINCL=
|
|
endif # WANT_WIN_CURSES
|
|
endif # BUILD_PDCURSES
|
|
|
|
ifdef CROSS_TO_AMIGA
|
|
#===============-=================================================
|
|
# AmigaOS m68k cross-compile recipe
|
|
#===============-=================================================
|
|
# Uses an Amiga M68K cross-compiler on linux or macOS.
|
|
#
|
|
# 1. You can obtain the cross-compiler for your system via:
|
|
# sys/amiga/fetch-cross.sh
|
|
# 2. Then
|
|
# make CROSS_TO_AMIGAOS=1 WANT_WIN_TTY=1 WANT_WIN_CURSES=1 all
|
|
#
|
|
# Amiga m68k from https://github.com/bebbo/amiga-gcc
|
|
#=================================================================
|
|
|
|
CFLAGS += -DCROSSCOMPILE
|
|
|
|
#
|
|
# Override the build tools and some obj files to
|
|
# reflect the amiga-gccs cross-compiler.
|
|
#
|
|
TOOLTOP = /opt/amiga/bin
|
|
#TOOLARCH = -m68020 -mcrt=clib2
|
|
#TOOLARCH = -m68020 #newlib
|
|
TOOLARCH = -m68020 -noixemul
|
|
override REGEXOBJ = $(TARGETPFX)cppregex.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 -O $(TOOLARCH) -I../include -I../outdated/include
|
|
override TARGET_CFLAGS = -c -O $(TOOLARCH) \
|
|
-I../include -I../outdated/include \
|
|
-I../outdated/sys/amiga -I../win/share \
|
|
$(LUAINCL) -DAMIGA -DUSE_TILES $(PDCURSESDEF) \
|
|
-DCROSSCOMPILE -DCROSSCOMPILE_TARGET -DCROSS_TO_AMIGA \
|
|
-DAMIGA_VERSION_STRING=\""VER: NetHack 3.7.0\""
|
|
# -DMICRO -DPATHLEN=31 -DFILENAME=80
|
|
override TARGET_CXXFLAGS = $(TARGET_CFLAGS)
|
|
ifeq "$(REGEXOBJ)" "$(TARGETPFX)cppregex.o"
|
|
override TARGET_LINK = $(TARGET_CXX)
|
|
else
|
|
override TARGET_LINK = $(TARGET_CC)
|
|
endif
|
|
override TARGET_LFLAGS= $(TOOLARCH)
|
|
#override TARGET_LIBS +=
|
|
VARDATND += nhtiles.bmp
|
|
override SYSSRC = ../outdated/sys/amiga/amidos.c ../outdated/sys/amiga/amigst.c \
|
|
../outdated/sys/amiga/amimenu.c ../outdated/sys/amiga/amirip.c \
|
|
../outdated/sys/amiga/amistack.c ../outdated/sys/amiga/amitty.c \
|
|
../outdated/sys/amiga/amiwind.c ../outdated/sys/amiga/clipwin.c \
|
|
../outdated/sys/amiga/colorwin.c \
|
|
../outdated/sys/amiga/winami.c ../outdated/sys/amiga/winchar.c \
|
|
../outdated/sys/amiga/winfuncs.c ../outdated/sys/amiga/winkey.c \
|
|
../outdated/sys/amiga/winamenu.c ../outdated/sys/amiga/winreq.c \
|
|
../outdated/sys/amiga/winstr.c ../sys/share/pcmain.c \
|
|
../win/share/bmptiles.c ../win/share/giftiles.c \
|
|
../win/share/tileset.c
|
|
# ../outdated/sys/amiga/xpm2iff.c
|
|
# ../outdated/sys/amiga/txt2iff.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
|
|
# $(TARGETPFX)xpm2iff.o
|
|
# ../util/txt2iff.o
|
|
override WINLIB=
|
|
override LUALIB=
|
|
override TOPLUALIB=
|
|
override GAMEBIN = $(TARGETPFX)nethack
|
|
override PACKAGE = amigapkg
|
|
override PREGAME += mkdir -p $(TARGETDIR) ;
|
|
override CLEANMORE += rm -r $(TARGETDIR) ;
|
|
# ../util/txt2iff
|
|
#
|
|
ifdef WANT_WIN_CURSES
|
|
# rules for pdcurses sdl1-specific files
|
|
$(TARGETPFX)%.o : $(PDCTOP)/sdl1/%.c
|
|
$(TARGET_CC) $(PDCINCL) $(TARGET_CFLAGS) -o$@ $<
|
|
endif # WANT_WIN_CURSES
|
|
# Rule for files in sys/amiga
|
|
$(TARGETPFX)%.o : ../outdated/sys/amiga/%.c
|
|
$(TARGET_CC) $(TARGET_CFLAGS) -o$@ $<
|
|
endif # CROSS_TO_AMIGA
|
|
#=================================================================
|
|
|
|
ifdef WANT_WIN_CURSES
|
|
ifdef BUILD_PDCURSES
|
|
# Rules for PDCurses files
|
|
$(TARGETPFX)%.o : $(PDCTOP)/pdcurses/%.c
|
|
$(TARGET_CC) $(PDCINCL) $(PDC_TARGET_CFLAGS) -c -o$@ $<
|
|
endif # BUILD_PDCURSES
|
|
endif # WANT_WIN_CURSES
|
|
|
|
ifdef CROSS_SHARED
|
|
# Rules for win/share files
|
|
$(TARGETPFX)%.o : ../win/share/%.c
|
|
$(TARGET_CC) $(TARGET_CFLAGS) -c -o$@ $<
|
|
# Rules for util files heading for target
|
|
$(TARGETPFX)%.o : ../util/%.c
|
|
$(TARGET_CC) $(TARGET_CFLAGS) -c -o$@ $<
|
|
endif # CROSS_SHARED
|
|
|
|
ifdef BUILD_TARGET_LUA
|
|
# Rule for LUA files
|
|
$(TARGETPFX)%.o : $(LUATOP)/src/%.c
|
|
$(TARGET_CC) $(LUA_TARGET_CFLAGS) -c $(LUA_FLAGS) -o$@ $<
|
|
endif # BUILD_TARGET_LUA
|
|
#
|
|
# End of cross-compiling -PRE section for Amiga
|
|
#===============-=================================================
|
|
|