From f6012f78f9580439079063924043cb8ab0c0f917 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sun, 9 Feb 2020 19:36:10 +0100 Subject: [PATCH] FIRE-29311: Fix building with OpenAL on Windows, based on a patch by Testicular Slingshot --- indra/cmake/Copy3rdPartyLibs.cmake | 4 ++++ indra/lib/python/indra/util/llmanifest.py | 2 ++ indra/newview/CMakeLists.txt | 16 ++++++++++++++++ indra/newview/viewer_manifest.py | 5 +++++ scripts/configure_firestorm.sh | 16 +++++++++++++--- 5 files changed, 40 insertions(+), 3 deletions(-) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 265502a02d..069eada980 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -76,6 +76,10 @@ if(WINDOWS) endif(ADDRESS_SIZE EQUAL 32) endif (FMODEX) + if (OPENAL) + set(release_files ${release_files} OpenAL32.dll alut.dll) + endif (OPENAL) + #******************************* # Copy MS C runtime dlls, required for packaging. # *TODO - Adapt this to support VC9 diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py index 201a2214ba..ffde022166 100755 --- a/indra/lib/python/indra/util/llmanifest.py +++ b/indra/lib/python/indra/util/llmanifest.py @@ -162,6 +162,8 @@ BASE_ARGUMENTS=[ description='Type of viewer build. Can be oss or hvk.', default="oss"), dict(name='fmodversion', description='Version of FMOD used. Can be fmodstudio or fmodex.', default=None), + dict(name='openal', + description='If OpenAL is used.', default=None) ] def usage(arguments, srctree=""): diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 258b99db28..22c34de0d0 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -2269,6 +2269,15 @@ if (WINDOWS) ) endif (FMODEX) + if (OPENAL) + list(APPEND COPY_INPUT_DEPENDENCIES + ${SHARED_LIB_STAGING_DIR}/Release/OpenAL32.dll + ${SHARED_LIB_STAGING_DIR}/Release/alut.dll + ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/OpenAL32.dll + ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/alut.dll + ) + endif (OPENAL) + add_custom_command( OUTPUT ${CMAKE_CFG_INTDIR}/copy_touched.bat COMMAND ${PYTHON_EXECUTABLE} @@ -2289,6 +2298,7 @@ if (WINDOWS) --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --viewer_flavor=${ND_VIEWER_FLAVOR} --fmodversion=${FMODVERSION} + --openal=${OPENAL} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py stage_third_party_libs @@ -2352,6 +2362,7 @@ if (WINDOWS) --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --viewer_flavor=${ND_VIEWER_FLAVOR} --fmodversion=${FMODVERSION} + --openal=${OPENAL} DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py @@ -2440,6 +2451,7 @@ target_link_libraries(${VIEWER_BINARY_NAME} ${DBUSGLIB_LIBRARIES} ${OPENGL_LIBRARIES} ${FMODWRAPPER_LIBRARY} # must come after LLAudio + ${OPENAL_LIBRARIES} ${GLOD_LIBRARIES} ${OPENGL_LIBRARIES} ${JSONCPP_LIBRARIES} @@ -2523,6 +2535,7 @@ endif (NOT ENABLE_MEDIA_PLUGINS) --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --viewer_flavor=${ND_VIEWER_FLAVOR} --fmodversion=${FMODVERSION} + --openal=${OPENAL} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ${COPY_INPUT_DEPENDENCIES} @@ -2548,6 +2561,7 @@ endif (NOT ENABLE_MEDIA_PLUGINS) --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --viewer_flavor=${ND_VIEWER_FLAVOR} --fmodversion=${FMODVERSION} + --openal=${OPENAL} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ${COPY_INPUT_DEPENDENCIES} @@ -2632,6 +2646,7 @@ if (DARWIN) --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --viewer_flavor=${ND_VIEWER_FLAVOR} --fmodversion=${FMODVERSION} + --openal=${OPENAL} DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py @@ -2668,6 +2683,7 @@ if (DARWIN) --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt --viewer_flavor=${ND_VIEWER_FLAVOR} --fmodversion=${FMODVERSION} + --openal=${OPENAL} ${SIGNING_SETTING} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 606a9bcc98..785b427f59 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -589,6 +589,11 @@ class WindowsManifest(ViewerManifest): else: self.path("fmodex.dll") + # Get openal dll + if self.args.get('openal'): + self.path("OpenAL32.dll") + self.path("alut.dll") + # For textures self.path("openjpeg.dll") diff --git a/scripts/configure_firestorm.sh b/scripts/configure_firestorm.sh index 2d2ff9bce4..3bc1a96a8d 100755 --- a/scripts/configure_firestorm.sh +++ b/scripts/configure_firestorm.sh @@ -35,6 +35,7 @@ WANTS_VERSION=$FALSE WANTS_KDU=$FALSE WANTS_FMODSTUDIO=$FALSE WANTS_FMODEX=$FALSE +WANTS_OPENAL=$FALSE WANTS_OPENSIM=$TRUE WANTS_SINGLEGRID=$FALSE WANTS_AVX=$FALSE @@ -72,6 +73,7 @@ showUsage() echo " --no-package : Build without installer (Overrides --package)" echo " --fmodstudio : Build with FMOD Studio" echo " --fmodex : Build with FMOD Ex" + echo " --openal : Build with OpenAL" echo " --opensim : Build with OpenSim support (Disables Havok features)" echo " --no-opensim : Build without OpenSim support (Overrides --opensim)" echo " --singlegrid : Build for single grid usage (Requires --opensim)" @@ -91,7 +93,7 @@ getArgs() # $* = the options passed in from main { if [ $# -gt 0 ]; then - while getoptex "clean build config version package no-package fmodstudio fmodex ninja jobs: platform: kdu opensim no-opensim singlegrid: avx avx2 crashreporting testbuild: help chan: btype:" "$@" ; do + while getoptex "clean build config version package no-package fmodstudio fmodex openal ninja jobs: platform: kdu opensim no-opensim singlegrid: avx avx2 crashreporting testbuild: help chan: btype:" "$@" ; do #ensure options are valid if [ -z "$OPTOPT" ] ; then @@ -111,6 +113,7 @@ getArgs() kdu) WANTS_KDU=$TRUE;; fmodstudio) WANTS_FMODSTUDIO=$TRUE;; fmodex) WANTS_FMODEX=$TRUE;; + openal) WANTS_OPENAL=$TRUE;; opensim) WANTS_OPENSIM=$TRUE;; no-opensim) WANTS_OPENSIM=$FALSE;; singlegrid) WANTS_SINGLEGRID=$TRUE @@ -294,10 +297,11 @@ if [ ! -d `dirname "$LOG"` ] ; then fi echo -e "configure_firestorm.sh" > $LOG -echo -e " PLATFORM: '$PLATFORM'" | tee -a $LOG +echo -e " PLATFORM: $PLATFORM" | tee -a $LOG echo -e " KDU: `b2a $WANTS_KDU`" | tee -a $LOG echo -e " FMODSTUDIO: `b2a $WANTS_FMODSTUDIO`" | tee -a $LOG echo -e " FMODEX: `b2a $WANTS_FMODEX`" | tee -a $LOG +echo -e " OPENAL: `b2a $WANTS_OPENAL`" | tee -a $LOG echo -e " OPENSIM: `b2a $WANTS_OPENSIM`" | tee -a $LOG if [ $WANTS_SINGLEGRID -eq $TRUE ] ; then echo -e " SINGLEGRID: `b2a $WANTS_SINGLEGRID` ($SINGLEGRID_URI)" | tee -a $LOG @@ -430,6 +434,11 @@ if [ $WANTS_CONFIG -eq $TRUE ] ; then else FMODEX="-DFMODEX:BOOL=OFF" fi + if [ $WANTS_OPENAL -eq $TRUE ] ; then + OPENAL="-DOPENAL:BOOL=ON" + else + OPENAL="-DOPENAL:BOOL=OFF" + fi if [ $WANTS_OPENSIM -eq $TRUE ] ; then OPENSIM="-DOPENSIM:BOOL=ON" else @@ -507,7 +516,8 @@ if [ $WANTS_CONFIG -eq $TRUE ] ; then UNATTENDED="-DUNATTENDED=ON" fi - cmake -G "$TARGET" ../indra $CHANNEL ${GITHASH} $FMODSTUDIO $FMODEX $KDU $OPENSIM $SINGLEGRID $AVX_OPTIMIZATION $AVX2_OPTIMIZATION $TESTBUILD $PACKAGE $UNATTENDED -DLL_TESTS:BOOL=OFF -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DCMAKE_BUILD_TYPE:STRING=$BTYPE \ + cmake -G "$TARGET" ../indra $CHANNEL ${GITHASH} $FMODSTUDIO $FMODEX $OPENAL $KDU $OPENSIM $SINGLEGRID $AVX_OPTIMIZATION $AVX2_OPTIMIZATION $TESTBUILD $PACKAGE \ + $UNATTENDED -DLL_TESTS:BOOL=OFF -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DCMAKE_BUILD_TYPE:STRING=$BTYPE \ $CRASH_REPORTING -DVIEWER_SYMBOL_FILE:STRING="${VIEWER_SYMBOL_FILE:-}" -DROOT_PROJECT_NAME:STRING=Firestorm $LL_ARGS_PASSTHRU | tee $LOG if [ $PLATFORM == "windows" ] ; then