first commit

This commit is contained in:
sam 2024-09-08 18:03:02 +12:00
commit 9481e88bbd
553 changed files with 177275 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
build/

54
.session.vim Normal file
View file

@ -0,0 +1,54 @@
let SessionLoad = 1
let s:so_save = &g:so | let s:siso_save = &g:siso | setg so=0 siso=0 | setl so=-1 siso=-1
let v:this_session=expand("<sfile>:p")
silent only
silent tabonly
cd ~/Downloads/prboom/prboom-plus/prboom2
if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
let s:wipebuf = bufnr('%')
endif
let s:shortmess_save = &shortmess
if &shortmess =~ 'A'
set shortmess=aoOA
else
set shortmess=aoO
endif
badd +0 .gitignore
argglobal
%argdel
$argadd .gitignore
edit .gitignore
argglobal
setlocal fdm=manual
setlocal fde=0
setlocal fmr={{{,}}}
setlocal fdi=#
setlocal fdl=0
setlocal fml=1
setlocal fdn=20
setlocal fen
silent! normal! zE
let &fdl = &fdl
let s:l = 1 - ((0 * winheight(0) + 15) / 30)
if s:l < 1 | let s:l = 1 | endif
keepjumps exe s:l
normal! zt
keepjumps 1
normal! 06|
tabnext 1
if exists('s:wipebuf') && len(win_findbuf(s:wipebuf)) == 0 && getbufvar(s:wipebuf, '&buftype') isnot# 'terminal'
silent exe 'bwipe ' . s:wipebuf
endif
unlet! s:wipebuf
set winheight=1 winwidth=20
let &shortmess = s:shortmess_save
let s:sx = expand("<sfile>:p:r")."x.vim"
if filereadable(s:sx)
exe "source " . fnameescape(s:sx)
endif
let &g:so = s:so_save | let &g:siso = s:siso_save
set hlsearch
nohlsearch
doautoall SessionLoadPost
unlet SessionLoad
" vim: set ft=vim :

163
AUTHORS Normal file
View file

@ -0,0 +1,163 @@
This file is now the amalgamated list of authors, contributors and credits
for PrBoom. Hopefully by keeping these all in one place, they will remain
more accurate.
Doom was originally written by id software; when playing with any id main
wad file, you can see their list of credits, which includes the list of
programmers. After some years, they released the source code, to allow
others to work on improving the game.
One of the first projects was DosDoom, by Chi Hoang. This was a quick port
of the released source code, which was for Linux, to DOS. This was then
picked up by TeamTNT (http://www.teamtnt.com/), who produced Boom, a greatly
debugged and extended version of Doom. The Boom programmers were Lee
Killough, Jim Flynn, Rand Phares, Ty Halderman.
Several projects started working from the Boom source code. One was PrBoom,
made by Florian Schulze, that ported the code to Windows, added suport for
higher resolutions and later OpenGL. Another was Marine's Best Friend
(known as MBF) by Lee Killough, which fixed a lot of Boom bugs and added
many new game features. Finally, there was LxDoom, a port of Boom to Linux
by Colin Phipps.
In October 1999, id Software re-released the Doom source code under the
GNU General Public License. TeamTNT have also changed to the new license,
and the other sources mentioned above have all allowed their code to be
GPLed. So PrBoom is covered by the GPL.
In May 2000, LxDoom, PrBoom, and a derived port called LSDLDoom, merged into
one. The current authors of PrBoom are:
Florian Schulze <florian.schulze@gmx.net>
Colin Phipps <cph@moria.org.uk>
Neil Stevens <neil@hakubi.us> - Mac OS X porting
Andrey Budko <andrey.budko@gmail.com>
Rob Young (RjY) <rjy@users.sourceforge.net>
Our thanks go to all the authors of the ports mentioned above, and also the
following people who contributed code to LxDoom or PrBoom:
Jess Haas <JessH@lbjhs.net>
Of LSDLdoom, who merged his project into PrBoom, contributing his SDL code.
Nicolas Kalkhof <nkalkhof@gmx.net>
Much work on the OpenGL renderer.
James "Quasar" Haley <haleyjd@concentric.net>
Ever willing to talk about source ideas, and has pointed me in the direction of
a lot of Boom and MBF bugs; also various bits code from his port Eternity have
been used, such as the BEX enhancements.
Bob Aman (sporkmonger.com)
Created the RMUDAnsiTextView class used in the Mac launcher.
Gady Kozma gady@math.tau.ac.il
Added hires to the SVGALib version of LxDoom, and other useful patches.
Dick Leban
Lots of feedback about portability issues and helping get the network code
working properly back at v1.3.6.
Eduardo Casino Almao
Lots of helpful feedback and suggestions, but more importantly actually getting
to grips with the code and giving very precise bug reports and patches.
Joey Hess
For numerous patches, like the glibc fixes and window manager updates, and
help with the music.
Ben Winslow
Various useful patches, like the colour ENDOOM code.
Josh Parsons josh@schlick.anu.edu.au
Sent me the patches to use autoconf for configuring LxDoom.
Steve Van Devender <stevev@efn.org>
Found the bug causing slight noise at the start of sounds playing, and other
patches.
Barry Mead <bmead15@cox.net>
Improvements to the mouse code and other odd patches.
Mattias Kunkel <mattias@kunkel.freeservers.com>
Made the lxdoom.spec file for creating LxDoom RPMs.
Vicente Aguilar vicente@hal.dhis.org
Handy patch for the file handling
Benjamin L McGee <vuelto@netscape.net>
Patch fixing the joystick code.
Chris Young <young1@users.sourceforge.net>
Patch improving the ENDOOM printing
Peter Jay Salzman <p@belial.ucdavis.edu>
Cleanup patches
Oliver Kraus
Send bug reports and patches for Solaris/Sparc.
Paul S Jenner <psj@firstlinux.net>
Nice patch to make RPM building easier
Julian <julian@jplan.cjb.net>
Fixed inline asm for gcc-2.95 (from Eternity)
Lionel Ulmer <lionel.ulmer@free.fr>
Patch to fix alignment problems on ARM processors.
Ville Vuorinen <vv@ydin.org>
Spotted and helped patch the player spawn bug, as well as helping with some
Win32 issues.
Steven Elliot <selliot4@users.sourceforge.net>
Misc patches.
Andreas Dehmel <zarquon@t-online.de>
Spotted & patched a savegame bug.
Jon Dowland
Bug reports & fixes, documentation improvements.
If you have sent in patches and I forgot to list you, I apologise. Please email
me and I will add you.
Also, thanks to the following people who have helped in various ways:
Simon "fraggle" Howard <fraggle@alkali.org>
More MBF bugs.
Robert Phipps <rob@phipps.uklinux.net>
Network game testing, feature suggestions etc.
Udo Monk
His port xdoom is very portable, and I referred to his code sometimes for help
with the X stuff; also his collection of Doom tools (XWadTools) is the
definitive tools collection for Linux.
Andre Majorel <amajorel@teaser.fr>
For Yadex, so I can debug those problematic levels more easily.
Michael Heasley
Author of musserver, which helped me first add music support.
Rafael Reilova
Helped with the music server program for LxDoom
Frederic Oghdayan
For useful feedback on LxDoom v1.0.1, and repeating his bug reports until I
believed them :-).
Adam Hegyi <ha211@hszk.bme.hu>
Prompted me to hunt down those last few demo sync bugs, and provided some useful
insights and example demos to help.
Adam Williamson
Pointing me toward yet another compatibility bug.
Ingo van Lil
Another bug spotter.
Everyone who contributed indirectly to MBF and Boom and Doom; see the
respective documentation files.

243
CMakeLists.txt Normal file
View file

@ -0,0 +1,243 @@
cmake_minimum_required(VERSION 3.0)
project("PrBoom-Plus"
VERSION 2.6.66
HOMEPAGE_URL "https://github.com/coelckers/prboom-plus")
# Set a default build type if none was specified
set(default_build_type "RelWithDebInfo")
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(TargetArch)
include(TestBigEndian)
TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
# Check if a CMAKE_INSTALL_DOCDIR is provided before GNUInstallDirs sets its
# own default; this lets us set our own PrBoom-Plus default docdir later
# without clobbering a user-configured one
set(CUSTOM_DOCDIR "${CMAKE_INSTALL_DOCDIR}")
include(GNUInstallDirs)
# Automated dependencies discovery, mostly needed for MSVC
target_architecture(TARGET_ARCH)
if(${TARGET_ARCH} MATCHES "i386")
set(DEPENDENCY_SUFFIX x86)
elseif(${TARGET_ARCH} MATCHES "x86_64")
set(DEPENDENCY_SUFFIX x64)
endif()
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../dependencies_${DEPENDENCY_SUFFIX}")
set(PACKAGE_NAME "${PROJECT_NAME}")
set(PACKAGE_TARNAME "prboom-plus")
set(PACKAGE_VERSION "${PROJECT_VERSION}")
set(PACKAGE_HOMEPAGE "${PROJECT_HOMEPAGE_URL}")
set(PACKAGE_STRING "${PROJECT_NAME} ${PROJECT_VERSION}")
if(NOT CUSTOM_DOCDIR)
set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PACKAGE_TARNAME}" CACHE PATH "" FORCE)
endif()
include(CheckSymbolExists)
check_symbol_exists(stricmp "string.h" HAVE_STRICMP)
if(NOT HAVE_STRICMP)
add_definitions("-Dstricmp=strcasecmp")
endif()
check_symbol_exists(strnicmp "string.h" HAVE_STRNICMP)
if(NOT HAVE_STRNICMP)
add_definitions("-Dstrnicmp=strncasecmp")
endif()
check_symbol_exists(getopt "unistd.h" HAVE_GETOPT)
check_symbol_exists(mmap "sys/mman.h" HAVE_MMAP)
check_symbol_exists(CreateFileMapping "windows.h" HAVE_CREATE_FILE_MAPPING)
if(NOT WIN32)
set(CMAKE_REQUIRED_DEFINITIONS_PREV ${CMAKE_REQUIRED_DEFINITIONS})
set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -D_GNU_SOURCE)
check_symbol_exists(sched_setaffinity "sched.h" HAVE_SCHED_SETAFFINITY)
set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS_PREV})
if(HAVE_SCHED_SETAFFINITY)
add_definitions(-D_GNU_SOURCE)
endif()
endif()
check_symbol_exists(usleep "unistd.h" HAVE_USLEEP)
check_symbol_exists(strsignal "string.h" HAVE_STRSIGNAL)
check_symbol_exists(mkstemp "stdlib.h" HAVE_MKSTEMP)
include(CheckIncludeFile)
check_include_file("sys/wait.h" HAVE_SYS_WAIT_H)
check_include_file("unistd.h" HAVE_UNISTD_H)
check_include_file("asm/byteorder.h" HAVE_ASM_BYTEORDER_H)
check_include_file("dirent.h" HAVE_DIRENT_H)
option(BUILD_GL "Enable OpenGL rendering code" ON)
if(BUILD_GL)
set(OpenGL_GL_PREFERENCE LEGACY)
find_package(OpenGL)
endif()
find_package(SDL2 2.0.7 REQUIRED)
option(WITH_IMAGE "Use SDL2_image if available" ON)
if(WITH_IMAGE)
find_package(SDL2_image)
if(SDL2_IMAGE_FOUND)
set(HAVE_LIBSDL2_IMAGE TRUE)
endif()
endif()
option(WITH_MIXER "Use SDL2_mixer if available" ON)
if(WITH_MIXER)
find_package(SDL2_mixer)
if(SDL2_MIXER_FOUND)
set(HAVE_LIBSDL2_MIXER TRUE)
endif()
endif()
option(WITH_NET "Use SDL2_net if available" ON)
if(WITH_NET)
find_package(SDL2_net)
if(SDL2_NET_FOUND)
set(HAVE_NET TRUE)
set(USE_SDL_NET TRUE)
endif()
endif()
option(WITH_PCRE "Use PCRE if available" ON)
if(WITH_PCRE)
find_package(PCREPOSIX)
if(PCREPOSIX_FOUND)
set(HAVE_LIBPCREPOSIX TRUE)
endif()
endif()
option(WITH_ZLIB "Use ZLIB if available" ON)
if(WITH_ZLIB)
find_package(ZLIB)
if(ZLIB_FOUND)
set(HAVE_LIBZ TRUE)
endif()
endif()
option(WITH_MAD "Use libmad if available" ON)
if(WITH_MAD)
find_package(LibMad)
if(LIBMAD_FOUND)
set(HAVE_LIBMAD TRUE)
endif()
endif()
option(WITH_FLUIDSYNTH "Use FluidSynth if available" ON)
if(WITH_FLUIDSYNTH)
find_package(FluidSynth)
if(FLUIDSYNTH_FOUND)
set(HAVE_LIBFLUIDSYNTH TRUE)
endif()
endif()
option(WITH_DUMB "Use DUMB if available" ON)
if(WITH_DUMB)
find_package(DUMB)
if(DUMB_FOUND)
set(HAVE_LIBDUMB TRUE)
endif()
endif()
option(WITH_VORBISFILE "Use vorbisfile if available" ON)
if(WITH_VORBISFILE)
find_package(Vorbis)
if(VORBIS_FOUND)
set(HAVE_LIBVORBISFILE TRUE)
endif()
endif()
option(WITH_PORTMIDI "Use PortMidi if available" ON)
if(WITH_PORTMIDI)
find_package(PortMidi)
if(PortMidi_FOUND)
set(HAVE_LIBPORTMIDI TRUE)
endif()
endif()
option(WITH_ALSA "Use ALSA MIDI if available" ON)
if(WITH_ALSA)
find_package(ALSA)
if(ALSA_FOUND)
set(HAVE_ALSA TRUE)
endif()
endif()
set(CMAKE_REQUIRED_INCLUDES_PREV ${CMAKE_REQUIRED_INCLUDES})
set(CMAKE_REQUIRED_LIBRARIES_PREV ${CMAKE_REQUIRED_LIBRARIES})
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${SDL2_INCLUDE_DIRS})
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${SDL2_LIBRARIES})
check_symbol_exists(SDL_JoystickGetAxis "SDL.h" HAVE_SDL_JOYSTICKGETAXIS)
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_PREV})
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES_PREV})
set(DOOMWADDIR "${CMAKE_INSTALL_PREFIX}/share/games/doom" CACHE PATH "Path to look for WAD files")
set(PRBOOMDATADIR "${CMAKE_INSTALL_PREFIX}/share/${PACKAGE_TARNAME}" CACHE PATH "Path to install supplemental files")
option(SIMPLECHECKS "Enable checks which only impose significant overhead if a posible error is detected" ON)
option(ZONEIDCHECK "Enable id checks on zone blocks, to detect corrupted and illegally freed blocks" ON)
# Debug options, disabled by default
option(RANGECHECK "Enable internal range checking" OFF)
option(INSTRUMENTED "Enable real-time memory allocation statistics, and extra debugging features" OFF)
option(TIMEDIAG "Enable creation of time stamps each time a lump is locked, and reporting of lumps locked for long periods of time" OFF)
option(HEAPCHECK "Turn on continuous heap checking (very slow)" OFF)
option(HEAPDUMP "Turn on dumping the heap state for debugging" OFF)
configure_file(cmake/config.h.cin config.h)
add_definitions(-DHAVE_CONFIG_H)
if (MSVC)
add_definitions("/D_CRT_SECURE_NO_WARNINGS")
else()
set(CMAKE_C_FLAGS
"${CMAKE_C_FLAGS} \
-Wall -Wno-missing-field-initializers -Wwrite-strings -Wundef \
-Wbad-function-cast -Wcast-align -Wcast-qual -Wdeclaration-after-statement \
-Wpointer-arith -Wno-unused -Wno-switch -Wno-sign-compare -Wno-pointer-sign \
-ffast-math"
)
endif()
# Support cross compiling
option(FORCE_CROSSCOMPILE "Enable cross-compilation" OFF)
if(FORCE_CROSSCOMPILE)
set(CMAKE_CROSSCOMPILING ON)
endif()
if(CMAKE_CROSSCOMPILING)
set(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Export file from native build")
include(${IMPORT_EXECUTABLES})
else()
if(NOT CROSS_EXPORTS)
set(CROSS_EXPORTS "")
endif()
endif()
set(PRBOOM_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(WAD_DATA prboom-plus.wad)
set(WAD_DATA_PATH "${PRBOOM_OUTPUT_PATH}/${WAD_DATA}")
add_subdirectory(data)
add_subdirectory(doc)
add_subdirectory(src)
if(NOT CMAKE_CROSSCOMPILING)
export(TARGETS ${CROSS_EXPORTS} FILE "${CMAKE_BINARY_DIR}/ImportExecutables.cmake")
endif()

367
COPYING Normal file
View file

@ -0,0 +1,367 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom
to share and change it. By contrast, the GNU General Public License
is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit
to using it. (Some other Free Software Foundation software is covered
by the GNU Library General Public License instead.) You can apply it
to your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge
for this service if you wish), that you receive source code or can
get it if you want it, that you can change the software or use pieces
of it in new free programs; and that you know you can do these
things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software,
and (2) offer you this license which gives you legal permission to
copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on,
we want its recipients to know that what they have is not the
original, so that any problems introduced by others will not reflect
on the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making
the program proprietary. To prevent this, we have made it clear that
any patent must be licensed for everyone's free use or not licensed
at all.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains a
notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the
Program is covered only if its contents constitute a work based on
the Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any
warranty; and give any other recipients of the Program a copy of this
License along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any part
thereof, to be licensed as a whole at no charge to all third parties
under the terms of this License.
c) If the modified program normally reads commands interactively when
run, you must cause it, when started running for such interactive use
in the most ordinary way, to print or display an announcement
including an appropriate copyright notice and a notice that there is
no warranty (or else, saying that you provide a warranty) and that
users may redistribute the program under these conditions, and
telling the user how to view a copy of this License. (Exception: if
the Program itself is interactive but does not normally print such an
announcement, your work based on the Program is not required to print
an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the
Program with the Program (or with a work based on the Program) on a
volume of a storage or distribution medium does not bring the other
work under the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the
following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections 1
and 2 above on a medium customarily used for software interchange;
or,
b) Accompany it with a written offer, valid for at least three years,
to give any third party, for a charge no more than your cost of
physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer to
distribute corresponding source code. (This alternative is allowed
only for noncommercial distribution and only if you received the
program in object code or executable form with such an offer, in
accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this
License. However, parties who have received copies, or rights, from
you under this License will not have their licenses terminated so
long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject
to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted
herein. You are not responsible for enforcing compliance by third
parties to this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do
not excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under
this License and any other pertinent obligations, then as a
consequence you may not distribute the Program at all. For example,
if a patent license would not permit royalty-free redistribution of
the Program by all those who receive copies directly or indirectly
through you, then the only way you could satisfy both it and this
License would be to refrain entirely from distribution of the
Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended
to apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is
willing to distribute software through any other system and a
licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new
versions of the General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published
by the Free Software Foundation. If the Program does not specify a
version number of this License, you may choose any version ever
published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the
author to ask for permission. For software which is copyrighted by
the Free Software Foundation, write to the Free Software Foundation;
we sometimes make exceptions for this. Our decision will be guided by
the two goals of preserving the free status of all derivatives of our
free software and of promoting the sharing and reuse of software
generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make
it free software which everyone can redistribute and change under
these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
one line to give the program's name and an idea of what it does.
Copyright (C) yyyy name of author
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
Also add information on how to contact you by electronic and paper
mail.
If the program is interactive, make it output a short notice like
this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) yyyy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
type `show w'. This is free software, and you are welcome
to redistribute it under certain conditions; type `show c'
for details.
The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License. Of course, the
commands you use may be called something other than `show w' and
`show c'; they could even be mouse-clicks or menu items--whatever
suits your program.
You should also get your employer (if you work as a programmer) or
your school, if any, to sign a "copyright disclaimer" for the
program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright
interest in the program `Gnomovision'
(which makes passes at compilers) written
by James Hacker.
signature of Ty Coon, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your
program into proprietary programs. If your program is a subroutine
library, you may consider it more useful to permit linking
proprietary applications with the library. If this is what you want
to do, use the GNU Library General Public License instead of this
License.
----------------------------------------------------------------------
----------
Return to GNU's home page.
FSF & GNU inquiries & questions to gnu@gnu.org. Other ways to contact
the FSF.
Comments on these web pages to webmasters@www.gnu.org, send other
questions to gnu@gnu.org.
Copyright notice above.
Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111, USA
Updated: 16 Feb 1998 tower

65
ICONS/icons.rc Normal file
View file

@ -0,0 +1,65 @@
#include "resource.h"
#include "winresrc.h"
#include "config.h"
/* IDC_STATIC is documented in winuser.h, but not defined. */
#ifndef IDC_STATIC
#define IDC_STATIC (-1)
#endif
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON DISCARDABLE "prboom-plus.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
#ifdef USE_WINDOWS_LAUNCHER
#ifdef _MSC_VER
1 24 MOVEABLE PURE "prboom-plus.exe.manifest"
#else
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "prboom-plus.exe.manifest"
#endif
IDD_LAUNCHERSERVERDIALOG DIALOGEX 0, 0, 187, 245
STYLE DS_SYSMODAL | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP |
WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_CONTROLPARENT | WS_EX_APPWINDOW
CAPTION "PrBoom-Plus Launcher"
FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,72,224,50,14
PUSHBUTTON "Cancel",IDCANCEL,127,224,50,14
CONTROL "Tab1",IDC_TAB1,"SysTabControl32",0x0,5,5,178,214
END
IDD_LAUNCHERCLIENTDIALOG DIALOGEX 7, 7, 173, 206
STYLE DS_CONTROL | WS_CHILD | WS_VISIBLE
FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
LTEXT "Game:",IDC_STATIC,4,5,22,8,0,WS_EX_TRANSPARENT
COMBOBOX IDC_IWADCOMBO,4,15,164,100,CBS_DROPDOWNLIST | CBS_SORT |
WS_VSCROLL | WS_TABSTOP
LTEXT "Files:",IDC_STATIC,4,32,17,8,0,WS_EX_TRANSPARENT
LISTBOX IDC_PWADLIST,4,42,164,110,LBS_SORT |
LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | LBS_EXTENDEDSEL |
WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
LTEXT "History:",IDC_STATIC,4,155,38,8,0,WS_EX_TRANSPARENT
COMBOBOX IDC_HISTORYCOMBO,4,165,164,100,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
LTEXT "Commands:",IDC_STATIC,4,181,38,8,0,WS_EX_TRANSPARENT
COMBOBOX IDC_COMMANDCOMBO,4,191,164,100,CBS_DROPDOWNLIST |
WS_VSCROLL
LTEXT "",IDC_FULLFILENAMESTATIC,23,32,142,8
END
#endif // USE_WINDOWS_LAUNCHER
/////////////////////////////////////////////////////////////////////////////

51
ICONS/prboom-plus.bash Normal file
View file

@ -0,0 +1,51 @@
# bash completion for PrBoom+ -*- shell-script -*-
_prboom_plus()
{
local cur prev words cword
_init_completion || return
# Save the previous switch on the command line in the prevsw variable
local i prevsw=""
for (( i=1; $cword > 1 && i <= $cword; i++ )); do
if [[ ${words[i]} == -* ]]; then
prevsw=${words[i]}
fi
done
# Allow adding more than one file with the same extension to the same switch
case $prevsw in
-iwad|-file)
_filedir wad
;;
-deh)
_filedir '@(bex|deh)'
;;
-record*|-*demo)
_filedir lmp
;;
esac
if [[ $cur == -* ]]; then
COMPREPLY=( $( compgen -W '-1 -2 -3 -altdeath -aspect -auto -avg
-avidemo -bexout -blockmap -complevel -config -deathmatch -debugfile
-deh -devparm -fast -fastdemo -ffmap -file -fullscreen -geom -height
-iwad -levelstat -noaccel -noblit -nocheats -nodraw -nodrawers
-nofullscreen -nojoy -nomonsters -nomouse -nomusic -nosfx -nosound
-nowindow -playdemo -port -record -recordfromto -resetgamma -respawn
-save -shorttics -shotdir -skill -skipsec -solo-net -spechit -timedemo
-timer -viddump -videodriver -vidmode -viewangle -warp -width -window' \
-- "$cur" ) )
else
# DoLooseFiles() takes any file names on the command line before the
# first switch parm and inserts the appropriate -file, -deh or -playdemo
# switch in front of them.
if [[ -z "$prevsw" ]]; then
_filedir '@(bex|deh|lmp|wad)'
fi
fi
} &&
complete -F _prboom_plus prboom-plus
# ex: ts=4 sw=4 et filetype=sh

10
ICONS/prboom-plus.desktop Normal file
View file

@ -0,0 +1,10 @@
[Desktop Entry]
Type=Application
Name=PrBoom+
Comment=enhanced clone of the classic first-person shooter Doom
Icon=prboom-plus
TryExec=prboom-plus
Exec=prboom-plus %F
Categories=Game;ActionGame;
MimeType=application/x-doom-wad;
Keywords=first;person;shooter;doom;

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- What's this??? It's for WinXP. See bug#466423 if you're interested -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="prboom-plus.prboom-plus.prboom-plus"
type="win32"
/>
<description>PrBoom-Plus</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<!-- Declare app as DPI aware, so that Windows Vista and later will not
apply DPI virtualization. -->
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>

BIN
ICONS/prboom-plus.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB

127
ICONS/prboom-plus.svg Normal file
View file

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32px"
height="32px"
id="svg2985"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="prbp.svg">
<defs
id="defs2987">
<linearGradient
id="linearGradient3874">
<stop
style="stop-color:#aa0004;stop-opacity:1;"
offset="0"
id="stop3876" />
<stop
style="stop-color:#390001;stop-opacity:1;"
offset="1"
id="stop3878" />
</linearGradient>
<linearGradient
id="linearGradient3858">
<stop
style="stop-color:#d5a500;stop-opacity:1;"
offset="0"
id="stop3860" />
<stop
style="stop-color:#fff000;stop-opacity:1;"
offset="1"
id="stop3862" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3858"
id="radialGradient3872"
cx="28"
cy="4"
fx="28"
fy="4"
r="6"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,-1,44,20)" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3874"
id="radialGradient3880"
cx="16"
cy="16"
fx="16"
fy="16"
r="16"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="17.109259"
inkscape:cx="6.9997341"
inkscape:cy="15.98528"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1600"
inkscape:window-height="841"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3058"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingy="0.5px"
spacingx="0.5px"
originy="-0.5px"
originx="-0.5px"
color="#0000ff"
opacity="0" />
</sodipodi:namedview>
<metadata
id="metadata2990">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:url(#radialGradient3880);fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 0.5,18.5 5,-6 -2,-6 5,0 0,-6 6,6 6,-6 3,4 0,6 7,0 -4,9 4,11 -14,-6 -8,5 0,-6 -4,0 0,-4 z"
id="path3060"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccc" />
<path
style="fill:url(#radialGradient3872);fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 13.5,10.5 0,3 -3,0 0,5 3,0 0,3 5,0 0,-3 3,0 0,-5 -3,0 0,-3 z"
id="path3062"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

20
ICONS/resource.h Normal file
View file

@ -0,0 +1,20 @@
#define IDI_ICON1 101
#define IDI_ICON2 102
#define IDI_ICON3 103
#define IDI_ICON4 104
#define IDI_ICON5 105
#define IDI_ICON6 106
#define IDD_LAUNCHERSERVERDIALOG 120
#define IDD_LAUNCHERCLIENTDIALOG 121
#define IDC_TAB1 1003
#define IDC_COMBO1 1004
#define IDC_IWADCOMBO 1004
#define IDC_IWADLIST 1006
#define IDC_LIST2 1006
#define IDC_PWADLIST 1006
#define IDC_LIST3 1007
#define IDC_COMMANDCOMBO 1008
#define IDC_HISTORYCOMBO 1009
#define IDC_EDIT2 1014
#define IDC_CHECK1 1015
#define IDC_FULLFILENAMESTATIC 1016

245
INSTALL Normal file
View file

@ -0,0 +1,245 @@
Basic Installation (ZIP, tarball, Git)
==================
1. To compile PrBoom-Plus, you need at least SDL2. To enable various
extensions and optional features, the following are required:
- SDL2_net (for network play)
- SDL2_image (for high-res textures in OpenGL, and PNG screenshots)
- PCRE (for demo filename pattern matching)
- for music support, some or all of
* SDL2_mixer (midi, timidity)
* Fluidsynth (midi)
* ALSA (midi)
* Portmidi (midi)
* MAD (mp3)
* DUMB (various tracker-style formats)
* vorbisfile (ogg)
On a typical Debian or Ubuntu system this may be sufficient:
apt-get install libsdl2-dev libsdl2-net-dev libsdl2-image-dev \
libpcre3-dev libsdl2-mixer-dev libfluidsynth-dev \
libportmidi-dev libmad0-dev libdumb1-dev libvorbis-dev libasound2-dev
You will also need `cmake` and `make` if you haven't already got them.
2. `cd' to the directory containing the PrBoom distribution (the directory
this file is in, prboom2).
Create a new `build` folder and `cd` into it.
`mkdir build && cd build`
Run `cmake .. -DCMAKE_BUILD_TYPE=Release` from this folder, or
`cmake .. -DCMAKE_BUILD_TYPE=Debug` for a debug build. (This gives
slightly lower performance, but more details in the event of
issues).
This should end with the message "Build files have been written to: [folderpath]".
3. Type `make` to compile PrBoom. This may take some time; while it's
compiling I suggest you read the README, or maybe go and look for some
good doom levels to play when it's finished :-).
This should work on all Linux systems, but systems that have a make
utility other than GNU make may have problems. E.g. you might need to
install GNU make, and then use it instead of make for these
instructions. I have tested BSD pmake and it works fine.
4. Type `make install/strip' as root, to install the programs, data files
and man pages for PrBoom. If you don't have root access on the machine,
you should ask the syadmin to do this and the next step for you.
If you want to install manually then you should put the `prboom-plus.wad`
in /usr/local/share/games/doom/ (or symlink it from there).
5. Copy your Doom, Doom 2, Ultimate Doom or Final Doom IWAD (doom.wad or
doom2.wad) to /usr/local/share/games/doom/ (or symlink it from there).
Or if you don't have any of those, use the shareware IWAD, which you can
get from http://www.doomworld.com/ or http://www.idsoftware.com/.
If you have a system with many users, you should read the license for
your version of Doom, and make sure only those users allowed to use it
can access the IWAD file.
You may also aquire FreeDoom from https://freedoom.github.io/ which is a
free replacement to the iD Doom iWADs.
6. You can remove the program binaries and object files from the
source directory by typing `make clean`. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
7. PrBoom is now ready for use. If /usr/local/games is in your path,
you can just run prboom; otherwise give the full path.
Building an RPM
===============
If you are on a system which uses the RPM packaging format, you might prefer
to build an RPM containing the PrBoom binaries rather than installing them
directly. Follow steps 1 and 2 above, then run a "make rpm". This performs
the usual proceedure for building the rpm in /usr/src/redhat/. Note that
the RPM sets its own parameters to ./configure; if you want to override
them you'll have to edit the build scripts yourself. Note that to get the
correct permissions, you either have to run this process as root, or use the
wrapper program fakeroot (version 0.4.5 or later - grab it from the Debian
source archive) and make sure you have permissions to the RPM build area.
Installation Details
====================
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, a file
`config.cache' that saves the results of its tests to speed up
reconfiguring, and a file `config.log' containing compiler output
(useful mainly for debugging `configure').
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If at some point `config.cache'
contains results you don't want to keep, you may remove or edit it.
The file `configure.ac' is used to create `configure' by a program
called `autoconf'. You only need `configure.ac' if you want to change
it or regenerate `configure' using a newer version of `autoconf'.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. You can give `configure'
initial values for variables by setting them in the environment. Using
a Bourne-compatible shell, you can do that on the command line like
this:
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
Or on systems that have the `env' program, you can do it like this:
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not supports the `VPATH'
variable, you have to compile the package for one architecture at a time
in the source code directory. After you have installed the package for
one architecture, use `make distclean' before reconfiguring for another
architecture.
Installation Names
==================
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', the package will use
PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=PATH' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
There may be some features `configure' can not figure out
automatically, but needs to determine by the type of host the package
will run on. Usually `configure' can figure that out, but if it prints
a message saying it can not guess the host type, give it the
`--host=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name with three fields:
CPU-COMPANY-SYSTEM
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the host type.
If you are building compiler tools for cross-compiling, you can also
use the `--target=TYPE' option to select the type of system they will
produce code for and the `--build=TYPE' option to select the type of
system on which you are compiling the package.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Operation Controls
==================
`configure' recognizes the following options to control how it
operates.
`--cache-file=FILE'
Use and save the results of the tests in FILE instead of
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
debugging `configure'.
`--help'
Print a summary of the options to `configure', and exit.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--version'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`configure' also accepts some other, not widely useful, options.

300
NEWS Normal file
View file

@ -0,0 +1,300 @@
PrBoom-Plus 2.6.66 @ 20 Jun 2023
* Move default data directory to XDG_DATA_HOME on Linux by @facespkz in https://github.com/coelckers/prboom-plus/pull/470
* sort resolutions by width first and height second by @fabiangreffrath in https://github.com/coelckers/prboom-plus/pull/472
* check return status when checking for old prboom_dir by @facespkz in https://github.com/coelckers/prboom-plus/pull/473
* Fix integer overflow during multiplication with realtic_clock_rate by @jengelh in https://github.com/coelckers/prboom-plus/pull/476
* Fix UMAPINFO par times not loading for finale levels. by @JadingTsunami in https://github.com/coelckers/prboom-plus/pull/479
* Don't overwrite user-configured custom docdir by @vilhelmgray in https://github.com/coelckers/prboom-plus/pull/480
* Generate mixer buffer size from sample rate by @facespkz in https://github.com/coelckers/prboom-plus/pull/483
* Allow uppercase episode shortcuts in UMAPINFO by @facespkz in https://github.com/coelckers/prboom-plus/pull/486
* Add complevel hints for Default compatibility level by @facespkz in https://github.com/coelckers/prboom-plus/pull/488
* UMAPINFO: Fix nextsecret inconsistencies by @rfomin in https://github.com/coelckers/prboom-plus/pull/497
* Fix mid-texture judder when upper and middle textures overlap. by @JadingTsunami in https://github.com/coelckers/prboom-plus/pull/507
* include wipe effect into video capture by @vadosnaprimer in https://github.com/coelckers/prboom-plus/pull/506
* allow to -warp to MAP00 by @fabiangreffrath in https://github.com/coelckers/prboom-plus/pull/509
* Workaround for optimization bug in clang by @rfomin in https://github.com/coelckers/prboom-plus/pull/512
* Show a message when demo recording starts. by @JadingTsunami in https://github.com/coelckers/prboom-plus/pull/517
* Remove shift when initializing translation tables vs. colormap. by @JadingTsunami in https://github.com/coelckers/prboom-plus/pull/519
* Fix PortMidi level transitions by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/523
* replace doomedsda.us links with dsdarchive.com by @andrey-budko in https://github.com/coelckers/prboom-plus/pull/525
* Add proper SysEx support to PortMidi by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/526
* Fix color translation tables to not rely on player map arrow colors. by @JadingTsunami in https://github.com/coelckers/prboom-plus/pull/527
* Fix pitch bend typo for PortMidi by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/529
* Add configurable reverb and chorus for PortMidi by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/530
* Adjust music volume slider to match vanilla Doom by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/531
* Use non-linear scaling for high volume levels by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/532
* Adjust PortMidi volume slider to match midiOutSetVolume by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/533
* Remove alpha channel from FBO scene texture. by @JadingTsunami in https://github.com/coelckers/prboom-plus/pull/534
* UMAPINFO: bring par times fix in line with Woof by @fabiangreffrath in https://github.com/coelckers/prboom-plus/pull/537
* Fixing wall texture bleed when a sector is inside the sky by @JadingTsunami in https://github.com/coelckers/prboom-plus/pull/542
* Send all notes/sound off prior to SysEx reset by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/543
* Fix MIDI looping when using reset delay by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/544
* Clean up and fixes for PortMidi by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/548
* Fix FluidSynth mode and polyphony by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/550
* PortMidi: Use channel volume control, remove extra delay after reset by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/552
* Replace win_fopen.c with wrappers used in Chocolate Doom by @rfomin in https://github.com/coelckers/prboom-plus/pull/554
* PortMidi: Preserve timing when filtering SysEx; default to GM mode by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/555
* PortMidi: Add fix for MS GS Synth bug by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/557
* PortMidi: Fix songs with missing "hold pedal off" events by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/560
* PortMidi: Send "reset all controllers" when song loops by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/562
* Fix M_getcwd() in MinGW build by @rfomin in https://github.com/coelckers/prboom-plus/pull/563
* Fix string overflow with large map numbers. by @JadingTsunami in https://github.com/coelckers/prboom-plus/pull/569
* Supply correct texture format for GL wipe. by @JadingTsunami in https://github.com/coelckers/prboom-plus/pull/570
* PortMidi: Update volume after "reset all controllers" event by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/571
* PortMidi: Optimize reset messages by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/572
* PortMidi Updates by @ceski-1 in https://github.com/coelckers/prboom-plus/pull/576
* UMAPINFO: Introduce the new author field. by @rfomin in https://github.com/coelckers/prboom-plus/pull/436
PrBoom-Plus 2.6.2 @ 11 Feb 2022
- added a prospective fix for OpenGL rendering: don't bleed walls through sky floors
- account for proper crosshair offsets when locked on to monsters
- relaxed "IWAD tag not present" error to a warning, which allows loading REKKR IWAD
- fixed processing of multiple DEHs
- UMAPINFO: fixed error reporting if token == TK_NoToken
- fixed intermission screen for E0Mx
- fixed Alt+Tabbing on Windows, broken in new SDL2 version
- UMAPINFO: fixed using_FMI reset * no more crashes at textscreens
(e.g. after MAP06, MAP11 or MAP20) after viewing finale picture upon finishing
a level with UMAPINFO 'endpic' property
- fixed freezing at TITLEPIC while using mousewheel in menus
- fixed looping forever in G_NextWeapon()
- UMAPINFO: fix 'entering' and 'enterpic' shown on exit levels
- GL: adjust sky offsets for non-standard FOVs
- fixed stuttering with uncapped framerate
- added support for widescreen low resolutions
- added REKKR to launcher string list
- let G_GotoNextLevel() close the circle for maps with an endpic
- Launcher: identify IWADs either by IWAD tag, or by PWAD tag and matching filename
- Portmidi: fix freeze after song change
- fixed scaled time interpolation when changing game speed
- fixed wrong pitch of SFX when MIDI Player is set to SDL
- v1.2 compat:
* do not use sfx_getpow for powerups
* do not render powerups and attacking Spiderdemon fullbright
- UMAPINFO: fixed par times not showing
- fixed demo playback warp consistency
- added SKILL cheat to display current skill level
- fixed calculation of interpolation frac value
- guard against screen buffer underflow
- fixed crash at startup by properly closing IWAD file handle
- added vanilla_keymap option à la Chocolate Doom
- added 'run' as a mouse-settable control (mouseb_speed)
PrBoom-Plus 2.6.1um @ 16 Aug 2021
- fixed MOD playback with DUMB 2.x
- added TNTCLxx cheat, e.g. TNTCL04 sets complevel 4 (Final DOOM)
- draw crosshair before messages, draw crosshair for fist/chainsaw and during on-screen messages
- fixed crosshair locking on target for melee weapons
- more consistently check for ammo instead of weapon type
- fixed odd strafe values (vanilla allows even values only)
- added TNTSHORT cheat to toggle shorttics on and off while in game
- fixed typo in ZDoom-style Actor name (Slalagtite -> Stalagtite)
- fixed Windows Alt-Tab
- fixed a memory leak on SDL_Quit()
- preserve automap position/scale when toggling overlay mode
- allow binding weapon selection to mouse buttons
- add a `-pistolstart` command-line parameter
- fixed crashes on WADs with empty music lumps, e.g. Nihility.wad
- enabled loading 16 bit RIFF wavs in WADs
- make low-pass sound filter (introduced by the previous change) optional
- if executable directory appears not writable, fall back to `.`
- made pitch-shift range independent of target samplerate
- fixed bogus condition preventing automap lines from being drawn
- fixed saving of mouse button bindings
- fixed interpolated z-coordinate after teleporting
- added a new option "Disable sound cutoffs" to allow removed map objects to finish playing their sounds and to make seesounds uninterruptible
- allow deleting savegames from menu
- fixed automap crash when `USE_VERTEX_ARRAYS` and `GL_VBO` are undefined
- fluidsynth: reset all controllers when looping a song
- fixed hanging notes on exit when using Portmidi
- show current and next levels when typing IDCLEV cheat
- added a config key for "exclusive" i.e. mode-changing fullscreen
- UMAPINFO: if interbackdrop does not specify a valid flat, draw it as a patch instead
- appended revision tracker to UMAPINFO spec document
- ALSA sequencer API backend for ALSA MIDI support (Linux only)
- extended range of maps reachable via `-warp` and IDCLEV:
* from E1M1-E4M9 to E1M0-E9M99 for D1
* from MAP01-MAP33 to MAP00-MAP99
* Limitations:
* E0My doesn't work, since episode must always be > 0
* `-warp x 0`, because zero passed to `-warp` as map number is used to warping to first changed map in PWAD
- evaluate mouse motion only once per tick
- show Time/STS widgets above status bar
- removed lowpass-filter item from menu
- fixed `P_SetMobjState()` stack, fixes crash on mayhem18p.wad/m18p31-1509.lmp
- fixed crash in automap on certain maps (e.g. Sunlust MAP01) when using GL renderer, Thing Appearance = Icons and 2xIDDT
- fixed menu intermission desync
- fixed crash when leaving menu in Chex Quest
- initialize the map title widget with the generic map lump name
- make "Next Level" key simply increase map number if already outside regular level transition range
- check for next level in IDCLEV cheat before announcing it
- make sure "Next Level" key never warps to a non-existent map
- reformatted umapinfo.txt so that it is easier to read in plaintext
- fixed custom episode select for Doom 2
- fixed shifting automap markers
- allow translucent sprites on all complevels
- allow disabling predefined translucency on all complevels
- fixed flood HOM on certain maps (e.g. Plutonia MAP11, HR MAP01) (GL)
- fixed sky walls for cases with sky vs. sky toptextures (e.g. E4M6) (GL)
- fixed transparent spites being rendered incorrectly with transparent walls in view (GL)
- generate a default save-slot name when saving to an empty slot
- added mouse button binds for turn left/right
- fixed sky scaling for non-standard sky sizes, e.g. Eviternity and Ancient Aliens (GL)
- added new advanced HUD layout by Fireb3rt+
- added slice_samplecount config option
- added manifest to declare app as DPI aware, so that Windows will not apply DPI virtualization
- added support for widescreen assets
- added ZDoom's names for the new Crispy Doom/DEHEXTRA things to ActorNames[], so they can be used with BossAction() if needed
- fixed UMAPINFO music restarting issue
- skip the 'entering level' screen if one of endgame, endpic, endbunny or endcast is set (UMAPINFO)
- fixed endbunny and endgame UMAPINFO fields
- reset mlook on demo recording
- added OpenGL sprite fuzz options ("darken", "shadow", "transparent", "ghostly")
- properly check for the CreateFileMapping() symbol (build)
- always precache sound lumps
- replace W_SafeGetNumForName() with W_CheckNumForName()
- removed defunct lump locking warnings
- removed obsolete SFX usefulness references
- allow colored blood to get set/overridden by DEHACKED, implemented Eternity's coloredblood spec, added three additional color translation tables for black, purple and white
- made the Ouch Face fix available on all complevels
- added the autoload directory feature from Chocolate Doom
- implemented custom atexit() sequence, ported over from Chocolate Doom, fixing crashes during shutdown e.g. on Linux using Wayland
- fixed switching weapons when reaching zero ammo with boom_autoswitch == 0
- made Doom sound quirk fixes available on all complevels
- UMAPINFO: introduced the new 'label' field
- do not cast degenmobj_t as mobj_t, breaks aliasing rules on platforms where mobj_t pointers are 64-bit aligned and
degenmobj_t pointers are only 32-bit aligned
- fixed `-solo-net` for demo restart
- fixed levelstat crash for MAP33 and above
- added autoload per PWAD feature, further enhancing the autoload directory feature
- UMAPINFO: fixed 'episode' field parsing, 'label' is single-line
- removed obsolete weapon toggle setting
- added ftell() and fseek() implementations for DEHACKED lumps, allowing the DEH parser to roll back to the start of a line following a blank line and re-process it with the last valid block code handler
- added mouse look / vertical mouse movement toggle notifications
- fixed forcing aspect ratio correction only for the canonical 16:10 (i.e. 320x200 and 640x400) modes
- do not even attempt to play DEMO4 if it is not available
- only apply palette changes when inside a level
- fixed 32-bit widescreen pain palette
- added a `-coop_spawns` parameter for using "coop in single-player" mode
- fixed OpenGL effect palettes
- added support for non-latin paths and filenames on Windows
- made sure to always autoload prboom-plus.wad
- introduced a supplemental data directory "PRBOOMDATADIR" to install prboom-plus.wad into (build)
- prepared for different autoload base directories, respecting the `-noload` parameter
- fixed playback of complevel 11 demo with UMAPINFO
- fixed attempted playback of a UMAPINFO demo without UMAPINFO loaded
- never exceed desktop resolution in fullscreen desktop mode
- UMAPINFO: entries without defined 'levelname' fall back to default
- UMAPINFO: fixed default intermission
- fixed setting 'finaleflat' in FMI_StartFinale (UMAPINFO)
- fixed load game during multiplayer demo playback
- fixed OpenGL backfill
PrBoom-Plus 2.6um @ 09 Feb 2021
- fixed episode selection when playing Doom 2
- fixed Doom 1 level progression
- print a blinking arrow next to the currently highlighted menu item
- print another blinking arrow to the right of the currently selected menu setting
- support the DOOMWADPATH environment variable
- add some extra states, sprites and mobjtypes from Doom Retro and Crispy Doom
- fullscreen desktop for the software renderer
- improved v1.2 compat:
- fixed a desync on the internal demo in DTH1.WAD
- fixed the walkways to the BFG rising a little too high on 1_ON_1.WAD
- moving floors (except plats) should not make the floor stop sound
- fixed infinite loop in macOS launcher
- added CMake build system
- fixed the mainfest to allow 64 bit builds
- fixed PortMidi support on 64-bit Windows
- disabled the "popping skull player death" easter egg
- do not wait for VSync if running a timedemo
- added -statdump parameter from Chocolate Doom
- added mouse-strafe divisor setting
- removed and/or replace all non-free data lumps
- improved Boom random seed
- added -stroller param
- include secret exit in -levelstat
- added configurable quickstart window
- disallow 180-turn with strafe on
- fixed endianess for 32-bit ZDoom nodes
- show Extended Help screen when pressing the Help key
- made armor color depend on type, not amount
- added Chocolate Doom mouse behavior option
- fixed Boom autoswitch behavior
- reinstated the "WEAPON ATTACK ALIGNMENT" menu option
- changed "SECRET AREAS" menu option to "REPORT REVEALED SECRETS"
- fixed endianess for DeePBSP V4 nodes
- show error message boxes on Windows, except when video-dumping a demo
- unbind game speed changing keys in default config
- fixed heap buffer overflows in UDP multiplayer code
- fixed -longtics having no effect
- changed video capture to an ffmpeg-based approach
- track demo joins for TAS-detection purposes
- fixed some episode transition issues when using UMAPINFO
- added automap rotate and overlay keybindings to menus
- fixed a bug in DeHackEd string replacements with a length of exactly four
- added "Dropped Item" menu support
- enabled automap Follow Mode by default
- disabled chorus and reverb for Fluidsynth by default
- fix segfault with -viewangle parameter
- next levels no longer reset if endscreen is disabled in UMAPINFO
- added 200 Sounds for DEHEXTRA
- respawn when using IDDQD while dead
- fixes for empty DeHackEd lumps and entries
- restrict "next level" button usage to in-level only
- added adaptations for fluidsynth 2.0
- added "No Vertical Mouse" setting and keybind
- save / load -complevel 9 friction
- added extensible demo format + "PR+UM" signature
- made canonical resolutions (320x200, 320x240, 640x400 and 640x480)
always available in menu, regardless of what video driver/SDL report
- fixed aspect ratio for canonical resolutions; be sure to set "Aspect Ratio" to "Auto"
and "Status Bar and Menu Appearance" to "Not Adjusted" for both 320x200 and 640x400
- set minimum windows size to prevent window from shrinking when changing video modes
- "Screen Multiple Factor" now functions like a "window size factor"
(i.e. like "-1", "-2", "-3" in Chocolate Doom) and has no effect in fullscreen modes
- added "Integer Screen Scaling" option (à la Crispy Doom), which restricts the screen
size to integer multiples of the game resolution, under Options -> General, page 5
- both executables now share the same config file "prboom-plus.cfg", with all config
keys always preserved - including the GL-related ones
- switched to the unified executable "prboom-plus" with optional OpenGL rendering
- portmidi: pitch bends are now reset when stopping song
- added support for more mouse buttons
- fixed resolution-independent mouse sensitivity
- added demo restart functionality - record a new demo on map restart
- setup menus remember last active item
- fixed the KFA cheat sting not read from .bex patches
- UMAPINFO docs updated re: "bossaction" field
- fixed a crash when running out of space while typing in a file path into the autoload
fields (Options -> General, page 2)
- fixed the "Garbage lines at the top of weapon sprites" issue (#95)
- add support for named complevels on command line:
-complevel 1.9 = -complevel 2
-complevel doom2 = -complevel 2
-complevel ultimate = -complevel 3
-complevel udoom = -complevel 3
-complevel final = -complevel 4
-complevel tnt = -complevel 4
-complevel plutonia = -complevel 4
-complevel boom = -complevel 9
-complevel mbf = -complevel 11
-complevel vanilla = complevel autodetected according to IWAD loaded
- allow MBF sky transfers in all complevels
- add support for colored blood and gibs
- fixed key-bindings unusable after mouse-wheel up/down
PrBoom-Plus 2.5.1.7um @ 16 Jun 2019
- adds a special marker to demos recorded with UMAPINFO
- addes support for ZDBSP's compressed node format
- fixes the rendering problems in OpenGL
- fixes TRANMAP caching
PrBoom-Plus 2.5.1.6um @ 11 Jun 2019
This fixes a major bug with the episode selection menu not working and adds IDCLEV checks for maps outside the standard range.
PrBoom-Plus 2.5.1.5um @ 10 Jun 2019
First official release with UMAPINFO support
2.5.1.4.umapinfo_test @ 22 Apr 2017
Beta version with UMAPINFO support.
Note that this is for testing as the newly added MAPINFO feature has not seen thorough testing yet.

251
README Normal file
View file

@ -0,0 +1,251 @@
PrBoom 2.6.66
PrBoom is a version of the classic 3D shoot'em'up game Doom, originally
written by id Software.
See the file AUTHORS in this distribution for a list of authors and
other contributors, and a history of the projects PrBoom is derived
from.
PrBoom is made available under the GNU General Public License. See the
file COPYING included in this distribution for details.
Please see the NEWS file included for changes since the previous version.
Game data - WADs
----------------
(This section is aimed at people not familiar with Doom and the
data files it uses.)
PrBoom is a game engine - it provides a program to play Doom levels, but
it doesn't include any levels itself. More importantly, you need all the
sounds, sprites, and other graphics that make up the Doom environment.
So to play PrBoom, you need one of the main Doom date files from id
Software - either doom.wad, doom2.wad, tnt.wad or plutonia.wad from one
of the commercial Doom games, or the shareware doom1.wad. This file
is called the IWAD.
PrBoom also supports playing Doom add-on levels, called "PWADs", which
are small extra .wad files which just contain extra levels or other
resources. PWADs are ONLY ADD-ONS, you still need the original IWAD
that they are designed to work with. In practice, most PWADs on the
Internet require doom2.wad (although some work with doom.wad).
If you don't own any of the Doom games, get the shareware doom1.wad
from doom19s.zip on Doomworld's shareware download page. But note that you
will not be able to play most add-ons.
http://www.doomworld.com/files/shareware.shtml
Windows Installation
--------------------
Just extract the zip to a directory of your choice and copy your IWAD
files into it. Now you can make shortcuts and add "-iwad filename.wad"
to them.
The SDL_mixer library used by PrBoom supports software MIDI music
synthesis. If you want to hear the Doom music, you need a set of
Timidity instrument patches. Do a web search for timidity patch sets,
there are plenty around.
These patch sets are a large download (>5megs).
SDL_mixer does not currently support hardware MIDI synthesis. But we
have added a hacked version of SDL_mixer with native midi support. If
you like to try it out, rename SDL_mixer_beta.dll to SDL_mixer.dll.
You should rename the original SDL_mixer.dll before. Tell us if it
works or not. Please note, that there might be bugs in the native midi
implementation.
Linux Installation
------------------
For UNIX, Linux, and other POSIX systems, you need the SDL libraries in
order to use PrBoom. If you haven't already done so, visit
http://prboom.sourceforge.net/linux.html and follow the instructions there
for your system, downloading the necessary libraries, and either
installing the binary RPM package or compiling PrBoom from source.
Once you've done that, you'll need to copy your IWAD file (see the section
above if you don't know what this is) to a directory where PrBoom can find
it. Make /usr/local/share/games/doom/, and copy your IWAD (all of your
IWADs, if you own more than one) to that directory.
Mac OS Installation
-------------------
Copy your IWAD (see above) into your home folder under
Library:Application Support:PrBoom (this folder will be created for you the
first time you run PrBoom).
First Use
---------
If it's the first time you've run PrBoom, you'll need to do some configuring
to get the controls and display right for you.
On a new installation, PrBoom runs at 640x480 resolution. If you have used
PrBoom before, you may have an old config file in your home directory which
specifies a lower resolution, such as Doom's normal 320x200. You can use the
-width and -height parameters to select a higher resolution, e.g.:
prboom -width 640 -height 400
sets the resolution. This setting is remembered for future sessions. For
other parameters, see the included README.command-line.
You may also wish to customise the key bindings. PrBoom's default keybindings
are the same as the original Doom; unlike original Doom, you can change key
bindings in the game. In the in-game menus, go to Options, Settings, Key
Bindings.
On Mac OS X, you can't use the command line, but after running the program
once, you can edit YOURHOME:Library:Application Support:PrBoom:prboom.cfg to
change settings like your screen resolution.
Features
--------
This is all the features PrBoom has compared to the original Doom game
- it's intended to give you an idea of the enhancements, rather than
burying you in details.
See http://prboom.sourceforge.net/about.html for an HTML version of
this list.
This is shamelessly modelled on Boom's changes pages. By each
change, there's the name of the port the feature comes from (so it's
compatible with).
Playing the game
* Supports loading dehacked files at the command line, or in WADs
(BOOM, MBF)
* Supports PWADs containing sprites and flats (BOOM)
* Save games and demos completely store game parameters (BOOM,
MBF)
* Savegames store list of loaded WAD files, warning if wrong files
loaded (BOOM, MBF)
Game engine
* Player bobbing improved, optional (BOOM, MBF)
* Friction effects (BOOM), affecting players and monsters
(MBF)
* Wind, current, conveyor effects (BOOM)
* Far more flexible scrolling wall/floor types (BOOM)
* Always run (BOOM)
* Weapon change logic overhauled and improved (BOOM)
* Support for friendly monsters, helper dogs (MBF)
* Monster target finding code improved (MBF)
* AI improvements (MBF)
* Bouncy and touchy things (MBF)
* New code pointers (MBF)
* Per-level and animated skies (MBF)
* Generalised line types system gives complete flexibility
(BOOM)
* Elevators (BOOM)
* Translucent sprites, walls (BOOM)
* Independent floor and ceiling lighting (BOOM)
* Silent teleports (BOOM)
* Deep water, true underwater areas (BOOM)
* Icon of Sin telefragging made more consistent (MBF)
* Fix large numbers of game bugs (BOOM, MBF, LxDoom)
* Support arbitrary texture heights (BOOM)
Screen
* High resolution support (PrBoom)
* Optional message console, multiple message lines (BOOM)
* Status bar shows health/armour/ammo in colours (BOOM)
* Heads up display, showing ammo, health, keys overlayed on view
(BOOM)
Multiplayer
* Spy mode improved (BOOM)
* Support for loadgame in a net game (LxDoom)
* Client server style network games (LxDoom)
Automap
* No limit on marks (BOOM)
* Rotation and overlay modes (DOSDoom, LxDoom)
* Map shows coordinates (BOOM), optionally follow pointer
(MBF)
* Teleport lines, key doors and switches marked specially (BOOM)
* Keys, secrets visible on map with cheat codes (BOOM)
* Colours fully configurable from menus (BOOM)
Intermission screens
* Par times hidden when not relevant (BOOM)
* Total episode time shown (LxDoom)
Menus
* F1 help screen shows current key setup (BOOM)
* Key bindings, monster behaviour, and compatibility settings all set
in menus (BOOM, MBF)
Compatibility
* Game is capable of behaving like any of: original Doom v1.9, Boom
v2.02, MBF (BOOM, MBF, LxDoom)
* Plays most original Doom v1.9 demos (more than Boom or MBF)
* Plays most Boom v2.02 demos (apart from levels with friction
effects everything should work).
* Plays some DOSDoom, earlier Doom, earlier Boom, and LxDoom demos.
* Plays all MBF demos.
* Auto-correction of common bugs in old levels (MBF), with
warnings (LxDoom)
* Fine control of options controlling compatibility and new features
(MBF)
Controls
* Greater control of key bindings from in game menus (BOOM)
* More accurate mouse sensitivity control (BOOM, LxDoom)
Misc
* Screenshot code improved, supports BMPs (BOOM)
* Support for ENDOOM and ENDBOOM (BOOM, LxDoom)
* -timedemo and -fastdemo options (BOOM)
* Real time frame rate, segs, visplanes, sprites display
(LxDoom)
* Various extra cheat codes (BOOM, LxDoom)
Internals
* Greatly improved internal memory management (BOOM, LxDoom)
* Startup time greatly shortened by lazy generation of some lookups
(DOSDoom, LxDoom)
* Removed internal limits (BOOM)
Other Tips
----------
On Linux, SDL tries to detect an appropriate video device automatically.
If you want to overrite the default, you can set the SDL_VIDEODRIVER
enviromental variable. At a bash prompt, this is as easy as running:
SDL_VIDEODRIVER=fbcon prboom
or
SDL_VIDEODRIVER=svga prboom
Details
-------
Details on these extra features are split into separate text files:
README.demos provides a guide to PrBoom's demo support
README.compatibility describes PrBoom's various compatibility
options and modes
README.command-line gives a command line reference for prboom,
prboom-game-server, and the format of boom.cfg.
On UNIX/Linux systems use the man pages instead.
Editing features are not covered in the docs with this package. We plan
to bundle the editing docs as a separate download. Watch our website
for news.

69
cmake/FindALSA.cmake Normal file
View file

@ -0,0 +1,69 @@
# Alsa check, based on libkmid/configure.in.in.
# Only the support for Alsa >= 0.9.x was included; 0.5.x was dropped (but feel free to re-add it if you need it)
# It defines ...
# It offers the following macros:
# ALSA_CONFIGURE_FILE(config_header) - generate a config.h, typical usage:
# ALSA_CONFIGURE_FILE(${CMAKE_BINARY_DIR}/config-alsa.h)
# ALSA_VERSION_STRING(version_string) looks for alsa/version.h and reads the version string into
# the first argument passed to the macro
# Copyright (c) 2006, David Faure, <faure@kde.org>
# Copyright (c) 2007, Matthias Kretz <kretz@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
include(CheckIncludeFiles)
include(CheckIncludeFileCXX)
include(CheckLibraryExists)
# Already done by toplevel
find_library(ASOUND_LIBRARY asound)
set(ASOUND_LIBRARY_DIR "")
if(ASOUND_LIBRARY)
get_filename_component(ASOUND_LIBRARY_DIR ${ASOUND_LIBRARY} PATH)
endif(ASOUND_LIBRARY)
check_library_exists(asound snd_seq_create_simple_port "${ASOUND_LIBRARY_DIR}" HAVE_LIBASOUND2)
if(HAVE_LIBASOUND2)
message(STATUS "Found ALSA: ${ASOUND_LIBRARY}")
else(HAVE_LIBASOUND2)
message(STATUS "ALSA not found")
endif(HAVE_LIBASOUND2)
set(ALSA_FOUND ${HAVE_LIBASOUND2})
find_path(ALSA_INCLUDES alsa/version.h)
macro(ALSA_VERSION_STRING _result)
# check for version in alsa/version.h
if(ALSA_INCLUDES)
file(READ "${ALSA_INCLUDES}/alsa/version.h" _ALSA_VERSION_CONTENT)
string(REGEX REPLACE ".*SND_LIB_VERSION_STR.*\"(.*)\".*" "\\1" ${_result} ${_ALSA_VERSION_CONTENT})
else(ALSA_INCLUDES)
message(STATUS "ALSA version not known. ALSA output will probably not work correctly.")
endif(ALSA_INCLUDES)
endmacro(ALSA_VERSION_STRING _result)
get_filename_component(_FIND_ALSA_MODULE_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
macro(ALSA_CONFIGURE_FILE _destFile)
check_include_files(sys/soundcard.h HAVE_SYS_SOUNDCARD_H)
check_include_files(machine/soundcard.h HAVE_MACHINE_SOUNDCARD_H)
check_include_files(linux/awe_voice.h HAVE_LINUX_AWE_VOICE_H)
check_include_files(awe_voice.h HAVE_AWE_VOICE_H)
check_include_files(/usr/src/sys/i386/isa/sound/awe_voice.h HAVE__USR_SRC_SYS_I386_ISA_SOUND_AWE_VOICE_H)
check_include_files(/usr/src/sys/gnu/i386/isa/sound/awe_voice.h HAVE__USR_SRC_SYS_GNU_I386_ISA_SOUND_AWE_VOICE_H)
check_include_file_cxx(sys/asoundlib.h HAVE_SYS_ASOUNDLIB_H)
check_include_file_cxx(alsa/asoundlib.h HAVE_ALSA_ASOUNDLIB_H)
check_library_exists(asound snd_pcm_resume "${ASOUND_LIBRARY_DIR}" ASOUND_HAS_SND_PCM_RESUME)
if(ASOUND_HAS_SND_PCM_RESUME)
set(HAVE_SND_PCM_RESUME 1)
endif(ASOUND_HAS_SND_PCM_RESUME)
configure_file(${_FIND_ALSA_MODULE_DIR}/config-alsa.h.cmake ${_destFile})
endmacro(ALSA_CONFIGURE_FILE _destFile)
mark_as_advanced(ALSA_INCLUDES ASOUND_LIBRARY)

28
cmake/FindDUMB.cmake Normal file
View file

@ -0,0 +1,28 @@
SET(DUMB_SEARCH_PATHS
/usr/local/
/usr
/opt
)
FIND_PATH(DUMB_INCLUDE_DIR dumb.h
HINTS ${DUMB_ROOT}
PATH_SUFFIXES include include/dumb
PATHS ${DUMB_SEARCH_PATHS}
)
FIND_LIBRARY(DUMB_LIBRARY dumb
HINTS ${DUMB_ROOT}
PATH_SUFFIXES lib64 lib
PATHS ${DUMB_SEARCH_PATHS}
)
IF(DUMB_INCLUDE_DIR AND DUMB_LIBRARY)
SET(DUMB_FOUND TRUE)
ENDIF (DUMB_INCLUDE_DIR AND DUMB_LIBRARY)
IF(DUMB_FOUND)
MESSAGE(STATUS "Found Dumb: ${DUMB_LIBRARY}")
ELSE(DUMB_FOUND)
MESSAGE(STATUS "Could NOT find Dumb")
ENDIF(DUMB_FOUND)

View file

@ -0,0 +1,23 @@
# - Find fluidsynth
# Find the native fluidsynth includes and library
#
# FLUIDSYNTH_INCLUDE_DIR - where to find fluidsynth.h
# FLUIDSYNTH_LIBRARIES - List of libraries when using fluidsynth.
# FLUIDSYNTH_FOUND - True if fluidsynth found.
IF (FLUIDSYNTH_INCLUDE_DIR AND FLUIDSYNTH_LIBRARIES)
# Already in cache, be silent
SET(FluidSynth_FIND_QUIETLY TRUE)
ENDIF (FLUIDSYNTH_INCLUDE_DIR AND FLUIDSYNTH_LIBRARIES)
FIND_PATH(FLUIDSYNTH_INCLUDE_DIR fluidsynth.h)
FIND_LIBRARY(FLUIDSYNTH_LIBRARIES NAMES fluidsynth )
MARK_AS_ADVANCED( FLUIDSYNTH_LIBRARIES FLUIDSYNTH_INCLUDE_DIR )
# handle the QUIETLY and REQUIRED arguments and set FLUIDSYNTH_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(FluidSynth DEFAULT_MSG FLUIDSYNTH_LIBRARIES FLUIDSYNTH_INCLUDE_DIR)

45
cmake/FindLibMad.cmake Normal file
View file

@ -0,0 +1,45 @@
#-------------------------------------------------------------------------------
#
# Copyright 2013-2018 BBC Research and Development
#
# This file is part of Audio Waveform Image Generator.
#
# Author: Chris Needham
#
# Audio Waveform Image Generator is free software: you can redistribute it
# and/or modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of the License,
# or (at your option) any later version.
#
# Audio Waveform Image Generator is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# Audio Waveform Image Generator. If not, see <http://www.gnu.org/licenses/>.
#
#-------------------------------------------------------------------------------
#
# Finds libmad include file and library. This module sets the following
# variables:
#
# LIBMAD_FOUND - Flag if libmad was found
# LIBMAD_INCLUDE_DIRS - libmad include directories
# LIBMAD_LIBRARIES - libmad library paths
#
#-------------------------------------------------------------------------------
include(FindPackageHandleStandardArgs)
find_path(LIBMAD_INCLUDE_DIRS mad.h)
find_library(LIBMAD_LIBRARIES mad)
find_package_handle_standard_args(
LibMad
DEFAULT_MSG
LIBMAD_LIBRARIES
LIBMAD_INCLUDE_DIRS
)
#-------------------------------------------------------------------------------

53
cmake/FindOgg.cmake Normal file
View file

@ -0,0 +1,53 @@
# - Find ogg library
# Find the native Ogg headers and libraries.
#
# OGG_INCLUDE_DIRS - where to find ogg/ogg.h, etc.
# OGG_LIBRARIES - List of libraries when using ogg.
# OGG_FOUND - True if ogg is found.
#=============================================================================
#Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
#All rights reserved.
#
#Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
#* Redistributions of source code must retain the above copyright notice,
#this list of conditions and the following disclaimer.
#
#* Redistributions in binary form must reproduce the above copyright notice,
#this list of conditions and the following disclaimer in the documentation
#and/or other materials provided with the distribution.
#
#* Neither the names of Kitware, Inc., the Insight Software Consortium, nor
#the names of their contributors may be used to endorse or promote products
#derived from this software without specific prior written permission.
#
#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
#AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
#IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
#ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
#LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
#INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
#CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#POSSIBILITY OF SUCH DAMAGE.
#=============================================================================
# Look for the header file.
FIND_PATH(OGG_INCLUDE_DIR NAMES ogg/ogg.h)
MARK_AS_ADVANCED(OGG_INCLUDE_DIR)
# Look for the library.
FIND_LIBRARY(OGG_LIBRARY NAMES ogg)
MARK_AS_ADVANCED(OGG_LIBRARY)
# handle the QUIETLY and REQUIRED arguments and set OGG_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ogg DEFAULT_MSG OGG_LIBRARY OGG_INCLUDE_DIR)
SET(OGG_LIBRARIES ${OGG_LIBRARY})
SET(OGG_INCLUDE_DIRS ${OGG_INCLUDE_DIR})

34
cmake/FindPCREPOSIX.cmake Normal file
View file

@ -0,0 +1,34 @@
# - Find pcreposix
# Find the native PCRE and PCREPOSIX include and libraries
#
# PCRE_INCLUDE_DIR - where to find pcreposix.h, etc.
# PCREPOSIX_LIBRARIES - List of libraries when using libpcreposix.
# PCRE_LIBRARIES - List of libraries when using libpcre.
# PCREPOSIX_FOUND - True if libpcreposix found.
# PCRE_FOUND - True if libpcre found.
IF (PCRE_INCLUDE_DIR)
# Already in cache, be silent
SET(PCRE_FIND_QUIETLY TRUE)
ENDIF (PCRE_INCLUDE_DIR)
FIND_PATH(PCRE_INCLUDE_DIR pcreposix.h)
FIND_LIBRARY(PCREPOSIX_LIBRARY NAMES pcreposix libpcreposix)
FIND_LIBRARY(PCRE_LIBRARY NAMES pcre libpcre)
# handle the QUIETLY and REQUIRED arguments and set PCREPOSIX_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCREPOSIX DEFAULT_MSG PCREPOSIX_LIBRARY PCRE_INCLUDE_DIR)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCRE DEFAULT_MSG PCRE_LIBRARY)
IF(PCREPOSIX_FOUND)
SET(PCREPOSIX_LIBRARIES ${PCREPOSIX_LIBRARY})
SET(HAVE_LIBPCREPOSIX 1)
SET(HAVE_PCREPOSIX_H 1)
ENDIF(PCREPOSIX_FOUND)
IF(PCRE_FOUND)
SET(PCRE_LIBRARIES ${PCRE_LIBRARY})
SET(HAVE_LIBPCRE 1)
ENDIF(PCRE_FOUND)

36
cmake/FindPortMidi.cmake Normal file
View file

@ -0,0 +1,36 @@
# - Try to find PortMidi
# Once done, this will define
#
# PortMidi_FOUND - system has PortMidi
# PortMidi_INCLUDE_DIRS - the PortMidi include directories
# PortMidi_LIBRARIES - link these to use PortMidi
# PortMidi_VERSION - detected version of PortMidi
#
# See documentation on how to write CMake scripts at
# http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries
find_library(PORTMIDI_LIBRARY portmidi
HINTS
$ENV{PORTMIDI_DIR}
)
find_library(PORTTIME_LIBRARY porttime
HINTS
$ENV{PORTMIDI_DIR}
)
find_path(PORTMIDI_INCLUDE_DIR portmidi.h
HINTS
$ENV{PORTMIDI_DIR}
)
set(PORTMIDI_LIBRARIES ${PORTMIDI_LIBRARY})
if (PORTTIME_LIBRARY)
list(APPEND PORTMIDI_LIBRARIES ${PORTTIME_LIBRARY})
endif (PORTTIME_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PortMidi REQUIRED_VARS PORTMIDI_LIBRARIES PORTMIDI_INCLUDE_DIR)
mark_as_advanced(PORTMIDI_LIBRARY)

368
cmake/FindSDL2.cmake Normal file
View file

@ -0,0 +1,368 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#[=======================================================================[.rst:
FindSDL2
--------
Locate SDL2 library
This module defines the following 'IMPORTED' targets:
::
SDL2::Core
The SDL2 library, if found.
Libraries should link to SDL2::Core
SDL2::Main
The SDL2main library, if found.
Applications should link to SDL2::Main instead of SDL2::Core
This module will set the following variables in your project:
::
SDL2_LIBRARIES, the name of the library to link against
SDL2_INCLUDE_DIRS, where to find SDL.h
SDL2_FOUND, if false, do not try to link to SDL2
SDL2MAIN_FOUND, if false, do not try to link to SDL2main
SDL2_VERSION_STRING, human-readable string containing the version of SDL2
This module responds to the following cache variables:
::
SDL2_PATH
Set a custom SDL2 Library path (default: empty)
SDL2_NO_DEFAULT_PATH
Disable search SDL2 Library in default path.
If SDL2_PATH (default: ON)
Else (default: OFF)
SDL2_INCLUDE_DIR
SDL2 headers path.
SDL2_LIBRARY
SDL2 Library (.dll, .so, .a, etc) path.
SDL2MAIN_LIBRAY
SDL2main Library (.a) path.
SDL2_BUILDING_LIBRARY
This flag is useful only when linking to SDL2_LIBRARIES insead of
SDL2::Main. It is required only when building a library that links to
SDL2_LIBRARIES, because only applications need main() (No need to also
link to SDL2main).
If this flag is defined, then no SDL2main will be added to SDL2_LIBRARIES
and no SDL2::Main target will be created.
Don't forget to include SDLmain.h and SDLmain.m in your project for the
OS X framework based version. (Other versions link to -lSDL2main which
this module will try to find on your behalf.) Also for OS X, this
module will automatically add the -framework Cocoa on your behalf.
Additional Note: If you see an empty SDL2_LIBRARY in your project
configuration, it means CMake did not find your SDL2 library
(SDL2.dll, libsdl2.so, SDL2.framework, etc). Set SDL2_LIBRARY to point
to your SDL2 library, and configure again. Similarly, if you see an
empty SDL2MAIN_LIBRARY, you should set this value as appropriate. These
values are used to generate the final SDL2_LIBRARIES variable and the
SDL2::Core and SDL2::Main targets, but when these values are unset,
SDL2_LIBRARIES, SDL2::Core and SDL2::Main does not get created.
$SDL2DIR is an environment variable that would correspond to the
./configure --prefix=$SDL2DIR used in building SDL2. l.e.galup 9-20-02
Created by Amine Ben Hassouna:
Adapt FindSDL.cmake to SDL2 (FindSDL2.cmake).
Add cache variables for more flexibility:
SDL2_PATH, SDL2_NO_DEFAULT_PATH (for details, see doc above).
Mark 'Threads' as a required dependency for non-OSX systems.
Modernize the FindSDL2.cmake module by creating specific targets:
SDL2::Core and SDL2::Main (for details, see doc above).
Original FindSDL.cmake module:
Modified by Eric Wing. Added code to assist with automated building
by using environmental variables and providing a more
controlled/consistent search behavior. Added new modifications to
recognize OS X frameworks and additional Unix paths (FreeBSD, etc).
Also corrected the header search path to follow "proper" SDL
guidelines. Added a search for SDLmain which is needed by some
platforms. Added a search for threads which is needed by some
platforms. Added needed compile switches for MinGW.
On OSX, this will prefer the Framework version (if found) over others.
People will have to manually change the cache value of SDL2_LIBRARY to
override this selection or set the SDL2_PATH variable or the CMake
environment CMAKE_INCLUDE_PATH to modify the search paths.
Note that the header path has changed from SDL/SDL.h to just SDL.h
This needed to change because "proper" SDL convention is #include
"SDL.h", not <SDL/SDL.h>. This is done for portability reasons
because not all systems place things in SDL/ (see FreeBSD).
#]=======================================================================]
# Define options for searching SDL2 Library in a custom path
set(SDL2_PATH "" CACHE STRING "Custom SDL2 Library path")
set(_SDL2_NO_DEFAULT_PATH OFF)
if(SDL2_PATH)
set(_SDL2_NO_DEFAULT_PATH ON)
endif()
set(SDL2_NO_DEFAULT_PATH ${_SDL2_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2 Library in default path")
unset(_SDL2_NO_DEFAULT_PATH)
set(SDL2_NO_DEFAULT_PATH_CMD)
if(SDL2_NO_DEFAULT_PATH)
set(SDL2_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()
# Search for the SDL2 include directory
find_path(SDL2_INCLUDE_DIR SDL.h
HINTS
ENV SDL2DIR
${SDL2_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
include/SDL2 include
PATHS ${SDL2_PATH}
DOC "Where the SDL2 headers can be found"
)
set(SDL2_INCLUDE_DIRS "${SDL2_INCLUDE_DIR}")
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# SDL-2.0 is the name used by FreeBSD ports...
# don't confuse it for the version number.
find_library(SDL2_LIBRARY
NAMES SDL2 SDL-2.0
HINTS
ENV SDL2DIR
${SDL2_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_PATH}
DOC "Where the SDL2 Library can be found"
)
set(SDL2_LIBRARIES "${SDL2_LIBRARY}")
if(NOT SDL2_BUILDING_LIBRARY)
if(NOT SDL2_INCLUDE_DIR MATCHES ".framework")
# Non-OS X framework versions expect you to also dynamically link to
# SDL2main. This is mainly for Windows and OS X. Other (Unix) platforms
# seem to provide SDL2main for compatibility even though they don't
# necessarily need it.
if(SDL2_PATH)
set(SDL2MAIN_LIBRARY_PATHS "${SDL2_PATH}")
endif()
if(NOT SDL2_NO_DEFAULT_PATH)
set(SDL2MAIN_LIBRARY_PATHS
/sw
/opt/local
/opt/csw
/opt
"${SDL2MAIN_LIBRARY_PATHS}"
)
endif()
find_library(SDL2MAIN_LIBRARY
NAMES SDL2main
HINTS
ENV SDL2DIR
${SDL2_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2MAIN_LIBRARY_PATHS}
DOC "Where the SDL2main library can be found"
)
unset(SDL2MAIN_LIBRARY_PATHS)
endif()
endif()
# MinGW needs an additional link flag, -mwindows
# It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -mwindows
if(MINGW)
set(MINGW32_LIBRARY mingw32 "-mwindows" CACHE STRING "link flags for MinGW")
endif()
if(SDL2_LIBRARY)
# For SDL2main
if(SDL2MAIN_LIBRARY AND NOT SDL2_BUILDING_LIBRARY)
list(FIND SDL2_LIBRARIES "${SDL2MAIN_LIBRARY}" _SDL2_MAIN_INDEX)
if(_SDL2_MAIN_INDEX EQUAL -1)
set(SDL2_LIBRARIES "${SDL2MAIN_LIBRARY}" ${SDL2_LIBRARIES})
endif()
unset(_SDL2_MAIN_INDEX)
endif()
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
# CMake doesn't display the -framework Cocoa string in the UI even
# though it actually is there if I modify a pre-used variable.
# I think it has something to do with the CACHE STRING.
# So I use a temporary variable until the end so I can set the
# "real" variable in one-shot.
if(APPLE)
set(SDL2_LIBRARIES ${SDL2_LIBRARIES} "-framework Cocoa")
endif()
# For threads, as mentioned Apple doesn't need this.
# In fact, there seems to be a problem if I used the Threads package
# and try using this line, so I'm just skipping it entirely for OS X.
if(NOT APPLE)
set(SDL2_LIBRARIES ${SDL2_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
endif()
# For MinGW library
if(MINGW)
set(SDL2_LIBRARIES ${MINGW32_LIBRARY} ${SDL2_LIBRARIES})
endif()
endif()
# Read SDL2 version
if(SDL2_INCLUDE_DIR AND EXISTS "${SDL2_INCLUDE_DIR}/SDL_version.h")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MAJOR "${SDL2_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MINOR "${SDL2_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_PATCH "${SDL2_VERSION_PATCH_LINE}")
set(SDL2_VERSION_STRING ${SDL2_VERSION_MAJOR}.${SDL2_VERSION_MINOR}.${SDL2_VERSION_PATCH})
unset(SDL2_VERSION_MAJOR_LINE)
unset(SDL2_VERSION_MINOR_LINE)
unset(SDL2_VERSION_PATCH_LINE)
unset(SDL2_VERSION_MAJOR)
unset(SDL2_VERSION_MINOR)
unset(SDL2_VERSION_PATCH)
endif()
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2
REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR
VERSION_VAR SDL2_VERSION_STRING)
if(SDL2MAIN_LIBRARY)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2main
REQUIRED_VARS SDL2MAIN_LIBRARY SDL2_INCLUDE_DIR
VERSION_VAR SDL2_VERSION_STRING)
endif()
mark_as_advanced(SDL2_PATH
SDL2_NO_DEFAULT_PATH
SDL2_LIBRARY
SDL2MAIN_LIBRARY
SDL2_INCLUDE_DIR
SDL2_BUILDING_LIBRARY)
# SDL2:: targets (SDL2::Core and SDL2::Main)
if(SDL2_FOUND)
# SDL2::Core target
if(SDL2_LIBRARY AND NOT TARGET SDL2::Core)
add_library(SDL2::Core UNKNOWN IMPORTED)
set_target_properties(SDL2::Core PROPERTIES
IMPORTED_LOCATION "${SDL2_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}")
if(APPLE)
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
# For more details, please see above.
set_property(TARGET SDL2::Core APPEND PROPERTY
INTERFACE_LINK_OPTIONS "-framework Cocoa")
else()
# For threads, as mentioned Apple doesn't need this.
# For more details, please see above.
set_property(TARGET SDL2::Core APPEND PROPERTY
INTERFACE_LINK_LIBRARIES Threads::Threads)
endif()
endif()
# SDL2::Main target
# Applications should link to SDL2::Main instead of SDL2::Core
# For more details, please see above.
if(NOT SDL2_BUILDING_LIBRARY AND NOT TARGET SDL2::Main)
if(SDL2_INCLUDE_DIR MATCHES ".framework" OR NOT SDL2MAIN_LIBRARY)
add_library(SDL2::Main INTERFACE IMPORTED)
set_property(TARGET SDL2::Main PROPERTY
INTERFACE_LINK_LIBRARIES SDL2::Core)
elseif(SDL2MAIN_LIBRARY)
# MinGW requires that the mingw32 library is specified before the
# libSDL2main.a static library when linking.
# The SDL2::MainInternal target is used internally to make sure that
# CMake respects this condition.
add_library(SDL2::MainInternal UNKNOWN IMPORTED)
set_property(TARGET SDL2::MainInternal PROPERTY
IMPORTED_LOCATION "${SDL2MAIN_LIBRARY}")
set_property(TARGET SDL2::MainInternal PROPERTY
INTERFACE_LINK_LIBRARIES SDL2::Core)
add_library(SDL2::Main INTERFACE IMPORTED)
if(MINGW)
# MinGW needs an additional link flag '-mwindows' and link to mingw32
set_property(TARGET SDL2::Main PROPERTY
INTERFACE_LINK_LIBRARIES "mingw32" "-mwindows")
endif()
set_property(TARGET SDL2::Main APPEND PROPERTY
INTERFACE_LINK_LIBRARIES SDL2::MainInternal)
endif()
endif()
endif()

222
cmake/FindSDL2_image.cmake Normal file
View file

@ -0,0 +1,222 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#[=======================================================================[.rst:
FindSDL2_image
--------------
Locate SDL2_image library
This module defines the following 'IMPORTED' target:
::
SDL2::Image
The SDL2_image library, if found.
Have SDL2::Core as a link dependency.
This module will set the following variables in your project:
::
SDL2_IMAGE_LIBRARIES, the name of the library to link against
SDL2_IMAGE_INCLUDE_DIRS, where to find the headers
SDL2_IMAGE_FOUND, if false, do not try to link against
SDL2_IMAGE_VERSION_STRING - human-readable string containing the
version of SDL2_image
This module responds to the following cache variables:
::
SDL2_IMAGE_PATH
Set a custom SDL2_image Library path (default: empty)
SDL2_IMAGE_NO_DEFAULT_PATH
Disable search SDL2_image Library in default path.
If SDL2_IMAGE_PATH (default: ON)
Else (default: OFF)
SDL2_IMAGE_INCLUDE_DIR
SDL2_image headers path.
SDL2_IMAGE_LIBRARY
SDL2_image Library (.dll, .so, .a, etc) path.
Additional Note: If you see an empty SDL2_IMAGE_LIBRARY in your project
configuration, it means CMake did not find your SDL2_image library
(SDL2_image.dll, libsdl2_image.so, etc). Set SDL2_IMAGE_LIBRARY to point
to your SDL2_image library, and configure again. This value is used to
generate the final SDL2_IMAGE_LIBRARIES variable and the SDL2::Image target,
but when this value is unset, SDL2_IMAGE_LIBRARIES and SDL2::Image does not
get created.
$SDL2IMAGEDIR is an environment variable that would correspond to the
./configure --prefix=$SDL2IMAGEDIR used in building SDL2_image.
$SDL2DIR is an environment variable that would correspond to the
./configure --prefix=$SDL2DIR used in building SDL2.
Created by Amine Ben Hassouna:
Adapt FindSDL_image.cmake to SDL2_image (FindSDL2_image.cmake).
Add cache variables for more flexibility:
SDL2_IMAGE_PATH, SDL2_IMAGE_NO_DEFAULT_PATH (for details, see doc above).
Add SDL2 as a required dependency.
Modernize the FindSDL2_image.cmake module by creating a specific target:
SDL2::Image (for details, see doc above).
Original FindSDL_image.cmake module:
Created by Eric Wing. This was influenced by the FindSDL.cmake
module, but with modifications to recognize OS X frameworks and
additional Unix paths (FreeBSD, etc).
#]=======================================================================]
# SDL2 Library required
find_package(SDL2 QUIET)
if(NOT SDL2_FOUND)
set(SDL2_IMAGE_SDL2_NOT_FOUND "Could NOT find SDL2 (SDL2 is required by SDL2_image).")
if(SDL2_image_FIND_REQUIRED)
message(FATAL_ERROR ${SDL2_IMAGE_SDL2_NOT_FOUND})
else()
if(NOT SDL2_image_FIND_QUIETLY)
message(STATUS ${SDL2_IMAGE_SDL2_NOT_FOUND})
endif()
return()
endif()
unset(SDL2_IMAGE_SDL2_NOT_FOUND)
endif()
# Define options for searching SDL2_image Library in a custom path
set(SDL2_IMAGE_PATH "" CACHE STRING "Custom SDL2_image Library path")
set(_SDL2_IMAGE_NO_DEFAULT_PATH OFF)
if(SDL2_IMAGE_PATH)
set(_SDL2_IMAGE_NO_DEFAULT_PATH ON)
endif()
set(SDL2_IMAGE_NO_DEFAULT_PATH ${_SDL2_IMAGE_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2_image Library in default path")
unset(_SDL2_IMAGE_NO_DEFAULT_PATH)
set(SDL2_IMAGE_NO_DEFAULT_PATH_CMD)
if(SDL2_IMAGE_NO_DEFAULT_PATH)
set(SDL2_IMAGE_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()
# Search for the SDL2_image include directory
find_path(SDL2_IMAGE_INCLUDE_DIR SDL_image.h
HINTS
ENV SDL2IMAGEDIR
ENV SDL2DIR
${SDL2_IMAGE_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
# and ENV{SDL2IMAGEDIR}
include/SDL2 include
PATHS ${SDL2_IMAGE_PATH}
DOC "Where the SDL2_image headers can be found"
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# Search for the SDL2_image library
find_library(SDL2_IMAGE_LIBRARY
NAMES SDL2_image
HINTS
ENV SDL2IMAGEDIR
ENV SDL2DIR
${SDL2_IMAGE_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_IMAGE_PATH}
DOC "Where the SDL2_image Library can be found"
)
# Read SDL2_image version
if(SDL2_IMAGE_INCLUDE_DIR AND EXISTS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h")
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL2_IMAGE_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_IMAGE_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL2_IMAGE_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_IMAGE_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL2_IMAGE_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_IMAGE_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_MAJOR "${SDL2_IMAGE_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_MINOR "${SDL2_IMAGE_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_PATCH "${SDL2_IMAGE_VERSION_PATCH_LINE}")
set(SDL2_IMAGE_VERSION_STRING ${SDL2_IMAGE_VERSION_MAJOR}.${SDL2_IMAGE_VERSION_MINOR}.${SDL2_IMAGE_VERSION_PATCH})
unset(SDL2_IMAGE_VERSION_MAJOR_LINE)
unset(SDL2_IMAGE_VERSION_MINOR_LINE)
unset(SDL2_IMAGE_VERSION_PATCH_LINE)
unset(SDL2_IMAGE_VERSION_MAJOR)
unset(SDL2_IMAGE_VERSION_MINOR)
unset(SDL2_IMAGE_VERSION_PATCH)
endif()
set(SDL2_IMAGE_LIBRARIES ${SDL2_IMAGE_LIBRARY})
set(SDL2_IMAGE_INCLUDE_DIRS ${SDL2_IMAGE_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_image
REQUIRED_VARS SDL2_IMAGE_LIBRARIES SDL2_IMAGE_INCLUDE_DIRS
VERSION_VAR SDL2_IMAGE_VERSION_STRING)
mark_as_advanced(SDL2_IMAGE_PATH
SDL2_IMAGE_NO_DEFAULT_PATH
SDL2_IMAGE_LIBRARY
SDL2_IMAGE_INCLUDE_DIR)
if(SDL2_IMAGE_FOUND)
# SDL2::Image target
if(SDL2_IMAGE_LIBRARY AND NOT TARGET SDL2::Image)
add_library(SDL2::Image UNKNOWN IMPORTED)
set_target_properties(SDL2::Image PROPERTIES
IMPORTED_LOCATION "${SDL2_IMAGE_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_IMAGE_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES SDL2::Core)
endif()
endif()

220
cmake/FindSDL2_mixer.cmake Normal file
View file

@ -0,0 +1,220 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#[=======================================================================[.rst:
FindSDL2_mixer
--------------
Locate SDL2_mixer library
This module defines the following 'IMPORTED' target:
::
SDL2::Mixer
The SDL2_mixer library, if found.
Have SDL2::Core as a link dependency.
This module will set the following variables in your project:
::
SDL2_MIXER_LIBRARIES, the name of the library to link against
SDL2_MIXER_INCLUDE_DIRS, where to find the headers
SDL2_MIXER_FOUND, if false, do not try to link against
SDL2_MIXER_VERSION_STRING - human-readable string containing the
version of SDL2_mixer
This module responds to the following cache variables:
::
SDL2_MIXER_PATH
Set a custom SDL2_mixer Library path (default: empty)
SDL2_MIXER_NO_DEFAULT_PATH
Disable search SDL2_mixer Library in default path.
If SDL2_MIXER_PATH (default: ON)
Else (default: OFF)
SDL2_MIXER_INCLUDE_DIR
SDL2_mixer headers path.
SDL2_MIXER_LIBRARY
SDL2_mixer Library (.dll, .so, .a, etc) path.
Additional Note: If you see an empty SDL2_MIXER_LIBRARY in your project
configuration, it means CMake did not find your SDL2_mixer library
(SDL2_mixer.dll, libsdl2_mixer.so, etc). Set SDL2_MIXER_LIBRARY to point
to your SDL2_mixer library, and configure again. This value is used to
generate the final SDL2_MIXER_LIBRARIES variable and the SDL2::Mixer target,
but when this value is unset, SDL2_MIXER_LIBRARIES and SDL2::Mixer does not
get created.
$SDL2MIXERDIR is an environment variable that would correspond to the
./configure --prefix=$SDL2MIXERDIR used in building SDL2_mixer.
$SDL2DIR is an environment variable that would correspond to the
./configure --prefix=$SDL2DIR used in building SDL2.
Created by Amine Ben Hassouna:
Adapt FindSDL_mixer.cmake to SDL2_mixer (FindSDL2_mixer.cmake).
Add cache variables for more flexibility:
SDL2_MIXER_PATH, SDL2_MIXER_NO_DEFAULT_PATH (for details, see doc above).
Add SDL2 as a required dependency.
Modernize the FindSDL2_mixer.cmake module by creating a specific target:
SDL2::Mixer (for details, see doc above).
Original FindSDL_mixer.cmake module:
Created by Eric Wing. This was influenced by the FindSDL.cmake
module, but with modifications to recognize OS X frameworks and
additional Unix paths (FreeBSD, etc).
#]=======================================================================]
# SDL2 Library required
find_package(SDL2 QUIET)
if(NOT SDL2_FOUND)
set(SDL2_MIXER_SDL2_NOT_FOUND "Could NOT find SDL2 (SDL2 is required by SDL2_mixer).")
if(SDL2_mixer_FIND_REQUIRED)
message(FATAL_ERROR ${SDL2_MIXER_SDL2_NOT_FOUND})
else()
if(NOT SDL2_mixer_FIND_QUIETLY)
message(STATUS ${SDL2_MIXER_SDL2_NOT_FOUND})
endif()
return()
endif()
unset(SDL2_MIXER_SDL2_NOT_FOUND)
endif()
# Define options for searching SDL2_mixer Library in a custom path
set(SDL2_MIXER_PATH "" CACHE STRING "Custom SDL2_mixer Library path")
set(_SDL2_MIXER_NO_DEFAULT_PATH OFF)
if(SDL2_MIXER_PATH)
set(_SDL2_MIXER_NO_DEFAULT_PATH ON)
endif()
set(SDL2_MIXER_NO_DEFAULT_PATH ${_SDL2_MIXER_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2_mixer Library in default path")
unset(_SDL2_MIXER_NO_DEFAULT_PATH)
set(SDL2_MIXER_NO_DEFAULT_PATH_CMD)
if(SDL2_MIXER_NO_DEFAULT_PATH)
set(SDL2_MIXER_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()
# Search for the SDL2_mixer include directory
find_path(SDL2_MIXER_INCLUDE_DIR SDL_mixer.h
HINTS
ENV SDL2MIXERDIR
ENV SDL2DIR
${SDL2_MIXER_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
# and ENV{SDL2MIXERDIR}
include/SDL2 include
PATHS ${SDL2_MIXER_PATH}
DOC "Where the SDL2_mixer headers can be found"
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# Search for the SDL2_mixer library
find_library(SDL2_MIXER_LIBRARY
NAMES SDL2_mixer
HINTS
ENV SDL2MIXERDIR
ENV SDL2DIR
${SDL2_MIXER_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_MIXER_PATH}
DOC "Where the SDL2_mixer Library can be found"
)
# Read SDL2_mixer version
if(SDL2_MIXER_INCLUDE_DIR AND EXISTS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MAJOR "${SDL2_MIXER_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MINOR "${SDL2_MIXER_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_PATCH "${SDL2_MIXER_VERSION_PATCH_LINE}")
set(SDL2_MIXER_VERSION_STRING ${SDL2_MIXER_VERSION_MAJOR}.${SDL2_MIXER_VERSION_MINOR}.${SDL2_MIXER_VERSION_PATCH})
unset(SDL2_MIXER_VERSION_MAJOR_LINE)
unset(SDL2_MIXER_VERSION_MINOR_LINE)
unset(SDL2_MIXER_VERSION_PATCH_LINE)
unset(SDL2_MIXER_VERSION_MAJOR)
unset(SDL2_MIXER_VERSION_MINOR)
unset(SDL2_MIXER_VERSION_PATCH)
endif()
set(SDL2_MIXER_LIBRARIES ${SDL2_MIXER_LIBRARY})
set(SDL2_MIXER_INCLUDE_DIRS ${SDL2_MIXER_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_mixer
REQUIRED_VARS SDL2_MIXER_LIBRARIES SDL2_MIXER_INCLUDE_DIRS
VERSION_VAR SDL2_MIXER_VERSION_STRING)
mark_as_advanced(SDL2_MIXER_PATH
SDL2_MIXER_NO_DEFAULT_PATH
SDL2_MIXER_LIBRARY
SDL2_MIXER_INCLUDE_DIR)
if(SDL2_MIXER_FOUND)
# SDL2::Mixer target
if(SDL2_MIXER_LIBRARY AND NOT TARGET SDL2::Mixer)
add_library(SDL2::Mixer UNKNOWN IMPORTED)
set_target_properties(SDL2::Mixer PROPERTIES
IMPORTED_LOCATION "${SDL2_MIXER_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_MIXER_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES SDL2::Core)
endif()
endif()

222
cmake/FindSDL2_net.cmake Normal file
View file

@ -0,0 +1,222 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#[=======================================================================[.rst:
FindSDL2_net
------------
Locate SDL2_net library
This module defines the following 'IMPORTED' target:
::
SDL2::Net
The SDL2_net library, if found.
Have SDL2::Core as a link dependency.
This module will set the following variables in your project:
::
SDL2_NET_LIBRARIES, the name of the library to link against
SDL2_NET_INCLUDE_DIRS, where to find the headers
SDL2_NET_FOUND, if false, do not try to link against
SDL2_NET_VERSION_STRING - human-readable string containing the
version of SDL2_net
This module responds to the following cache variables:
::
SDL2_NET_PATH
Set a custom SDL2_net Library path (default: empty)
SDL2_NET_NO_DEFAULT_PATH
Disable search SDL2_net Library in default path.
If SDL2_NET_PATH (default: ON)
Else (default: OFF)
SDL2_NET_INCLUDE_DIR
SDL2_net headers path.
SDL2_NET_LIBRARY
SDL2_net Library (.dll, .so, .a, etc) path.
Additional Note: If you see an empty SDL2_NET_LIBRARY in your project
configuration, it means CMake did not find your SDL2_net library
(SDL2_net.dll, libsdl2_net.so, etc). Set SDL2_NET_LIBRARY to point
to your SDL2_net library, and configure again. This value is used to
generate the final SDL2_NET_LIBRARIES variable and the SDL2::Net target,
but when this value is unset, SDL2_NET_LIBRARIES and SDL2::Net does not
get created.
$SDL2NETDIR is an environment variable that would correspond to the
./configure --prefix=$SDL2NETDIR used in building SDL2_net.
$SDL2DIR is an environment variable that would correspond to the
./configure --prefix=$SDL2DIR used in building SDL2.
Created by Amine Ben Hassouna:
Adapt FindSDL_net.cmake to SDL2_net (FindSDL2_net.cmake).
Add cache variables for more flexibility:
SDL2_NET_PATH, SDL2_NET_NO_DEFAULT_PATH (for details, see doc above).
Add SDL2 as a required dependency.
Modernize the FindSDL2_net.cmake module by creating a specific target:
SDL2::Net (for details, see doc above).
Original FindSDL_net.cmake module:
Created by Eric Wing. This was influenced by the FindSDL.cmake
module, but with modifications to recognize OS X frameworks and
additional Unix paths (FreeBSD, etc).
#]=======================================================================]
# SDL2 Library required
find_package(SDL2 QUIET)
if(NOT SDL2_FOUND)
set(SDL2_NET_SDL2_NOT_FOUND "Could NOT find SDL2 (SDL2 is required by SDL2_net).")
if(SDL2_net_FIND_REQUIRED)
message(FATAL_ERROR ${SDL2_NET_SDL2_NOT_FOUND})
else()
if(NOT SDL2_net_FIND_QUIETLY)
message(STATUS ${SDL2_NET_SDL2_NOT_FOUND})
endif()
return()
endif()
unset(SDL2_NET_SDL2_NOT_FOUND)
endif()
# Define options for searching SDL2_net Library in a custom path
set(SDL2_NET_PATH "" CACHE STRING "Custom SDL2_net Library path")
set(_SDL2_NET_NO_DEFAULT_PATH OFF)
if(SDL2_NET_PATH)
set(_SDL2_NET_NO_DEFAULT_PATH ON)
endif()
set(SDL2_NET_NO_DEFAULT_PATH ${_SDL2_NET_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2_net Library in default path")
unset(_SDL2_NET_NO_DEFAULT_PATH)
set(SDL2_NET_NO_DEFAULT_PATH_CMD)
if(SDL2_NET_NO_DEFAULT_PATH)
set(SDL2_NET_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()
# Search for the SDL2_net include directory
find_path(SDL2_NET_INCLUDE_DIR SDL_net.h
HINTS
ENV SDL2NETDIR
ENV SDL2DIR
${SDL2_NET_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
# and ENV{SDL2NETDIR}
include/SDL2 include
PATHS ${SDL2_NET_PATH}
DOC "Where the SDL2_net headers can be found"
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# Search for the SDL2_net library
find_library(SDL2_NET_LIBRARY
NAMES SDL2_net
HINTS
ENV SDL2NETDIR
ENV SDL2DIR
${SDL2_NET_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_NET_PATH}
DOC "Where the SDL2_net Library can be found"
)
# Read SDL2_net version
if(SDL2_NET_INCLUDE_DIR AND EXISTS "${SDL2_NET_INCLUDE_DIR}/SDL_net.h")
file(STRINGS "${SDL2_NET_INCLUDE_DIR}/SDL_net.h" SDL2_NET_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_NET_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_NET_INCLUDE_DIR}/SDL_net.h" SDL2_NET_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_NET_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_NET_INCLUDE_DIR}/SDL_net.h" SDL2_NET_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_NET_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_NET_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_NET_VERSION_MAJOR "${SDL2_NET_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_NET_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_NET_VERSION_MINOR "${SDL2_NET_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_NET_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_NET_VERSION_PATCH "${SDL2_NET_VERSION_PATCH_LINE}")
set(SDL2_NET_VERSION_STRING ${SDL2_NET_VERSION_MAJOR}.${SDL2_NET_VERSION_MINOR}.${SDL2_NET_VERSION_PATCH})
unset(SDL2_NET_VERSION_MAJOR_LINE)
unset(SDL2_NET_VERSION_MINOR_LINE)
unset(SDL2_NET_VERSION_PATCH_LINE)
unset(SDL2_NET_VERSION_MAJOR)
unset(SDL2_NET_VERSION_MINOR)
unset(SDL2_NET_VERSION_PATCH)
endif()
set(SDL2_NET_LIBRARIES ${SDL2_NET_LIBRARY})
set(SDL2_NET_INCLUDE_DIRS ${SDL2_NET_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_net
REQUIRED_VARS SDL2_NET_LIBRARIES SDL2_NET_INCLUDE_DIRS
VERSION_VAR SDL2_NET_VERSION_STRING)
mark_as_advanced(SDL2_NET_PATH
SDL2_NET_NO_DEFAULT_PATH
SDL2_NET_LIBRARY
SDL2_NET_INCLUDE_DIR)
if(SDL2_NET_FOUND)
# SDL2::Net target
if(SDL2_NET_LIBRARY AND NOT TARGET SDL2::Net)
add_library(SDL2::Net UNKNOWN IMPORTED)
set_target_properties(SDL2::Net PROPERTIES
IMPORTED_LOCATION "${SDL2_NET_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_NET_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES SDL2::Core)
endif()
endif()

76
cmake/FindVorbis.cmake Normal file
View file

@ -0,0 +1,76 @@
# - Find vorbis library
# Find the native Vorbis headers and libraries.Vorbis depends on Ogg and will
# provide Ogg headers/libraries as well.
#
# VORBIS_INCLUDE_DIRS - where to find vorbis/vorbis.h, ogg/ogg.h, etc
# VORBIS_LIBRARIES - List of libraries when using libvorbis
# VORBIS_FOUND - True if vorbis is found.
#=============================================================================
#Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
#All rights reserved.
#
#Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
#* Redistributions of source code must retain the above copyright notice,
#this list of conditions and the following disclaimer.
#
#* Redistributions in binary form must reproduce the above copyright notice,
#this list of conditions and the following disclaimer in the documentation
#and/or other materials provided with the distribution.
#
#* Neither the names of Kitware, Inc., the Insight Software Consortium, nor
#the names of their contributors may be used to endorse or promote products
#derived from this software without specific prior written permission.
#
#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
#AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
#IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
#ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
#LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
#INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
#CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#POSSIBILITY OF SUCH DAMAGE.
#=============================================================================
# Find Ogg
if( Vorbis_FIND_REQUIRED )
set( OGG_ARG "REQUIRED" )
elseif( Vorbis_FIND_QUIETLY )
set( OGG_ARG "QUIETLY" )
endif()
find_package( Ogg ${OGG_ARG} )
# Look for the vorbisfile header file.
find_path( VORBIS_INCLUDE_DIR
NAMES vorbis/vorbisfile.h
DOC "Vorbis include directory" )
mark_as_advanced( VORBIS_INCLUDE_DIR )
# Look for the vorbisfile library.
find_library( VORBISFILE_LIBRARY
NAMES vorbisfile
DOC "Path to VorbisFile library" )
mark_as_advanced( VORBISFILE_LIBRARY )
# Look for the vorbis library.
find_library( VORBIS_LIBRARY
NAMES vorbis
DOC "Path to Vorbis library" )
mark_as_advanced( VORBIS_LIBRARY )
# handle the QUIETLY and REQUIRED arguments and set VORBISFILE_FOUND to TRUE if
# all listed variables are TRUE
include( ${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake )
FIND_PACKAGE_HANDLE_STANDARD_ARGS( Vorbis DEFAULT_MSG VORBIS_LIBRARY VORBIS_INCLUDE_DIR )
set( VORBIS_LIBRARIES ${VORBISFILE_LIBRARY} ${VORBIS_LIBRARY} ${OGG_LIBRARIES} )
set( VORBIS_INCLUDE_DIRS ${VORBIS_INCLUDE_DIR} ${OGG_INCLUDE_DIRS} )

157
cmake/TargetArch.cmake Normal file
View file

@ -0,0 +1,157 @@
# Copyright (c) 2012 Petroules Corporation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation and/or
# other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
# OF SUCH DAMAGE.
# Based on the Qt 5 processor detection code, so should be very accurate
# https://qt.gitorious.org/qt/qtbase/blobs/master/src/corelib/global/qprocessordetection.h
# Currently handles arm (v5, v6, v7), x86 (32/64), ia64, and ppc (32/64)
# Regarding POWER/PowerPC, just as is noted in the Qt source,
# "There are many more known variants/revisions that we do not handle/detect."
set(archdetect_c_code "
#if defined(__arm__) || defined(__TARGET_ARCH_ARM)
#if defined(__ARM_ARCH_7__) \\
|| defined(__ARM_ARCH_7A__) \\
|| defined(__ARM_ARCH_7R__) \\
|| defined(__ARM_ARCH_7M__) \\
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 7)
#error cmake_ARCH armv7
#elif defined(__ARM_ARCH_6__) \\
|| defined(__ARM_ARCH_6J__) \\
|| defined(__ARM_ARCH_6T2__) \\
|| defined(__ARM_ARCH_6Z__) \\
|| defined(__ARM_ARCH_6K__) \\
|| defined(__ARM_ARCH_6ZK__) \\
|| defined(__ARM_ARCH_6M__) \\
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 6)
#error cmake_ARCH armv6
#elif defined(__ARM_ARCH_5TEJ__) \\
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 5)
#error cmake_ARCH armv5
#else
#error cmake_ARCH arm
#endif
#elif defined(__i386) || defined(__i386__) || defined(_M_IX86)
#error cmake_ARCH i386
#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64)
#error cmake_ARCH x86_64
#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
#error cmake_ARCH ia64
#elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) \\
|| defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC) \\
|| defined(_M_MPPC) || defined(_M_PPC)
#if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__)
#error cmake_ARCH ppc64
#else
#error cmake_ARCH ppc
#endif
#endif
#error cmake_ARCH unknown
")
# Set ppc_support to TRUE before including this file or ppc and ppc64
# will be treated as invalid architectures since they are no longer supported by Apple
function(target_architecture output_var)
if(APPLE AND CMAKE_OSX_ARCHITECTURES)
# On OS X we use CMAKE_OSX_ARCHITECTURES *if* it was set
# First let's normalize the order of the values
# Note that it's not possible to compile PowerPC applications if you are using
# the OS X SDK version 10.6 or later - you'll need 10.4/10.5 for that, so we
# disable it by default
# See this page for more information:
# http://stackoverflow.com/questions/5333490/how-can-we-restore-ppc-ppc64-as-well-as-full-10-4-10-5-sdk-support-to-xcode-4
# Architecture defaults to i386 or ppc on OS X 10.5 and earlier, depending on the CPU type detected at runtime.
# On OS X 10.6+ the default is x86_64 if the CPU supports it, i386 otherwise.
foreach(osx_arch ${CMAKE_OSX_ARCHITECTURES})
if("${osx_arch}" STREQUAL "ppc" AND ppc_support)
set(osx_arch_ppc TRUE)
elseif("${osx_arch}" STREQUAL "i386")
set(osx_arch_i386 TRUE)
elseif("${osx_arch}" STREQUAL "x86_64")
set(osx_arch_x86_64 TRUE)
elseif("${osx_arch}" STREQUAL "ppc64" AND ppc_support)
set(osx_arch_ppc64 TRUE)
else()
message(FATAL_ERROR "Invalid OS X arch name: ${osx_arch}")
endif()
endforeach()
# Now add all the architectures in our normalized order
if(osx_arch_ppc)
list(APPEND ARCH ppc)
endif()
if(osx_arch_i386)
list(APPEND ARCH i386)
endif()
if(osx_arch_x86_64)
list(APPEND ARCH x86_64)
endif()
if(osx_arch_ppc64)
list(APPEND ARCH ppc64)
endif()
else()
file(WRITE "${CMAKE_BINARY_DIR}/arch.c" "${archdetect_c_code}")
enable_language(C)
# Detect the architecture in a rather creative way...
# This compiles a small C program which is a series of ifdefs that selects a
# particular #error preprocessor directive whose message string contains the
# target architecture. The program will always fail to compile (both because
# file is not a valid C program, and obviously because of the presence of the
# #error preprocessor directives... but by exploiting the preprocessor in this
# way, we can detect the correct target architecture even when cross-compiling,
# since the program itself never needs to be run (only the compiler/preprocessor)
try_run(
run_result_unused
compile_result_unused
"${CMAKE_BINARY_DIR}"
"${CMAKE_BINARY_DIR}/arch.c"
COMPILE_OUTPUT_VARIABLE ARCH
CMAKE_FLAGS CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
)
# Parse the architecture name from the compiler output
string(REGEX MATCH "cmake_ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH}")
# Get rid of the value marker leaving just the architecture name
string(REPLACE "cmake_ARCH " "" ARCH "${ARCH}")
# If we are compiling with an unknown architecture this variable should
# already be set to "unknown" but in the case that it's empty (i.e. due
# to a typo in the code), then set it to unknown
if (NOT ARCH)
set(ARCH unknown)
endif()
endif()
set(${output_var} "${ARCH}" PARENT_SCOPE)
endfunction()

47
cmake/config.h.cin Normal file
View file

@ -0,0 +1,47 @@
#cmakedefine PACKAGE_NAME "@PACKAGE_NAME@"
#cmakedefine PACKAGE_TARNAME "@PACKAGE_TARNAME@"
#cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@"
#cmakedefine PACKAGE_HOMEPAGE "@PACKAGE_HOMEPAGE@"
#cmakedefine PACKAGE_STRING "@PACKAGE_STRING@"
#cmakedefine DOOMWADDIR "@DOOMWADDIR@"
#cmakedefine PRBOOMDATADIR "@PRBOOMDATADIR@"
#cmakedefine WORDS_BIGENDIAN
#cmakedefine HAVE_GETOPT
#cmakedefine HAVE_MMAP
#cmakedefine HAVE_CREATE_FILE_MAPPING
#cmakedefine HAVE_SCHED_SETAFFINITY
#cmakedefine HAVE_USLEEP
#cmakedefine HAVE_STRSIGNAL
#cmakedefine HAVE_MKSTEMP
#cmakedefine HAVE_SYS_WAIT_H
#cmakedefine HAVE_UNISTD_H
#cmakedefine HAVE_ASM_BYTEORDER_H
#cmakedefine HAVE_DIRENT_H
#cmakedefine HAVE_SDL_JOYSTICKGETAXIS
#cmakedefine HAVE_LIBSDL2_IMAGE
#cmakedefine HAVE_LIBSDL2_MIXER
#cmakedefine HAVE_NET
#cmakedefine USE_SDL_NET
#cmakedefine HAVE_LIBPCREPOSIX
#cmakedefine HAVE_LIBZ
#cmakedefine HAVE_LIBMAD
#cmakedefine HAVE_LIBFLUIDSYNTH
#cmakedefine HAVE_LIBDUMB
#cmakedefine HAVE_LIBVORBISFILE
#cmakedefine HAVE_LIBPORTMIDI
#cmakedefine HAVE_ALSA
#cmakedefine SIMPLECHECKS
#cmakedefine ZONEIDCHECK
#cmakedefine RANGECHECK
#cmakedefine INSTRUMENTED
#cmakedefine TIMEDIAG
#cmakedefine HEAPCHECK
#cmakedefine HEAPDUMP

370
data/CMakeLists.txt Normal file
View file

@ -0,0 +1,370 @@
# PrBoom-Plus WAD creation tool
if(NOT CMAKE_CROSSCOMPILING)
add_executable(rdatawad
rd_main.c
rd_util.c
rd_util.h
rd_output.c
rd_output.h
rd_sound.c
rd_sound.h
rd_palette.c
rd_palette.h
rd_graphic.c
rd_graphic.h
)
target_include_directories(rdatawad PRIVATE ${CMAKE_BINARY_DIR})
set(CROSS_EXPORTS ${CROSS_EXPORTS} rdatawad PARENT_SCOPE)
endif()
# PrBoom-Plus internal WAD
set(PALETTE
palette.rgb
)
set(LUMPS
lumps/switches.lmp
lumps/animated.lmp
lumps/crbrick.lmp
lumps/crtan.lmp
lumps/crgray.lmp
lumps/crgreen.lmp
lumps/crbrown.lmp
lumps/crgold.lmp
lumps/crred.lmp
lumps/crblue.lmp
lumps/crblue2.lmp
lumps/crorange.lmp
lumps/cryellow.lmp
lumps/crblack.lmp
lumps/crpurple.lmp
lumps/crwhite.lmp
)
set(COLORMAPS
lumps/watermap.lmp
)
set(TABLES
lumps/sinetabl.lmp
lumps/tangtabl.lmp
lumps/tantoang.lmp
lumps/gammatbl.lmp
lumps/chexdeh.lmp
lumps/bfgbex.lmp
lumps/nervebex.lmp
lumps/glshadow.lmp
lumps/glfp.lmp
lumps/glvp.lmp
lumps/-prbhud-.lmp
lumps/m_ammo.lmp
lumps/m_armour.lmp
lumps/m_arrow.lmp
lumps/m_health.lmp
lumps/m_key.lmp
lumps/m_normal.lmp
lumps/m_shadow.lmp
lumps/m_power.lmp
lumps/m_weap.lmp
lumps/m_mark.lmp
)
set(SOUNDS
sounds/dsdgsit.wav
sounds/dsdgatk.wav
sounds/dsdgact.wav
sounds/dsdgdth.wav
sounds/dsdgpain.wav
)
set(GRAPHICS
graphics/dig0.ppm
graphics/dig1.ppm
graphics/dig2.ppm
graphics/dig3.ppm
graphics/dig4.ppm
graphics/dig5.ppm
graphics/dig6.ppm
graphics/dig7.ppm
graphics/dig8.ppm
graphics/dig9.ppm
graphics/diga.ppm
graphics/digb.ppm
graphics/digc.ppm
graphics/digd.ppm
graphics/dige.ppm
graphics/digf.ppm
graphics/digg.ppm
graphics/digh.ppm
graphics/digi.ppm
graphics/digj.ppm
graphics/digk.ppm
graphics/digl.ppm
graphics/digm.ppm
graphics/dign.ppm
graphics/digo.ppm
graphics/digp.ppm
graphics/digq.ppm
graphics/digr.ppm
graphics/digs.ppm
graphics/digt.ppm
graphics/digu.ppm
graphics/digv.ppm
graphics/digw.ppm
graphics/digx.ppm
graphics/digy.ppm
graphics/digz.ppm
graphics/dig45.ppm
graphics/dig46.ppm
graphics/dig47.ppm
graphics/dig58.ppm
graphics/dig91.ppm
graphics/dig93.ppm
graphics/stbr123.ppm
graphics/stbr124.ppm
graphics/stbr125.ppm
graphics/stbr126.ppm
graphics/stbr127.ppm
graphics/boxul.ppm
graphics/boxuc.ppm
graphics/boxur.ppm
graphics/boxcl.ppm
graphics/boxcc.ppm
graphics/boxcr.ppm
graphics/boxll.ppm
graphics/boxlc.ppm
graphics/boxlr.ppm
graphics/stkeys6.ppm
graphics/stkeys7.ppm
graphics/stkeys8.ppm
graphics/stcfn096.ppm
graphics/m_butt1.ppm
graphics/m_butt2.ppm
graphics/m_colors.ppm
graphics/m_palno.ppm
graphics/m_palsel.ppm
graphics/m_vbox.ppm
graphics/cross1.ppm
graphics/cross2.ppm
graphics/cross3.ppm
)
set(FLATS
flats/-n0_tex-.ppm
)
set(SPRITES
sprites/tnt1a0.ppm
)
set(SPRITEP "0,0,sprites/tnt1a0.ppm")
set(SPRITES
${SPRITES}
sprites/dogsa1.ppm
sprites/dogsa2.ppm
sprites/dogsa3.ppm
sprites/dogsa4.ppm
sprites/dogsa5.ppm
sprites/dogsa6.ppm
sprites/dogsa7.ppm
sprites/dogsa8.ppm
sprites/dogsb1.ppm
sprites/dogsb2.ppm
sprites/dogsb3.ppm
sprites/dogsb4.ppm
sprites/dogsb5.ppm
sprites/dogsb6.ppm
sprites/dogsb7.ppm
sprites/dogsb8.ppm
sprites/dogsc1.ppm
sprites/dogsc2.ppm
sprites/dogsc3.ppm
sprites/dogsc4.ppm
sprites/dogsc5.ppm
sprites/dogsc6.ppm
sprites/dogsc7.ppm
sprites/dogsc8.ppm
sprites/dogsd1.ppm
sprites/dogsd2.ppm
sprites/dogsd3.ppm
sprites/dogsd4.ppm
sprites/dogsd5.ppm
sprites/dogsd6.ppm
sprites/dogsd7.ppm
sprites/dogsd8.ppm
sprites/dogse1.ppm
sprites/dogse2.ppm
sprites/dogse3.ppm
sprites/dogse4.ppm
sprites/dogse5.ppm
sprites/dogse6.ppm
sprites/dogse7.ppm
sprites/dogse8.ppm
sprites/dogsf1.ppm
sprites/dogsf2.ppm
sprites/dogsf3.ppm
sprites/dogsf4.ppm
sprites/dogsf5.ppm
sprites/dogsf6.ppm
sprites/dogsf7.ppm
sprites/dogsf8.ppm
sprites/dogsg1.ppm
sprites/dogsg2.ppm
sprites/dogsg3.ppm
sprites/dogsg4.ppm
sprites/dogsg5.ppm
sprites/dogsg6.ppm
sprites/dogsg7.ppm
sprites/dogsg8.ppm
sprites/dogsh1.ppm
sprites/dogsh2.ppm
sprites/dogsh3.ppm
sprites/dogsh4.ppm
sprites/dogsh5.ppm
sprites/dogsh6.ppm
sprites/dogsh7.ppm
sprites/dogsh8.ppm
sprites/dogsi0.ppm
sprites/dogsj0.ppm
sprites/dogsk0.ppm
sprites/dogsl0.ppm
sprites/dogsm0.ppm
sprites/dogsn0.ppm
)
set(SPRITEP
${SPRITEP}
"33,66,sprites/dogsa1.ppm"
"33,66,sprites/dogsa2.ppm"
"33,66,sprites/dogsa3.ppm"
"33,66,sprites/dogsa4.ppm"
"33,66,sprites/dogsa5.ppm"
"33,66,sprites/dogsa6.ppm"
"33,66,sprites/dogsa7.ppm"
"33,66,sprites/dogsa8.ppm"
"33,66,sprites/dogsb1.ppm"
"33,66,sprites/dogsb2.ppm"
"33,66,sprites/dogsb3.ppm"
"33,66,sprites/dogsb4.ppm"
"33,66,sprites/dogsb5.ppm"
"33,66,sprites/dogsb6.ppm"
"33,66,sprites/dogsb7.ppm"
"33,66,sprites/dogsb8.ppm"
"33,66,sprites/dogsc1.ppm"
"33,66,sprites/dogsc2.ppm"
"33,66,sprites/dogsc3.ppm"
"33,66,sprites/dogsc4.ppm"
"33,66,sprites/dogsc5.ppm"
"33,66,sprites/dogsc6.ppm"
"33,66,sprites/dogsc7.ppm"
"33,66,sprites/dogsc8.ppm"
"33,66,sprites/dogsd1.ppm"
"33,66,sprites/dogsd2.ppm"
"33,66,sprites/dogsd3.ppm"
"33,66,sprites/dogsd4.ppm"
"33,66,sprites/dogsd5.ppm"
"33,66,sprites/dogsd6.ppm"
"33,66,sprites/dogsd7.ppm"
"33,66,sprites/dogsd8.ppm"
"33,66,sprites/dogse1.ppm"
"33,66,sprites/dogse2.ppm"
"33,66,sprites/dogse3.ppm"
"33,66,sprites/dogse4.ppm"
"33,66,sprites/dogse5.ppm"
"33,66,sprites/dogse6.ppm"
"33,66,sprites/dogse7.ppm"
"33,66,sprites/dogse8.ppm"
"33,66,sprites/dogsf1.ppm"
"33,66,sprites/dogsf2.ppm"
"33,66,sprites/dogsf3.ppm"
"33,66,sprites/dogsf4.ppm"
"33,66,sprites/dogsf5.ppm"
"33,66,sprites/dogsf6.ppm"
"33,66,sprites/dogsf7.ppm"
"33,66,sprites/dogsf8.ppm"
"33,66,sprites/dogsg1.ppm"
"33,66,sprites/dogsg2.ppm"
"33,66,sprites/dogsg3.ppm"
"33,66,sprites/dogsg4.ppm"
"33,66,sprites/dogsg5.ppm"
"33,66,sprites/dogsg6.ppm"
"33,66,sprites/dogsg7.ppm"
"33,66,sprites/dogsg8.ppm"
"33,66,sprites/dogsh1.ppm"
"33,66,sprites/dogsh2.ppm"
"33,66,sprites/dogsh3.ppm"
"33,66,sprites/dogsh4.ppm"
"33,66,sprites/dogsh5.ppm"
"33,66,sprites/dogsh6.ppm"
"33,66,sprites/dogsh7.ppm"
"33,66,sprites/dogsh8.ppm"
"33,67,sprites/dogsi0.ppm"
"33,67,sprites/dogsj0.ppm"
"33,67,sprites/dogsk0.ppm"
"33,67,sprites/dogsl0.ppm"
"33,68,sprites/dogsm0.ppm"
"33,69,sprites/dogsn0.ppm"
)
set(SPRITES
${SPRITES}
sprites/pls1a0.ppm
sprites/pls1b0.ppm
sprites/pls1c0.ppm
sprites/pls1d0.ppm
sprites/pls1e0.ppm
sprites/pls1f0.ppm
sprites/pls1g0.ppm
sprites/pls2a0.ppm
sprites/pls2b0.ppm
sprites/pls2c0.ppm
sprites/pls2d0.ppm
sprites/pls2e0.ppm
)
set(SPRITEP
${SPRITEP}
"9,11,sprites/pls1a0.ppm"
"8,11,sprites/pls1b0.ppm"
"9,11,sprites/pls1c0.ppm"
"8,11,sprites/pls1d0.ppm"
"16,27,sprites/pls1e0.ppm"
"16,27,sprites/pls1f0.ppm"
"18,27,sprites/pls1g0.ppm"
"9,11,sprites/pls2a0.ppm"
"8,13,sprites/pls2b0.ppm"
"11,18,sprites/pls2c0.ppm"
"16,27,sprites/pls2d0.ppm"
"18,27,sprites/pls2e0.ppm"
)
set(WAD_SRC
${PALETTE}
${LUMPS}
${COLORMAPS}
${TABLES}
${SOUNDS}
${GRAPHICS}
${FLATS}
${SPRITES}
)
set(WAD_CMDLINE
-palette ${PALETTE}
-lumps ${LUMPS}
-marker C_START -lumps ${COLORMAPS} -marker C_END
-marker B_START -lumps ${TABLES} -marker B_END
-sounds ${SOUNDS}
-graphics ${GRAPHICS}
-marker FF_START -flats ${FLATS} -marker FF_END
-marker SS_START -sprites ${SPRITEP} -marker SS_END
)
add_custom_command(
OUTPUT "${WAD_DATA_PATH}"
COMMAND rdatawad -I "${CMAKE_CURRENT_SOURCE_DIR}" ${WAD_CMDLINE} -o "${WAD_DATA_PATH}"
DEPENDS rdatawad ${WAD_SRC}
)
add_custom_target(prboomwad DEPENDS ${WAD_DATA_PATH})
install(FILES ${WAD_DATA_PATH} DESTINATION ${PRBOOMDATADIR} COMPONENT "PrBoom-Plus internal WAD")

74
data/convert-icon Normal file
View file

@ -0,0 +1,74 @@
#!/usr/bin/python
#
# $Id: convert-icon 704 2006-10-18 00:51:11Z fraggle $
#
# Copyright(C) 2005 Simon Howard
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
#
# Converts images into C structures to be inserted in programs
#
import sys
import os
import re
try:
import Image
except ImportError:
print "WARNING: Could not update %s. Please install the Python Imaging library." % sys.argv[2]
sys.exit(0)
def convert_image(filename, output_filename):
im = Image.open(filename).convert("RGB")
outfile = open(output_filename, "w")
size = im.size
struct_name = os.path.basename(output_filename)
struct_name = re.sub(re.compile("\\..*$"), "", struct_name)
struct_name = re.sub(re.compile("\W"), "_", struct_name)
outfile.write("static int %s_w = %i;\n" % (struct_name, size[0]))
outfile.write("static int %s_h = %i;\n" % (struct_name, size[1]))
outfile.write("\n")
outfile.write("static unsigned char %s_data[] = {\n" % (struct_name))
elements_on_line = 0
outfile.write(" ")
for y in range(size[1]):
for x in range(size[0]):
val = im.getpixel((x, y))
outfile.write("0x%02x,0x%02x,0x%02x, " % val)
elements_on_line += 1
if elements_on_line >= 4:
elements_on_line = 0
outfile.write("\n")
outfile.write(" ")
outfile.write("\n")
outfile.write("};\n")
convert_image(sys.argv[1], sys.argv[2])

BIN
data/flats/-n0_tex-.ppm Normal file

Binary file not shown.

4
data/graphics/boxcc.ppm Normal file
View file

@ -0,0 +1,4 @@
P6
8 8
255
C3?/3+?/C3?/3+?/C3?/C3?/?/3+?/3+C33+?/3+?/?/?/?/?/?/3+?/C3?/C3?/?/?/3+?/?/?/?/?/?/?/?/?/3+?/3+C33+?/3+?/?/C3?/C3?/3+?/C3?/3+?/C3

4
data/graphics/boxcl.ppm Normal file
View file

@ -0,0 +1,4 @@
P6
8 8
255
#+7#C3C3C3?/C3#+# 7#C3K7C33+C3/7# 7#K7C3C3?/?/#+# 7#?/C3?/?/?//7# 7#C3C3?/3+?//77#C3?/C3?/?/#+# 7#C3C33+C33+/7# 7#C3C3C3?/3+

4
data/graphics/boxcr.ppm Normal file
View file

@ -0,0 +1,4 @@
P6
8 8
255
3+?/C3C3C37##+3+C33+C3C37## #+?/?/C3?/C37## /7C3C3K7K7C37## #+C3?/C3K7K77## /7?/?/C3C3K77#/7C33+C3K7C37## #+C3?/C3C3C37## /7

4
data/graphics/boxlc.ppm Normal file
View file

@ -0,0 +1,4 @@
P6
8 8
255
?/?/3+?/C3?/C3?/?/?/3+?/?/?/?/?/?/?/?/?/3+?/3+C33+?/3+?/?/C3?/C3?/3+?/C3?/3+?/C3/77?'/77?'/7/77?'7?'/7#+/7#+#+/7#+/7# # # # # #

4
data/graphics/boxll.ppm Normal file
View file

@ -0,0 +1,4 @@
P6
8 8
255
#+# 7#?/C3?/?/?//7# 7#C3C3?/3+?//77#C3?/C3?/?/#+# 7#C3C33+C33+/7# 7#C3C3C3?/3+#+# #+7?'/7/77?'7?'/7#+#+#+#+/7#+/7#+# # # # #

4
data/graphics/boxlr.ppm Normal file
View file

@ -0,0 +1,4 @@
P6
8 8
255
C3C3K7K7C37## #+C3?/C3K7K77## /7?/?/C3C3K77#/7C33+C3K7C37## #+C3?/C3C3C37## /7/77?'/77?'/7/7# #+/7#+/7#+/7#+#+/7# # # # # #+

4
data/graphics/boxuc.ppm Normal file
View file

@ -0,0 +1,4 @@
P6
8 8
255
/7#+/7#+#+/7#+/7# # # # # # / / / / / / / / C3?/3+?/C3?/3+?/C3?/C3?/?/3+?/3+C33+?/3+?/?/?/?/?/?/3+?/C3?/C3?/?/?/3+?/?/?/?/?/

4
data/graphics/boxul.ppm Normal file
View file

@ -0,0 +1,4 @@
P6
8 8
255
7?'#+#+#+#+/7#+/7#+# # # # # #+# / / / / / / #+7#C3C3C3?/C3#+# 7#C3K7C33+C3/7# 7#K7C3C3?/?/#+# 7#?/C3?/?/?//7# 7#C3C3?/3+?/

4
data/graphics/boxur.ppm Normal file
View file

@ -0,0 +1,4 @@
P6
8 8
255
/7#+/7#+/7#+#+7?'# # # # # #+/ / / / / / # #+3+?/C3C3C37##+3+C33+C3C37## #+?/?/C3?/C37## /7C3C3K7K7C37## #+C3?/C3K7K77## /7

BIN
data/graphics/cross1.ppm Normal file

Binary file not shown.

BIN
data/graphics/cross2.ppm Normal file

Binary file not shown.

BIN
data/graphics/cross3.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig0.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig1.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig2.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig3.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig4.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig45.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig46.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig47.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig5.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig58.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig6.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig7.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig8.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig9.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig91.ppm Normal file

Binary file not shown.

BIN
data/graphics/dig93.ppm Normal file

Binary file not shown.

BIN
data/graphics/diga.ppm Normal file

Binary file not shown.

BIN
data/graphics/digb.ppm Normal file

Binary file not shown.

BIN
data/graphics/digc.ppm Normal file

Binary file not shown.

BIN
data/graphics/digd.ppm Normal file

Binary file not shown.

BIN
data/graphics/dige.ppm Normal file

Binary file not shown.

BIN
data/graphics/digf.ppm Normal file

Binary file not shown.

BIN
data/graphics/digg.ppm Normal file

Binary file not shown.

BIN
data/graphics/digh.ppm Normal file

Binary file not shown.

BIN
data/graphics/digi.ppm Normal file

Binary file not shown.

BIN
data/graphics/digj.ppm Normal file

Binary file not shown.

BIN
data/graphics/digk.ppm Normal file

Binary file not shown.

BIN
data/graphics/digl.ppm Normal file

Binary file not shown.

BIN
data/graphics/digm.ppm Normal file

Binary file not shown.

BIN
data/graphics/dign.ppm Normal file

Binary file not shown.

BIN
data/graphics/digo.ppm Normal file

Binary file not shown.

BIN
data/graphics/digp.ppm Normal file

Binary file not shown.

BIN
data/graphics/digq.ppm Normal file

Binary file not shown.

BIN
data/graphics/digr.ppm Normal file

Binary file not shown.

BIN
data/graphics/digs.ppm Normal file

Binary file not shown.

BIN
data/graphics/digt.ppm Normal file

Binary file not shown.

BIN
data/graphics/digu.ppm Normal file

Binary file not shown.

BIN
data/graphics/digv.ppm Normal file

Binary file not shown.

BIN
data/graphics/digw.ppm Normal file

Binary file not shown.

BIN
data/graphics/digx.ppm Normal file

Binary file not shown.

BIN
data/graphics/digy.ppm Normal file

Binary file not shown.

BIN
data/graphics/digz.ppm Normal file

Binary file not shown.

BIN
data/graphics/m_butt1.ppm Normal file

Binary file not shown.

BIN
data/graphics/m_butt2.ppm Normal file

Binary file not shown.

BIN
data/graphics/m_colors.ppm Normal file

Binary file not shown.

BIN
data/graphics/m_palno.ppm Normal file

Binary file not shown.

BIN
data/graphics/m_palsel.ppm Normal file

Binary file not shown.

BIN
data/graphics/m_vbox.ppm Normal file

Binary file not shown.

BIN
data/graphics/stbr123.ppm Normal file

Binary file not shown.

BIN
data/graphics/stbr124.ppm Normal file

Binary file not shown.

BIN
data/graphics/stbr125.ppm Normal file

Binary file not shown.

BIN
data/graphics/stbr126.ppm Normal file

Binary file not shown.

BIN
data/graphics/stbr127.ppm Normal file

Binary file not shown.

BIN
data/graphics/stcfn096.ppm Normal file

Binary file not shown.

BIN
data/graphics/stkeys6.ppm Normal file

Binary file not shown.

BIN
data/graphics/stkeys7.ppm Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more