Windows Makefiles easier soundlib opt-in or opt-out
This commit is contained in:
@@ -41,12 +41,15 @@ GAMEDIR = ..\binary # Default game build directory
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
# Add any sound libraries the you wish to integrate with NetHack, with spaces
|
||||
# between them.
|
||||
# Do you want to include integration with any sound libraries that work with
|
||||
# this Makefile? Add the list below. If you change the list do 'nmake clean'.
|
||||
#
|
||||
# There is glue in here for the following: windsound fmod
|
||||
# Obtaining the 3rd party library, including its .h files, is up to you.
|
||||
#
|
||||
# windsound uses built-in Microsoft API's, no 3rd party download is required.
|
||||
|
||||
SOUND_LIBRARIES = windsound
|
||||
SOUND_LIBRARIES = windsound fmod
|
||||
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
@@ -669,16 +672,85 @@ DLBOBJ_HOST = $(OTTY)dlb$(HOST).o
|
||||
#
|
||||
SNDTEMP = $(SOUND_LIBRARIES:windsound=)
|
||||
!IF "$(SOUND_LIBRARIES)" != "$(SNDTEMP)"
|
||||
# SOUND_LIBRARIES included windsound
|
||||
!MESSAGE Including windsound integration
|
||||
SOUND_WINDSOUND=Y
|
||||
!MESSAGE Including windsound support
|
||||
HAVE_SOUNDLIB=Y
|
||||
NEED_USERSOUNDS=Y
|
||||
NEED_SEAUTOMAP=Y
|
||||
NEED_WAV=Y
|
||||
SOUNDLIBINCL = $(SOUNDLIBINCL)
|
||||
SOUNDLIBDEFS = $(SOUNDLIBDEFS) -DSND_LIB_WINDSOUND
|
||||
TTYSOUNDOBJS = $(TTYSOUNDOBJS) $(OTTY)windsound.o
|
||||
GUISOUNDOBJS = $(GUISOUNDOBJS) $(OGUI)windsound.o
|
||||
TTYSOUNDLIBS = $(TTYSOUNDLIBS)
|
||||
GUISOUNDLIBS = $(GUIDSOUNDLIBS)
|
||||
#WINDSOUNDLIBDIR =
|
||||
#TTYSOUNDLIBS = $(TTYSOUNDLIBS)
|
||||
#GUISOUNDLIBS = $(GUISOUNDLIBS)
|
||||
#WINDSOUNDLIBDIR =
|
||||
#WINDSOUNDLIBDLL =
|
||||
WINDSOUNDDIR = ..\sound\windsound
|
||||
SOUNDSRCS = $(SOUNDSRCS) $(WINDSOUNDDIR)\windsound.c
|
||||
#GAMEDIRDLLS = $(GAMEDIRDLLS) $(GAMEDIR\$(WINDSOUNDLIBDLL)
|
||||
!ENDIF
|
||||
SNDTEMP=
|
||||
|
||||
# +--------------------------------+
|
||||
# | fmod? (requires 3rd party lib) |
|
||||
# +--------------------------------+
|
||||
#
|
||||
|
||||
SNDTEMP = $(SOUND_LIBRARIES:fmod=)
|
||||
!IF "$(SOUND_LIBRARIES)" != "$(SNDTEMP)"
|
||||
!MESSAGE Including fmod integration
|
||||
SOUND_FMOD=Y
|
||||
HAVE_SOUNDLIB=Y
|
||||
NEED_USERSOUNDS=Y
|
||||
NEED_SEAUTOMAP=Y
|
||||
NEED_WAV=Y
|
||||
FMODROOT=..\lib\fmod\api\core
|
||||
SOUNDLIBINCL = $(SOUNDLIBINCL) -I$(FMODLIBROOT)/inc
|
||||
SOUNDLIBDEFS = $(SOUNDLIBDEFS) -DSND_LIB_FMOD
|
||||
TTYSOUNDOBJS = $(TTYSOUNDOBJS) $(OTTY)fmod.o
|
||||
GUISOUNDOBJS = $(GUISOUNDOBJS) $(OGUI)fmod.o
|
||||
FMODLIBDIR = $(FMODROOT)\lib\$(TARGET_CPU)
|
||||
FMODLIBDLL = fmod_vc.dll
|
||||
!IF "$(TARGET_CPU)" == "x86"
|
||||
TTYSOUNDLIBS = $(TTYSOUNDLIBS) $(FMODLIBDIR)\fmod_vc.lib
|
||||
GUISOUNDLIBS = $(GUISOUNDLIBS) $(FMODLIBDIR)\fmod_vc.lib
|
||||
#!ELSE
|
||||
#TTYSOUNDLIBS = $(TTYSOUNDLIBS) $(FMODLIBDIR)\fmod_vc.lib
|
||||
#GUISOUNDLIBS = $(GUISOUNDLIBS) $(FMODLIBDIR)\fmod_vc.lib
|
||||
!ENDIF
|
||||
GAMEDIRDLLS = $(GAMEDIRDLLS) $(GAMEDIR)\$(FMODLIBDLL)
|
||||
FMODDIR = ..\sound\fmod
|
||||
SOUNDSRCS = $(SOUNDSRCS) $(FMODDIR)\fmod.c
|
||||
!MESSAGE ---------------------------------------------------------------------
|
||||
!MESSAGE ** NOTES for fmod sound library integration **
|
||||
!MESSAGE For fmod integration, this Makefile expects:
|
||||
!MESSAGE fmod include directory : $(FMODROOT)\inc
|
||||
!MESSAGE fmod library directory : $(FMODLIBDIR)
|
||||
!MESSAGE fmod library to link with : $(FMODLIBDIR)\fmod_vc.lib
|
||||
!MESSAGE fmod library dll : $(FMODLIBDIR)\$(FMODLIBDLL)
|
||||
!MESSAGE ---------------------------------------------------------------------
|
||||
FMOD_MISSING=
|
||||
!IF !EXIST("$(FMODROOT)\inc")
|
||||
FMOD_MISSING= $(FMOD_MISSING) $(FMODROOT)\inc
|
||||
!MESSAGE Error: missing $(FMODROOT)\inc
|
||||
!ENDIF
|
||||
!IF !EXIST("$(FMODLIBDIR)")
|
||||
FMOD_MISSING= $(FMOD_MISSING) $(FMODLIBDIR)
|
||||
!MESSAGE Error: missing $(FMODLIBDIR)
|
||||
!ENDIF
|
||||
!IF !EXIST("$(FMODLIBDIR)\fmod_vc.lib")
|
||||
FMOD_MISSING= $(FMOD_MISSING) $(FMODLIBDIR)\fmod_vc.lib
|
||||
!MESSAGE Error: missing $(FMODLIBDIR)\fmod_vc.lib
|
||||
!ENDIF
|
||||
!IF !EXIST("$(FMODLIBDIR)\$(FMODLIBDLL)")
|
||||
FMOD_MISSING= $(FMOD_MISSING) $(FMODLIBDIR)\$(FMODLIBDLL)
|
||||
!MESSAGE Error: missing $(FMODLIBDIR)\$(FMODLIBDLL)
|
||||
!ENDIF
|
||||
!IF "$(FMOD_MISSING)" != ""
|
||||
!ERROR Error: Cannot proceed with fmod integration included
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
SNDTEMP=
|
||||
|
||||
@@ -686,11 +758,16 @@ SNDTEMP=
|
||||
# SOUND Support
|
||||
#=================================================================
|
||||
|
||||
!IF "$(SOUNDLIBDEFS)" != ""
|
||||
!IF "$(HAVE_SOUNDLIB)" == "Y"
|
||||
!IF "$(NEED_USERSOUNDS)" == "Y"
|
||||
SOUNDLIBDEFS = $(SOUNDLIBDEFS) -DUSER_SOUNDS
|
||||
!ENDIF
|
||||
!IF "$(NEED_SEAUTOMAP)" == "Y"
|
||||
SOUNDLIBDEFS = $(SOUNDLIBDEFS) -DSND_SOUNDEFFECTS_AUTOMAP
|
||||
!ENDIF
|
||||
|
||||
SNDWAVFILES = $(SndWavDir)\se_squeak_A.wav $(SndWavDir)\se_squeak_B.wav \
|
||||
!IF "$(NEED_WAV)" == "Y"
|
||||
WAVS = $(SndWavDir)\se_squeak_A.wav $(SndWavDir)\se_squeak_B.wav \
|
||||
$(SndWavDir)\se_squeak_B_flat.wav $(SndWavDir)\se_squeak_C.wav \
|
||||
$(SndWavDir)\se_squeak_D.wav $(SndWavDir)\se_squeak_D_flat.wav \
|
||||
$(SndWavDir)\se_squeak_E.wav $(SndWavDir)\se_squeak_E_flat.wav \
|
||||
@@ -721,6 +798,8 @@ SNDWAVFILES = $(SndWavDir)\se_squeak_A.wav $(SndWavDir)\se_squeak_B.wav \
|
||||
$(SndWavDir)\sound_Wooden_Harp_C.wav $(SndWavDir)\sound_Wooden_Harp_D.wav \
|
||||
$(SndWavDir)\sound_Wooden_Harp_E.wav $(SndWavDir)\sound_Wooden_Harp_F.wav \
|
||||
$(SndWavDir)\sound_Wooden_Harp_G.wav
|
||||
!ENDIF
|
||||
!ENDIF #HAVE_SOUNDLIB
|
||||
|
||||
#==========================================
|
||||
# Header file macros
|
||||
@@ -1148,6 +1227,15 @@ DLB =
|
||||
{$(WINDSOUNDDIR)}.c{$(OBJGUI)}.o:
|
||||
$(Q)$(CC) $(CFLAGS) -I$(WSHR) $(GUIDEF) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ $<
|
||||
|
||||
#==========================================
|
||||
# Rules for files in sound\fmod
|
||||
#==========================================
|
||||
|
||||
{$(FMODDIR)}.c{$(OBJTTY)}.o:
|
||||
$(Q)$(CC) $(CFLAGS) -I$(WSHR) $(TTYDEF) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ $<
|
||||
|
||||
{$(FMODDIR)}.c{$(OBJGUI)}.o:
|
||||
$(Q)$(CC) $(CFLAGS) -I$(WSHR) $(GUIDEF) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ $<
|
||||
|
||||
#==========================================
|
||||
#=============== TARGETS ==================
|
||||
@@ -1168,7 +1256,7 @@ install: envchk.tag libdir.tag ottydir.tag outldir.tag \
|
||||
$(INCL)\nhlua.h $(OUTL)utility.tag \
|
||||
$(DAT)\data $(DAT)\rumors $(DAT)\oracles $(DAT)\engrave \
|
||||
$(DAT)\epitaph $(DAT)\bogusmon $(GAMEDIR)\NetHack.exe \
|
||||
$(GAMEDIR)\NetHackW.exe install.tag
|
||||
$(GAMEDIR)\NetHackW.exe $(GAMEDIRDLLS) install.tag
|
||||
@echo Done.
|
||||
|
||||
!IF "$(INTERNET_AVAILABLE)" == "Y"
|
||||
@@ -1257,7 +1345,8 @@ $(GAMEDIR)\NetHack.exe : gamedir.tag $(OTTY)consoletty.o \
|
||||
$(conlibs) $(BCRYPT) -out:$@ @<<$(@B).lnk
|
||||
$(GAMEOBJTTY)
|
||||
$(ALLOBJTTY)
|
||||
$(TTYOBJ) $(TTYSOUNDOBJS)
|
||||
$(TTYOBJ)
|
||||
$(TTYSOUNDOBJS)
|
||||
$(CURSESOBJ)
|
||||
$(OTTY)consoletty.o
|
||||
$(OTTY)date.o
|
||||
@@ -1281,7 +1370,8 @@ $(GAMEDIR)\NetHackW.exe : gamedir.tag $(OGUI)tile.o \
|
||||
$(guilibs) $(COMCTRL) $(BCRYPT) -out:$@ @<<$(@B).lnk
|
||||
$(GAMEOBJGUI)
|
||||
$(ALLOBJGUI)
|
||||
$(GUIOBJ) $(GUISOUNDOBJS)
|
||||
$(GUIOBJ)
|
||||
$(GUISOUNDOBJS)
|
||||
$(OGUI)tile.o
|
||||
$(OGUI)date.o
|
||||
$(OGUI)NetHackW.res
|
||||
@@ -1291,7 +1381,8 @@ $(GAMEDIR)\NetHackW.exe : gamedir.tag $(OGUI)tile.o \
|
||||
# install
|
||||
#--------
|
||||
#
|
||||
install.tag: $(DAT)\data $(DAT)\rumors $(DAT)\oracles $(DLB)
|
||||
install.tag: $(DAT)\data $(DAT)\rumors $(DAT)\oracles $(DLB) \
|
||||
$(HACKCSRC) $(SOUNDSRCS)
|
||||
! IF ("$(USE_DLB)"=="Y")
|
||||
copy nhdat$(NHV) $(GAMEDIR)
|
||||
copy $(DAT)\license $(GAMEDIR)
|
||||
@@ -1356,11 +1447,11 @@ $(OGUI)NetHackW.res: $(SRC)\tiles.bmp $(MSWIN)\NetHackW.rc \
|
||||
$(MSWIN)\mnsel.bmp \
|
||||
$(MSWIN)\mnselcnt.bmp $(MSWIN)\mnunsel.bmp \
|
||||
$(MSWIN)\petmark.bmp $(MSWIN)\pilemark.bmp $(MSWIN)\NetHack.ico \
|
||||
$(MSWIN)\rip.bmp $(MSWIN)\splash.bmp $(SNDWAVFILES)
|
||||
$(MSWIN)\rip.bmp $(MSWIN)\splash.bmp $(WAVS)
|
||||
@echo Building resource file $@ from $**
|
||||
@$(rc) -nologo -r -fo$@ -i$(MSWIN) -dNDEBUG -I..\sound\wav $(MSWIN)\NetHackW.rc
|
||||
|
||||
$(OTTY)console.res: $(MSWSYS)\console.rc $(MSWSYS)\NetHack.ico $(SNDWAVFILES)
|
||||
$(OTTY)console.res: $(MSWSYS)\console.rc $(MSWSYS)\NetHack.ico $(WAVS)
|
||||
@echo Building resource file $@ from $**
|
||||
@$(rc) -nologo -r -fo$@ -i$(MSWSYS) -dNDEBUG -I..\sound\wav $(MSWSYS)\console.rc
|
||||
|
||||
@@ -1846,9 +1937,21 @@ $(OLUA)lapi.o: $(LUASRC)\lapi.c
|
||||
#===================================================================
|
||||
# windsound dependencies
|
||||
#===================================================================
|
||||
|
||||
!IF "$(SOUND_WINDSOUND)" == "Y"
|
||||
$(OTTY)windsound.o: ..\sound\windsound\windsound.c $(HACK_H)
|
||||
$(OGUI)windsound.o: ..\sound\windsound\windsound.c $(HACK_H)
|
||||
!ENDIF
|
||||
#===================================================================
|
||||
# fmod dependencies
|
||||
#===================================================================
|
||||
!IF "$(SOUND_FMOD)" == "Y"
|
||||
$(OTTY)fmod.o: $(FMODDIR)\fmod.c $(HACK_H)
|
||||
$(OGUI)fmod.o: $(FMODDIR)\fmod.c $(HACK_H)
|
||||
|
||||
# Copy the DLL to GAMEDIR
|
||||
$(GAMEDIR)\FMODLIBDLL: $(FMODLIBDIR)\$(FMODLIBDLL)
|
||||
copy $(FMODLIBDIR)\$(FMODLIBDLL) $@
|
||||
!ENDIF
|
||||
#===================================================================
|
||||
# sys/windows dependencies
|
||||
#===================================================================
|
||||
@@ -2118,6 +2221,7 @@ spotless: clean
|
||||
if exist $(DAT)\guioptions del $(DAT)\guioptions
|
||||
if exist $(DAT)\data del $(DAT)\data
|
||||
if exist tilemappings.lst del tilemappings.lst
|
||||
if exist $(SndWavDir)\*.wav del $(SndWavDir)\*.wav
|
||||
if exist $(OBJTTY)\* rmdir $(OBJTTY) /s /Q
|
||||
if exist $(OBJGUI)\* rmdir $(OBJGUI) /s /Q
|
||||
if exist $(OBJUTIL)\* rmdir $(OBJUTIL) /s /Q
|
||||
|
||||
Reference in New Issue
Block a user