summaryrefslogtreecommitdiff
path: root/Source/cmLocalVisualStudioGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2011-02-10 16:17:44 -0500
committerBrad King <brad.king@kitware.com>2011-02-10 16:17:44 -0500
commit2516c05c2c73e768a7ec082a6fed8b2168489f6a (patch)
tree5c61d2964d322ed9fcac25d261452998f331d636 /Source/cmLocalVisualStudioGenerator.cxx
parente53b7cbadf1b7faf353e91b6041a697a90d9584d (diff)
downloadcmake-2516c05c2c73e768a7ec082a6fed8b2168489f6a.tar.gz
VS: Create a Fortran DLL's import library directory
The Intel Fortran plugin forgets to create the output directory into which it will write a DLL's import library. Utilize the fix added by commit f4b3bdc6 (Create an exe's implib output dir for VS, 2009-06-15) and generalized by commit 764ac980 (Generalize exe implib dir creation for VS, 2009-06-16). Create a pre-link rule to make the directory.
Diffstat (limited to 'Source/cmLocalVisualStudioGenerator.cxx')
-rw-r--r--Source/cmLocalVisualStudioGenerator.cxx8
1 files changed, 6 insertions, 2 deletions
diff --git a/Source/cmLocalVisualStudioGenerator.cxx b/Source/cmLocalVisualStudioGenerator.cxx
index 9164beb1c7..39f996200e 100644
--- a/Source/cmLocalVisualStudioGenerator.cxx
+++ b/Source/cmLocalVisualStudioGenerator.cxx
@@ -32,13 +32,17 @@ cmLocalVisualStudioGenerator::~cmLocalVisualStudioGenerator()
//----------------------------------------------------------------------------
cmsys::auto_ptr<cmCustomCommand>
cmLocalVisualStudioGenerator::MaybeCreateImplibDir(cmTarget& target,
- const char* config)
+ const char* config,
+ bool isFortran)
{
cmsys::auto_ptr<cmCustomCommand> pcc;
// If an executable exports symbols then VS wants to create an
// import library but forgets to create the output directory.
- if(target.GetType() != cmTarget::EXECUTABLE) { return pcc; }
+ // The Intel Fortran plugin always forgets to the directory.
+ if(target.GetType() != cmTarget::EXECUTABLE &&
+ !(isFortran && target.GetType() == cmTarget::SHARED_LIBRARY))
+ { return pcc; }
std::string outDir = target.GetDirectory(config, false);
std::string impDir = target.GetDirectory(config, true);
if(impDir == outDir) { return pcc; }