diff --git a/indra/cmake/FMODEX.cmake b/indra/cmake/FMODEX.cmake index 283260d80..9a39b1264 100644 --- a/indra/cmake/FMODEX.cmake +++ b/indra/cmake/FMODEX.cmake @@ -53,6 +53,11 @@ find_path(FMODEX_INCLUDE_DIR fmod.h ${FMODEX_SDK_DIR} ) +if(DARWIN) + set(FMODEX_ORIG_LIBRARY "${FMODEX_LIBRARY}") + set(FMODEX_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/libfmodex.dylib") +endif(DARWIN) + if (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR) set(FMODEX ON CACHE BOOL "Use closed source FMOD Ex sound library.") else (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 8f4f93a26..ec091d348 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1371,12 +1371,9 @@ if (FMOD OR FMODEX) endif (FMOD) if (DARWIN) - #if(FMOD) # FIXME: This makes no sense, we can't nest an if(FMODEX) and it's senseless to check for FMOD again. + if(FMOD) set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp) add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES}) - if (FMODEX) - set(fmodwrapper_needed_LIBRARIES ${FMODEX_LIBRARY} ${CARBON_LIBRARY}) - endif (FMODEX) if (FMOD) set(fmodwrapper_needed_LIBRARIES ${FMOD_LIBRARY} ${CARBON_LIBRARY}) endif (FMOD) @@ -1389,7 +1386,7 @@ if (FMOD OR FMODEX) ) set(FMODWRAPPER_LIBRARY fmodwrapper) target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES}) - #endif(FMOD) # FIXME! + endif(FMOD) if(FMODEX) set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY}) endif(FMODEX) @@ -1441,21 +1438,21 @@ if (WINDOWS) set(release_flags "/MAP:Release/${VIEWER_BINARY_NAME}.map") endif() -if (FMOD) - if(MANIFEST_LIBRARIES) - set(MANIFEST_LIBRARIES "${MANIFEST_LIBRARIES}|${FMOD_BINARY_DIR}/fmod.dll") - else(MANIFEST_LIBRARIES) - set(MANIFEST_LIBRARIES "--extra_libraries=${FMOD_BINARY_DIR}/fmod.dll") - endif(MANIFEST_LIBRARIES) -endif (FMOD) -if (FMODEX) - if(MANIFEST_LIBRARIES) - set(MANIFEST_LIBRARIES "${MANIFEST_LIBRARIES}|${FMODEX_BINARY_DIR}/fmodex.dll") - else(MANIFEST_LIBRARIES) - set(MANIFEST_LIBRARIES "--extra_libraries=${FMODEX_BINARY_DIR}/fmodex.dll") - endif(MANIFEST_LIBRARIES) - set(EXTRA_LINKER_FLAGS "/DELAYLOAD:fmodex.dll") -endif (FMODEX) + if (FMOD) + if(MANIFEST_LIBRARIES) + set(MANIFEST_LIBRARIES "${MANIFEST_LIBRARIES}|${FMOD_BINARY_DIR}/fmod.dll") + else(MANIFEST_LIBRARIES) + set(MANIFEST_LIBRARIES "--extra_libraries=${FMOD_BINARY_DIR}/fmod.dll") + endif(MANIFEST_LIBRARIES) + endif (FMOD) + if (FMODEX) + if(MANIFEST_LIBRARIES) + set(MANIFEST_LIBRARIES "${MANIFEST_LIBRARIES}|${FMODEX_BINARY_DIR}/fmodex.dll") + else(MANIFEST_LIBRARIES) + set(MANIFEST_LIBRARIES "--extra_libraries=${FMODEX_BINARY_DIR}/fmodex.dll") + endif(MANIFEST_LIBRARIES) + set(EXTRA_LINKER_FLAGS "/DELAYLOAD:fmodex.dll") + endif (FMODEX) set_target_properties(${VIEWER_BINARY_NAME} PROPERTIES @@ -1668,6 +1665,15 @@ if (DARWIN) add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit basic_plugin_filepicker) + if (FMODEX) + add_custom_command(OUTPUT "${FMODEX_LIBRARY}" + COMMAND cp "${FMODEX_ORIG_LIBRARY}" "${FMODEX_LIBRARY}" + COMMAND install_name_tool -id "@executable_path/../Resources/libfmodex.dylib" ${FMODEX_LIBRARY} + DEPENDS "${FMODEX_ORIG_LIBRARY}") + add_custom_target(fmodex_modified_library DEPENDS "${FMODEX_LIBRARY}") + add_dependencies(${VIEWER_BINARY_NAME} fmodex_modified_library) + endif (FMODEX) + if (PACKAGE) add_custom_target(package ALL DEPENDS ${VIEWER_BINARY_NAME}) add_dependencies(package mac-updater mac-crash-logger) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index f118a68a6..84e6ff3cc 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -525,6 +525,14 @@ class DarwinManifest(ViewerManifest): print "Skipping libfmodwrapper.dylib - not found" pass + # And now FMOD Ex! + try: + self.path("libfmodex.dylib", "libfmodex.dylib") + pass + except: + print "Skipping libfmodex.dylib - not found" + pass + # our apps try: self.path("../mac_crash_logger/" + self.args['configuration'] + "/mac-crash-logger.app", "mac-crash-logger.app")