Libraries and Dependencies: Difference between revisions

From The DarkMod Wiki
Jump to navigationJump to search
No edit summary
(libpng is now used directly, DevIL was removed several versions ago.)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''TODO: Rewrite all the stuff with recent info, write about conan and ThirdParty/readme.md.'''
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.


This article is a record of what libraries and dependencies are used within the different aspects of TDM.
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.


Dependencies which depend on other libraries are indicated with a '->'. They may not be verbose.
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.ijg.org/ libjpeg]                                 ||used by DevIL; JPEG_INTERNALS    ||[https://jpegclub.org/reference/libjpeg-license/ BSD-like]                        ||<1.00
|-
|-
| ->[http://www.libpng.org/pub/png/libpng.html libpng]         ||1.4.5 ||Win/Nix||libpng   ||1.03
|[http://www.libpng.org/pub/png/libpng.html libpng]             ||                                 ||[http://libpng.org/pub/png/src/libpng-LICENSE.txt zlib]                          ||1.03
|-
|-
|[http://kcat.strangesoft.net/openal.html OpenAL Soft]         ||1.14  ||Win/Nix||LGPL      ||TBD
|[https://xiph.org/vorbis/ libvorbis]                           ||                                 ||[https://github.com/xiph/vorbis/blob/master/COPYING BSD-like]                    ||<1.00
|-
|-
|[http://msdn.microsoft.com/en-us/directx/aa937788 DirectX SDK]||N/A  ||Win    ||Note      ||<1.00
|[https://xiph.org/ogg/ libogg]                                 ||used only by libvorbis            ||[https://github.com/xiph/ogg/blob/master/COPYING BSD-like]                        ||<1.00
|-
|-
|[http://www.ijg.org/ libjpeg]                                 ||8b    ||Win/Nix||Note      ||<1.00
|[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
|-
|-
|[http://curl.haxx.se/ libcurl]                               ||7.21.0||Win/Nix||cURL(MIT*)||<1.00
|[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
|-
|-
|[http://www.winimage.com/zLibDll/minizip.html minizip]       ||1.01e ||Win/Nix||zlib      ||<1.00
|[https://ffmpeg.org/ FFmpeg]                                  ||heavily reduced build            ||[https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html LGPL 2.1]     ||2.06
|-
|-
|[http://zlib.net/ zlib]                                       ||1.2.5 ||Win/Nix||zlib      ||<1.00
|[http://curl.haxx.se/ libcurl]                                 ||                                 ||[https://curl.haxx.se/docs/copyright.html MIT-like]                              ||<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
|[https://tls.mbed.org/ mbed TLS]                              ||used only by libcurl              ||[https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0]                          ||2.03?
|-
|-
|[http://www.boost.org/ Boost] ||1.45||Win/Nix ||BSL ||<1.00
|[http://www.winimage.com/zLibDll/minizip.html minizip]         ||game defines some extensions      ||[https://zlib.net/zlib_license.html zlib]                                        ||<1.00
|-
|-
| ->boost-thread              ||   ||       ||    ||
|[http://zlib.net/ zlib]                                        ||used by minizip                  ||[https://zlib.net/zlib_license.html zlib]                                        ||<1.00
|-
|-
| ->boost-system              ||   ||       ||    ||
|[https://pugixml.org/ pugixml]                                ||                                 ||[https://pugixml.org/license.html MIT]                                            ||1.03
|-
|-
| ->boost-program_options      ||   ||       ||    ||
|[https://github.com/c42f/tinyformat tinyformat]                ||                                 ||[http://www.boost.org/LICENSE_1_0.txt BSL 1.0]                                    ||2.08
|-
|-
| ->boost-regex                ||   ||       ||    ||
|[https://github.com/onqtam/doctest doctest]                    ||                                 ||[https://github.com/onqtam/doctest/blob/master/LICENSE.txt MIT]                  ||2.08
|-
|-
| ->boost-date_time            ||   ||       ||    ||
|[https://www.glfw.org/ glfw]                                  ||                                 ||[https://www.glfw.org/license zlib]                                              ||2.09
|-
|-
|[http://pugixml.org/ plugixml]||1.0 ||Win/Nix ||MIT ||1.03
|[https://www.blake2.net/ BLAKE2]                               ||used only in tdm_installer        ||[https://github.com/BLAKE2/BLAKE2/blob/master/COPYING CC0 1.0]                    ||2.09
|}
 
==Licenses==
{|
|-
|-
|[https://www.fltk.org/ fltk]                                  ||used only in tdm_installer        ||[https://www.fltk.org/COPYING.php LGPL 2.0]                                      ||2.09
|-
|-
|BSL 1.0 ||[http://www.boost.org/LICENSE_1_0.txt Boost Software License Version 1.0]
|[https://github.com/wolfpld/tracy Tracy]                       ||embedded timeline profiler        ||[https://github.com/wolfpld/tracy/blob/master/LICENSE BSD 3cl]                   ||2.10
|-
|LGPL 2.1||[http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License 2.1]
|-
|BSD    ||[http://www.opensource.org/licenses/bsd-license.php Simplified BSD]
|-
|cURL    ||[http://curl.haxx.se/docs/copyright.html MIT/X derived*]
|-
|zlib    ||[http://www.gzip.org/zlib/zlib_license.html zlib License]
|-
|libpng  ||[http://www.libpng.org/pub/png/src/libpng-LICENSE.txt libpng License]
|-
|libjpeg ||See libjpeg documentation (MIT-like, however a few minor details)
|}
 
==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
|-
|-
|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