In previous versions of NetHack, setting -DUSE_TILES enabled the tile
support, while setting -DSUPPRESS_GRAPHICS produced a NetHack that
would write its TTY output to standard output, and rely on ANSI.SYS or
similar to do screen control. (USE_TILES is now TILES_IN_GLYPHMAP.)
This change ensures that the current NetHack can be built the same
ways.
One twist is that previous NetHacks would drop all support for graphical
modes when tiles were not supported. Thus sys/msdos/vid{vga,vesa}.c have
very disordered use of TILES_IN_GLYPHMAP. There was no need to check
this. But now, the graphical modes also support Unicode. A non-tiled
build should have the graphical modes, with only the text functions
present, provided that ENHANCED_SYMBOLS is defined.
Some unused and locally used symbols were cleaned up along the way.
617 lines
21 KiB
Plaintext
617 lines
21 KiB
Plaintext
#===============-=================================================
|
|
# NetHack 5.0 include/cross-pre2 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-5.0 $
|
|
#
|
|
# Cross-compiling -PRE section 2
|
|
#
|
|
|
|
ifdef BUILD_TARGET_LUA
|
|
#===============-=================================================
|
|
# LUA library
|
|
# Source from http://www.lua.org/ftp/lua-5.4.8.tar.gz
|
|
#=================================================================
|
|
LUA_VERSION ?=5.4.8
|
|
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)
|
|
LIBLM = -lm
|
|
else
|
|
LUAINCL=
|
|
endif # BUILD_TARGET_LUA
|
|
|
|
ifdef BUILD_PDCURSES
|
|
#===============-=================================================
|
|
# PD Curses library
|
|
#===============-=================================================
|
|
ifdef WANT_WIN_CURSES
|
|
PDCTOP = ../lib/pdcursesmod
|
|
ifdef WANT_DOSVGA
|
|
PDCPORT = $(PDCTOP)/dosvga
|
|
PDCURSESDEF= -I$(PDCTOP) -I$(PDCPORT) \
|
|
-D"CURSES_GRAPHICS" -D"CURSES_BRIEF_INCLUDE" \
|
|
-D"PDC_WIDE" -D"PDC_RGB" -D"CURSES_UNICODE"
|
|
else
|
|
PDCPORT = $(PDCTOP)/dos
|
|
PDCURSESDEF= -I$(PDCTOP) -I$(PDCPORT) \
|
|
-D"CURSES_GRAPHICS" -D"CURSES_BRIEF_INCLUDE"
|
|
endif # WANT_DOSVGA
|
|
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)
|
|
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 BUILD_TARGET_NCURSES
|
|
#=================================================================
|
|
# ncurses
|
|
# Source from https://invisible-island.net/datafiles/release/ncurses.tar.gz
|
|
#
|
|
#=================================================================
|
|
NCURSESLIBDIR ?= $(TARGETPFX)ncurses/lib
|
|
NCURSESLIB ?= $(NCURSESLIBDIR)/libncurses.a
|
|
#override TARGET_LIBS += $(NCURSESLIB)
|
|
override BUILDMORE += $(NCURSESLIB)
|
|
endif # BUILD_TARGET_NCURSES
|
|
|
|
ifdef CROSS_TO_MSDOS
|
|
#=================================================================
|
|
# MSDOS cross-compile recipe
|
|
#=================================================================
|
|
# Uses an MSDOS djgpp cross-compiler on linux or macos.
|
|
#
|
|
# 1. You can obtain the cross-compiler for your system via:
|
|
# sys/msdos/fetch-cross.sh
|
|
# 2. Then
|
|
# make CROSS_TO_MSDOS=1 WANT_WIN_TTY=1 WANT_WIN_CURSES=1 all
|
|
#
|
|
# Source from http://www.lua.org/ftp/lua-5.4.8.tar.gz
|
|
#=================================================================
|
|
|
|
CFLAGS += -DCROSSCOMPILE
|
|
|
|
#
|
|
# Override the build tools and some obj files to
|
|
# reflect the msdos djgpp cross-compiler.
|
|
#
|
|
TOOLTOP1 = ../lib/djgpp/bin
|
|
TOOLTOP2 = ../lib/djgpp/i586-pc-msdosdjgpp/bin
|
|
override TARGET_CC = $(TOOLTOP1)/i586-pc-msdosdjgpp-gcc
|
|
override TARGET_CXX = $(TOOLTOP1)/i586-pc-msdosdjgpp-g++
|
|
override TARGET_AR = $(TOOLTOP1)/i586-pc-msdosdjgpp-gcc-ar
|
|
override TARGET_STUBEDIT = ../lib/djgpp/i586-pc-msdosdjgpp/bin/stubedit
|
|
override GENTILEOFILE = $(TARGETPFX)tile.o
|
|
override UUIDOBJ =
|
|
ifdef MAKEFILE_SRC
|
|
FLDR=../
|
|
endif
|
|
ifdef MAKEFILE_TOP
|
|
FLDR=
|
|
endif
|
|
dostargetexes=$(FLDR)lib/djgpp/target/bin/
|
|
#
|
|
ifdef DOSBOX
|
|
dosbox=$(DOSBOX)
|
|
endif
|
|
ifdef dosbox
|
|
dosboxgameid=NH$(NHV)
|
|
dosboxtop=$(dosbox)
|
|
dosboxnhfolder=$(dosboxtop)/$(dosboxgameid)
|
|
dosboxnhsrc=$(dosboxnhfolder)/NHSRC
|
|
dosboxconfigfile=NETHACK.CNF
|
|
dosgdburl=http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/gdb801b.zip
|
|
WANT_DEBUG=1
|
|
DEPLOY=deploytodosbox
|
|
endif # dosbox
|
|
#
|
|
ifeq "$(WANT_DEBUG)" "1"
|
|
DBGFLAGS = -g
|
|
else
|
|
DBGFLAGS =
|
|
endif
|
|
MSDOS_GCC_CFLAGS = -Wall -Wextra -Wreturn-type -Wunused -Wformat \
|
|
-Wswitch -Wshadow -Wwrite-strings -Wmissing-declarations \
|
|
-Wunreachable-code \
|
|
-Wimplicit -Wimplicit-function-declaration \
|
|
-Wimplicit-int -Wmissing-prototypes -Wold-style-definition \
|
|
-Wstrict-prototypes -Wnonnull -Wformat-overflow \
|
|
-Wmissing-parameter-type -Wimplicit-fallthrough
|
|
#-Wno-missing-field-initializers -Wno-cast-function-type
|
|
#-Wno-format
|
|
MSDOS_PEDANTIC = -pedantic
|
|
MSDOS_GPP_CFLAGS = -Wall -Wextra -Wno-missing-field-initializers -Wreturn-type \
|
|
-Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings -pedantic \
|
|
-Wmissing-declarations -Wformat-nonliteral -Wunreachable-code \
|
|
-Wno-maybe-uninitialized
|
|
ifdef NO_GRAPHICS
|
|
MSDOS_GRAPH_CONFIG = -DSUPPRESS_GRAPHICS
|
|
# Curses will need the fonts, but not font.c
|
|
ifndef WANT_DOSVGA
|
|
SKIP_FONTS = 1
|
|
endif
|
|
SKIP_FONT_C = 1
|
|
SKIP_TILES = 1
|
|
else ifdef NO_TILES
|
|
MSDOS_GRAPH_CONFIG =
|
|
# without SKIP_FONT_C; if ENHANCED_SYMBOLS is set, we'll need the fonts
|
|
SKIP_TILES = 1
|
|
else
|
|
MSDOS_GRAPH_CONFIG = -DTILES_IN_GLYPHMAP
|
|
endif
|
|
MSDOS_TARGET_CFLAGS = -c -O $(DBGFLAGS) -I../include -I../sys/msdos -I../win/share \
|
|
$(LUAINCL) -DDLB $(PDCURSESDEF) $(MSDOS_GRAPH_CONFIG) \
|
|
-DCROSSCOMPILE -DCROSSCOMPILE_TARGET -DCROSS_TO_MSDOS \
|
|
-D_NAIVE_DOS_REGS \
|
|
$(MSDOS_GCC_CFLAGS) $(SNDCFLAGS)
|
|
MSDOS_TARGET_CXXFLAGS = -c -O $(DBGFLAGS) -I../include -I../sys/msdos -I../win/share \
|
|
$(LUAINCL) -DDLB $(PDCURSESDEF) \
|
|
-DUSE_TILES -DCROSSCOMPILE -DCROSSCOMPILE_TARGET -DCROSS_TO_MSDOS \
|
|
-D_NAIVE_DOS_REGS \
|
|
$(MSDOS_GPP_CFLAGS) $(SNDCFLAGS)
|
|
PDCINCL += -I$(PDCPORT)
|
|
PDC_TARGET_CFLAGS = $(MSDOS_TARGET_CFLAGS) -Wno-unused-parameter \
|
|
-Wno-missing-prototypes
|
|
ifdef SKIP_FONTS_IN_CI
|
|
FONTTARGETS=
|
|
else ifdef SKIP_FONTS
|
|
FONTTARGETS=
|
|
else
|
|
FONTVER = terminus-font-4.49.1
|
|
FONTTOP = ../lib/$(FONTVER)
|
|
DOSFONT = ../sys/msdos/fonts
|
|
FONTTARGETS = $(DOSFONT)/ter-u16b.psf $(DOSFONT)/ter-u16v.psf \
|
|
$(DOSFONT)/ter-u18b.psf $(DOSFONT)/ter-u20b.psf \
|
|
$(DOSFONT)/ter-u22b.psf $(DOSFONT)/ter-u24b.psf \
|
|
$(DOSFONT)/ter-u28b.psf $(DOSFONT)/ter-u32b.psf
|
|
endif
|
|
LUABIN = ../lib/lua-$(LUA_VERSION)/src/lua
|
|
LUA_TARGET_CFLAGS = $(MSDOS_TARGET_CFLAGS)
|
|
override TARGET_CFLAGS = $(MSDOS_TARGET_CFLAGS) $(MSDOS_PEDANTIC)
|
|
override TARGET_CXXFLAGS = $(MSDOS_TARGET_CXXFLAGS)
|
|
ifdef CPLUSPLUS_NEEDED
|
|
override TARGET_LINK = $(TOOLTOP1)/i586-pc-msdosdjgpp-g++
|
|
else
|
|
override TARGET_LINK = $(TOOLTOP1)/i586-pc-msdosdjgpp-gcc
|
|
endif
|
|
override TARGET_LFLAGS=
|
|
override TARGET_LIBS += -lpc $(LIBLM)
|
|
override SYSSRC = ../sys/share/pcmain.c ../sys/msdos/msdos.c \
|
|
../sys/share/pcsys.c ../sys/share/pctty.c \
|
|
../sys/share/pcunix.c ../sys/msdos/video.c \
|
|
../sys/msdos/vidtxt.c ../sys/msdos/pckeys.c \
|
|
../sys/msdos/vidvga.c ../sys/msdos/vidvesa.c
|
|
override SYSOBJ= $(TARGETPFX)pcmain.o $(TARGETPFX)msdos.o \
|
|
$(TARGETPFX)pcsys.o $(TARGETPFX)pctty.o \
|
|
$(TARGETPFX)pcunix.o $(TARGETPFX)video.o \
|
|
$(TARGETPFX)vidtxt.o $(TARGETPFX)pckeys.o \
|
|
$(TARGETPFX)vidvga.o $(TARGETPFX)vidvesa.o
|
|
ifndef SKIP_FONT_C
|
|
override SYSSRC += ../sys/msdos/font.c
|
|
override SYSOBJ += $(TARGETPFX)font.o
|
|
endif
|
|
ifndef SKIP_TILES
|
|
override SYSSRC += ../win/share/bmptiles.c ../win/share/giftiles.c \
|
|
../win/share/tileset.c
|
|
override SYSOBJ += $(TARGETPFX)bmptiles.o $(TARGETPFX)giftiles.o \
|
|
$(TARGETPFX)tileset.o
|
|
endif
|
|
override WINLIB=
|
|
override LUALIB=
|
|
override LUALIBS=
|
|
override LUATOPLIB=
|
|
override WINX11OBJ=
|
|
override GAMEBIN = $(TARGETPFX)nethack.exe
|
|
override RECOVERBIN = $(TARGETPFX)recover.exe
|
|
override SFCTOOLBIN = $(TARGETPFX)sfctool.exe
|
|
override PACKAGE = dospkg
|
|
override PREGAME += mkdir -p $(TARGETDIR) ; make $(TARGETPFX)exceptn.o ;
|
|
override CLEANMORE += rm -f -r $(TARGETDIR) ; rm -f -r $(FONTTARGETS) ;
|
|
ifeq "$(WANT_DEBUG)" "1"
|
|
GDBEXE=$(dostargetexes)gdb.exe
|
|
GDBBAT=NHGDB.BAT
|
|
GDBCMDLINE=directory nhsrc/src nhsrc/include nhsrc/sys/msdos \
|
|
nhsrc/sys/share nhsrc/win/curses \
|
|
nhsrc/win/tty
|
|
else
|
|
GDBEXE=
|
|
GDBBAT=
|
|
GDBCMDLINE=
|
|
endif
|
|
ifndef SKIP_TILES
|
|
VARDATND += nhtiles.bmp
|
|
NHTILES = ../dat/nhtiles.bmp
|
|
else
|
|
NHTILES =
|
|
endif
|
|
#
|
|
ifdef WANT_WIN_CURSES
|
|
# rules for pdcurses dos-specific files
|
|
$(TARGETPFX)%.o : $(PDCPORT)/%.c
|
|
$(TARGET_CC) $(PDCINCL) $(PDC_TARGET_CFLAGS) -o$@ $<
|
|
endif # WANT_WIN_CURSES
|
|
#
|
|
# Rule for files in sys/msdos
|
|
$(TARGETPFX)%.o : ../sys/msdos/%.c
|
|
$(TARGET_CC) $(TARGET_CFLAGS) -o$@ $<
|
|
#
|
|
# Rule for files in util
|
|
$(TARGETPFX)%.o : ../util/%.c
|
|
$(TARGET_CC) $(TARGET_CFLAGS) -o$@ $<
|
|
|
|
endif # CROSS_TO_MSDOS
|
|
#=================================================================
|
|
|
|
|
|
ifdef CROSS_TO_WASM
|
|
#===============-=================================================
|
|
# WASM
|
|
# originally from https://github.com/NetHack/NetHack/pull/385
|
|
#===============-=================================================
|
|
#also set a make variable flagging this as a crosscompile
|
|
#
|
|
#WASM_DEBUG = 1
|
|
WASM_DATA_DIR = $(TARGETPFX)wasm-data
|
|
WASM_TARGET = $(TARGETPFX)nethack.js
|
|
EMCC_LFLAGS =
|
|
#EMCC_LFLAGS += -s SINGLE_FILE=1
|
|
EMCC_LFLAGS += -DHACKDIR=\"$(HACKDIR)\"
|
|
EMCC_LFLAGS += -s WASM=1
|
|
EMCC_LFLAGS += -s ALLOW_TABLE_GROWTH
|
|
EMCC_LFLAGS += -s ASYNCIFY -s ASYNCIFY_IMPORTS='["local_callback"]'
|
|
EMCC_LFLAGS += -O3
|
|
EMCC_LFLAGS += -s MODULARIZE
|
|
EMCC_LFLAGS += -s EXPORTED_FUNCTIONS='["_main", "_shim_graphics_set_callback", "_repopulate_perminvent", "_malloc"]'
|
|
EMCC_LFLAGS += -s EXPORTED_RUNTIME_METHODS='["cwrap", "ccall", "addFunction", \
|
|
"removeFunction", "UTF8ToString", "stringToUTF8", "getValue", \
|
|
"setValue", "ENV", "FS", "IDBFS"]'
|
|
EMCC_LFLAGS += -s ERROR_ON_UNDEFINED_SYMBOLS=0
|
|
EMCC_LFLAGS += -s EXPORT_ES6=1
|
|
EMCC_LFLAGS += -lidbfs.js
|
|
# XXX: the "@/" at the end of "--embed-file" tells emscripten to embed the files
|
|
# in the root directory, otherwise they will end up in the $(WASM_DATA_DIR) path
|
|
EMCC_LFLAGS += --embed-file $(WASM_DATA_DIR)@/
|
|
# For a list of EMCC settings:
|
|
# https://github.com/emscripten-core/emscripten/blob/master/src/settings.js
|
|
#
|
|
# WASM C flags
|
|
EMCC_CFLAGS =
|
|
EMCC_CFLAGS += -Wall
|
|
EMCC_CFLAGS += -Werror
|
|
EMCC_CFLAGS += -DNO_SIGNAL
|
|
#EMCC_CFLAGS += -s DISABLE_EXCEPTION_CATCHING=0
|
|
EMCC_DEBUG_LFLAGS += -s ASSERTIONS=1
|
|
EMCC_DEBUG_LFLAGS += -s ASSERTIONS=2
|
|
EMCC_DEBUG_LFLAGS += -s STACK_OVERFLOW_CHECK=2
|
|
EMCC_DEBUG_LFLAGS += -s SAFE_HEAP=1
|
|
EMCC_DEBUG_LFLAGS += -s LLD_REPORT_UNDEFINED=1
|
|
EMCC_DEBUG_LFLAGS += -s EXCEPTION_DEBUG=1
|
|
#EMCC_DEBUG_CFLAGS += -fsanitize=undefined -fsanitize=address -fsanitize=leak
|
|
EMCC_DEBUG_LFLAGS += -s NO_EXIT_RUNTIME
|
|
# XXX: if --profiling isn't included then any error dumps 10MB of WASM to the screen rather than a useful message
|
|
EMCC_DEBUG_LFLAGS += --profiling
|
|
EMCC_PROD_CFLAGS += -O3
|
|
ifdef WASM_DEBUG
|
|
EMCC_CFLAGS += $(EMCC_DEBUG_CFLAGS)
|
|
EMCC_LFLAGS += $(EMCC_DEBUG_LFLAGS)
|
|
else
|
|
EMCC_CFLAGS += $(EMCC_PROD_CFLAGS)
|
|
EMCC_LFLAGS += $(EMCC_PROD_LFLAGS)
|
|
endif
|
|
#
|
|
# Override the build tools and some obj files to
|
|
# reflect emscripten
|
|
override TARGET_CC = emcc
|
|
override TARGET_CXX = emcc
|
|
override TARGET_AR = emar
|
|
WASM_CFLAGS = -Wall -Wextra -Wno-missing-field-initializers
|
|
WASM_CFLAGS += -Wimplicit -Wreturn-type -Wunused -Wformat -Wswitch
|
|
WASM_CFLAGS += -Wshadow
|
|
# WASM_CFLAGS += -Wwrite-strings
|
|
# WASM_CFLAGS += -Werror
|
|
# Nethack C flags
|
|
WASM_CFLAGS += $(WINCFLAGS) #WINCFLAGS set from multiw-2.500
|
|
WASM_CFLAGS += -DSYSCF -DSYSCF_FILE=\"/sysconf\" -DSECURE -DNHUUID
|
|
#WASM_CFLAGS += -g -I../include
|
|
WASM_CFLAGS += -I../include
|
|
# NetHack sources control
|
|
WASM_CFLAGS += -DDLB
|
|
WASM_CFLAGS += -DHACKDIR=\"$(HACKDIR)\"
|
|
WASM_CFLAGS += -DDEFAULT_WINDOW_SYS=\"shim\" \
|
|
#override TARGET_CFLAGS += -DGREPPATH=\"/usr/bin/grep\"
|
|
WASM_CFLAGS += -DNOMAIL
|
|
WASM_CFLAGS += $(LUAINCL)
|
|
WASM_CFLAGS += -DNOTTYGRAPHICS -DSHIM_GRAPHICS -DLIBNH
|
|
WASM_CFLAGS += -DCROSSCOMPILE
|
|
WASM_TARGET_CFLAGS = -DCROSSCOMPILE_TARGET -DCROSS_TO_WASM
|
|
# For src Makefile
|
|
override CFLAGS = $(WASM_CFLAGS)
|
|
override TARGET_CFLAGS = $(EMCC_CFLAGS) $(WASM_CFLAGS) $(WASM_TARGET_CFLAGS)
|
|
#
|
|
LUA_TARGET_CFLAGS = $(TARGET_CFLAGS)
|
|
override TARGET_CXXFLAGS = $(TARGET_CFLAGS)
|
|
override TARGET_LINK = $(TARGET_CC)
|
|
override TARGET_LFLAGS= $(EMCC_LFLAGS)
|
|
override SYSSRC = ../sys/libnh/libnhmain.c \
|
|
../sys/share/ioctl.c ../sys/share/unixtty.c \
|
|
../sys/unix/unixunix.c ../sys/unix/unixres.c \
|
|
../win/shim/winshim.c
|
|
override SYSOBJ= $(TARGETPFX)libnhmain.o \
|
|
$(TARGETPFX)ioctl.o $(TARGETPFX)unixtty.o \
|
|
$(TARGETPFX)unixunix.o $(TARGETPFX)unixres.o \
|
|
$(TARGETPFX)winshim.o
|
|
override WINLIB = emranlib
|
|
override LUALIB=
|
|
override LUATOPLIB=
|
|
override REGEXOBJ = $(TARGETPFX)posixregex.o
|
|
override WINOBJ=
|
|
override UUIDOBJ=
|
|
# don't bother Making regular NetHack executable
|
|
override GAME=
|
|
# the real VARDAT hasn't been defined yet for use in ALLDEP override
|
|
WASM_DAT = bogusmon data engrave epitaph oracles quest.lua rumors
|
|
WASMDEP = include/nhlua.h $(WASM_DAT) spec_levs check-dlb
|
|
override ALLDEP = $(WASMDEP) wasm
|
|
override PREGAME += mkdir -p $(TARGETDIR)/wasm-data ;
|
|
override CLEANMORE += rm -rf $(TARGETDIR) ;
|
|
RANLIB=$(EMRANLIB)
|
|
#VARDATND += nhtiles.bmp
|
|
# Rule for file in sys/unix
|
|
$(TARGETPFX)%.o : ../sys/unix/%.c
|
|
$(TARGET_CC) $(TARGET_CFLAGS) -c -o$@ $<
|
|
# Rule for file in sys/libnh
|
|
$(TARGETPFX)%.o : ../sys/libnh/%.c
|
|
$(TARGET_CC) $(TARGET_CFLAGS) -c -o$@ $<
|
|
# Rule for files in win/shim
|
|
$(TARGETPFX)%.o : ../win/shim/%.c
|
|
$(TARGET_CC) $(TARGET_CFLAGS) -c -o$@ $<
|
|
endif # CROSS_TO_WASM
|
|
|
|
|
|
ifdef CROSS_TO_MIPS
|
|
#================================================================
|
|
# MIPS cross-compile recipe
|
|
#================================================================
|
|
# Uses an MIPS linux cross-compiler on linux or macos.
|
|
#
|
|
# 1. You can obtain the cross-compiler for ubuntu via:
|
|
# sudo apt -y install gcc-mipsel-linux-gnu g++-mipsel-linux-gnu
|
|
# For macOS, perhaps check for a mips cross-compiler on
|
|
# home-brew or macports.
|
|
#
|
|
# 2. Then
|
|
# make CROSS_TO_MIPS=1 WANT_WIN_TTY=1 WANT_WIN_CURSES=1 all
|
|
#
|
|
#=================================================================
|
|
|
|
CFLAGS += -DCROSSCOMPILE
|
|
|
|
#
|
|
# Override the build tools and some obj files to
|
|
# reflect the mips cross-compiler.
|
|
#
|
|
override TARGET_CC = mipsel-linux-gnu-gcc
|
|
override TARGET_CXX = CXX=mipsel-linux-gnu-g++
|
|
override TARGET_AR = mipsel-linux-gnu-ar
|
|
MIPS_TARGET = $(TARGETPFX)nethack
|
|
#override TARGET_LINK = mipsel-linux-gnu-ld
|
|
MIPS_TARGET_CFLAGS = -c -O -I../include -I../sys/unix -I../win/share \
|
|
$(LUAINCL) -DDLB \
|
|
-DCROSSCOMPILE -DCROSSCOMPILE_TARGET \
|
|
-DCROSS_TO_MIPS \
|
|
-DCURSES_GENL_PUTMIXED \
|
|
-Wall -Wextra -Wno-missing-field-initializers -Wreturn-type -Wunused \
|
|
-Wformat -Wswitch -Wshadow -Wwrite-strings \
|
|
-Wimplicit -Wimplicit-function-declaration -Wimplicit-int \
|
|
-Wmissing-parameter-type -Wold-style-definition -Wstrict-prototypes \
|
|
-Wno-unused-result
|
|
MIPS_TARGET_CXXFLAGS = -c -O -I../include -I../sys/unix -I../win/share \
|
|
$(LUAINCL) -DDLB \
|
|
-DUSE_TILES -DCROSSCOMPILE -DCROSSCOMPILE_TARGET -DCROSS_TO_MIPS \
|
|
-Wall -Wextra -Wno-missing-field-initializers -Wreturn-type -Wunused \
|
|
-Wformat -Wswitch -Wshadow -Wwrite-strings -Wno-maybe-uninitialized
|
|
override TARGET_CFLAGS = $(MIPS_TARGET_CFLAGS) -Wmissing-declarations \
|
|
-Wmissing-prototypes -pedantic -Wmissing-declarations \
|
|
-Wformat-nonliteral
|
|
override TARGET_CXXFLAGS = $(MIPS_TARGET_CXXFLAGS)
|
|
ifdef CPLUSPLUS_NEEDED
|
|
override TARGET_LINK = mipsel-linux-gnu-gcc
|
|
else
|
|
override TARGET_LINK = mipsel-linux-gnu-g++
|
|
endif
|
|
override TARGET_LFLAGS=
|
|
override SYSOBJ = $(TARGETPFX)ioctl.o $(TARGETPFX)unixmain.o $(TARGETPFX)unixtty.o \
|
|
$(TARGETPFX)unixunix.o $(TARGETPFX)unixres.o
|
|
override WINLIB = $(NCURSESLIB)
|
|
override LUALIB=
|
|
override LUALIBS=
|
|
override LUATOPLIB=
|
|
override GAMEBIN=$(MIPS_TARGET)
|
|
override RECOVERBIN = $(TARGETPFX)recover
|
|
override PACKAGE = mipspkg
|
|
override PREGAME += mkdir -p $(TARGETDIR) ;
|
|
override CLEANMORE += rm -f -r $(TARGETDIR) ;
|
|
NCURSES_CONFIGURE_BUILD=i686-pc-linux-gnu
|
|
NCURSES_CONFIGURE_HOST=mipsel-linux-gnu
|
|
NCURSES_PLATFORM=MIPS
|
|
# Rule for file in sys/unix
|
|
#$(TARGETPFX)%.o : ../sys/unix/%.c
|
|
# $(TARGET_CC) $(TARGET_CFLAGS) -c -o$@ $<
|
|
# Rule for file in sys/share
|
|
#$(TARGETPFX)%.o : ../sys/share/%.c
|
|
# $(TARGET_CC) $(TARGET_CFLAGS) -c -o$@ $<
|
|
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.500
|
|
# 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 5.0.0"\"
|
|
override TARGET_CXXFLAGS = $(TARGET_CFLAGS)
|
|
override GENTILEOFILE = $(TARGETPFX)tile.o
|
|
LUA_TARGET_CFLAGS = $(TARGET_CFLAGS)
|
|
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/amimenu.c ../sys/amiga/amirip.c \
|
|
../sys/amiga/amistack.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)amirip.o $(TARGETPFX)amistack.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 LUATOPLIB=
|
|
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
|
|
$(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
|
|
#===============-=================================================
|
|
|