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