Skip to content
Snippets Groups Projects
Commit 22b1223e authored by Brad Payne (Vir Linden)'s avatar Brad Payne (Vir Linden)
Browse files

MAINT-515 FIX, CHOP-100 FIX - technically we are avoiding these issues rather...

MAINT-515 FIX, CHOP-100 FIX - technically we are avoiding these issues rather than fixing them; changing llcommon to be statically linked avoids the symbol issues with llcommon.dll
parent 62379fd7
No related branches found
No related tags found
No related merge requests found
...@@ -201,6 +201,15 @@ FUNCTION(LL_ADD_INTEGRATION_TEST ...@@ -201,6 +201,15 @@ FUNCTION(LL_ADD_INTEGRATION_TEST
endif(TEST_DEBUG) endif(TEST_DEBUG)
ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files}) ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files})
SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}") SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}")
if (WINDOWS)
set_target_properties(INTEGRATION_TEST_${testname}
PROPERTIES
LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:__tcmalloc"
LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"
LINK_FLAGS_RELEASE ""
)
endif(WINDOWS)
if(STANDALONE) if(STANDALONE)
SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES COMPILE_FLAGS -I"${TUT_INCLUDE_DIR}") SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES COMPILE_FLAGS -I"${TUT_INCLUDE_DIR}")
endif(STANDALONE) endif(STANDALONE)
......
...@@ -24,7 +24,7 @@ endif (LINUX) ...@@ -24,7 +24,7 @@ endif (LINUX)
add_definitions(${TCMALLOC_FLAG}) add_definitions(${TCMALLOC_FLAG})
set(LLCOMMON_LINK_SHARED ON CACHE BOOL "Build the llcommon target as a shared library.") set(LLCOMMON_LINK_SHARED OFF CACHE BOOL "Build the llcommon target as a shared library.")
if(LLCOMMON_LINK_SHARED) if(LLCOMMON_LINK_SHARED)
add_definitions(-DLL_COMMON_LINK_SHARED=1) add_definitions(-DLL_COMMON_LINK_SHARED=1)
endif(LLCOMMON_LINK_SHARED) endif(LLCOMMON_LINK_SHARED)
...@@ -40,7 +40,6 @@ ...@@ -40,7 +40,6 @@
S32 LLPerfBlock::sStatsFlags = LLPerfBlock::LLSTATS_NO_OPTIONAL_STATS; // Control what is being recorded S32 LLPerfBlock::sStatsFlags = LLPerfBlock::LLSTATS_NO_OPTIONAL_STATS; // Control what is being recorded
LLPerfBlock::stat_map_t LLPerfBlock::sStatMap; // Map full path string to LLStatTime objects, tracks all active objects LLPerfBlock::stat_map_t LLPerfBlock::sStatMap; // Map full path string to LLStatTime objects, tracks all active objects
std::string LLPerfBlock::sCurrentStatPath = ""; // Something like "/total_time/physics/physics step" std::string LLPerfBlock::sCurrentStatPath = ""; // Something like "/total_time/physics/physics step"
LLStat::stat_map_t LLStat::sStatList;
//------------------------------------------------------------------------ //------------------------------------------------------------------------
// Live config file to trigger stats logging // Live config file to trigger stats logging
...@@ -771,13 +770,19 @@ void LLStat::init() ...@@ -771,13 +770,19 @@ void LLStat::init()
if (!mName.empty()) if (!mName.empty())
{ {
stat_map_t::iterator iter = sStatList.find(mName); stat_map_t::iterator iter = getStatList().find(mName);
if (iter != sStatList.end()) if (iter != getStatList().end())
llwarns << "LLStat with duplicate name: " << mName << llendl; llwarns << "LLStat with duplicate name: " << mName << llendl;
sStatList.insert(std::make_pair(mName, this)); getStatList().insert(std::make_pair(mName, this));
} }
} }
LLStat::stat_map_t& LLStat::getStatList()
{
static LLStat::stat_map_t stat_list;
return stat_list;
}
LLStat::LLStat(const U32 num_bins, const BOOL use_frame_timer) LLStat::LLStat(const U32 num_bins, const BOOL use_frame_timer)
: mUseFrameTimer(use_frame_timer), : mUseFrameTimer(use_frame_timer),
mNumBins(num_bins) mNumBins(num_bins)
...@@ -803,10 +808,10 @@ LLStat::~LLStat() ...@@ -803,10 +808,10 @@ LLStat::~LLStat()
if (!mName.empty()) if (!mName.empty())
{ {
// handle multiple entries with the same name // handle multiple entries with the same name
stat_map_t::iterator iter = sStatList.find(mName); stat_map_t::iterator iter = getStatList().find(mName);
while (iter != sStatList.end() && iter->second != this) while (iter != getStatList().end() && iter->second != this)
++iter; ++iter;
sStatList.erase(iter); getStatList().erase(iter);
} }
} }
......
...@@ -263,9 +263,9 @@ class LL_COMMON_API LLStat ...@@ -263,9 +263,9 @@ class LL_COMMON_API LLStat
{ {
private: private:
typedef std::multimap<std::string, LLStat*> stat_map_t; typedef std::multimap<std::string, LLStat*> stat_map_t;
static stat_map_t sStatList;
void init(); void init();
static stat_map_t& getStatList();
public: public:
LLStat(U32 num_bins = 32, BOOL use_frame_timer = FALSE); LLStat(U32 num_bins = 32, BOOL use_frame_timer = FALSE);
...@@ -342,8 +342,8 @@ class LL_COMMON_API LLStat ...@@ -342,8 +342,8 @@ class LL_COMMON_API LLStat
static LLStat* getStat(const std::string& name) static LLStat* getStat(const std::string& name)
{ {
// return the first stat that matches 'name' // return the first stat that matches 'name'
stat_map_t::iterator iter = sStatList.find(name); stat_map_t::iterator iter = getStatList().find(name);
if (iter != sStatList.end()) if (iter != getStatList().end())
return iter->second; return iter->second;
else else
return NULL; return NULL;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment