Skip to content

Commit a49f9ca

Browse files
committed
Use local port for openal-soft, modify library name to use one that doesn't conflict with one the engine uses
1 parent e9c86ae commit a49f9ca

File tree

9 files changed

+178
-6
lines changed

9 files changed

+178
-6
lines changed

src/game/client/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ if (UNIX)
7474
endif()
7575

7676
target_link_options(client PRIVATE
77-
$<$<PLATFORM_ID:Windows>:/DELAYLOAD:OpenAL32.dll>
77+
$<$<PLATFORM_ID:Windows>:/DELAYLOAD:openal-hlu.dll>
7878
$<$<PLATFORM_ID:Darwin>:-framework Carbon>)
7979

8080
target_sources(client PRIVATE

src/game/client/DelayLoad.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ FARPROC WINAPI DelayHook(
4747
{
4848
if (dliNotify == dliNotePreLoadLibrary)
4949
{
50-
if (strcmp(pdli->szDll, "OpenAL32.dll") == 0)
50+
if (strcmp(pdli->szDll, "openal-hlu.dll") == 0)
5151
{
52-
return DelayLoad_LoadGameLib("cl_dlls/OpenAL32.dll");
52+
return DelayLoad_LoadGameLib("cl_dlls/openal-hlu.dll");
5353
}
5454
}
5555

vcpkg-configuration.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
{
44
"kind": "filesystem",
55
"path": "vcpkg_config/registry",
6-
"baseline": "2022-09-20",
6+
"baseline": "local_ports",
77
"packages": [
88
"eastl",
99
"json-schema-validator",
10-
"libnyquist"
10+
"libnyquist",
11+
"openal-soft"
1112
]
1213
}
1314
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Modified version of vcpkg's portfile that applies a patch that renames the library name to prevent it from conflicting with libopenal.so on Linux.
2+
# The engine uses Miles Sound System which uses OpenAL on Linux. This is an older version that doesn't have extensions needed for the Unified SDK to work.
3+
4+
vcpkg_from_github(
5+
OUT_SOURCE_PATH SOURCE_PATH
6+
REPO kcat/openal-soft
7+
REF dc83d99c95a42c960150ddeee06c124134b52208 # openal-soft-1.22.2
8+
SHA512 3fbbdfbb2609ef8187d20ce74b2fb8082037288f3fd80df71d360705d8efdadfe8f62811af1cd824cb6572c8c3479b370f8ae3819b8b8bb0b20c34f7a73cc530
9+
HEAD_REF master
10+
PATCHES
11+
rename-library.diff
12+
)
13+
14+
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
15+
FEATURES
16+
pipewire ALSOFT_BACKEND_PIPEWIRE
17+
)
18+
19+
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
20+
set(OPENAL_LIBTYPE "SHARED")
21+
else()
22+
set(OPENAL_LIBTYPE "STATIC")
23+
endif()
24+
25+
set(ALSOFT_REQUIRE_LINUX OFF)
26+
set(ALSOFT_REQUIRE_WINDOWS OFF)
27+
set(ALSOFT_REQUIRE_APPLE OFF)
28+
29+
if(VCPKG_TARGET_IS_LINUX)
30+
set(ALSOFT_REQUIRE_LINUX ON)
31+
endif()
32+
if(VCPKG_TARGET_IS_WINDOWS)
33+
set(ALSOFT_REQUIRE_WINDOWS ON)
34+
endif()
35+
if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS)
36+
set(ALSOFT_REQUIRE_APPLE ON)
37+
endif()
38+
39+
vcpkg_cmake_configure(
40+
SOURCE_PATH "${SOURCE_PATH}"
41+
OPTIONS ${FEATURE_OPTIONS}
42+
-DLIBTYPE=${OPENAL_LIBTYPE}
43+
-DALSOFT_UTILS=OFF
44+
-DALSOFT_NO_CONFIG_UTIL=ON
45+
-DALSOFT_EXAMPLES=OFF
46+
-DALSOFT_CONFIG=OFF
47+
-DALSOFT_HRTF_DEFS=OFF
48+
-DALSOFT_AMBDEC_PRESETS=OFF
49+
-DALSOFT_BACKEND_ALSA=${ALSOFT_REQUIRE_LINUX}
50+
-DALSOFT_BACKEND_OSS=OFF
51+
-DALSOFT_BACKEND_SOLARIS=OFF
52+
-DALSOFT_BACKEND_SNDIO=OFF
53+
-DALSOFT_BACKEND_PORTAUDIO=OFF
54+
-DALSOFT_BACKEND_PULSEAUDIO=${ALSOFT_REQUIRE_LINUX}
55+
-DALSOFT_BACKEND_COREAUDIO=${ALSOFT_REQUIRE_APPLE}
56+
-DALSOFT_BACKEND_JACK=OFF
57+
-DALSOFT_BACKEND_OPENSL=${VCPKG_TARGET_IS_ANDROID}
58+
-DALSOFT_BACKEND_WAVE=ON
59+
-DALSOFT_BACKEND_WINMM=OFF
60+
-DALSOFT_BACKEND_DSOUND=OFF
61+
-DALSOFT_REQUIRE_WASAPI=${ALSOFT_REQUIRE_WINDOWS}
62+
-DALSOFT_CPUEXT_NEON=OFF
63+
-DCMAKE_DISABLE_FIND_PACKAGE_WindowsSDK=ON
64+
MAYBE_UNUSED_VARIABLES
65+
ALSOFT_AMBDEC_PRESETS
66+
ALSOFT_BACKEND_ALSA
67+
ALSOFT_BACKEND_COREAUDIO
68+
ALSOFT_BACKEND_JACK
69+
ALSOFT_BACKEND_OPENSL
70+
ALSOFT_BACKEND_OSS
71+
ALSOFT_BACKEND_PORTAUDIO
72+
ALSOFT_BACKEND_PIPEWIRE
73+
ALSOFT_BACKEND_PULSEAUDIO
74+
ALSOFT_BACKEND_SNDIO
75+
ALSOFT_BACKEND_SOLARIS
76+
ALSOFT_CONFIG
77+
ALSOFT_CPUEXT_NEON
78+
ALSOFT_HRTF_DEFS
79+
CMAKE_DISABLE_FIND_PACKAGE_WindowsSDK
80+
)
81+
82+
vcpkg_cmake_install()
83+
vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/OpenAL")
84+
85+
foreach(HEADER al.h alc.h)
86+
file(READ "${CURRENT_PACKAGES_DIR}/include/AL/${HEADER}" AL_H)
87+
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
88+
string(REPLACE "defined(AL_LIBTYPE_STATIC)" "1" AL_H "${AL_H}")
89+
else()
90+
# Normally we would say:
91+
# string(REPLACE "defined(AL_LIBTYPE_STATIC)" "0" AL_H "${AL_H}")
92+
# but we are leaving these undefined macros alone in support of
93+
# https://github.com/microsoft/vcpkg/issues/18098
94+
endif()
95+
file(WRITE "${CURRENT_PACKAGES_DIR}/include/AL/${HEADER}" "${AL_H}")
96+
endforeach()
97+
98+
vcpkg_fixup_pkgconfig()
99+
100+
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
101+
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
102+
file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
103+
file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
104+
105+
vcpkg_copy_pdbs()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 1984ac97..ec001caa 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -1252,11 +1252,7 @@ if(ALSOFT_UTILS OR ALSOFT_EXAMPLES)
6+
endif()
7+
endif()
8+
9+
-if(NOT WIN32)
10+
- set(LIBNAME "openal")
11+
-else()
12+
- set(LIBNAME "OpenAL32")
13+
-endif()
14+
+set(LIBNAME "openal-hlu")
15+
16+
# Needed for openal.pc.in
17+
set(prefix ${CMAKE_INSTALL_PREFIX})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
The package openal-soft provides CMake targets:
2+
3+
find_package(OpenAL CONFIG REQUIRED)
4+
target_link_libraries(main PRIVATE OpenAL::OpenAL)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"name": "openal-soft",
3+
"version-semver": "1.22.2",
4+
"port-version": 2,
5+
"description": "OpenAL Soft is an LGPL-licensed, cross-platform, software implementation of the OpenAL 3D audio API.",
6+
"homepage": "https://github.com/kcat/openal-soft",
7+
"license": "GPL-2.0-or-later",
8+
"supports": "!uwp",
9+
"dependencies": [
10+
{
11+
"name": "alsa",
12+
"platform": "linux"
13+
},
14+
{
15+
"name": "vcpkg-cmake",
16+
"host": true
17+
},
18+
{
19+
"name": "vcpkg-cmake-config",
20+
"host": true
21+
}
22+
],
23+
"features": {
24+
"pipewire": {
25+
"description": "Native support for Pipewire",
26+
"supports": "linux",
27+
"dependencies": [
28+
"pipewire"
29+
]
30+
}
31+
}
32+
}

vcpkg_config/registry/versions/baseline.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"2022-09-20": {
2+
"local_ports": {
33
"eastl": {
44
"baseline": "3.19.00",
55
"port-version": 0
@@ -11,6 +11,10 @@
1111
"libnyquist": {
1212
"baseline": "0.1.0",
1313
"port-version": 0
14+
},
15+
"openal-soft": {
16+
"baseline": "1.22.2",
17+
"port-version": 2
1418
}
1519
}
1620
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"versions": [
3+
{
4+
"version-string": "1.22.2",
5+
"port-version": 2,
6+
"path": "$/ports/openal-soft/1.22.2_2"
7+
}
8+
]
9+
}

0 commit comments

Comments
 (0)