Add Makefile.mingw32 and Makefile.mingw32.depend
This commit is contained in:
808
sys/windows/Makefile.mingw32
Normal file
808
sys/windows/Makefile.mingw32
Normal file
@@ -0,0 +1,808 @@
|
||||
# NetHack 3.7 Makefile.mingw32
|
||||
# Copyright (c) 2022 by Michael Allison
|
||||
# NetHack may be freely redistributed. See license for details.
|
||||
#
|
||||
#==============================================================================
|
||||
#
|
||||
# Win32 Compilers Tested with this Makefile.mingw32:
|
||||
# mingw-w64
|
||||
# from:
|
||||
# https://sourceforge.net/p/mingw-w64/wiki2/GeneralUsageInstructions/
|
||||
# Toolchain for 32 and 64 bit Windows target
|
||||
#
|
||||
#==============================================================================
|
||||
# This is used for building two versions of NetHack:
|
||||
#
|
||||
# A tty port utilizing the Win32 Console I/O subsystem, Console
|
||||
# NetHack.
|
||||
#
|
||||
# A Win32 native port built on the Windows API, Graphical NetHack or
|
||||
# NetHackW.
|
||||
#
|
||||
# If you have any questions read the sys/windows/Install.windows file included
|
||||
# with the distribution.
|
||||
#
|
||||
#==============================================================================
|
||||
# DECISIONS SECTION
|
||||
#
|
||||
# Build Options Decisions
|
||||
#
|
||||
# There are currently 4 decisions that you can choose to make.
|
||||
# None of the 4 decisions are absolutely required because defaults are in place:
|
||||
# 1. Do you have git commands in your path and NetHack in a git repository?
|
||||
# 2. Where do you want your build results to end up?
|
||||
# 3. Do you want debug information in the executable?
|
||||
# 4. Do you want to explicitly override auto-detection of a 32-bit or 64-bit target?
|
||||
# 5. Do you want to include any optional interfaces in the port?
|
||||
# 5a) console without or with pdcurses
|
||||
# 5b) Windows
|
||||
#
|
||||
# Mandatory LUA source Location
|
||||
#
|
||||
# LUA source code or is required to build NetHack-3.7.
|
||||
# LUATOP must point to the location of the LUA sources.
|
||||
#
|
||||
#-----------------------------------------------------------------------------------------
|
||||
#=========================================================================================
|
||||
|
||||
#==============================================================================
|
||||
#
|
||||
# The default make target (so just typing 'mingw32-make').
|
||||
#
|
||||
|
||||
default: install
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# 1. Where do you want the game to be built (which folder)?
|
||||
# If not present prior to compilation it gets created.
|
||||
#
|
||||
|
||||
GAMEDIR = ../binary
|
||||
|
||||
#
|
||||
#---------------------------------------------------------------
|
||||
# 2. Do you want debug information in the executable?
|
||||
#
|
||||
|
||||
DEBUGINFO = N
|
||||
|
||||
#
|
||||
#---------------------------------------------------------------
|
||||
# 3. Do you want to explicitly override auto-detection of a 32-bit
|
||||
# or 64-bit executable (save files do not interchange currently)?
|
||||
#
|
||||
# It depends on which MSYS2 MinGW shell you are using.
|
||||
#
|
||||
#---------------------------------------------------------------
|
||||
# 4. Do you want additional GUI interfaces in the executable?
|
||||
# Make these Y to enable the GUIs. Win32 is always enabled,
|
||||
# and is the default.
|
||||
#
|
||||
|
||||
#4a Curses window port support
|
||||
#
|
||||
#
|
||||
# 4. Uncomment these and set them appropriately if you want to
|
||||
# include curses port support alongside TTY support in your
|
||||
# NetHack.exe binary.
|
||||
#
|
||||
# You'll have to set PDCURSES_H to the correct location of the
|
||||
# PDCurses header (.h) files and PDCURSES_C to the location
|
||||
# of your PDCurses C files which must already be resident on
|
||||
# your machine.
|
||||
#
|
||||
# ADD_CURSES=Y
|
||||
# PDCURSES_TOP=../submodules/pdcurses
|
||||
|
||||
#---------------------------------------------------------------
|
||||
ifndef LUA_VERSION
|
||||
LUAVER=5.4.3
|
||||
else
|
||||
LUAVER=$(LUA_VERSION)
|
||||
endif
|
||||
#---------------------------------------------------------------
|
||||
# Location of LUA
|
||||
#
|
||||
# Original source needs to be obtained from:
|
||||
# http://www.lua.org/ftp/lua-5.4.3.tar.gz
|
||||
#
|
||||
# This build assumes that the LUA sources are located
|
||||
# at the specified location. If they are actually elsewhere
|
||||
# you'll need to specify the correct spot below in order to
|
||||
# successfully build NetHack-3.7.
|
||||
#
|
||||
USE_LUADLL = Y
|
||||
WANT_LUAC = N
|
||||
LUATOP = ../submodules/lua
|
||||
#
|
||||
#==============================================================================
|
||||
# This marks the end of the BUILD DECISIONS section.
|
||||
#==============================================================================
|
||||
#
|
||||
#===============================================
|
||||
#======= End of Modification Section ===========
|
||||
#===============================================
|
||||
#
|
||||
################################################
|
||||
# #
|
||||
# Nothing below here should have to be changed.#
|
||||
# #
|
||||
################################################
|
||||
#
|
||||
#==============================================================================
|
||||
|
||||
SKIP_NETHACKW = N
|
||||
|
||||
#==============================================================================
|
||||
|
||||
# The version of the game this Makefile was designed for
|
||||
NETHACK_VERSION="3.7.0"
|
||||
|
||||
# A brief version for use in macros
|
||||
NHV1=$(subst .,,$(NETHACK_VERSION))
|
||||
NHV=$(subst ",,$(NHV1))
|
||||
|
||||
#
|
||||
# Source directories. Makedefs hardcodes these, don't change them.
|
||||
#
|
||||
|
||||
# INCL - NetHack include files
|
||||
# DAT - NetHack data files
|
||||
# DOC - NetHack documentation files
|
||||
# UTIL - Utility source
|
||||
# SRC - Main source
|
||||
# SSYS - Shared system files
|
||||
# MSWSYS - mswin specific files
|
||||
# TTY - window port files (tty)
|
||||
# MSWIN - window port files (win32)
|
||||
# WCURSES - window port files (curses)
|
||||
# WSHR - Tile support files
|
||||
# QT - QT window support files
|
||||
|
||||
INCL =../include
|
||||
DAT =../dat
|
||||
DOC =../doc
|
||||
UTIL =../util
|
||||
SRC =../src
|
||||
SSYS =../sys/share
|
||||
MSWSYS =../sys/windows
|
||||
TTY =../win/tty
|
||||
MSWIN =../win/win32
|
||||
WCURSES =../win/curses
|
||||
WSHR =../win/share
|
||||
QT =../win/Qt
|
||||
|
||||
#
|
||||
# Object directory.
|
||||
#
|
||||
|
||||
OBJ = o
|
||||
|
||||
#
|
||||
# Shorten up the location for some files
|
||||
#
|
||||
|
||||
O = $(OBJ)/
|
||||
|
||||
U = $(UTIL)/
|
||||
|
||||
# To store all the level files,
|
||||
# help files, etc. in a single library file.
|
||||
# USE_DLB = Y is left uncommented
|
||||
|
||||
USE_DLB = Y
|
||||
|
||||
#==========================================
|
||||
#==========================================
|
||||
# Setting up the compiler and linker
|
||||
# macros. All builds include the base ones.
|
||||
#==========================================
|
||||
#==========================================
|
||||
|
||||
ifdef TRAVIS_COMPILER
|
||||
cc = i686-w64-mingw32-gcc.exe
|
||||
ld = i686-w64-mingw32-gcc.exe
|
||||
rc = windres --target=pe-i386
|
||||
else
|
||||
cc = gcc -c
|
||||
ld = gcc
|
||||
ifeq "$(MSYSTEM)" "MINGW64"
|
||||
rc = windres --target=pe-x86-64
|
||||
else # MINGW32
|
||||
rc = windres --target=pe-i386
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# Handle user settings
|
||||
#
|
||||
CFLAGS = -mms-bitfields -I../include -I../sys/windows
|
||||
LDFLAGS =
|
||||
ifeq "$(DEBUGINFO)" "Y"
|
||||
CFLAGS += -g -D_DEBUG
|
||||
else
|
||||
CFLAGS += -DNDEBUG
|
||||
LDFLAGS += -s
|
||||
endif
|
||||
|
||||
ifeq "$(USE_DLB)" "Y"
|
||||
DLBFLG = -DDLB
|
||||
else
|
||||
DLBFLG =
|
||||
endif
|
||||
|
||||
COMMONDEF = -DWIN32 -DWINVER=0x0601 -D_WIN32_WINNT=0x0601
|
||||
DLLDEF = $(COMMONDEF) -DWIN32CON -D_WINDOWS -D_USRDLL -D_WINDLL
|
||||
CONSOLEDEF = $(COMMONDEF) -D_CONSOLE
|
||||
|
||||
# To build util targets
|
||||
CFLAGSU = $(CFLAGS) $(CONSOLEDEF) $(DLBFLG) -DWIN32CON -DMSWIN_GRAPHICS
|
||||
|
||||
LIBS = -lcomctl32 -lgdi32 -lole32 -lshell32 -luuid -lwinmm -lbcrypt
|
||||
|
||||
$(GAMEDIR):
|
||||
@mkdir -p $@
|
||||
|
||||
$(OBJ):
|
||||
@mkdir -p $@
|
||||
|
||||
CLEAN_DIR = $(GAMEDIR) $(OBJ)
|
||||
|
||||
#===============-=================================================
|
||||
# LUA library
|
||||
# Source from http://www.lua.org/ftp/lua-5.4.3.tar.gz
|
||||
#=================================================================
|
||||
|
||||
OLUA = $(O)lua
|
||||
LUASRC = $(LUATOP)
|
||||
LUAOBJS = $(addprefix $(OLUA)/, $(addsuffix .o, lapi lauxlib lbaselib lcode lcorolib lctype \
|
||||
ldblib ldebug ldo ldump lfunc lgc linit liolib llex lmathlib lmem \
|
||||
loadlib lobject lopcodes loslib lparser lstate lstring lstrlib ltable ltablib ltm \
|
||||
lundump lutf8lib lvm lzio))
|
||||
LUADLL = $(GAMEDIR)/lua-$(LUAVER).dll
|
||||
LUAIMP = $(OLUA)/lua-$(LUAVER).dll.a
|
||||
ULUADLL = $(U)$(notdir $(LUADLL))
|
||||
LUASTATIC = $(OLUA)/lua-$(LUAVER).a
|
||||
LUATARGETS = $(U)lua.exe
|
||||
|
||||
ifeq "$(USE_LUADLL)" "Y"
|
||||
LUALIB = $(LUAIMP)
|
||||
LUATARGETS += $(LUADLL) $(ULUADLL) $(LUAIMP)
|
||||
else
|
||||
LUALIB = $(LUASTATIC)
|
||||
LUATARGETS += $(LUASTATIC)
|
||||
endif
|
||||
|
||||
ifeq "$(WANT_LUAC)" "Y"
|
||||
LUATARGETS += $(U)luac.exe
|
||||
endif
|
||||
|
||||
lua: $(LUATARGETS)
|
||||
|
||||
$(U)lua.exe: $(OLUA)/lua.o $(LUALIB)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(LUADLL): $(ULUADLL)
|
||||
cp $< $@
|
||||
|
||||
$(ULUADLL) $(LUAIMP): $(LUAOBJS) | $(OLUA)
|
||||
$(ld) $(LDFLAGS) -fPIC -shared -Wl,--export-all-symbols -Wl,--add-stdcall-alias \
|
||||
-Wl,--out-implib=$(LUAIMP) $^ -o$(ULUADLL)
|
||||
|
||||
$(LUASTATIC): $(LUAOBJS) | $(OLUA)
|
||||
ar rcs $@ $^
|
||||
|
||||
$(OLUA)/%.o: $(LUASRC)/%.c | $(OLUA)
|
||||
$(cc) $(CFLAGS) $< -o$@
|
||||
|
||||
$(U)luac.exe: $(OLUA)/luac.o $(LUALIB)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(OLUA):
|
||||
@mkdir -p $@
|
||||
|
||||
CLEAN_DIR += $(OLUA)
|
||||
CLEAN_FILE += $(LUATARGETS) $(LUAOBJS) $(OLUA)/lua.o $(OLUA)/luac.o
|
||||
|
||||
#==========================================
|
||||
# nhlua.h
|
||||
#==========================================
|
||||
NHLUAH = $(INCL)/nhlua.h
|
||||
|
||||
$(NHLUAH):
|
||||
echo "/* nhlua.h - generated by top Makefile */" > $@
|
||||
@echo "#include \"$(LUASRC)/lua.h\"" >> $@
|
||||
@echo "LUA_API int (lua_error) (lua_State *L) NORETURN;" >>$@
|
||||
@echo "#include \"$(LUASRC)/lualib.h\"" >> $@
|
||||
@echo "#include \"$(LUASRC)/lauxlib.h\"" >> $@
|
||||
@echo "/*nhlua.h*/" >> $@
|
||||
|
||||
CLEAN_FILE += $(NHLUAH)
|
||||
|
||||
#==========================================
|
||||
# Makedefs
|
||||
#==========================================
|
||||
OM = $(O)makedefs
|
||||
MOBJS = $(addprefix $(OM)/, alloc.o date.o makedefs.o monst.o objects.o panic.o)
|
||||
MTARGETS = $(U)makedefs.exe
|
||||
|
||||
makedefs: $(MTARGETS)
|
||||
|
||||
$(U)makedefs.exe: $(MOBJS)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(OM)/%.o: $(SRC)/%.c $(NHLUAH) | $(OM)
|
||||
$(cc) $(CFLAGSU) -DENUM_PM $< -o$@
|
||||
|
||||
$(OM)/%.o: $(U)%.c $(NHLUAH) | $(OM)
|
||||
$(cc) $(CFLAGSU) -DENUM_PM $< -o$@
|
||||
|
||||
$(OM):
|
||||
@mkdir -p $@
|
||||
|
||||
CLEAN_DIR += $(OM)
|
||||
CLEAN_FILE += $(MTARGETS) $(MOBJS)
|
||||
|
||||
#==========================================
|
||||
# Recover
|
||||
#==========================================
|
||||
OR = $(OBJ)
|
||||
ROBJS = $(OR)/recover.o
|
||||
RTARGETS = $(GAMEDIR)/recover.txt $(GAMEDIR)/recover.exe
|
||||
|
||||
recover: $(RTARGETS)
|
||||
|
||||
$(GAMEDIR)/recover.txt: $(DOC)/recover.txt | $(GAMEDIR)
|
||||
cp $< $@
|
||||
|
||||
$(GAMEDIR)/recover.exe: $(ROBJS) | $(GAMEDIR)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(OR)/recover.o: $(U)recover.c | $(OR)
|
||||
$(cc) $(CFLAGSU) $< -o$@
|
||||
|
||||
# $(OR):
|
||||
# @mkdir -p $@
|
||||
|
||||
CLEAN_FILE += $(RTARGETS) $(ROBJS)
|
||||
|
||||
#==========================================
|
||||
# PDCurses
|
||||
#==========================================
|
||||
ifeq "$(ADD_CURSES)" "Y"
|
||||
OP = $(O)pdcurses
|
||||
PDCOBJS = $(addprefix $(OP)/, addch.o addchstr.o addstr.o attr.o beep.o bkgd.o border.o \
|
||||
clear.o color.o debug.o delch.o deleteln.o getch.o getstr.o getyx.o \
|
||||
inch.o inchstr.o initscr.o inopts.o insch.o insstr.o \
|
||||
kernel.o keyname.o mouse.o move.o outopts.o overlay.o \
|
||||
pad.o panel.o pdcclip.o pdcdisp.o pdcgetsc.o pdckbd.o pdcscrn.o pdcsetsc.o pdcutil.o printw.o \
|
||||
refresh.o scanw.o scr_dump.o scroll.o slk.o termattr.o touch.o util.o window.o)
|
||||
PDCSRC = $(PDCURSES_TOP)/pdcurses
|
||||
PDCWINCON = $(PDCURSES_TOP)/wincon
|
||||
PDCINCL = -I$(PDCURSES_TOP) -I$(PDCSRC) -I$(PDCWINCON)
|
||||
PDCLIB = $(O)pdcurses.a
|
||||
|
||||
pdcurses: $(PDCLIB)
|
||||
|
||||
$(PDCLIB): $(PDCOBJS)
|
||||
ar rcs $@ $^
|
||||
|
||||
$(OP)/%.o: $(PDCSRC)/%.c | $(OP)
|
||||
$(cc) $(CFLAGS) $(PDCINCL) -D_LIB $< -o$@
|
||||
|
||||
$(OP)/%.o: $(PDCWINCON)/%.c | $(OP)
|
||||
$(cc) $(CFLAGS) $(PDCINCL) -D_LIB $< -o$@
|
||||
|
||||
$(OP):
|
||||
@mkdir -p $@
|
||||
|
||||
CLEAN_DIR += $(OP)
|
||||
CLEAN_FILE += $(PDCLIB) $(PDCOBJS)
|
||||
endif
|
||||
|
||||
#==========================================
|
||||
# tile2bmp
|
||||
#==========================================
|
||||
OT = $(O)tile2bmp
|
||||
TOBJS = $(addprefix $(OT)/, drawing.o monst.o objects.o tile2bmp.o tiletext.o tiletxt.o)
|
||||
TTARGETS = $(U)tile2bmp.exe
|
||||
|
||||
tile2bmp: $(TTARGETS)
|
||||
|
||||
$(U)tile2bmp.exe: $(TOBJS)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(OT)/tiletxt.o: $(WSHR)/tilemap.c $(NHLUAH) | $(OT)
|
||||
$(cc) $(CFLAGSU) -DTILETEXT $< -o$@
|
||||
|
||||
$(OT)/%.o: $(WSHR)/%.c $(NHLUAH) | $(OT)
|
||||
$(cc) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(OT)/%.o: $(SRC)/%.c $(NHLUAH) | $(OT)
|
||||
$(cc) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(OT):
|
||||
@mkdir -p $@
|
||||
|
||||
CLEAN_DIR += $(OT)
|
||||
CLEAN_FILE += $(TTARGETS) $(TOBJS)
|
||||
|
||||
#==========================================
|
||||
# Optional Tile Utilities
|
||||
#==========================================
|
||||
TEXT_IO = $(addprefix $(OT)/, drawing.o monst.o objects.o tiletext.o tiletxt.o)
|
||||
TUCOMMON = $(OT)/alloc.o $(OT)/panic.o
|
||||
TUOBJS = $(TUCOMMON) $(TEXT_IO)
|
||||
|
||||
T32OBJS = $(OT)/tilete32.o $(OT)/tiletx32.o
|
||||
TEXT_IO32 = $(addprefix $(OT)/, drawing.o monst.o objects.o) $(T32OBJS)
|
||||
TU32OBJS = $(TUCOMMON) $(TEXT_IO32)
|
||||
|
||||
GIFOBJ = $(OT)/gifread.o
|
||||
GIF32OBJ = $(OT)/gifrd32.o
|
||||
PPMOBJ = $(OT)/ppmwrite.o
|
||||
BMP32OBJ = $(OT)/til2bm32.o
|
||||
TILEFILES32 = $(addprefix $(WSHR)/, mon32.txt obj32.txt oth32.txt)
|
||||
TUTARGETS = $(U)gif2txt.exe $(U)gif2tx32.exe $(U)txt2ppm.exe $(U)til2bm32.exe
|
||||
|
||||
tileutil: $(TUTARGETS)
|
||||
|
||||
$(U)gif2txt.exe: $(GIFOBJ) $(TUOBJS)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(U)gif2tx32.exe: $(GIF32OBJ) $(TU32OBJS)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(U)txt2ppm.exe: $(PPMOBJ) $(TUOBJS)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(U)til2bm32.exe: $(BMP32OBJ) $(TEXT_IO32)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(OT)/tilete32.o: $(WSHR)/tiletext.c $(NHLUAH) | $(OT)
|
||||
$(cc) $(CFLAGSU) -DTILE_X=32 -DTILE_Y=32 $< -o$@
|
||||
|
||||
$(OT)/tiletx32.o: $(WSHR)/tilemap.c $(NHLUAH) | $(OT)
|
||||
$(cc) $(CFLAGSU) -DTILETEXT -DTILE_X=32 -DTILE_Y=32 $< -o$@
|
||||
|
||||
$(GIF32OBJ): $(WSHR)/gifread.c $(NHLUAH) | $(OT)
|
||||
$(cc) $(CFLAGSU) -DTILE_X=32 -DTILE_Y=32 $< -o$@
|
||||
|
||||
$(BMP32OBJ): $(WSHR)/tile2bmp.c $(NHLUAH) | $(OT)
|
||||
$(cc) $(CFLAGSU) -DTILE_X=32 -DTILE_Y=32 $< -o$@
|
||||
|
||||
$(OT)/panic.o: $(UTIL)/panic.c $(NHLUAH) | $(OT)
|
||||
$(cc) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(MSWIN)/tiles32.bmp: $(U)til2bm32.exe $(TILEFILES32)
|
||||
$< $@
|
||||
|
||||
CLEAN_FILE += $(TUTARGETS) $(GIFOBJ) $(GIF32OBJ) $(PPMOBJ) $(BMP32OBJ) \
|
||||
$(T32OBJS) $(TUCOMMON)
|
||||
|
||||
#==========================================
|
||||
# tilemap
|
||||
#==========================================
|
||||
OTM = $(OBJ)/tilemap
|
||||
TMOBJS = $(addprefix $(OTM)/, drawing.o monst.o objects.o tilemap.o)
|
||||
TMTARGETS = $(SRC)/tile.c $(U)tilemap.exe
|
||||
|
||||
tilemap: $(SRC)/tile.c
|
||||
|
||||
$(SRC)/tile.c: $(U)tilemap.exe
|
||||
$<
|
||||
|
||||
$(U)tilemap.exe: $(TMOBJS)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(OTM)/tilemap.o: $(WSHR)/tilemap.c $(NHLUAH) | $(OTM)
|
||||
$(cc) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(OTM)/%.o: $(SRC)/%.c $(NHLUAH) | $(OTM)
|
||||
$(cc) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(OTM):
|
||||
@mkdir -p $@
|
||||
|
||||
CLEAN_DIR += $(OTM)
|
||||
# tilemap.exe will create tilemappings.lst
|
||||
CLEAN_FILE += $(TMTARGETS) $(TMOBJS) $(SRC)/tilemappings.lst
|
||||
|
||||
#==========================================
|
||||
# uudecode
|
||||
#==========================================
|
||||
OU = $(OBJ)
|
||||
UOBJS = $(OU)/uudecode.o
|
||||
UTARGETS = $(U)uudecode.exe $(MSWIN)/NetHack.ico
|
||||
|
||||
uudecode: $(UTARGETS)
|
||||
|
||||
$(U)uudecode.exe: $(UOBJS)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(OU)/uudecode.o: $(SSYS)/uudecode.c | $(OU)
|
||||
$(cc) $(CFLAGS) $(CONSOLEDEF) $< -o$@
|
||||
|
||||
# $(OU):
|
||||
# @mkdir -p $@
|
||||
|
||||
$(MSWIN)/NetHack.ico: $(U)uudecode.exe $(MSWSYS)/nhico.uu
|
||||
$^
|
||||
mv nethack.ico $@
|
||||
|
||||
CLEAN_FILE += $(UTARGETS) $(UOBJS)
|
||||
|
||||
#==========================================
|
||||
# Data librarian
|
||||
#==========================================
|
||||
ODLB = $(O)dlb
|
||||
DLBOBJS = $(addprefix $(ODLB)/, alloc.o dlb.o dlb_main.o panic.o)
|
||||
DAT_CLEAN = $(addprefix $(DAT)/, data oracles options porthelp rumors engrave epitaph bogusmon)
|
||||
DAT_NOCLEAN = $(addprefix $(DAT)/, help hh cmdhelp keyhelp history opthelp optmenu \
|
||||
wizhelp license engrave epitaph bogusmon tribute)
|
||||
DLBLST = $(DAT)/dlb.lst
|
||||
DLB = $(GAMEDIR)/nhdat$(NHV)
|
||||
DTARGETS = $(U)dlb.exe $(DAT_CLEAN) $(DLBLST) $(DLB)
|
||||
|
||||
dlb: $(DTARGETS)
|
||||
|
||||
$(U)dlb.exe: $(DLBOBJS)
|
||||
$(ld) $(LDFLAGS) $^ -o$@
|
||||
|
||||
$(ODLB)/%.o: $(SRC)/%.c $(NHLUAH) | $(ODLB)
|
||||
$(cc) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(ODLB)/%.o: $(U)%.c $(NHLUAH) | $(ODLB)
|
||||
$(cc) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(ODLB):
|
||||
@mkdir -p $@
|
||||
|
||||
$(DAT)/data: $(U)makedefs.exe $(DAT)/data.base
|
||||
$< -d
|
||||
|
||||
$(DAT)/oracles: $(U)makedefs.exe $(DAT)/oracles.txt
|
||||
$< -h
|
||||
|
||||
$(DAT)/options $(INCL)/date.h: $(U)makedefs.exe
|
||||
$< -v
|
||||
|
||||
$(DAT)/porthelp: $(MSWSYS)/porthelp
|
||||
cp $< $@
|
||||
|
||||
$(DAT)/rumors: $(U)makedefs.exe $(DAT)/rumors.tru $(DAT)/rumors.fal
|
||||
$< -r
|
||||
|
||||
$(DAT)/engrave: $(DAT)/bogusmon
|
||||
|
||||
$(DAT)/epitaph: $(DAT)/bogusmon
|
||||
|
||||
$(DAT)/bogusmon: $(U)makedefs.exe $(DAT)/bogusmon.txt $(DAT)/engrave.txt $(DAT)/epitaph.txt
|
||||
$< -s
|
||||
|
||||
$(DLBLST): | $(DAT_CLEAN) $(DAT_NOCLEAN)
|
||||
echo data > $(DLBLST)
|
||||
echo oracles >> $(DLBLST)
|
||||
echo options >> $(DLBLST)
|
||||
if [ -f $(DAT)/ttyoptions ] ; then echo ttyoptions >> $(DLBLST) ; fi
|
||||
if [ -f $(DAT)/guioptions ] ; then echo guioptions >> $(DLBLST) ; fi
|
||||
echo porthelp >> $(DLBLST)
|
||||
echo rumors >> $(DLBLST)
|
||||
echo help >> $(DLBLST)
|
||||
echo hh >> $(DLBLST)
|
||||
echo cmdhelp >> $(DLBLST)
|
||||
echo keyhelp >> $(DLBLST)
|
||||
echo history >> $(DLBLST)
|
||||
echo opthelp >> $(DLBLST)
|
||||
echo optmenu >> $(DLBLST)
|
||||
echo wizhelp >> $(DLBLST)
|
||||
echo license >> $(DLBLST)
|
||||
echo engrave >> $(DLBLST)
|
||||
echo epitaph >> $(DLBLST)
|
||||
echo bogusmon >> $(DLBLST)
|
||||
echo tribute >> $(DLBLST)
|
||||
cd $(DAT) ; ls -1 *.lua >> $(DLBLST)
|
||||
|
||||
$(DLB): $(U)dlb.exe $(DLBLST) | $(GAMEDIR)
|
||||
$(U)dlb.exe CcIf $(dir $(DLBLST)) $(notdir $(DLBLST)) $(SRC)/nhdat
|
||||
mv $(SRC)/nhdat$(NHV) $@
|
||||
|
||||
CLEAN_DIR += $(ODLB)
|
||||
CLEAN_FILE += $(DTARGETS) $(DLBOBJS) $(INCL)/date.h
|
||||
|
||||
#==========================================
|
||||
# nethackw
|
||||
#==========================================
|
||||
COREOBJS = $(addsuffix .o, allmain alloc apply artifact attrib ball bones botl cmd cppregex \
|
||||
date dbridge decl detect dig display dlb do do_name do_wear \
|
||||
dog dogmove dokick dothrow drawing dungeon \
|
||||
eat end engrave exper explode extralev files fountain \
|
||||
hack hacklib insight invent isaac64 light lock \
|
||||
mail makemon mcastu mdlib mhitm mhitu minion mklev mkmap mkmaze mkobj mkroom \
|
||||
mon mondata monmove monst mplayer mthrowu muse music \
|
||||
nhlan nhlobj nhlsel nhlua ntsound o_init objects objnam options \
|
||||
pager pickup pline polyself potion pray priest quest questpgr \
|
||||
random read rect region restore rip rnd role rumors \
|
||||
safeproc save sfstruct shk shknam sit sounds sp_lev spell steal steed stubs symbols sys \
|
||||
teleport timeout topten track trap u_init uhitm vault version vision \
|
||||
weapon were wield windmain windows windsys wizard worm worn write zap)
|
||||
|
||||
CFLAGSW = $(CFLAGS) $(COMMONDEF) $(DLBFLG) -DTILES -D_WINDOWS -DMSWIN_GRAPHICS -DSAFEPROCS -DNOTTYGRPHICS
|
||||
|
||||
ONHW = $(O)nethackw
|
||||
NHWONLY = $(addsuffix .o, mhaskyn mhdlg mhfont mhinput mhmain mhmap mhmenu \
|
||||
mhmsgwnd mhrip mhsplash mhstatus mhtext mswproc tile NetHackW win10)
|
||||
NHWOBJS = $(addprefix $(ONHW)/, $(COREOBJS) $(NHWONLY))
|
||||
TILEFILES = $(addprefix $(WSHR)/, monsters.txt objects.txt other.txt)
|
||||
BMPS = $(addprefix $(MSWIN)/, $(addsuffix .bmp, mnsel mnselcnt mnunsel petmark pilemark rip splash tiles))
|
||||
NHWRES = $(ONHW)/winres.o
|
||||
NHWTARGETS = $(GAMEDIR)/NetHackW.exe
|
||||
|
||||
nethackw: $(NHWTARGETS)
|
||||
|
||||
$(GAMEDIR)/NetHackW.exe: $(NHWOBJS) $(NHWRES) $(LUALIB) | $(GAMEDIR)
|
||||
$(ld) $(LDFLAGS) -mwindows $^ $(LIBS) -static -lstdc++ -o$@
|
||||
|
||||
$(ONHW)/%.o: $(SRC)/%.c $(NHLUAH) | $(ONHW)
|
||||
$(cc) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(ONHW)/cppregex.o: $(SSYS)/cppregex.cpp $(NHLUAH) | $(ONHW)
|
||||
$(cc) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(ONHW)/%.o: $(SSYS)/%.c $(NHLUAH) | $(ONHW)
|
||||
$(cc) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(ONHW)/stubs.o: $(MSWSYS)/stubs.c $(NHLUAH) | $(ONHW)
|
||||
$(cc) $(CFLAGSW) -DTTYSTUB $< -o$@
|
||||
|
||||
$(ONHW)/%.o: $(MSWSYS)/%.c $(NHLUAH) | $(ONHW)
|
||||
$(cc) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(ONHW)/%.o: $(MSWIN)/%.c $(NHLUAH) | $(ONHW)
|
||||
$(cc) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(ONHW)/%.o: $(WSHR)/%.c $(NHLUAH) | $(ONHW)
|
||||
$(cc) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(NHWRES): $(MSWIN)/NetHackW.rc $(BMPS) $(MSWIN)/NetHack.ico | $(ONHW)
|
||||
$(rc) --include-dir=$(MSWIN) --input=$< -o$@
|
||||
|
||||
$(MSWIN)/tiles.bmp: $(U)tile2bmp.exe $(TILEFILES)
|
||||
$< $@
|
||||
|
||||
$(MSWIN)/%.bmp: $(U)uudecode.exe $(MSWIN)/%.uu
|
||||
$^
|
||||
mv $(notdir $@) $@
|
||||
|
||||
$(ONHW):
|
||||
@mkdir -p $@
|
||||
|
||||
CLEAN_DIR += $(ONHW)
|
||||
CLEAN_FILE += $(NHWTARGETS) $(NHWOBJS) $(NHWRES) $(BMPS)
|
||||
|
||||
#==========================================
|
||||
# nethack
|
||||
#==========================================
|
||||
CFLAGSNH = $(CFLAGSU) -DNO_TILE_C -DSAFEPROCS -D_LIB
|
||||
|
||||
ONH = $(O)nethack
|
||||
|
||||
NHONLY = consoletty.o getline.o topl.o wintty.o
|
||||
ifeq "$(ADD_CURSES)" "Y"
|
||||
CFLAGSNH += -DCURSES_GRAPHICS -DCHTYPE_32 -DPDC_NCMOUSE
|
||||
NHONLY += $(addsuffix .o, cursdial cursinit cursinvt cursmain cursmesg cursmisc cursstat curswins)
|
||||
endif
|
||||
|
||||
NHOBJS = $(addprefix $(ONH)/, $(COREOBJS) $(NHONLY))
|
||||
NHRES = $(ONH)/conres.o
|
||||
NHTARGET = $(GAMEDIR)/NetHack.exe
|
||||
|
||||
nethack: $(NHTARGET)
|
||||
|
||||
$(GAMEDIR)/NetHack.exe: $(NHOBJS) $(NHRES) $(LUALIB) $(PDCLIB) | $(GAMEDIR)
|
||||
$(ld) $(LDFLAGS) -mconsole $^ $(LIBS) -static -lstdc++ -o$@
|
||||
|
||||
$(ONH)/%.o: $(SRC)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cc) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/cppregex.o: $(SSYS)/cppregex.cpp $(NHLUAH) | $(ONH)
|
||||
$(cc) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/%.o: $(SSYS)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cc) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/stubs.o: $(MSWSYS)/stubs.c $(NHLUAH) | $(ONH)
|
||||
$(cc) $(CFLAGSNH) -DGUISTUB $< -o$@
|
||||
|
||||
$(ONH)/%.o: $(MSWSYS)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cc) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/%.o: $(MSWIN)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cc) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/%.o: $(WSHR)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cc) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/%.o: $(TTY)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cc) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/%.o: $(WCURSES)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cc) $(CFLAGSNH) $(PDCINCL) $< -o$@
|
||||
|
||||
$(NHRES): $(MSWIN)/NetHack.rc $(MSWIN)/NetHack.ico | $(ONH)
|
||||
$(rc) --include-dir=$(MSWIN) --input=$< -o$@
|
||||
|
||||
$(ONH):
|
||||
@mkdir -p $@
|
||||
|
||||
CLEAN_DIR += $(ONH)
|
||||
CLEAN_FILE += $(NHTARGET) $(NHOBJS) $(NHRES)
|
||||
|
||||
#==========================================
|
||||
#=============== TARGETS ==================
|
||||
#==========================================
|
||||
|
||||
.PHONY: all clean default install lua makedefs recover pdcurses \
|
||||
tile2bmp tilemap uudecode dlb nethackw nethack tileutil
|
||||
|
||||
#
|
||||
# Everything
|
||||
#
|
||||
|
||||
all: install
|
||||
|
||||
TO_INSTALL = $(GAMEDIR)/NetHack.exe $(RTARGETS) \
|
||||
$(addprefix $(GAMEDIR)/, $(addsuffix .template, sysconf symbols .nethackrc) \
|
||||
Guidebook.txt NetHack.txt license opthelp record)
|
||||
|
||||
ifeq "$(USE_LUADLL)" "Y"
|
||||
TO_INSTALL += $(LUADLL)
|
||||
endif
|
||||
|
||||
ifneq "$(SKIP_NETHACKW)" "Y"
|
||||
TO_INSTALL += $(GAMEDIR)/NetHackW.exe
|
||||
endif
|
||||
|
||||
ifeq "$(USE_DLB)" "Y"
|
||||
TO_INSTALL += $(DLB)
|
||||
endif
|
||||
|
||||
install: $(TO_INSTALL)
|
||||
ifdef TRAVIS_COMPILER
|
||||
ls -l $(SRC)
|
||||
ls -l $(DAT)
|
||||
ls -l $(UTIL)
|
||||
endif
|
||||
ifneq "$(USE_DLB)" "Y"
|
||||
cp $(DAT)/*.dat $(GAMEDIR)/
|
||||
endif
|
||||
@echo NetHack is up to date.
|
||||
|
||||
$(GAMEDIR)/symbols.template: $(DAT)/symbols
|
||||
cp $< $@
|
||||
|
||||
$(GAMEDIR)/NetHack.txt: $(DOC)/nethack.txt
|
||||
cp $< $@
|
||||
|
||||
$(GAMEDIR)/record:
|
||||
touch $@
|
||||
|
||||
$(GAMEDIR)/%: $(DAT)/%
|
||||
cp $< $@
|
||||
|
||||
$(GAMEDIR)/%: $(DOC)/%
|
||||
cp $< $@
|
||||
|
||||
$(GAMEDIR)/%: $(MSWSYS)/%
|
||||
cp $< $@
|
||||
|
||||
CLEAN_FILE += $(TO_INSTALL)
|
||||
|
||||
clean:
|
||||
@-rm -f $(CLEAN_FILE)
|
||||
@$(foreach dir, $(CLEAN_DIR), \
|
||||
if [ -d $(dir) ] ; then rmdir -p --ignore $(dir) ; fi ; )
|
||||
|
||||
-include Makefile.mingw32.depend
|
||||
-include .depend
|
||||
# end of file
|
||||
121
sys/windows/Makefile.mingw32.depend
Normal file
121
sys/windows/Makefile.mingw32.depend
Normal file
@@ -0,0 +1,121 @@
|
||||
.PHONY: depend cleandep
|
||||
|
||||
cce = gcc -E -MM -MT $(@:d=o)
|
||||
|
||||
# Copy all $(cc) commands w/ their targets from Makefile.mingw32, 3rd party code unnecessary
|
||||
# Replace .o w/ .d, $(cc) w/ $(cce)
|
||||
# Check extraordinary "OBJ): " and handle them properly
|
||||
# Check all CLEAN_FILE lines, add obj files to $(OBJS4DEP)
|
||||
# Run
|
||||
# mingw32-make depend
|
||||
|
||||
$(OM)/%.d: $(SRC)/%.c $(NHLUAH) | $(OM)
|
||||
$(cce) $(CFLAGSU) -DENUM_PM $< -o$@
|
||||
|
||||
$(OM)/%.d: $(U)%.c $(NHLUAH) | $(OM)
|
||||
$(cce) $(CFLAGSU) -DENUM_PM $< -o$@
|
||||
|
||||
$(OR)/recover.d: $(U)recover.c | $(OR)
|
||||
$(cce) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(OT)/tiletxt.d: $(WSHR)/tilemap.c $(NHLUAH) | $(OT)
|
||||
$(cce) $(CFLAGSU) -DTILETEXT $< -o$@
|
||||
|
||||
$(OT)/%.d: $(WSHR)/%.c $(NHLUAH) | $(OT)
|
||||
$(cce) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(OT)/%.d: $(SRC)/%.c $(NHLUAH) | $(OT)
|
||||
$(cce) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(OT)/tilete32.d: $(WSHR)/tiletext.c $(NHLUAH) | $(OT)
|
||||
$(cce) $(CFLAGSU) -DTILE_X=32 -DTILE_Y=32 $< -o$@
|
||||
|
||||
$(OT)/tiletx32.d: $(WSHR)/tilemap.c $(NHLUAH) | $(OT)
|
||||
$(cce) $(CFLAGSU) -DTILETEXT -DTILE_X=32 -DTILE_Y=32 $< -o$@
|
||||
|
||||
$(GIF32OBJ:o=d): $(WSHR)/gifread.c $(NHLUAH) | $(OT)
|
||||
$(cce) $(CFLAGSU) -DTILE_X=32 -DTILE_Y=32 $< -o$@
|
||||
|
||||
$(BMP32OBJ:o=d): $(WSHR)/tile2bmp.c $(NHLUAH) | $(OT)
|
||||
$(cce) $(CFLAGSU) -DTILE_X=32 -DTILE_Y=32 $< -o$@
|
||||
|
||||
$(OT)/panic.d: $(UTIL)/panic.c $(NHLUAH) | $(OT)
|
||||
$(cce) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(OTM)/tilemap.d: $(WSHR)/tilemap.c $(NHLUAH) | $(OTM)
|
||||
$(cce) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(OTM)/%.d: $(SRC)/%.c $(NHLUAH) | $(OTM)
|
||||
$(cce) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(OU)/uudecode.d: $(SSYS)/uudecode.c | $(OU)
|
||||
$(cce) $(CFLAGS) $(CONSOLEDEF) $< -o$@
|
||||
|
||||
$(ODLB)/%.d: $(SRC)/%.c $(NHLUAH) | $(ODLB)
|
||||
$(cce) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(ODLB)/%.d: $(U)%.c $(NHLUAH) | $(ODLB)
|
||||
$(cce) $(CFLAGSU) $< -o$@
|
||||
|
||||
$(ONHW)/%.d: $(SRC)/%.c $(NHLUAH) | $(ONHW)
|
||||
$(cce) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(ONHW)/cppregex.d: $(SSYS)/cppregex.cpp $(NHLUAH) | $(ONHW)
|
||||
$(cce) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(ONHW)/%.d: $(SSYS)/%.c $(NHLUAH) | $(ONHW)
|
||||
$(cce) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(ONHW)/stubs.d: $(MSWSYS)/stubs.c $(NHLUAH) | $(ONHW)
|
||||
$(cce) $(CFLAGSW) -DTTYSTUB $< -o$@
|
||||
|
||||
$(ONHW)/%.d: $(MSWSYS)/%.c $(NHLUAH) | $(ONHW)
|
||||
$(cce) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(ONHW)/%.d: $(MSWIN)/%.c $(NHLUAH) | $(ONHW)
|
||||
$(cce) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(ONHW)/%.d: $(WSHR)/%.c $(NHLUAH) | $(ONHW)
|
||||
$(cce) $(CFLAGSW) $< -o$@
|
||||
|
||||
$(ONH)/%.d: $(SRC)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cce) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/cppregex.d: $(SSYS)/cppregex.cpp $(NHLUAH) | $(ONH)
|
||||
$(cce) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/%.d: $(SSYS)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cce) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/stubs.d: $(MSWSYS)/stubs.c $(NHLUAH) | $(ONH)
|
||||
$(cce) $(CFLAGSNH) -DGUISTUB $< -o$@
|
||||
|
||||
$(ONH)/%.d: $(MSWSYS)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cce) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/%.d: $(MSWIN)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cce) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/%.d: $(WSHR)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cce) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/%.d: $(TTY)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cce) $(CFLAGSNH) $< -o$@
|
||||
|
||||
$(ONH)/%.d: $(WCURSES)/%.c $(NHLUAH) | $(ONH)
|
||||
$(cce) $(CFLAGSNH) $(PDCINCL) $< -o$@
|
||||
|
||||
OBJS4DEP = $(MOBJS) $(ROBJS) \
|
||||
$(TOBJS) $(GIFOBJ) $(GIF32OBJ) $(PPMOBJ) $(BMP32OBJ) $(T32OBJS) $(TUCOMMON) \
|
||||
$(TMOBJS) $(UOBJS) $(DLBOBJS) $(NHWOBJS) $(NHOBJS)
|
||||
DEP_TARGETS = $(OBJS4DEP:o=d)
|
||||
|
||||
depend: $(DEP_TARGETS)
|
||||
@cat $(DEP_TARGETS) > .depend
|
||||
|
||||
cleandep:
|
||||
@-rm -f $(DEP_TARGETS) .depend
|
||||
@echo Done.
|
||||
|
||||
CLEAN_FILE += .depend $(DEP_TARGETS)
|
||||
# end of file
|
||||
Reference in New Issue
Block a user