quakespasm/source/OWMakefile.win32

237 lines
4.9 KiB
Text
Raw Normal View History

2022-02-08 19:06:54 +00:00
# makefile to build quakespasm.exe for Windows using Open Watcom:
# wmake -f OWMakefile.win32
### Enable/disable SDL2
USE_SDL2=0
### Enable/disable codecs for streaming music support
USE_CODEC_WAVE=1
USE_CODEC_FLAC=1
USE_CODEC_MP3=1
USE_CODEC_VORBIS=1
USE_CODEC_OPUS=1
# either mikmod or xmp
USE_CODEC_MIKMOD=1
USE_CODEC_XMP=0
USE_CODEC_UMX=1
# which library to use for mp3 decoding: mad or mpg123
MP3LIB=mad
# which library to use for ogg decoding: vorbis or tremor
VORBISLIB=vorbis
WINSOCK2= 0
# ---------------------------
# build variables
# ---------------------------
CFLAGS_BASE = -zq -wx -bm -bt=nt -5s -sg -otexan -fp5 -fpi87 -ei -j -zp8
CFLAGS = $(CFLAGS_BASE)
!ifneq USE_SDL2 1
SDL_CFLAGS = -I../Windows/SDL/include
SDL_LIBS = ../Windows/SDL/watcom/SDL.lib
!else
SDL_CFLAGS = -I../Windows/SDL2/include
SDL_LIBS = ../Windows/SDL2/watcom/SDL2.lib
CFLAGS += -DUSE_SDL2
!endif
!ifeq WINSOCK2 1
DEFWINSOCK =-D_USE_WINSOCK2
LIBWINSOCK = ws2_32.lib
!else
DEFWINSOCK =
LIBWINSOCK = wsock32.lib
!endif
CFLAGS += $(DEFWINSOCK)
NET_LIBS = $(LIBWINSOCK)
# note: all codec libraries are static.
CODEC_INC = -I../Windows/codecs/include
LIBCODEC = ../Windows/codecs/x86-watcom/
!ifeq MP3LIB mad
mp3_obj=snd_mp3.obj
lib_mp3dec=$(LIBCODEC)mad.lib
!endif
!ifeq MP3LIB mpg123
mp3_obj=snd_mpg123.obj
lib_mp3dec=$(LIBCODEC)mpg123.lib
!endif
!ifeq VORBISLIB vorbis
cpp_vorbisdec=
lib_vorbisdec=$(LIBCODEC)vorbisfile.lib $(LIBCODEC)vorbis.lib $(LIBCODEC)ogg.lib
!endif
!ifeq VORBISLIB tremor
cpp_vorbisdec=-DVORBIS_USE_TREMOR
lib_vorbisdec=$(LIBCODEC)vorbisidec.lib $(LIBCODEC)ogg.lib
!endif
CODECLIBS =
!ifeq USE_CODEC_WAVE 1
CFLAGS+= -DUSE_CODEC_WAVE
!endif
!ifeq USE_CODEC_FLAC 1
CFLAGS+= -DUSE_CODEC_FLAC
CFLAGS+= -DFLAC__NO_DLL
CODECLIBS+= $(LIBCODEC)FLAC.lib
!endif
!ifeq USE_CODEC_OPUS 1
CFLAGS+= -DUSE_CODEC_OPUS
CODECLIBS+= $(LIBCODEC)opusfile.lib $(LIBCODEC)opus.lib $(LIBCODEC)ogg.lib
!endif
!ifeq USE_CODEC_VORBIS 1
CFLAGS+= -DUSE_CODEC_VORBIS $(cpp_vorbisdec)
CODECLIBS+= $(lib_vorbisdec)
!endif
!ifeq USE_CODEC_MP3 1
CFLAGS+= -DUSE_CODEC_MP3
CODECLIBS+= $(lib_mp3dec)
!endif
!ifeq USE_CODEC_MIKMOD 1
CFLAGS+= -DUSE_CODEC_MIKMOD
CFLAGS+= -DMIKMOD_STATIC
CODECLIBS+= $(LIBCODEC)mikmod.lib
!endif
!ifeq USE_CODEC_XMP 1
CFLAGS+= -DUSE_CODEC_XMP
CFLAGS+= -DXMP_NO_DLL
CODECLIBS+= $(LIBCODEC)libxmp.lib
!endif
!ifeq USE_CODEC_UMX 1
CFLAGS+= -DUSE_CODEC_UMX
!endif
CFLAGS+= $(CODEC_INC)
COMMON_LIBS= opengl32.lib winmm.lib
LIBS = $(CODECLIBS) $(SDL_LIBS) $(COMMON_LIBS) $(NET_LIBS)
# ---------------------------
# targets
# ---------------------------
all: quakespasm.exe
# ---------------------------
# rules
# ---------------------------
.EXTENSIONS: .res .rc
.c.obj:
wcc386 $(INCLUDES) $(CFLAGS) $(SDL_CFLAGS) -fo=$^@ $<
SDL_win32_main.obj: ../Windows/SDL/main/SDL_win32_main.c
wcc386 $(CFLAGS_BASE) $(SDL_CFLAGS) -fo=$^@ $<
SDL_windows_main.obj: ../Windows/SDL2/main/SDL_windows_main.c
wcc386 $(CFLAGS_BASE) $(SDL_CFLAGS) -I../Windows/SDL2/main -fo=$^@ $<
quakespasm.res: ../Windows/QuakeSpasm.rc
wrc -q -r -bt=nt -I../Windows -fo=$^@ $<
# ----------------------------------------------------------------------------
# objects
# ----------------------------------------------------------------------------
MUSIC_OBJS= bgmusic.obj &
snd_codec.obj &
snd_flac.obj &
snd_wave.obj &
snd_vorbis.obj &
snd_opus.obj &
$(mp3_obj) &
snd_mikmod.obj &
snd_xmp.obj &
snd_umx.obj
COMOBJ_SND = snd_dma.obj snd_mix.obj snd_mem.obj $(MUSIC_OBJS)
SYSOBJ_SND = snd_sdl.obj
SYSOBJ_CDA = cd_sdl.obj
SYSOBJ_INPUT = in_sdl.obj
SYSOBJ_GL_VID= gl_vidsdl.obj
SYSOBJ_NET = net_win.obj net_wins.obj net_wipx.obj
SYSOBJ_SYS = pl_win.obj sys_sdl_win.obj
SYSOBJ_MAIN= main_sdl.obj
!ifeq USE_SDL2 1
SYSOBJ_MAIN+= SDL_windows_main.obj
!else
SYSOBJ_MAIN+= SDL_win32_main.obj
!endif
SYSOBJ_RES = quakespasm.res
GLOBJS = &
gl_refrag.obj &
gl_rlight.obj &
gl_rmain.obj &
gl_fog.obj &
gl_rmisc.obj &
r_part.obj &
r_world.obj &
gl_screen.obj &
gl_sky.obj &
gl_warp.obj &
$(SYSOBJ_GL_VID) &
gl_draw.obj &
image.obj &
gl_texmgr.obj &
gl_mesh.obj &
r_sprite.obj &
r_alias.obj &
r_brush.obj &
gl_model.obj
OBJS = strlcat.obj &
strlcpy.obj &
$(GLOBJS) &
$(SYSOBJ_INPUT) &
$(COMOBJ_SND) &
$(SYSOBJ_SND) &
$(SYSOBJ_CDA) &
$(SYSOBJ_NET) &
net_dgrm.obj &
net_loop.obj &
net_main.obj &
chase.obj &
cl_demo.obj &
cl_input.obj &
cl_main.obj &
cl_parse.obj &
cl_tent.obj &
console.obj &
keys.obj &
menu.obj &
sbar.obj &
view.obj &
wad.obj &
cmd.obj &
common.obj &
crc.obj &
cvar.obj &
cfgfile.obj &
host.obj &
host_cmd.obj &
mathlib.obj &
pr_cmds.obj &
pr_edict.obj &
pr_exec.obj &
sv_main.obj &
sv_move.obj &
sv_phys.obj &
sv_user.obj &
world.obj &
zone.obj &
$(SYSOBJ_SYS) $(SYSOBJ_MAIN)
# ------------------------
# Watcom build rules
# ------------------------
# 1 MB stack size.
quakespasm.exe: $(OBJS) quakespasm.res
wlink N $@ SYS NT_WIN OPTION STACK=0x100000 LIBR {$(LIBS)} F {$(OBJS)}
wrc -q $^*.res
clean: .symbolic
rm -f *.obj *.res *.err quakespasm.exe