Libraries and Dependencies: Difference between revisions

From The DarkMod Wiki
Jump to navigationJump to search
mNo edit summary
(libpng is now used directly, DevIL was removed several versions ago.)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
This article is a record of what libraries and dependencies are used within the different aspects of TDM.
All the third-party libraries are downloaded, configured and built using [https://conan.io/ conan package manager].
This is the recommended way to handle libraries.
Read file '''ThirdParty/readme.md''' for more details about this way.


Dependencies which depend on other libraries are indicated with a '->'. They may not be verbose.
Even if conan is not your good friend, be sure to follow these rules regarding location in the source code repo:
# Everything related to third-party libraries '''must''' be inside <tt>ThirdParty</tt> subdirectory.
# All the binaries (e.g. .lib and .a files) '''must''' be inside <tt>ThirdParty/artefacts</tt> subdirectory, sorted by platform+ABI according to conventions.
 
Note that some libraries are embedded directly into the source code (MD4 and MD5 hashes, PropTree GUI helper).
However, this way is discouraged: think twice and ask guys of forums before using it!
 
=== List of libraries ===
 
This table is a record of what libraries and dependencies are currently used in TheDarkMod game and tdm_installer.


==Engine==
{| class="wikitable"
{| class="wikitable"
|-
|-
! Name !! Current Version (Used) !! Platforms !! License !! Initial TDM Version
! Name !! Notes !! License !! Initial TDM Version
|-
|[http://www.boost.org/ Boost]                                ||1.45  ||Win/Nix||BSL      ||TBD
|-
| ->boost-filesystem                                          ||      ||      ||          ||
|-
|[http://openil.sourceforge.net/ DeVIL]                        ||      ||Win/Nix||LGPL      ||1.03
|-
| ->[http://www.ijg.org/ libjpeg]                              ||8b    ||Win/Nix||Note      ||<1.00
|-
| ->[http://www.libpng.org/pub/png/libpng.html libpng]        ||1.4.5 ||Win/Nix||libpng    ||1.03
|-
|[http://kcat.strangesoft.net/openal.html OpenAL Soft]        ||1.14  ||Win/Nix||LGPL      ||TBD
|-
|[http://msdn.microsoft.com/en-us/directx/aa937788 DirectX SDK]||N/A  ||Win    ||Note      ||<1.00
|-
|[http://www.ijg.org/ libjpeg]                                ||8b    ||Win/Nix||Note      ||<1.00
|-
|-
|[http://curl.haxx.se/ libcurl]                               ||7.21.0||Win/Nix||cURL(MIT*)||<1.00
|[http://www.ijg.org/ libjpeg]                                 ||used by DevIL; JPEG_INTERNALS    ||[https://jpegclub.org/reference/libjpeg-license/ BSD-like]                       ||<1.00
|-
|[http://www.winimage.com/zLibDll/minizip.html minizip]        ||1.01e ||Win/Nix||zlib      ||<1.00
|-
|[http://zlib.net/ zlib]                                       ||1.2.5 ||Win/Nix||zlib      ||<1.00
|}
 
==Game code==
Note : This excludes common libs, which are already linked by the engine.
 
{| class="wikitable"
|-
|-
! Name !! Current Version (Used) !! Platforms !! License !! Initial TDM Version
|[http://www.libpng.org/pub/png/libpng.html libpng]            ||                                  ||[http://libpng.org/pub/png/src/libpng-LICENSE.txt zlib]                          ||1.03
|-
|-
|[http://www.boost.org/ Boost] ||1.45||Win/Nix ||BSL ||<1.00
|[https://xiph.org/vorbis/ libvorbis]                           ||                                 ||[https://github.com/xiph/vorbis/blob/master/COPYING BSD-like]                    ||<1.00
|-
|-
| ->boost-thread              ||   ||       ||    ||
|[https://xiph.org/ogg/ libogg]                                ||used only by libvorbis            ||[https://github.com/xiph/ogg/blob/master/COPYING BSD-like]                        ||<1.00
|-
|-
| ->boost-system              ||   ||       ||    ||
|[http://kcat.strangesoft.net/openal.html OpenAL Soft]          ||                                 ||[https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html LGPL 2.0]    ||2.06
|-
|-
| ->boost-program_options      ||   ||       ||    ||
|[https://www.alsa-project.org/wiki/Main_Page ALSA]            ||used only by OpenAL (Linux-only)  ||[https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html LGPL 2.1]    ||2.08
|-
|-
| ->boost-regex                ||   ||       ||    ||
|[https://ffmpeg.org/ FFmpeg]                                  ||heavily reduced build            ||[https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html LGPL 2.1]    ||2.06
|-
|-
| ->boost-date_time            ||   ||       ||    ||
|[http://curl.haxx.se/ libcurl]                                ||                                 ||[https://curl.haxx.se/docs/copyright.html MIT-like]                              ||<1.00
|-
|-
|[http://pugixml.org/ plugixml]||1.0 ||Win/Nix ||MIT ||1.03
|[https://tls.mbed.org/ mbed TLS]                               ||used only by libcurl              ||[https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0]                          ||2.03?
|}
 
==Licenses==
{|
|-
|-
|[http://www.winimage.com/zLibDll/minizip.html minizip]        ||game defines some extensions      ||[https://zlib.net/zlib_license.html zlib]                                        ||<1.00
|-
|-
|BSL 1.0 ||[http://www.boost.org/LICENSE_1_0.txt Boost Software License Version 1.0]
|[http://zlib.net/ zlib]                                        ||used by minizip                  ||[https://zlib.net/zlib_license.html zlib]                                        ||<1.00
|-
|-
|LGPL 2.1||[http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License 2.1]
|[https://pugixml.org/ pugixml]                                ||                                  ||[https://pugixml.org/license.html MIT]                                            ||1.03
|-
|-
|BSD    ||[http://www.opensource.org/licenses/bsd-license.php Simplified BSD]
|[https://github.com/c42f/tinyformat tinyformat]                ||                                  ||[http://www.boost.org/LICENSE_1_0.txt BSL 1.0]                                   ||2.08
|-
|-
|cURL    ||[http://curl.haxx.se/docs/copyright.html MIT/X derived*]
|[https://github.com/onqtam/doctest doctest]                    ||                                  ||[https://github.com/onqtam/doctest/blob/master/LICENSE.txt MIT]                   ||2.08
|-
|-
|zlib    ||[http://www.gzip.org/zlib/zlib_license.html zlib License]
|[https://www.glfw.org/ glfw]                                  ||                                  ||[https://www.glfw.org/license zlib]                                              ||2.09
|-
|-
|libpng  ||[http://www.libpng.org/pub/png/src/libpng-LICENSE.txt libpng License]
|[https://www.blake2.net/ BLAKE2]                              ||used only in tdm_installer        ||[https://github.com/BLAKE2/BLAKE2/blob/master/COPYING CC0 1.0]                   ||2.09
|-
|-
|libjpeg ||See libjpeg documentation (MIT-like, however a few minor details)
|[https://www.fltk.org/ fltk]                                  ||used only in tdm_installer        ||[https://www.fltk.org/COPYING.php LGPL 2.0]                                      ||2.09
|}
 
==Prospective==
These are libraries which are potential replacement/upgrades from ones currently used.
Entries may remain even if they are excluded from being used, as a reference for the future.
 
{| class="wikitable"
|-
|-
!Name !!To replace !!Reasoning !!License !!Status
|[https://github.com/wolfpld/tracy Tracy]                      ||embedded timeline profiler        ||[https://github.com/wolfpld/tracy/blob/master/LICENSE BSD 3cl]                    ||2.10
|-
|-
|libjpeg-turbo || libjpeg || More stable ABI, more widely accepted license || BSD || Idea
|[https://github.com/ianlancetaylor/libbacktrace libbacktrace]  ||used by Tracy                    ||[https://github.com/wolfpld/tracy/blob/master/libbacktrace/LICENSE BSD 3cl]      ||2.10
|}
|}




[[Category:Coding]]
[[Category:Coding]]

Latest revision as of 14:05, 16 December 2023

All the third-party libraries are downloaded, configured and built using conan package manager. This is the recommended way to handle libraries. Read file ThirdParty/readme.md for more details about this way.

Even if conan is not your good friend, be sure to follow these rules regarding location in the source code repo:

  1. Everything related to third-party libraries must be inside ThirdParty subdirectory.
  2. All the binaries (e.g. .lib and .a files) must be inside ThirdParty/artefacts subdirectory, sorted by platform+ABI according to conventions.

Note that some libraries are embedded directly into the source code (MD4 and MD5 hashes, PropTree GUI helper). However, this way is discouraged: think twice and ask guys of forums before using it!

List of libraries

This table is a record of what libraries and dependencies are currently used in TheDarkMod game and tdm_installer.

Name Notes License Initial TDM Version
libjpeg used by DevIL; JPEG_INTERNALS BSD-like <1.00
libpng zlib 1.03
libvorbis BSD-like <1.00
libogg used only by libvorbis BSD-like <1.00
OpenAL Soft LGPL 2.0 2.06
ALSA used only by OpenAL (Linux-only) LGPL 2.1 2.08
FFmpeg heavily reduced build LGPL 2.1 2.06
libcurl MIT-like <1.00
mbed TLS used only by libcurl Apache 2.0 2.03?
minizip game defines some extensions zlib <1.00
zlib used by minizip zlib <1.00
pugixml MIT 1.03
tinyformat BSL 1.0 2.08
doctest MIT 2.08
glfw zlib 2.09
BLAKE2 used only in tdm_installer CC0 1.0 2.09
fltk used only in tdm_installer LGPL 2.0 2.09
Tracy embedded timeline profiler BSD 3cl 2.10
libbacktrace used by Tracy BSD 3cl 2.10