Merge pull request #63 from gicmo/ltversion

Introduce libtool like library versioning
This commit is contained in:
Alex Smith
2018-07-04 09:14:31 +01:00
committed by GitHub
3 changed files with 42 additions and 6 deletions

View File

@ -57,13 +57,13 @@ This will also satisfy the build requirement `inih` by pulling it in as a git su
## Requesting GameMode
### Users
After installing `libgamemodeauto.so` simply preload it into the game:
After installing `libgamemodeauto.so.0` simply preload it into the game:
```bash
LD_PRELOAD=/usr/\$LIB/libgamemodeauto.so ./game
LD_PRELOAD=/usr/\$LIB/libgamemodeauto.so.0 ./game
```
Or edit the steam launch options:
```bash
LD_PRELOAD=$LD_PRELOAD:/usr/\$LIB/libgamemodeauto.so %command%
LD_PRELOAD=$LD_PRELOAD:/usr/\$LIB/libgamemodeauto.so.0 %command%
```
Please note the backslash here in `\$LIB` is required.

View File

@ -152,7 +152,7 @@ __attribute__((always_inline)) static inline int internal_load_libgamemode(void)
void *libgamemode = NULL;
/* Try and load libgamemode */
libgamemode = dlopen("libgamemode.so", RTLD_NOW);
libgamemode = dlopen("libgamemode.so.0", RTLD_NOW);
if (!libgamemode) {
snprintf(internal_gamemode_client_error_string,
sizeof(internal_gamemode_client_error_string),

View File

@ -1,5 +1,12 @@
# Libtool like versioning (current.revision.age) for the libraries
# See https://www.sourceware.org/autobook/autobook/autobook_61.html#Library-Versioning
lt_current = '0'
lt_revision = '0'
lt_age = '0'
lt_version = '@0@.@1@.@2@'.format(lt_current, lt_age, lt_revision)
# Main client library to message the daemon
shared_library(
gamemode = shared_library(
'gamemode',
sources: [
'client_impl.c',
@ -8,6 +15,8 @@ shared_library(
dep_systemd,
],
install: true,
soversion: lt_current,
version: lt_version,
)
libgamemode_includes = [
@ -15,7 +24,7 @@ libgamemode_includes = [
]
# Small library to automatically use gamemode
shared_library(
gamemodeauto = shared_library(
'gamemodeauto',
sources: [
'client_loader.c',
@ -24,6 +33,8 @@ shared_library(
libdl,
],
install: true,
soversion: lt_current,
version: lt_version,
)
# Install the gamemode_client header
@ -32,3 +43,28 @@ gamemode_headers = [
]
install_headers(gamemode_headers)
# Generate a pkg-config files
pkg = import('pkgconfig')
desc = 'GameMode temporarily applies game specific optimisations to the host OS.'
pkg.generate(
name: 'gamemode',
description: desc,
filebase: 'gamemode',
version: meson.project_version(),
libraries: [
libdl
],
)
pkg.generate(
name: 'gamemode',
description: desc,
filebase: 'gamemode-auto',
libraries: gamemodeauto,
version: meson.project_version(),
libraries_private: [
libdl
],
)