FIRE-29311: Fix building with OpenAL on Windows, based on a patch by Testicular Slingshot

master
Ansariel 2020-02-09 19:36:10 +01:00
parent 219defd4c5
commit f6012f78f9
5 changed files with 40 additions and 3 deletions

View File

@ -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

View File

@ -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=""):

View File

@ -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

View File

@ -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")

View File

@ -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 <login_uri> : 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