View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0004822 | The Dark Mod | Coding | public | 05.06.2018 16:19 | 02.05.2019 08:50 |
Reporter | stgatilov | Assigned To | stgatilov | ||
Priority | normal | Severity | minor | Reproducibility | N/A |
Status | resolved | Resolution | fixed | ||
Product Version | TDM 2.06 | ||||
Target Version | TDM 2.08 | Fixed in Version | TDM 2.08 | ||
Summary | 0004822: Restructure third-party libraries in code SVN | ||||
Description | The idea is described here: http://forums.thedarkmod.com/topic/19473-redesign-directory-structure-of-tdm-dependencies/ Put in simple words, there would be the following structure of third-party libraries: code_svn # ... # ThirdParty * zlib ... * minizip ... * ffmpeg + include (public headers here) + source (source code here) + lib - win_32 (built libs here) - win_64 (built libs here) - linux_32 (built libs here) - linux_64 (built libs here) - macosx?? (built libs here) ... ... | ||||
Tags | No tags attached. | ||||
related to | 0004810 | resolved | stgatilov | Stop shipping/using outdated bundles of dependencies |
related to | 0004533 | closed | stgatilov | VC++ build cleaning |
related to | 0004826 | resolved | stgatilov | Remove ID hacks from third-party libraries: minizip and libjpeg |
related to | 0005026 | resolved | stgatilov | Move to non-XP VC toolset |
From forum: http://forums.thedarkmod.com/topic/19840-208-third-party-libraries-overhaul/page-2#entry436498 Right now all libraries are contained inside ThirdParty directory, all the final builds are inside artefacts subdirectory with strict structure. Every build is named according to options (like: compiler, bitness, static/dynamic, runtime, debug/release). The libraries are classified into three categories: 1) header-only --- no builds. 2) pure-C libs --- only release build is created. 3) C++ libs (pugixml) --- both release and debug builds are created. Every library has a single set of public headers (include) --- like before. I noticed that this rule is not universal, because some libraries put a config header into includes. In case of libjpeg, jconfig.h is different on Linux and Windows. Although both platforms build well by using Linux version :laugh: Probably some change will be needed in future. Right now all the libraries are managed by conan, except for minizip: TDM still has embedded code. I will extract it after branch merge. The converted libraries include ogg/vorbis, openal, curl, libjpeg, pugixml, tinyformat, doctest. All the libraries are also updated to more recent versions. The only problem which I faced is doctest crashing on startup. I had to define DOCTEST_THREAD_LOCAL to empty to remove the crash. If someone wants to investigate, comment out this define and run debugging 10 times in a row. Up to this moment, I did not remove old trash (mostly). I intend to do it after branch merge. Here is the list of stuff to be deleted: 1) include, lib, win32, win64, linux, macosx --- all the old places with 3rd party stuff 2) ExtLibs project --- it is not used any more. If we ever decide to switch to full dynamic, I suggest using every single lib as a separate DLL. 3) Move unused scons files and MSVC props into "old" or "unused" subdirectory. 4) Delete "memory log" configuration, and add "Release Incremental" if it would be helpful. |
|
Note that the bunch of changes were done in branch 3rdparty_4822. | |
Merged branch to trunk in svn rev 8158. | |
Extracted minizip in svn rev 8161. Only minizip_extra.{c|h} are now compiled as a part of TDM, which contain all the custom minizip functions. In fact, two features are currently present there: 1) Some sort of file handle cloning. 2) Fast seeking in uncompressed files. The downside of this extraction is we have to redefine all unzip's private data structures in minizip_extra.c. If minizip changes their them, we will have to adapt this extra code immediately. |
|
Removed ExtLibs directory in svn rev 8205. | |
Removed all the old libraries and their binaries in svn rev 8206. | |
Updated the article on wiki: http://wiki.thedarkmod.com/index.php?title=Libraries_and_Dependencies |
|
Date Modified | Username | Field | Change |
---|---|---|---|
05.06.2018 16:19 | stgatilov | New Issue | |
05.06.2018 16:19 | stgatilov | Status | new => assigned |
05.06.2018 16:19 | stgatilov | Assigned To | => stgatilov |
05.06.2018 16:20 | stgatilov | Relationship added | related to 0004810 |
06.06.2018 03:57 | stgatilov | Relationship added | related to 0004533 |
11.06.2018 09:40 | stgatilov | Target Version | TDM 2.07 => |
20.01.2019 07:17 | stgatilov | Target Version | => TDM 2.08 |
05.04.2019 09:38 | stgatilov | Note Added: 0011713 | |
05.04.2019 09:39 | stgatilov | Note Added: 0011714 | |
09.04.2019 02:38 | stgatilov | Note Added: 0011717 | |
09.04.2019 02:42 | stgatilov | Relationship added | related to 0004826 |
09.04.2019 17:06 | stgatilov | Note Added: 0011718 | |
13.04.2019 15:43 | stgatilov | Relationship added | related to 0005026 |
02.05.2019 07:58 | stgatilov | Note Added: 0011774 | |
02.05.2019 08:36 | stgatilov | Note Added: 0011775 | |
02.05.2019 08:50 | stgatilov | Note Added: 0011776 | |
02.05.2019 08:50 | stgatilov | Status | assigned => resolved |
02.05.2019 08:50 | stgatilov | Fixed in Version | => TDM 2.08 |
02.05.2019 08:50 | stgatilov | Resolution | open => fixed |