From 47e547fcba802af3145f06fa5b8aa9af2942d294 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 4 Aug 2009 13:51:50 -0400 Subject: DEV-34837: Allow Mac SL executable to find libllcommon.dylib in app bundle's Resources subdir without requiring user to explicitly set DYLD_LIBRARY_PATH. Engage the SHARED_LIB_STAGING_DIR mechanism for Mac as well as Windows and Linux so unit-test executables, too, can find libllcommon.dylib. Perform the POST_BUILD copy of libllcommon.dylib to SHARED_LIB_STAGING_DIR everywhere but Windows -- but make it conditional on SHARED_LIB_STAGING_DIR. --- indra/cmake/Linking.cmake | 1 + indra/llcommon/CMakeLists.txt | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) (limited to 'indra') diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake index 30b3cc9994..1f3553539f 100644 --- a/indra/cmake/Linking.cmake +++ b/indra/cmake/Linking.cmake @@ -19,6 +19,7 @@ if (NOT STANDALONE) set(ARCH_PREBUILT_DIRS_RELEASE ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_release) set(ARCH_PREBUILT_DIRS ${ARCH_PREBUILT_DIRS_RELEASE}) set(ARCH_PREBUILT_DIRS_DEBUG ${ARCH_PREBUILT_DIRS_RELEASE}) + set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs CACHE FILEPATH "Location of staged DLLs") endif (WINDOWS) endif (NOT STANDALONE) diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 3ac2f6f80d..410cd0f6b2 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -244,22 +244,28 @@ if(LLCOMMON_LINK_SHARED) # llcommon.dll get written to the DLL staging directory. # Also this directory is shared with RunBuildTest.cmake, y'know, for the tests. set_target_properties(llcommon PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${SHARED_LIB_STAGING_DIR}) - endif(SHARED_LIB_STAGING_DIR) - - if(LINUX) - get_target_property(LLCOMMON_PATH llcommon LOCATION) - get_filename_component(LLCOMMON_FILE ${LLCOMMON_PATH} NAME) - add_custom_command( + if(NOT WINDOWS) + get_target_property(LLCOMMON_PATH llcommon LOCATION) + get_filename_component(LLCOMMON_FILE ${LLCOMMON_PATH} NAME) + add_custom_command( TARGET llcommon POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different - ${LLCOMMON_FILE} + ${LLCOMMON_PATH} ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/${LLCOMMON_FILE} COMMENT "Copying llcommon to the staging folder." ) - endif(LINUX) + endif(NOT WINDOWS) + endif(SHARED_LIB_STAGING_DIR) + + if (DARWIN) + set_target_properties(llcommon PROPERTIES + BUILD_WITH_INSTALL_RPATH 1 + INSTALL_NAME_DIR "@executable_path/../Resources" + ) + endif(DARWIN) else(LLCOMMON_LINK_SHARED) add_library (llcommon ${llcommon_SOURCE_FILES}) -- cgit v1.2.3