SFML does not bind statically to openal32 (binds statically to all other dependencies)

I compiled SFML using CMake for MinGW. After running "mingw32-make install" everything is built and installed without errors. But when you run the examples - pong.exe, sound.exe, sound-capture.exe and voip.exe depend on openal32.dll .

I SFML_USE_STATIC_LIBS = true when configuring CMake and all other dependencies of sample executable files only in my native DLL windows.

Can someone explain why it is dynamically linked to openal32 (but nothing more)?

Edit: I just stumbled upon this thread http://en.sfml-dev.org/forums/index.php?topic=262.0 , which discusses exactly the same issue. I would think (since 2008) that this would be implemented by now. Or is it still in the same situation?

Edit 2: The answer here is http://en.sfml-dev.org/forums/index.php?topic=18119.0 means that OpenAL needs to dynamically communicate due to license, Can anyone confirm if the distribution license allows openal32.dll with executable file?

+7
c ++ cmake sfml
source share
1 answer

I am not a lawyer (and last night I was not in the popular hotel chain).

the OpenAL implementation they use is licensed under the GNU Library General Public License (LGPL), version 2 . LGPL v2 requires that:

If you are linking a program to a library, you must provide the complete object files to the recipients so that they can relink them to the library after making changes to the library and recompiling. And you must show them these conditions so that they know their rights.

The easiest way to allow users to rewrite a closed-source game with a modified OpenAL library is to dynamically link this game to openal32.dll . Thus, they can simply replace openal32.dll with the changed one and place it next to the executable file.

Regarding this part of the license:

And you must show them these conditions so that they know their rights.

Just let your users know that your game uses OpenAL and somehow gives them access to the text of LGPL v2.

You can distribute openal32.dll in your game under the following conditions:

For example, if you distribute copies of the library, for free or for a fee, you must give the recipients all the rights that we gave you. You have to make sure that they also get or can get the source code.

This can be done by simply informing your users that your game uses OpenAL and provides a link to where they can download the source code.

To inform your users about their rights to OpenAL, you can do this on the "About Me" page in the game itself or in the preface / appendix to the distributed game manual. For example:

This game uses the following open source software:

And while you inform OpenAL users, you can also voluntarily provide attributes to other open source libraries that your game uses, such as SFML.

+3
source share

All Articles