diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake index aa77bbac65d1a9f4470aa15d65f9fb4981c3f8b3..013cc5109f34c958aab39147ac1b4ee79ef9b587 100644 --- a/indra/cmake/LLAddBuildTest.cmake +++ b/indra/cmake/LLAddBuildTest.cmake @@ -123,7 +123,7 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources) IF(WINDOWS) set(LD_LIBRARY_PATH ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}) ELSE(WINDOWS) - set(LD_LIBRARY_PATH ${ARCH_PREBUILT_DIRS}:/usr/lib) + set(LD_LIBRARY_PATH ${ARCH_PREBUILT_DIRS}:${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}:/usr/lib) ENDIF(WINDOWS) IF(LL_TEST_VERBOSE) diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake index 578edf998947a5c54b48c92a2a2ca1b46220a179..30b3cc9994b012808f70ae51abbe025cb9a57338 100644 --- a/indra/cmake/Linking.cmake +++ b/indra/cmake/Linking.cmake @@ -14,6 +14,7 @@ if (NOT STANDALONE) endif (VIEWER) set(ARCH_PREBUILT_DIRS_RELEASE ${ARCH_PREBUILT_DIRS}) set(ARCH_PREBUILT_DIRS_DEBUG ${ARCH_PREBUILT_DIRS}) + set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs CACHE FILEPATH "Location of staged .sos") elseif (DARWIN) set(ARCH_PREBUILT_DIRS_RELEASE ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_release) set(ARCH_PREBUILT_DIRS ${ARCH_PREBUILT_DIRS_RELEASE}) diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index c46e2583f11e5912ddc8fac4b7a3b254d893e22f..2ecd4ee5d48757f7a181b28f6da98c8fe38bf3df 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -245,6 +245,20 @@ if(LLCOMMON_LINK_SHARED) # 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) + + 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} + ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/${LLCOMMON_FILE} + COMMENT "Copying llcommon to the staging folder." + ) + else(LLCOMMON_LINK_SHARED) add_library (llcommon ${llcommon_SOURCE_FILES}) endif(LLCOMMON_LINK_SHARED) @@ -263,6 +277,7 @@ target_link_libraries( add_dependencies(llcommon stage_third_party_libs) + include(LLAddBuildTest) SET(llcommon_TEST_SOURCE_FILES # WARNING: Please don't write tests against LLCommon or LLMath until this issue is resolved: https://jira.lindenlab.com/jira/browse/DEV-29456 diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h index cc60ba0b80984a6776199f0a7dcb39dabe05fd7f..35f6f7028dd877f9f6ebfe48aec710b3ddcdd3a2 100644 --- a/indra/llcommon/llapp.h +++ b/indra/llcommon/llapp.h @@ -61,7 +61,7 @@ class LLChildInfo }; #endif -class LLApp +class LL_COMMON_API LLApp { friend class LLErrorThread; public: diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h index f968eabc181786096eb6b3baa290de11ae7ec08c..0898aeec470e26e02717b8dddf03352f6e8c2373 100644 --- a/indra/llcommon/llapr.h +++ b/indra/llcommon/llapr.h @@ -167,8 +167,8 @@ template <typename Type> class LLAtomic32 apr_uint32_t mData; }; -typedef LL_COMMON_API LLAtomic32<U32> LLAtomicU32; -typedef LL_COMMON_API LLAtomic32<S32> LLAtomicS32; +typedef LLAtomic32<U32> LLAtomicU32; +typedef LLAtomic32<S32> LLAtomicS32; // File IO convenience functions. // Returns NULL if the file fails to openm sets *sizep to file size of not NULL diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h index 6ccdf2174b0e25d27e6697bdd7608070c551f0bc..4f68fb9f769e571f6f30a336422990dd90a19641 100644 --- a/indra/llcommon/llerror.h +++ b/indra/llcommon/llerror.h @@ -129,7 +129,7 @@ namespace LLError They are not intended for general use. */ - class LL_COMMON_API CallSite; + class CallSite; class LL_COMMON_API Log { diff --git a/indra/llcommon/llevent.h b/indra/llcommon/llevent.h index 192cb84fea3e648abd533f507d3b83da165f5c1f..0ea7cf4ae83a1a3f07c3be770a8cbf2fda282bb3 100644 --- a/indra/llcommon/llevent.h +++ b/indra/llcommon/llevent.h @@ -41,10 +41,10 @@ namespace LLOldEvents { -class LL_COMMON_API LLEventListener; -class LL_COMMON_API LLEvent; -class LL_COMMON_API LLEventDispatcher; -class LL_COMMON_API LLObservable; +class LLEventListener; +class LLEvent; +class LLEventDispatcher; +class LLObservable; // Abstract event. All events derive from LLEvent class LL_COMMON_API LLEvent : public LLThreadSafeRefCount @@ -104,7 +104,7 @@ class LL_COMMON_API LLSimpleListener : public LLEventListener std::vector<LLEventDispatcher *> mDispatchers; }; -class LL_COMMON_API LLObservable; // defined below +class LLObservable; // defined below // A structure which stores a Listener and its metadata struct LLListenerEntry diff --git a/indra/llcommon/llevents.h b/indra/llcommon/llevents.h index 8ebffc008fc75ad50496ef6014dadb98231dd317..6df418fe5a53d6ef66d3445dc5df7553b4e1780f 100644 --- a/indra/llcommon/llevents.h +++ b/indra/llcommon/llevents.h @@ -172,7 +172,7 @@ class LL_COMMON_API LLListenerOrPumpName /***************************************************************************** * LLEventPumps *****************************************************************************/ -class LL_COMMON_API LLEventPump; +class LLEventPump; /** * LLEventPumps is a Singleton manager through which one typically accesses diff --git a/indra/llcommon/lllog.h b/indra/llcommon/lllog.h index b0ec570c01839466045fcdafb7f7fa6941ce09ad..4b6777bb9c7fa2fea2a175a64b0b5e3dbac49af6 100644 --- a/indra/llcommon/lllog.h +++ b/indra/llcommon/lllog.h @@ -39,7 +39,7 @@ class LLLogImpl; class LLApp; -class LL_COMMON_API LLSD; +class LLSD; class LL_COMMON_API LLLog { diff --git a/indra/llcommon/llmetrics.h b/indra/llcommon/llmetrics.h index 11e10a5a2e8c17ca38a4627d301f2845f7db0e0d..f6f49eb4562b2f70ced98d14ffd0f9703f86aa34 100644 --- a/indra/llcommon/llmetrics.h +++ b/indra/llcommon/llmetrics.h @@ -36,7 +36,7 @@ #define LL_LLMETRICS_H class LLMetricsImpl; -class LL_COMMON_API LLSD; +class LLSD; class LL_COMMON_API LLMetrics { diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h index ed6ca9a25fb433306d205b39cd2a7d5dbf49521f..671e85b16f02cb32f6941dfc138fc80f5175da01 100644 --- a/indra/llcommon/llpreprocessor.h +++ b/indra/llcommon/llpreprocessor.h @@ -138,12 +138,14 @@ #if LL_WINDOWS #define LL_DLLEXPORT __declspec(dllexport) #define LL_DLLIMPORT __declspec(dllimport) +#elif LL_LINUX +#define LL_DLLEXPORT __attribute__ ((visibility("default"))) +#define LL_DLLIMPORT #else #define LL_DLLEXPORT #define LL_DLLIMPORT #endif // LL_WINDOWS - #if LL_COMMON_LINK_SHARED # if LL_COMMON_BUILD # define LL_COMMON_API LL_DLLEXPORT diff --git a/indra/llcommon/llrun.h b/indra/llcommon/llrun.h index afe65fd734ebadd375bcdf6c548ed66134232c7b..1fc9925df9ca15c447c9d03bb29b31061d559b00 100644 --- a/indra/llcommon/llrun.h +++ b/indra/llcommon/llrun.h @@ -38,7 +38,7 @@ #include <vector> #include <boost/shared_ptr.hpp> -class LL_COMMON_API LLRunnable; +class LLRunnable; /** * @class LLRunner diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h index 8cb459d81b0519b08098017dac5146d69749ef9f..6a6c396687000edcfc7601ff2ff2e7cce7aeb287 100644 --- a/indra/llcommon/llsdutil.h +++ b/indra/llcommon/llsdutil.h @@ -35,7 +35,7 @@ #ifndef LL_LLSDUTIL_H #define LL_LLSDUTIL_H -class LL_COMMON_API LLSD; +class LLSD; // U32 LL_COMMON_API LLSD ll_sd_from_U32(const U32); diff --git a/indra/llcommon/llstat.h b/indra/llcommon/llstat.h index 5d77215bebbdd2006a6301e36dbff96847043c1d..64ea8e5b40c8e2ee7febd5a682236ac7b1c5bc36 100644 --- a/indra/llcommon/llstat.h +++ b/indra/llcommon/llstat.h @@ -40,7 +40,7 @@ #include "llframetimer.h" #include "llfile.h" -class LL_COMMON_API LLSD; +class LLSD; // Set this if longer stats are needed #define ENABLE_LONG_TIME_STATS 0 diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index eb36dafee37a2ce44a42b2896c6155052bea10e0..24a8d49a54c2909f0900851ebc5c275e693cca5d 100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h @@ -345,9 +345,9 @@ class LLStringUtilBase template<class T> std::basic_string<T> LLStringUtilBase<T>::null; template<class T> std::string LLStringUtilBase<T>::sLocale; -typedef LL_COMMON_API LLStringUtilBase<char> LLStringUtil; -typedef LL_COMMON_API LLStringUtilBase<llwchar> LLWStringUtil; -typedef LL_COMMON_API std::basic_string<llwchar> LLWString; +typedef LLStringUtilBase<char> LLStringUtil; +typedef LLStringUtilBase<llwchar> LLWStringUtil; +typedef std::basic_string<llwchar> LLWString; //@ Use this where we want to disallow input in the form of "foo" // This is used to catch places where english text is embedded in the code @@ -419,7 +419,7 @@ LL_COMMON_API std::string rawstr_to_utf8(const std::string& raw); // // We should never use UTF16 except when communicating with Win32! // -typedef LL_COMMON_API std::basic_string<U16> llutf16string; +typedef std::basic_string<U16> llutf16string; LL_COMMON_API LLWString utf16str_to_wstring(const llutf16string &utf16str, S32 len); LL_COMMON_API LLWString utf16str_to_wstring(const llutf16string &utf16str); diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h index e6bf95aaa962e5155d56042251cda60319668aa6..c3d7650bd9b2d101ddb117c5b1fa679665f17f75 100644 --- a/indra/llcommon/llthread.h +++ b/indra/llcommon/llthread.h @@ -38,9 +38,9 @@ #include "apr_thread_cond.h" -class LL_COMMON_API LLThread; -class LL_COMMON_API LLMutex; -class LL_COMMON_API LLCondition; +class LLThread; +class LLMutex; +class LLCondition; class LL_COMMON_API LLThread { diff --git a/indra/llcommon/lluri.h b/indra/llcommon/lluri.h index 33fd88b4979176a58e3068a31ee326347509aa19..eb5c5203eb6f7c7b55a9e4cf5e669b4f85db9f0d 100644 --- a/indra/llcommon/lluri.h +++ b/indra/llcommon/lluri.h @@ -37,9 +37,9 @@ #include <string> -class LL_COMMON_API LLSD; -class LL_COMMON_API LLUUID; -class LL_COMMON_API LLApp; +class LLSD; +class LLUUID; +class LLApp; /** * diff --git a/indra/llcommon/metaclass.h b/indra/llcommon/metaclass.h index 8b93e0d6d59e8a112b7a06b3da3451b45482ce04..f38bcd2d57c8058c49668552113b29162c97f889 100644 --- a/indra/llcommon/metaclass.h +++ b/indra/llcommon/metaclass.h @@ -40,9 +40,9 @@ #include "stdtypes.h" -class LL_COMMON_API LLReflective; -class LL_COMMON_API LLMetaProperty; -class LL_COMMON_API LLMetaMethod; +class LLReflective; +class LLMetaProperty; +class LLMetaMethod; class LL_COMMON_API LLMetaClass { public: diff --git a/indra/llcommon/metaproperty.h b/indra/llcommon/metaproperty.h index 96e1b314a4321094eb6ff4507045cf9e4edbc339..6c016c56ddce9ebb8dc803aa63067d7c969893e6 100644 --- a/indra/llcommon/metaproperty.h +++ b/indra/llcommon/metaproperty.h @@ -39,8 +39,8 @@ #include "llsd.h" #include "reflective.h" -class LL_COMMON_API LLMetaClass; -class LL_COMMON_API LLReflective; +class LLMetaClass; +class LLReflective; class LL_COMMON_API LLMetaProperty { public: diff --git a/indra/llcommon/reflective.h b/indra/llcommon/reflective.h index 541712538bed6687d16709e045f412196818a5da..a13537681d7259adbf27e6bc497569f5fcaea7a6 100644 --- a/indra/llcommon/reflective.h +++ b/indra/llcommon/reflective.h @@ -35,7 +35,7 @@ #ifndef LL_REFLECTIVE_H #define LL_REFLECTIVE_H -class LL_COMMON_API LLMetaClass; +class LLMetaClass; class LL_COMMON_API LLReflective { public: