Add a version script for non-Windows/macOS systems
commit31f33369135c80cfceec9765b73fa6556641cd2e
authorChris Robinson <chris.kcat@gmail.com>
Mon, 10 Apr 2023 19:37:06 +0000 (10 12:37 -0700)
committerChris Robinson <chris.kcat@gmail.com>
Mon, 10 Apr 2023 22:52:26 +0000 (10 15:52 -0700)
treedcec2d30a57719db9c4d32b8154118c2661c2d07
parent3853e31feb6662fa592b7f88ed5f09fee99db12e
Add a version script for non-Windows/macOS systems

To more aggressively control library exports. Despite the -fvisibility=hidden
flag that should hide everything by default, GNU's libstdc++ forces default
visibility for generated std namespace symbols (from template functions that
don't inline, for example), adding some standard C++ symbols to the exported
symbol list. This can cause ABI problems if an app links to OpenAL and uses one
of those symbols, as a future internal change can cause the function to not be
generated and make the symbol no longer available. There seems to be no way to
prevent this, aside from this version script.

This has the added advantage of ensuring future extension functions don't
accidentally get exported due to the ALC_API or AL_API macros making them
visible.
CMakeLists.txt
libopenal.version [new file with mode: 0644]