pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

doomlegacy: Test patchset proposed by upstream



Module Name:	pkgsrc-wip
Committed By:	Michael Baeuerle <michael.baeuerle%stz-e.de@localhost>
Pushed By:	micha
Date:		Fri Jun 21 14:06:49 2019 +0200
Changeset:	966c4ea50f2b0f5f153ad1b641e9c0270d0e0c1e

Added Files:
	doomlegacy/DESCR
	doomlegacy/MESSAGE.doomlegacy
	doomlegacy/Makefile
	doomlegacy/PLIST
	doomlegacy/TODO
	doomlegacy/distinfo
	doomlegacy/files/doomlegacy.1.in
	doomlegacy/patches/patch-Makefile
	doomlegacy/patches/patch-src_Makefile
	doomlegacy/patches/patch-src_doomtype.h
	doomlegacy/patches/patch-src_i__tcp.c
	doomlegacy/patches/patch-src_sdl_i__system.c

Log Message:
doomlegacy: Test patchset proposed by upstream

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=966c4ea50f2b0f5f153ad1b641e9c0270d0e0c1e

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 doomlegacy/DESCR                             |  23 +++
 doomlegacy/MESSAGE.doomlegacy                |  10 +
 doomlegacy/Makefile                          |  95 ++++++++++
 doomlegacy/PLIST                             |   6 +
 doomlegacy/TODO                              |   7 +
 doomlegacy/distinfo                          |  15 ++
 doomlegacy/files/doomlegacy.1.in             | 267 +++++++++++++++++++++++++++
 doomlegacy/patches/patch-Makefile            |  76 ++++++++
 doomlegacy/patches/patch-src_Makefile        | 158 ++++++++++++++++
 doomlegacy/patches/patch-src_doomtype.h      |  50 +++++
 doomlegacy/patches/patch-src_i__tcp.c        |  47 +++++
 doomlegacy/patches/patch-src_sdl_i__system.c |  24 +++
 12 files changed, 778 insertions(+)

diffs:
diff --git a/doomlegacy/DESCR b/doomlegacy/DESCR
new file mode 100644
index 0000000000..9e4b7d28e8
--- /dev/null
+++ b/doomlegacy/DESCR
@@ -0,0 +1,23 @@
+This is one of the most popular Doom source ports.
+It enhances Doom with things like:
+- Free Look
+- OpenGL renderer
+- Heretic support,
+- TCP/IP networking
+and much more.
+
+Doom Legacy can play Doom, Boom, Marine's Best Friend (MBF), and Heretic maps.
+In addition to the original games by id Software and Raven Software, there are
+hundreds of free, fan-made maps available on the Internet. These maps are
+typically distributed as PWAD files, which are not fully self-contained.
+For each game you will also need the corresponding IWAD data file, which
+contains all the graphics, wall and floor textures, sounds, and music for that
+game. For example, if you want to play Doom II maps, you'll need the IWAD file
+doom2.wad, or one of the free replacements.
+
+Legacy has implemented the fundamental and de-facto-standard Boom extensions,
+and the Marine's Best Friend (MBF) extensions. Legacy also has implemented
+among other things 3D floors, swimmable water and other special effects using
+extended linedef codes, and supports the FraggleScript scripting language.
+
+This package contains the SDL build of Doom Legacy.
diff --git a/doomlegacy/MESSAGE.doomlegacy b/doomlegacy/MESSAGE.doomlegacy
new file mode 100644
index 0000000000..ded7130196
--- /dev/null
+++ b/doomlegacy/MESSAGE.doomlegacy
@@ -0,0 +1,10 @@
+===========================================================================
+$NetBSD: MESSAGE.doomlegacy,v 1.1 2019/06/17 13:53:22 micha Exp $
+
+Note: The location of the ${PKGNAME} WAD directory has been set to:
+
+	${DOOMWADDIR_CONF}
+
+This is the pkgsrc standard Doom WAD directory location (shared with other
+Doom packages).
+===========================================================================
diff --git a/doomlegacy/Makefile b/doomlegacy/Makefile
new file mode 100644
index 0000000000..f9b92463e1
--- /dev/null
+++ b/doomlegacy/Makefile
@@ -0,0 +1,95 @@
+# $NetBSD$
+
+VERS=			1.47.2
+PKGNAME=		doomlegacy-${VERS}
+CATEGORIES=		games
+MASTER_SITES=		${MASTER_SITE_SOURCEFORGE:=doomlegacy/}
+DISTNAME=		${PKGNAME:S/-/_/}_source
+DISTFILES=		${DEFAULT_DISTFILES} doomlegacy_${VERS}_common.zip
+EXTRACT_SUFX=		.tar.bz2
+
+MAINTAINER=		micha%NetBSD.org@localhost
+HOMEPAGE=		http://doomlegacy.sourceforge.net/
+COMMENT=		The legacy of Doom
+LICENSE=		gnu-gpl-v2
+
+# Tested on Linux/ppc (32bit Big Endian) and NetBSD/amd64 (64bit Little Endian)
+# Untested: In general the source code has support for the other listed OS too
+ONLY_FOR_PLATFORM=	Darwin-*-* DragonFly-*-* FreeBSD-*-* Linux-*-* \
+			NetBSD-*-* OpenBSD-*-* SunOS-*-*
+
+USE_LANGUAGES+=		c99
+
+USE_TOOLS+=		gmake
+MAKE_JOBS_SAFE=		no
+
+.include "../../mk/bsd.prefs.mk"
+.include "../../mk/endian.mk"
+
+.if ${OPSYS} == "FreeBSD" || ${OPSYS} == "DragonFly"
+MAKE_FLAGS+=		OS=FREEBSD
+.elif ${OPSYS} == "NetBSD"
+MAKE_FLAGS+=		OS=NETBSD
+.elif ${OPSYS} == "Darwin"
+MAKE_FLAGS+=		OS=MAC
+.else
+# Other Unix (should work for GNU/Linux, OpenBSD and SunOS)
+MAKE_FLAGS+=		OS=LINUX
+.endif
+MAKE_FLAGS+=		COMP_ENVIRONMENT=1 HAVE_MIXER=1
+
+.if ${MACHINE_ENDIAN} == "big"
+# Some compilers define this themselves (but maybe not all)
+CFLAGS+=		-D__BIG_ENDIAN__
+.endif
+
+# DOOMWADDIR is intentionally shared with other Doom packages
+DOOMWADDIR=		share/doom
+INSTALLATION_DIRS=	bin ${PKGMANDIR}/man1 share/doc/doomlegacy ${DOOMWADDIR}
+
+MESSAGE_SRC+=		MESSAGE.doomlegacy
+MESSAGE_SUBST+=		PKGNAME=${PKGNAME:C/-.*//}
+MESSAGE_SUBST+=		DOOMWADDIR_CONF="${PREFIX}/${DOOMWADDIR}"
+
+# Configure defaults for LEGACYWADDIR and DOOMWADDIR
+SUBST_CLASSES+=		doomdef
+SUBST_STAGE.doomdef=	do-configure
+SUBST_MESSAGE.doomdef=	Preparing doomdef.h file ...
+SUBST_FILES.doomdef=	src/doomdef.h
+SUBST_SED.doomdef=	-e 's,LEGACYWADDIR  "/usr/local/share/games/doomlegacy",LEGACYWADDIR  "${PREFIX}/${DOOMWADDIR}",g'
+SUBST_SED.doomdef+=	-e 's,DEFWADS01  "~/games/doomlegacy/wads",DEFWADS01  "${PREFIX}/${DOOMWADDIR}",'
+
+pre-configure:
+	${CP} ${FILESDIR}/doomlegacy.1.in ${WRKDIR}
+
+# Move configure options and process manpage template
+do-configure:
+	cd ${WRKDIR} &&							\
+		${SED} -e 's,$$NAME,doomlegacy,g'			\
+			-e 's,$$VERSION,${VERS},g'			\
+			-e 's,$$WADDIR,${PREFIX}/${DOOMWADDIR},g'	\
+			doomlegacy.1.in >doomlegacy.1
+
+do-install:
+	cd ${WRKSRC} &&							\
+		${INSTALL_PROGRAM} bin/doomlegacy			\
+			${DESTDIR}${PREFIX}/bin;			\
+		${INSTALL_DATA} docs/legacy.css docs/whatsnew.html	\
+			${DESTDIR}${PREFIX}/share/doc/doomlegacy;	\
+	cd ${WRKDIR}/doomlegacy_${VERS} &&				\
+		${INSTALL_DATA} legacy.wad				\
+			${DESTDIR}${PREFIX}/${DOOMWADDIR}/legacy.wad;	\
+	cd ${WRKDIR} &&							\
+		${INSTALL_MAN} ${WRKDIR}/doomlegacy.1			\
+			${DESTDIR}${PREFIX}/${PKGMANDIR}/man1
+
+# Ensure that at least the shareware Episode 1 of Doom is available
+# Note: The demos from games/doom1 are not compatible with the Legacy engine
+DEPENDS+=		doom1-[0-9]*:../../games/doom1
+
+BUILDLINK_API_DEPENDS.SDL_mixer+=	SDL_mixer>=1.2.7
+.include "../../audio/SDL_mixer/buildlink3.mk"
+BUILDLINK_API_DEPENDS.SDL+=		SDL>=1.2.10
+.include "../../devel/SDL/buildlink3.mk"
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/doomlegacy/PLIST b/doomlegacy/PLIST
new file mode 100644
index 0000000000..34e3a1b59f
--- /dev/null
+++ b/doomlegacy/PLIST
@@ -0,0 +1,6 @@
+@comment $NetBSD: PLIST,v 1.1 2019/06/17 13:53:22 micha Exp $
+bin/doomlegacy
+man/man1/doomlegacy.1
+share/doc/doomlegacy/legacy.css
+share/doc/doomlegacy/whatsnew.html
+share/doom/legacy.wad
diff --git a/doomlegacy/TODO b/doomlegacy/TODO
new file mode 100644
index 0000000000..ed8a5a53de
--- /dev/null
+++ b/doomlegacy/TODO
@@ -0,0 +1,7 @@
+[X] Sent patches to upstream
+[X] Imported proposed patchset from upstream
+    => PKGREVISION not bumped, because binary package has not changed
+[X] Renamed man page template to doomlegacy.1.in (suggested by wiz@)
+    => PKGREVISION not bumped, because binary package has not changed
+[ ] Test building of the package again
+[ ] Remove patches after upstream integration
diff --git a/doomlegacy/distinfo b/doomlegacy/distinfo
new file mode 100644
index 0000000000..dac1592cb3
--- /dev/null
+++ b/doomlegacy/distinfo
@@ -0,0 +1,15 @@
+$NetBSD: distinfo,v 1.1 2019/06/17 13:53:22 micha Exp $
+
+SHA1 (doomlegacy_1.47.2_common.zip) = 9e6faaea797b988565a078a47e80bbe2119d78b9
+RMD160 (doomlegacy_1.47.2_common.zip) = 1ac1f47563ad2c0d7c5c1bea93a2aaeb1c001c10
+SHA512 (doomlegacy_1.47.2_common.zip) = 7c7c2a0cbab5b9b4645a3fe166addd597de533db7ab41f8011c6c526a868bb04c8dd6b0d27b48765406fbab328bf64fc7827770b395e6c0e5d861d99c4d3865a
+Size (doomlegacy_1.47.2_common.zip) = 981654 bytes
+SHA1 (doomlegacy_1.47.2_source.tar.bz2) = afb1213eb8b228d9f131e4c63ead97afed2f599f
+RMD160 (doomlegacy_1.47.2_source.tar.bz2) = 661f0fa2bdc58a2f5f9582f36817ddd9d48df9bc
+SHA512 (doomlegacy_1.47.2_source.tar.bz2) = e2e182c18dd24c14e954f791c58e44119457bb74af4bb079c16219406176536f9fd414afd6c9fa0e956a6062b5a346bbf19ebf4c0d2d300e2e66b2eb01cf53fd
+Size (doomlegacy_1.47.2_source.tar.bz2) = 2276199 bytes
+SHA1 (patch-Makefile) = b85e70fa945c9b917139181af8e01ca1c61c57ac
+SHA1 (patch-src_Makefile) = e940d7d35221f547fd7bdc891293c23bd3ee9633
+SHA1 (patch-src_doomtype.h) = e9d42dab1b7a23af3ddfe8b34f9e103826df212d
+SHA1 (patch-src_i__tcp.c) = 34c2e71dc63e1be114a307b4277f523ba5175117
+SHA1 (patch-src_sdl_i__system.c) = 17524680559b81ae755d781f63f3c5d34e1f14b6
diff --git a/doomlegacy/files/doomlegacy.1.in b/doomlegacy/files/doomlegacy.1.in
new file mode 100644
index 0000000000..e5f0be34f7
--- /dev/null
+++ b/doomlegacy/files/doomlegacy.1.in
@@ -0,0 +1,267 @@
+.\"=============================================================================
+.\" Header
+.\"
+.\" Copyright (c) 2019 by Michael Baeuerle.
+.\" License: GNU Free Documentation License (GFDL)
+.\"
+.TH $NAME 1 2019-06-16 Unix "$NAME $VERSION manual"
+.\"
+.\"
+.\"=============================================================================
+.\" NAME section
+.\"
+.SH NAME
+Doom Legacy
+.\"
+.\"
+.\"=============================================================================
+.\" SYNOPSIS section
+.\"
+.SH SYNOPSIS
+.B $NAME
+[-opengl] [-iwad xxx.wad] [-file pwad1.wad [pwad2.wad ...]]
+.PP
+.B $NAME
+[-h [g|m|c|s|d|D] | --version]
+.\"
+.\"
+.\"=============================================================================
+.\" DESCRIPTION section
+.\"
+.SH DESCRIPTION
+
+The following information is quoted from Reference Manual:
+.PP
+.B http://doomlegacy.sourceforge.net/docs/legacy.html
+.PP
+
+Doom Legacy can play Doom, Boom, Marine's Best Friend (MBF), and Heretic maps.
+In addition to the original games by id Software and Raven Software, there are
+hundreds of free, fan-made maps available on the Internet. These maps are
+typically distributed as PWAD files, which are not fully self-contained.
+For each game you will also need the corresponding IWAD data file, which
+contains all the graphics, wall and floor textures, sounds, and music for that
+game. For example, if you want to play Doom II maps, you'll need the IWAD file
+doom2.wad, or one of the free replacements.
+
+Legacy has implemented the fundamental and de-facto-standard Boom extensions,
+and the Marine's Best Friend (MBF) extensions. Legacy also has implemented
+among other things 3D floors, swimmable water and other special effects using
+extended linedef codes, and supports the FraggleScript scripting language.
+
+Legacy includes two different graphics engines, the old Doom software renderer
+(with many improvements) and an OpenGL-based hardware renderer.
+The OpenGL renderer is shinier and has fancier effects than the software one,
+but it does not do everything that the software renderer does. It does have
+coronas, explosion light, and other light effects that the software renderer
+does not do.
+Some wads rely upon violating wad rules to get trick effects. Most rely upon
+tricking the software renderer into not drawing something. Using those wads
+with the OpenGL renderer you will see holes in the floor and ceiling, and
+warning messges about polygons.
+
+The first game console we know of was from id Software's game Quake.
+We have been inspired by it and have tried to implement the same functionality
+for the benefit of Quake/Doom fans.
+
+Since Legacy 1.2, the network part of Doom has been totally rewritten.
+It now uses a better transfer method for the packets, (which is usually faster),
+and also implements a basic Client/Server model, where some critical game
+options are changeable only by the server in multiplayer games. Since the
+network communication is faster, we have upped the maximum number of players to
+32!
+.\"
+.\"
+.\"=============================================================================
+.\" OPTIONS section
+.\"
+.SH OPTIONS
+.TP 25
+.BI -config " file
+Set the configfile to use.
+.br
+Default: config.cfg
+.TP
+.BI -file " file [file ...]
+Set PWAD (Patch WAD) files to use.
+.TP
+.BI -game " mode
+Forces a particular game mode to be used.
+.br
+Examples for mode: doom, doomu, doom2, heretic
+.br
+(See Reference Manual for complete table)
+.TP
+.BI -h " [section]
+Print help. An optional section can be specified for details.
+.TP
+.BI -home " directory
+Home directory location, where your configfiles and savegames are kept.
+.TP
+.BI -iwad " file
+Set the main IWAD (Internal WAD) file to use.
+This also determines the game mode when -game is not used.
+.TP
+.BI -noendtext
+Suppress the game EndText screen, which could disrupt some terminal emulations
+because of the special character attributes used.
+.TP
+.BI -opengl
+Hardware accelerated rendering using the OpenGL library.
+Will use hardware acceleration for OpenGL if available.
+If the video card does not have OpenGL hardware acceleration then it will use
+the OpenGL emulation in software, which is very slow.
+.TP
+.BI --version
+Print version and build date.
+.TP
+.BI -warp " num
+Select the map, start game immediately.
+.br
+In DoomII, -warp 13 will goto MAP13.
+.br
+In Ultimate Doom, -warp 1 3 will goto E1M3.
+.TP
+See Reference Manual for a complete options list.
+.\"
+.\"
+.\"=============================================================================
+.\" ENVIRONMENT section
+.\"
+.SH ENVIRONMENT
+.TP 25
+.B DISPLAY
+X display to use. More information about X can be found in
+.BR X (7).
+.TP
+.B DOOMWADDIR
+This environment variable defines a path where WAD files are located.
+.br
+The default is $WADDIR.
+.TP
+.B HOME
+This variable indicates your home directory.
+.TP
+.B USER
+This variable contains your username, is used as the default value for your
+player name in multiplayer games.
+.\"
+.\"
+.\"=============================================================================
+.\" FILES section
+.\"
+.SH FILES
+.TP 25
+.B ~/.doomlegacy/config.cfg
+Default configuration file.
+.TP
+.B ~/.doomlegacy/glconfig.cfg
+Default configuration file for OpenGL mode.
+.TP
+.B ~/.doomlegacy/doomsav*.dsg
+Saved game states.
+.\"
+.\"
+.\"=============================================================================
+.\" NOTES section
+.\"
+.SH NOTES
+If you get no MIDI music, ensure that SDL_mixer has a working MIDI synthesizer
+available. If you use timidity, check that instruments are installed (e.g.
+freepats).
+.PP
+Acknowledgments:
+.IP \(bu 3
+Thanks to id Software of course, for creating the greatest game of all time!
+.PP
+.IP \(bu 3
+To Raven Software, for Heretic and Hexen!
+.PP
+.IP \(bu 3
+Chi Hoang for DosDoom which got us started.
+.PP
+.IP \(bu 3
+Bell Kin for porting Doom Legacy to Linux.
+.PP
+.IP \(bu 3
+Stephane Dierickx for the two pictures in the laucher and the help screen of
+Legacy.
+.PP
+.IP \(bu 3
+Sebastien Bacquet for Qmus2mid.
+.PP
+.IP \(bu 3
+Simon Howard for FraggleScript.
+.PP
+.IP \(bu 3
+TeamTNT for Boom.
+.PP
+.IP \(bu 3
+Steven McGranahan and Robert Baeuml for their large contributions.
+.PP
+.IP \(bu 3
+To all of you who send us ideas and bug reports, thank you!
+.RE
+.\"
+.\"
+.\"=============================================================================
+.\" AUTHORS section
+.\"
+.SH AUTHORS
+Original game by id Software.
+.br
+Heretic by Raven Software.
+.br
+Doom Legacy by Fabrice Denis, Boris Pereira and Thierry Van Elsuwe.
+.br
+Maintained by the Doom Legacy Team since 2001.
+.br
+Man page for pkgsrc by Michael Baeuerle.
+.\"
+.\"
+.\"=============================================================================
+.\" BUGS section
+.\"
+.\" .SH BUGS
+.\"
+.\"
+.\"=============================================================================
+.\" EXAMPLES section
+.\"
+.SH EXAMPLES
+Start the shareware Episode 1 of Doom:
+.IP
+$ $NAME
+.PP
+For the following examples you need the original WAD files of the games
+(copy them to $WADDIR or set DOOMWADDIR to the desired location).
+
+Start Doom and use the OpenGL renderer:
+.IP
+$ $NAME -opengl -iwad doom.wad
+.PP
+Start Doom II:
+.IP
+$ $NAME -iwad doom2.wad
+.PP
+Start Sigil (Doom Episode 5) in compatibility mode as Episode 3:
+.IP
+$ $NAME -game doomu -iwad doomu.wad -file SIGIL_COMPAT.wad
+.PP
+Start Heretic:
+.IP
+$ $NAME -iwad heretic.wad
+.PP
+.\"
+.\"
+.\"=============================================================================
+.\" SEE ALSO section
+.\"
+.SH SEE ALSO
+.BR timidity (1),
+.BR X (7)
+.br
+.BR http://doomlegacy.sourceforge.net/docs/legacy.html
+.\"
+.\"
+.\" EOF
diff --git a/doomlegacy/patches/patch-Makefile b/doomlegacy/patches/patch-Makefile
new file mode 100644
index 0000000000..1d0ecac2b9
--- /dev/null
+++ b/doomlegacy/patches/patch-Makefile
@@ -0,0 +1,76 @@
+$NetBSD$
+
+Add NetBSD to OS list.
+Honor environment variables CFLAGS, LDFLAGS and LIBS.
+Silence warnings about common symbol merging.
+
+--- Makefile.orig	2017-03-03 20:22:35.000000000 +0000
++++ Makefile
+@@ -128,6 +128,7 @@
+ # Linux is the default for SDL, that also applies to most unix-like OS.
+ #   OS=LINUX
+ #   OS=FREEBSD
++#   OS=NETBSD
+ # Windows operating systems.  Also see CC_SELECT.
+ # WIN32 is a generic 32bit Windows.
+ #   OS=WIN32
+@@ -418,7 +419,7 @@ endif
+ export SMIF
+ 
+ 
+-OS_LIST:=LINUX FREEBSD WIN32 WIN98 WIN7 OS2 DOS MAC
++OS_LIST:=LINUX FREEBSD NETBSD WIN32 WIN98 WIN7 OS2 DOS MAC
+ 
+ ifeq ($(OS), LINUX)
+   LINUX=1
+@@ -429,6 +430,12 @@ ifeq ($(OS), FREEBSD)
+   $(info  Please submit bug reports, and bug fixes. )
+   FREEBSD=1
+ else
++ifeq ($(OS), NETBSD)
++  # Uses statvfs(5).
++  $(info  NetBSD support is dependent upon user reports.)
++  $(info  Please submit bug reports, and bug fixes. )
++  NETBSD=1
++else
+ ifeq ($(OS), WIN32)
+   $(info  Generic Windows compile.  May or may-not work on modern Windows.)
+   $(info  Please submit bug reports, and bug fixes. )
+@@ -482,6 +489,7 @@ endif
+ endif
+ endif
+ endif
++endif
+ export OS
+ 
+ 
+@@ -507,7 +515,7 @@ ifdef DOSFILE
+   O_WIN:=$(subst /,\,$(O))
+   DD_WIN:=$(subst /,\,$(DD))
+ else
+-  # Linux, FreeBSD, Mac
++  # Linux, FreeBSD, NETBSD, Mac
+   RM:=rm
+   SHELL:=/bin/sh
+ endif
+@@ -730,7 +738,7 @@ ifdef DOSFILE
+   INSTALL_GAMES_DIR ?= \games\doomlegacy
+   INSTALL_USER_DIR ?= $(USERHOME)\games\doomlegacy
+ else
+-  # Linux, FreeBSD, Mac
++  # Linux, FreeBSD, NETBSD, Mac
+   # DO NOT use tilde, use $(HOME).
+   PREFIX ?= /usr/local
+   INSTALL_SYS_DIR ?= $(PREFIX)/bin
+@@ -1144,7 +1152,11 @@ else
+   ifeq ($(OS), FREEBSD)
+ 	cp -n  make_options_nix  $(BUILD_DIR)make_options
+   else
++  ifeq ($(OS), NETBSD)
+ 	cp -n  make_options_nix  $(BUILD_DIR)make_options
++  else
++	cp -n  make_options_nix  $(BUILD_DIR)make_options
++  endif
+   endif
+   endif
+ endif
diff --git a/doomlegacy/patches/patch-src_Makefile b/doomlegacy/patches/patch-src_Makefile
new file mode 100644
index 0000000000..a0d7150bae
--- /dev/null
+++ b/doomlegacy/patches/patch-src_Makefile
@@ -0,0 +1,158 @@
+$NetBSD$
+
+Add NetBSD to OS list.
+Honor environment variables CFLAGS, LDFLAGS and LIBS.
+Silence warnings about common symbol merging.
+
+--- src/Makefile.orig	2018-07-16 09:17:06.000000000 +0000
++++ src/Makefile
+@@ -449,13 +449,13 @@ endif
+ endif
+ 
+ 
+-OS_LIST:=LINUX FREEBSD WIN32 WIN7 WIN98 OS2 DOS MAC
++OS_LIST:=LINUX FREEBSD NETBSD WIN32 WIN7 WIN98 OS2 DOS MAC
+ 
+ OPTS:=
+ 
+ ifeq ($(OS), LINUX)
+   LINUX=1
+-  OPTS:=-DLINUX
++  OPTS+=-DLINUX
+   #Known Compiler symbols
+   # linux  __linux  __linux__
+   # AIX defines: _AIX
+@@ -474,15 +474,23 @@ else
+ ifeq ($(OS), FREEBSD)
+   # Has some linking differences from the rest of Linux-like OS.
+   FREEBSD=1
+-  OPTS:=-DLINUX -DFREEBSD
++  OPTS+=-DLINUX -DFREEBSD
+   #Known Compiler symbols
+   # __FreeBSD__  __FreeBSD_kernel__  __DragonFly__
+   # SDL_platform.h for FreeBSD defines: __FREEBSD__
+ else
++ifeq ($(OS), NETBSD)
++  # Uses statvfs(5).
++  NETBSD=1
++  OPTS+=-DLINUX -DNETBSD
++  #Known Compiler symbols
++  # __NetBSD__
++  # SDL_platform.h for NetBSD defines: __NETBSD__
++else
+ ifeq ($(OS), WIN32)
+   WIN32=1
+   DOSFILE=1
+-  OPTS:=-DWIN32
++  OPTS+=-DWIN32
+   # if have windows > Win98, and want large memory reports
+   ifdef WIN_LARGE_MEM
+     OPTS+=-DWIN_LARGE_MEM
+@@ -500,7 +508,7 @@ ifeq ($(OS), WIN7)
+   # This does  NOT YET  make a version customized to Win7/8.
+   WIN32=1
+   DOSFILE=1
+-  OPTS:=-DWIN32
++  OPTS+=-DWIN32
+   # probably want large memory reports
+   OPTS+=-DWIN_LARGE_MEM
+   #Known Compiler symbols
+@@ -511,12 +519,12 @@ ifeq ($(OS), WIN98)
+   # If Win98 differences occur, this category can isolate them.
+   WIN32=1
+   DOSFILE=1
+-  OPTS:=-DWIN32
++  OPTS+=-DWIN32
+ else
+ ifeq ($(OS), OS2)
+   OS2=1
+   DOSFILE=1
+-  OPTS:=-D__OS2__
++  OPTS+=-D__OS2__
+   #Known Compiler symbols
+   # __OS2__
+ else
+@@ -545,13 +553,38 @@ endif
+ endif
+ endif
+ endif
++endif
+ export DOSFILE
+ 
++# OPTS goes to the C compiler and assembler.
++# OPTS is almost all defines using -D. It selects conditional code.
++# CFLAGS only goes to the C compiler.  It gets a copy of OPTS.
++# LDFLAGS goes to the linker.  Some linkers cannot handle OPTS.
++# LIBS goes to the linker.
++
++ifdef COMP_ENVIRONMENT
++  # Things like this will always have an enabling control.
++  # Otherwise, something that is useful on one system, will be a surprise on another system.
++  # And it is very hard to debug other systems when unknown settings
++  # are allowed to influence compiling, without any control or notification.
++
++  # NETBSD: Include the environment CFLAGS in OPTS.
++  # (This is what I got from the NETBSD user, and don't know why it
++  #  goes in OPTS instead of CFLAGS.)
++  OPTS+=$(CFLAGS)
++#  ENV_CFLAGS=$(CFLAGS)
++
++  # NETBSD: Has environment settings that should be used?
++  # Do not reset LIBS, use the LIBS from the environment.
++  # Do not reset LDFLAGS, use the LDFLAGS from the environment.
++else
++  LIBS:=
++  LDFLAGS:=
++endif
++
+ # all OPTINC need to have -I. because of how includes are written
+ # however the order of -I may be important, so it is left to each SMIF.
+ OPTINC:=
+-LIBS:=
+-LDFLAGS:=
+ INSTALL_SUPPL:=
+ 
+ CFLAGS:=
+@@ -568,6 +601,10 @@ ifdef ARCH
+   endif
+ endif
+ 
++ifdef ENV_CFLAGS
++  CFLAGS+=$(ENV_CFLAGS)
++endif
++
+ 
+ #=================================
+ ifeq ($(SMIF), SDL)
+@@ -597,14 +634,14 @@ ifeq ($(SMIF), SDL)
+     ifndef MAC
+       # default is Linux, for all unix SDL
+       EXENAME:=doomlegacy
+-      LDFLAGS=-L/usr/X11R6/lib
+-      LIBS:=-lGL -lGLU -lm
++      LDFLAGS+=-L/usr/X11R6/lib
++      LIBS+=-lGL -lGLU -lm
+       # -L/usr/X11R6/lib is needed by Linux 2.4 and others that still have
+       # the GLU libraries in an X11 directory.
+       # -lm is needed for pow, powf, and other MATH1 functions.
+     else
+       EXENAME:=doomlegacy
+-      LDFLAGS=-framework OpenGL
++      LDFLAGS+=-framework OpenGL
+     endif
+ 
+     SDL_CONFIG:=1
+@@ -1013,9 +1050,13 @@ CFLAGS+=$(OPTS) $(OPTINC)
+ ifdef MAC
+   # MAC linker does not accept these flags.
+ else
++ifdef NETBSD
++  # NETBSD linker does not accept these flags.
++else
+   # Flags to the linker.
+   LDFLAGS+=-Xlinker --warn-common
+ endif
++endif
+ 
+ SNDSERV_EXTRAFLAGS:=
+ ifdef HAVE_ESD
diff --git a/doomlegacy/patches/patch-src_doomtype.h b/doomlegacy/patches/patch-src_doomtype.h
new file mode 100644
index 0000000000..3b65c63df0
--- /dev/null
+++ b/doomlegacy/patches/patch-src_doomtype.h
@@ -0,0 +1,50 @@
+$NetBSD$
+
+Always use limits.h.
+
+--- src/doomtype.h.orig	2018-07-16 09:17:06.000000000 +0000
++++ src/doomtype.h
+@@ -165,18 +165,31 @@ int strlwr(char *n);
+ #endif
+ 
+ 
++// [WDJ] This is needs to be fixed throughout all the files.
++// But, not until it is determined which systems support which names.
+ // Predefined with some OS.
+ #ifdef __WIN32__
+ #include <limits.h>
+-#elif defined( MACOS_DI ) || defined( __MACH__ ) || defined( FREEBSD )
++#elif defined( MACOS_DI ) || defined( __MACH__ ) || defined( FREEBSD ) || defined( NETBSD )
+ #include <limits.h>
+ #else
+ // Linux GNU, which also includes limits.h
+ // obsolete header file
+-#include <values.h>
+-//#include <limits.h>
++//#include <values.h>
++#include <limits.h>
+ #endif
+ 
++#if ! defined(MAXINT) && defined( INT_MAX )
++// [WDJ] Define the values.h symbols using defines from limits.h.
++// This is what values.h does now.
++#define MAXCHAR   CHAR_MAX
++#define MINCHAR   CHAR_MIN
++#define MAXSHORT  SHRT_MAX
++#define MINSHORT  SHRT_MIN
++#define MAXINT    INT_MAX
++#define MININT    INT_MIN
++
++#else
+ // [WDJ] This is very dangerous considering 32 bit and 64 bit systems,
+ // should use stdint.h values instead.
+ // These are obsolete defines from values.h.
+@@ -214,6 +227,8 @@ int strlwr(char *n);
+ #define MININT    ((int)0x80000000)
+ #endif
+ 
++#endif
++
+ // Sound effect id type.
+ typedef  uint16_t  sfxid_t;
+ 
diff --git a/doomlegacy/patches/patch-src_i__tcp.c b/doomlegacy/patches/patch-src_i__tcp.c
new file mode 100644
index 0000000000..2c565b12d6
--- /dev/null
+++ b/doomlegacy/patches/patch-src_i__tcp.c
@@ -0,0 +1,47 @@
+$NetBSD$
+
+Disable IPX for NetBSD.
+
+--- src/i_tcp.c.orig	2018-07-16 09:17:06.000000000 +0000
++++ src/i_tcp.c
+@@ -135,6 +135,7 @@
+ # ifdef USE_IPX
+ # include <wsipx.h>
+ # endif // USE_IPX
++
+ #else
+   // Not Windows
+ 
+@@ -169,6 +170,13 @@
+ # endif
+ #endif
+ 
++#ifdef NETBSD
++// NetBSD does not have IPX.
++# ifdef USE_IPX
++#   undef USE_IPX
++# endif
++#endif
++
+ // Reported to be __OpenBSD__ , but it should be all caps and I am paranoid.
+ #if defined( __OpenBSD__ ) || defined( __OPENBSD__ )
+ // OpenBSD does not have IPX.
+@@ -413,15 +421,15 @@ char *SOCK_AddrToStr(mysockaddr_t *sk)
+ boolean IPX_cmpaddr(mysockaddr_t *a, mysockaddr_t *b)
+ {
+ #ifdef LINUX
+-#ifdef FREEBSD
++# ifdef FREEBSD
+     // FreeBSD: IPX address compare
+     return ipx_neteq( a->ipx.sipx_addr, b->ipx.sipx_addr) &&
+            ipx_hosteq( a->ipx.sipx_addr, b->ipx.sipx_addr );
+-#else
++# else
+     // Linux (except FreeBSD): IPX address compare
+     return ((memcmp(&(a->ipx.sipx_network) ,&(b->ipx.sipx_network) ,4)==0) &&
+             (memcmp(&(a->ipx.sipx_node),&(b->ipx.sipx_node),6)==0));
+-#endif
++# endif
+ #else
+     // Windows, OS2, DJGPP: IPX address compare
+     return ((memcmp(&(a->ipx.sa_netnum) ,&(b->ipx.sa_netnum) ,4)==0) &&
diff --git a/doomlegacy/patches/patch-src_sdl_i__system.c b/doomlegacy/patches/patch-src_sdl_i__system.c
new file mode 100644
index 0000000000..e19ae005b3
--- /dev/null
+++ b/doomlegacy/patches/patch-src_sdl_i__system.c
@@ -0,0 +1,24 @@
+$NetBSD$
+
+Use statvfs(5) for NetBSD.
+
+--- src/sdl/i_system.c.orig	2017-03-03 20:22:35.000000000 +0000
++++ src/sdl/i_system.c
+@@ -74,7 +74,7 @@
+    // meminfo
+ #  include <sys/types.h>
+ #  include <sys/sysctl.h>
+-# elif defined( __MACH__ )
++# elif defined( __MACH__ ) || defined( NETBSD )
+ #  include <sys/statvfs.h>
+ # else
+ #  include <sys/vfs.h>
+@@ -861,7 +861,7 @@ uint64_t I_GetDiskFreeSpace(void)
+ # ifdef SOLARIS
+   goto guess;
+ 
+-# elif defined( __MACH__ )
++# elif defined( __MACH__ ) || defined( NETBSD )
+   struct statvfs stfs;
+   if (statvfs(".", &stfs) == -1)
+     goto guess;


Home | Main Index | Thread Index | Old Index