diff options
Diffstat (limited to 'Source/cmLoadCommandCommand.cxx')
-rw-r--r-- | Source/cmLoadCommandCommand.cxx | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/Source/cmLoadCommandCommand.cxx b/Source/cmLoadCommandCommand.cxx index 94a0437..cc78ce2 100644 --- a/Source/cmLoadCommandCommand.cxx +++ b/Source/cmLoadCommandCommand.cxx @@ -186,7 +186,7 @@ bool cmLoadCommandCommand::InitialPass(std::vector<std::string> const& argsIn) this->SetError("Attempt to load command failed."); return false; } - + // try loading the shared library / dll cmLibHandle lib = cmDynamicLoader::OpenLibrary(fullPath.c_str()); if(lib) @@ -196,9 +196,21 @@ bool cmLoadCommandCommand::InitialPass(std::vector<std::string> const& argsIn) CM_NAME_FUNCTION nameFunction = (CM_NAME_FUNCTION) cmDynamicLoader::GetSymbolAddress(lib, "cmGetName"); + if ( !nameFunction ) + { + nameFunction = + (CM_NAME_FUNCTION)( + cmDynamicLoader::GetSymbolAddress(lib, "_cmGetName")); + } CM_INIT_FUNCTION initFunction = (CM_INIT_FUNCTION) cmDynamicLoader::GetSymbolAddress(lib, "cmInitializeCommand"); + if ( !initFunction ) + { + initFunction = + (CM_INIT_FUNCTION)( + cmDynamicLoader::GetSymbolAddress(lib, "_cmInitializeCommand")); + } // if the symbol is found call it to set the name on the // function blocker if(nameFunction) @@ -208,13 +220,15 @@ bool cmLoadCommandCommand::InitialPass(std::vector<std::string> const& argsIn) f->m_commandName = (*nameFunction)(); if (!initFunction) { - this->SetError("Attempt to load command failed. No init function found."); + this->SetError("Attempt to load command failed. " + "No init function found."); return false; } (*initFunction)(&f->info); m_Makefile->AddCommand(f); + return true; } } - return true; + return false; } |