Opened 13 years ago

Closed 10 years ago

#864 closed task (fixed)

Upgrade Windows libraries

Reported by: Philip Taylor Owned by:
Priority: Nice to Have Milestone: Alpha 17
Component: Core engine Keywords:
Cc: Patch:

Description

Currently the Windows build uses precompiled libraries, some of which were built with VC6, some with VC2005 (mozjs zlib1 nvtt jpeg-6b libpng zlib1 libcurl enet). Two problems:

  • Some are very old (as far back as 2004), so there are probably new versions with security fixes and bug fixes and performance improvements etc.
  • The VC2005 CRT requires sometimes-painful manifest stuff.

It might be nice to rebuild the libraries with their latest versions, and the latest compiler (VC2010 unless you're reading this in the future) which hopefully doesn't have the manifest problems.

Need to make sure that the libraries are still compatible with the oldest compiler version that we want the game to support (currently probably VC2008; upgrading everyone and everything to VC2010 would be nice but will not be trivial).

Change History (19)

comment:1 by ben, 12 years ago

In 11561:

Updates Windows ogg and vorbis libs, built with VC2008. Refs #864.
Removes some old unused DLLs.

in reply to:  description comment:2 by historic_bruno, 12 years ago

Replying to Philip:

It might be nice to rebuild the libraries with their latest versions, and the latest compiler (VC2010 unless you're reading this in the future) which hopefully doesn't have the manifest problems.

Would this break Windows 2000 compatibility and pre-XP SP3? (I'm not sure if the runtime library or only the application binary breaks that) The VC 2010 redistributable package claims to only support XP SP3 and later. If so, we need to decide if that's an acceptable loss.

I noticed this issue when building libxml 2.8.0 which only includes a VC 2010 project. We'd also need to bundle the runtime dlls. On a related note, should we be distributing the non-redistributable debug runtime dlls? (it's convenient but seemingly not permitted by their license)

Last edited 12 years ago by historic_bruno (previous) (diff)

comment:3 by ben, 12 years ago

In 12459:

Updates bundled win32 OpenAL Soft to v1.14, seems to fix Windows crashes with new sound system. Refs #864, #1223

comment:4 by historic_bruno, 11 years ago

r12979 updated OpenAL Soft to v1.15.1

comment:5 by historic_bruno, 11 years ago

r13033 updates Boost to 1.51.0

comment:6 by ben, 11 years ago

In 13035:

Updates bundled libpng to v1.5.13, built with VC2008 - requires update-workspaces. Refs #864

comment:7 by historic_bruno, 11 years ago

r13436 updated Boost to 1.53.0 and added VC2012 libs.

Also I discovered a tool for Boost called bcp that will generate a subset of Boost libs. I used it to find the Boost subset needed for our source code, of course it takes into account all compilers and build paths, likely more than we need, but better safe than sorry. Still, it cut the size of our bundled win32 Boost by more than half!

comment:8 by ben, 10 years ago

In 15416:

Updates some precompiled win32 libraries with VC++ 2010 (note: requires update-workspaces), refs #864:
Updates libiconv to v1.14.
Updates libxml2 to v2.9.1.
Updates zlib to v1.2.8.
Rebuilds FCollada.
Updates libxml2 to use same libiconv as tinygettext.
Cleans up unneeded libiconv files.

comment:9 by ben, 10 years ago

In 15417:

Deletes various unused win32 dlls, refs #864

comment:10 by ben, 10 years ago

In 15418:

Updates precompiled win32 libcurl to v7.37.0, built with VC++ 2010 and no SSL/IDN/ZLIB/etc support, refs #864

comment:11 by ben, 10 years ago

In 15419:

Updates precompiled win32 libogg to v1.3.2 and libvorbis to 1.3.4, built with VC++ 2010, refs #864

comment:12 by ben, 10 years ago

In 15455:

Rebuilds precompiled win32 NVTT and OpenALSoft libs with VC++ 2010, refs #864

comment:13 by ben, 10 years ago

In 15456:

Updates precompiled win32 libpng to 1.6.12, built with VC++ 2010, refs #864.
Removes unused ffmpeg definition from extern_libs4.lua

comment:14 by ben, 10 years ago

In 15457:

Removes bundled ENet source. NOTE: system libenet (1.3) is now required on *nix, see BuildInstructions for updates. This change requires running update-workspaces. Fixes #1568.
Updates update-workspaces.sh and build-osx-libs.sh for this change.
Updates precompiled win32 ENet to 1.3.12, built with VC++ 2010, and moves it to libraries/win32, refs #864.

comment:15 by historic_bruno, 10 years ago

We are now down to two remaining old libraries:

  • libjpeg v6b - The game doesn't even use JPEG. Philip was of the opinion that we should remove it, but I think it would be more effort if we later want to use JPEG for anything, we'll have to add all the texture support back again.
  • miniupnpc v1.8 - Update to 1.9 is planned (see #2552), win32 libs should be built with VC++ 2010 for consistency.

There is also SDL, which is currently 1.2.15 and unused on Windows. That can be replaced by a freshly built SDL 2 following completion of #2041.

After that, we can delete old unsupported MSVC runtimes that we bundle (6, 7, and 8).

Last edited 10 years ago by historic_bruno (previous) (diff)

comment:16 by fabio, 10 years ago

About libjpeg the code using it could be ifdeffed out, so that we can remove the dependency and the dll, but be able to quickly reenable it if needed.

comment:17 by ben, 10 years ago

In 15529:

Removes old unneeded MSVC runtimes for VC++ 2003 and VC6, refs #864

in reply to:  16 comment:18 by historic_bruno, 10 years ago

Replying to fabio:

About libjpeg the code using it could be ifdeffed out, so that we can remove the dependency and the dll, but be able to quickly reenable it if needed.

That might work, but it's quite easy to break code that's not compiled, then the value of keeping it around is lessened. I guess it won't become too broken in any case, but I would rather keep it as-is or delete it. Now I'm leaning toward removing it, so we can reduce our dependencies by one.

comment:19 by historic_bruno, 10 years ago

Milestone: BacklogAlpha 17
Resolution: fixed
Status: newclosed

This ticket is mostly resolved, I will open a new one for JPEG support.

Note: See TracTickets for help on using tickets.