From e72d546fe36ffb262a6a844ac4aae432df357ed5 Mon Sep 17 00:00:00 2001 From: Monty Brandenberg <monty@lindenlab.com> Date: Fri, 11 Apr 2014 19:19:22 -0400 Subject: [PATCH] Mac: Update llqtwebkit build, build and package dylib Qt4 pieces. Part of the switchover to dynamic Qt4. This mostly completes the Mac side. Webkit is functional on Mac, plugins work. The two test programs, llfbconnectest and llplugintest, need a little more work to run without manual fixup ('.' on PATH and maybe a symlink to libz.1.dylib and they run and function on Mac). Also need to address libz.dylib vs libz.a. Currently resolving against dylib which is not what I want. --- autobuild.xml | 12 +- indra/cmake/Copy3rdPartyLibs.cmake | 1 - indra/cmake/Linking.cmake | 1 + indra/media_plugins/webkit/CMakeLists.txt | 12 +- indra/newview/viewer_manifest.py | 34 ++++- .../test_apps/llfbconnecttest/CMakeLists.txt | 121 ++++++++++++---- indra/test_apps/llplugintest/CMakeLists.txt | 129 ++++++++++++++---- 7 files changed, 242 insertions(+), 68 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 35f2be9bd83..8eaef9071a3 100755 --- a/autobuild.xml +++ b/autobuild.xml @@ -1420,9 +1420,9 @@ <key>archive</key> <map> <key>hash</key> - <string>1ae810af805a93184bbd3aeaf0a4a617</string> + <string>89b46227fa477735163f7272be1a4fdc</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-llqtwebkit2/rev/288841/arch/Darwin/installer/llqtwebkit-4.7.1-darwin-20140408.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-llqtwebkit2/rev/288966/arch/Darwin/installer/llqtwebkit-4.7.1-darwin-20140411.tar.bz2</string> </map> <key>name</key> <string>darwin</string> @@ -1432,9 +1432,9 @@ <key>archive</key> <map> <key>hash</key> - <string>ca7be91df38c0cf97ca21def939f010f</string> + <string>77750a0a921c78cc6344156b1c935623</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-llqtwebkit2/rev/288841/arch/Linux/installer/llqtwebkit-4.7.1-linux-20140408.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-llqtwebkit2/rev/288966/arch/Linux/installer/llqtwebkit-4.7.1-linux-20140411.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -1444,9 +1444,9 @@ <key>archive</key> <map> <key>hash</key> - <string>22a3737d53f2cc46897ec1801ab6f271</string> + <string>9ef4ec6355ee5c3dd528da6c4c3a309d</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-llqtwebkit2/rev/288841/arch/CYGWIN/installer/llqtwebkit-4.7.1-windows-20140408.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-llqtwebkit2/rev/288966/arch/CYGWIN/installer/llqtwebkit-4.7.1-windows-20140411.tar.bz2</string> </map> <key>name</key> <string>windows</string> diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index f2fbc8c7757..5dfa6ea4fb1 100755 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -225,7 +225,6 @@ elseif(DARWIN) libexpat.dylib libGLOD.dylib libhunspell-1.3.0.dylib - libllqtwebkit.dylib libminizip.a libndofdev.dylib libssl.dylib diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake index b9c9e531fce..74fe3f11377 100755 --- a/indra/cmake/Linking.cmake +++ b/indra/cmake/Linking.cmake @@ -6,6 +6,7 @@ set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES") include(Variables) set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib) +set(ARCH_PREBUILT_DIRS_PLUGINS ${AUTOBUILD_INSTALL_DIR}/plugins) set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release) set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug) if (WINDOWS) diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt index 0c1c3d800e1..5a8fe90bdd3 100755 --- a/indra/media_plugins/webkit/CMakeLists.txt +++ b/indra/media_plugins/webkit/CMakeLists.txt @@ -121,12 +121,12 @@ if (DARWIN) ) # copy the webkit dylib to the build directory - add_custom_command( - TARGET media_plugin_webkit POST_BUILD -# OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllqtwebkit.dylib - COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ - DEPENDS media_plugin_webkit ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib - ) +# add_custom_command( +# TARGET media_plugin_webkit POST_BUILD +# # OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllqtwebkit.dylib +# COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ +# DEPENDS media_plugin_webkit ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib +# ) endif (DARWIN) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 3ba2e53cca0..e85f4929ae6 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -804,14 +804,42 @@ def path_optional(src, dst): symlinkf(os.path.join(os.pardir, os.pardir, os.pardir, libfile), os.path.join(resource_path, libfile)) - # plugins + # SLPlugin.app/Contents/Resources gets those Qt4 libraries it needs. + if self.prefix(src="", dst="SLPlugin.app/Contents/Resources"): + for libfile in ('libQtCore.4.dylib', + 'libQtCore.4.7.1.dylib', + 'libQtGui.4.dylib', + 'libQtGui.4.7.1.dylib', + 'libQtNetwork.4.dylib', + 'libQtNetwork.4.7.1.dylib', + 'libQtOpenGL.4.dylib', + 'libQtOpenGL.4.7.1.dylib', + 'libQtSvg.4.dylib', + 'libQtSvg.4.7.1.dylib', + 'libQtWebKit.4.dylib', + 'libQtWebKit.4.7.1.dylib', + 'libQtXml.4.dylib', + 'libQtXml.4.7.1.dylib'): + self.path2basename("../packages/lib/release", libfile) + self.end_prefix("SLPlugin.app/Contents/Resources") + + # Qt4 codecs go to llplugin. Not certain why but this is the first + # location probed according to dtruss so we'll go with that. + if self.prefix(src="../packages/plugins/codecs/", dst="llplugin/codecs"): + self.path("libq*.dylib") + self.end_prefix("llplugin/codecs") + + # Similarly for imageformats. + if self.prefix(src="../packages/plugins/imageformats/", dst="llplugin/imageformats"): + self.path("libq*.dylib") + self.end_prefix("llplugin/imageformats") + + # SLPlugin plugins proper if self.prefix(src="", dst="llplugin"): self.path2basename("../media_plugins/quicktime/" + self.args['configuration'], "media_plugin_quicktime.dylib") self.path2basename("../media_plugins/webkit/" + self.args['configuration'], "media_plugin_webkit.dylib") - self.path2basename("../packages/lib/release", "libllqtwebkit.dylib") - self.end_prefix("llplugin") self.end_prefix("Resources") diff --git a/indra/test_apps/llfbconnecttest/CMakeLists.txt b/indra/test_apps/llfbconnecttest/CMakeLists.txt index f56329a0101..800f3f6f56a 100644 --- a/indra/test_apps/llfbconnecttest/CMakeLists.txt +++ b/indra/test_apps/llfbconnecttest/CMakeLists.txt @@ -122,34 +122,26 @@ add_custom_command(TARGET llfbconnecttest POST_BUILD ) -if (DARWIN OR WINDOWS) - get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) - add_custom_command(TARGET llfbconnecttest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_WEBKIT_PLUGIN} ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_WEBKIT_PLUGIN} - ) +get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) +add_custom_command(TARGET llfbconnecttest POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_WEBKIT_PLUGIN} ${PLUGINS_DESTINATION_DIR} + DEPENDS ${BUILT_WEBKIT_PLUGIN} +) - # copy over bookmarks file if llfbconnecttest gets built - get_target_property(BUILT_LLFBCONNECTTEST llfbconnecttest LOCATION) - add_custom_command(TARGET llfbconnecttest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${CMAKE_CURRENT_BINARY_DIR}/ - DEPENDS ${BUILT_LLFBCONNECTTEST} - ) - # also copy it to the same place as SLPlugin, which is what the mac wants... - add_custom_command(TARGET llfbconnecttest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_LLFBCONNECTTEST} - ) -endif (DARWIN OR WINDOWS) +# copy over bookmarks file if llfbconnecttest gets built +get_target_property(BUILT_LLFBCONNECTTEST llfbconnecttest LOCATION) +add_custom_command(TARGET llfbconnecttest POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${CMAKE_CURRENT_BINARY_DIR}/ + DEPENDS ${BUILT_LLFBCONNECTTEST} +) -if (DARWIN) - add_custom_command(TARGET llfbconnecttest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${PLUGINS_DESTINATION_DIR} - DEPENDS ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib - ) -endif (DARWIN) +# also copy it to the same place as SLPlugin, which is what the mac wants... +add_custom_command(TARGET llfbconnecttest POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${PLUGINS_DESTINATION_DIR} + DEPENDS ${BUILT_LLFBCONNECTTEST} +) -if(WINDOWS) +if (WINDOWS) #******************** # Plugin test library deploy # @@ -301,4 +293,83 @@ if(WINDOWS) endif(WINDOWS) +if (DARWIN) + set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") + set(fbconnecttest_release_files + libexception_handler.dylib + libaprutil-1.0.dylib + libapr-1.0.dylib + libexpat.1.5.2.dylib + libz.1.dylib + libssl.1.0.0.dylib + libcrypto.1.0.0.dylib + libQtCore.4.7.1.dylib + libQtCore.4.dylib + libQtGui.4.7.1.dylib + libQtGui.4.dylib + libQtNetwork.4.7.1.dylib + libQtNetwork.4.dylib + libQtOpenGL.4.7.1.dylib + libQtOpenGL.4.dylib + libQtWebKit.4.7.1.dylib + libQtWebKit.4.dylib + libQtSvg.4.7.1.dylib + libQtSvg.4.dylib + libQtXml.4.7.1.dylib + libQtXml.4.dylib + ) + copy_if_different( + ${fbconnecttest_release_src_dir} + "${PLUGINS_DESTINATION_DIR}" + out_targets + ${fbconnecttest_release_files} + ) + set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) + + # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt image format plugins) + set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/imageformats") + set(fbconnecttest_release_files + libqgif.dylib + libqico.dylib + libqjpeg.dylib + libqmng.dylib + libqsvg.dylib + libqtiff.dylib + ) + copy_if_different( + ${fbconnecttest_release_src_dir} + "${PLUGINS_DESTINATION_DIR}/imageformats" + out_targets + ${fbconnecttest_release_files} + ) + set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) + + # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt codec plugins) + set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/codecs") + set(fbconnecttest_release_files + libqcncodecs.dylib + libqjpcodecs.dylib + libqkrcodecs.dylib + libqtwcodecs.dylib + ) + copy_if_different( + ${fbconnecttest_release_src_dir} + "${PLUGINS_DESTINATION_DIR}/codecs" + out_targets + ${fbconnecttest_release_files} + ) + set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) + + add_custom_target(copy_fbconnecttest_libs ALL + DEPENDS + ${fbconnect_test_targets} + ) + + add_dependencies(llfbconnecttest copy_fbconnecttest_libs) +endif (DARWIN) + +if (LINUX) + +endif (LINUX) + ll_deploy_sharedlibs_command(llfbconnecttest) diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt index 8179be66f51..60ac806740d 100755 --- a/indra/test_apps/llplugintest/CMakeLists.txt +++ b/indra/test_apps/llplugintest/CMakeLists.txt @@ -346,44 +346,44 @@ add_custom_command(TARGET llmediaplugintest POST_BUILD DEPENDS ${BUILT_LLCOMMON} ) +get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) +add_custom_command(TARGET llmediaplugintest POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_WEBKIT_PLUGIN} ${PLUGINS_DESTINATION_DIR} + DEPENDS ${BUILT_WEBKIT_PLUGIN} +) if (DARWIN OR WINDOWS) - get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) - add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_WEBKIT_PLUGIN} ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_WEBKIT_PLUGIN} - ) - get_target_property(BUILT_QUICKTIME_PLUGIN media_plugin_quicktime LOCATION) add_custom_command(TARGET llmediaplugintest POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_QUICKTIME_PLUGIN} ${PLUGINS_DESTINATION_DIR} DEPENDS ${BUILT_QUICKTIME_PLUGIN} ) +endif (DARWIN OR WINDOWS) - get_target_property(BUILT_EXAMPLE_PLUGIN media_plugin_example LOCATION) - add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_EXAMPLE_PLUGIN} ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_EXAMPLE_PLUGIN} - ) +get_target_property(BUILT_EXAMPLE_PLUGIN media_plugin_example LOCATION) +add_custom_command(TARGET llmediaplugintest POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_EXAMPLE_PLUGIN} ${PLUGINS_DESTINATION_DIR} + DEPENDS ${BUILT_EXAMPLE_PLUGIN} +) - # copy over bookmarks file if llmediaplugintest gets built - get_target_property(BUILT_LLMEDIAPLUGINTEST llmediaplugintest LOCATION) - add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${CMAKE_CURRENT_BINARY_DIR}/ - DEPENDS ${BUILT_LLMEDIAPLUGINTEST} - ) - # also copy it to the same place as SLPlugin, which is what the mac wants... - add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${PLUGINS_DESTINATION_DIR} - DEPENDS ${BUILT_LLMEDIAPLUGINTEST} - ) -endif (DARWIN OR WINDOWS) +# copy over bookmarks file if llmediaplugintest gets built +get_target_property(BUILT_LLMEDIAPLUGINTEST llmediaplugintest LOCATION) +add_custom_command(TARGET llmediaplugintest POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${CMAKE_CURRENT_BINARY_DIR}/ + DEPENDS ${BUILT_LLMEDIAPLUGINTEST} +) + +# also copy it to the same place as SLPlugin, which is what the mac wants... +add_custom_command(TARGET llmediaplugintest POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${PLUGINS_DESTINATION_DIR} + DEPENDS ${BUILT_LLMEDIAPLUGINTEST} +) if (DARWIN) - add_custom_command(TARGET llmediaplugintest POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${PLUGINS_DESTINATION_DIR} - DEPENDS ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib - ) +# add_custom_command(TARGET llmediaplugintest POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${PLUGINS_DESTINATION_DIR} +# DEPENDS ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib +# ) endif (DARWIN) if(WINDOWS) @@ -538,4 +538,79 @@ if(WINDOWS) endif(WINDOWS) +if (DARWIN) + set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") + set(plugintest_release_files + libexception_handler.dylib + libaprutil-1.0.dylib + libapr-1.0.dylib + libexpat.1.5.2.dylib + libz.1.dylib + libssl.1.0.0.dylib + libcrypto.1.0.0.dylib + libQtCore.4.7.1.dylib + libQtCore.4.dylib + libQtGui.4.7.1.dylib + libQtGui.4.dylib + libQtNetwork.4.7.1.dylib + libQtNetwork.4.dylib + libQtOpenGL.4.7.1.dylib + libQtOpenGL.4.dylib + libQtWebKit.4.7.1.dylib + libQtWebKit.4.dylib + libQtSvg.4.7.1.dylib + libQtSvg.4.dylib + libQtXml.4.7.1.dylib + libQtXml.4.dylib + ) + copy_if_different( + ${plugintest_release_src_dir} + "${PLUGINS_DESTINATION_DIR}" + out_targets + ${plugintest_release_files} + ) + set(plugin_test_targets ${plugin_test_targets} ${out_targets}) + + # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt image format plugins) + set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/imageformats") + set(plugintest_release_files + libqgif.dylib + libqico.dylib + libqjpeg.dylib + libqmng.dylib + libqsvg.dylib + libqtiff.dylib + ) + copy_if_different( + ${plugintest_release_src_dir} + "${PLUGINS_DESTINATION_DIR}/imageformats" + out_targets + ${plugintest_release_files} + ) + set(plugin_test_targets ${plugin_test_targets} ${out_targets}) + + # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt codec plugins) + set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/codecs") + set(plugintest_release_files + libqcncodecs.dylib + libqjpcodecs.dylib + libqkrcodecs.dylib + libqtwcodecs.dylib + ) + copy_if_different( + ${plugintest_release_src_dir} + "${PLUGINS_DESTINATION_DIR}/codecs" + out_targets + ${plugintest_release_files} + ) + set(plugin_test_targets ${plugin_test_targets} ${out_targets}) + + add_custom_target(copy_plugintest_libs ALL + DEPENDS + ${plugin_test_targets} + ) + + add_dependencies(llmediaplugintest copy_plugintest_libs) +endif (DARWIN) + ll_deploy_sharedlibs_command(llmediaplugintest) -- GitLab