summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmCoreTryCompile.cxx1
-rw-r--r--Source/cmGlobalGenerator.cxx4
-rw-r--r--Source/cmGlobalGenerator.h2
-rw-r--r--Source/cmMakefile.cxx2
-rw-r--r--Source/cmMakefile.h1
-rw-r--r--Tests/TryCompile/CMakeLists.txt5
-rw-r--r--Tests/TryCompile/Inner/CMakeLists.txt4
-rw-r--r--Tests/TryCompile/Inner/innerexe.c2
-rw-r--r--Tests/TryCompile/Inner/innerlib.c1
9 files changed, 16 insertions, 6 deletions
diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx
index c45a806..02abf31 100644
--- a/Source/cmCoreTryCompile.cxx
+++ b/Source/cmCoreTryCompile.cxx
@@ -297,6 +297,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv)
this->BinaryDirectory.c_str(),
projectName,
targetName,
+ this->SrcFileSignature,
&cmakeFlags,
&output);
if ( erroroc )
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index a798200..f4fa6f4 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -1026,7 +1026,7 @@ void cmGlobalGenerator::CheckLocalGenerators()
int cmGlobalGenerator::TryCompile(const char *srcdir, const char *bindir,
const char *projectName,
- const char *target,
+ const char *target, bool fast,
std::string *output, cmMakefile *mf)
{
// if this is not set, then this is a first time configure
@@ -1077,7 +1077,7 @@ int cmGlobalGenerator::TryCompile(const char *srcdir, const char *bindir,
const char* config = mf->GetDefinition("CMAKE_TRY_COMPILE_CONFIGURATION");
return this->Build(srcdir,bindir,projectName,
newTarget.c_str(),
- output,makeCommand.c_str(),config,false,true,
+ output,makeCommand.c_str(),config,false,fast,
this->TryCompileTimeout);
}
diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h
index 4b60778..c2e410f 100644
--- a/Source/cmGlobalGenerator.h
+++ b/Source/cmGlobalGenerator.h
@@ -91,7 +91,7 @@ public:
*/
virtual int TryCompile(const char *srcdir, const char *bindir,
const char *projectName, const char *targetName,
- std::string *output, cmMakefile* mf);
+ bool fast, std::string *output, cmMakefile* mf);
/**
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 648639c..5057ef4 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -2728,6 +2728,7 @@ void cmMakefile::ExpandSourceListArguments(
int cmMakefile::TryCompile(const char *srcdir, const char *bindir,
const char *projectName, const char *targetName,
+ bool fast,
const std::vector<std::string> *cmakeArgs,
std::string *output)
{
@@ -2808,6 +2809,7 @@ int cmMakefile::TryCompile(const char *srcdir, const char *bindir,
this->LocalGenerator->GetGlobalGenerator()->TryCompile(srcdir,bindir,
projectName,
targetName,
+ fast,
output,
this);
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index 5cd3587..7123eb5 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -121,6 +121,7 @@ public:
*/
int TryCompile(const char *srcdir, const char *bindir,
const char *projectName, const char *targetName,
+ bool fast,
const std::vector<std::string> *cmakeArgs,
std::string *output);
diff --git a/Tests/TryCompile/CMakeLists.txt b/Tests/TryCompile/CMakeLists.txt
index 7895d39..5925a87 100644
--- a/Tests/TryCompile/CMakeLists.txt
+++ b/Tests/TryCompile/CMakeLists.txt
@@ -110,8 +110,9 @@ MESSAGE("Testing try_compile project mode")
TRY_COMPILE(TEST_INNER
${TryCompile_BINARY_DIR}/CMakeFiles/Inner
${TryCompile_SOURCE_DIR}/Inner
- TryCompileInner)
-TEST_ASSERT(TEST_INNER "try_compile project mode failed")
+ TryCompileInner innerexe
+ OUTPUT_VARIABLE output)
+TEST_ASSERT(TEST_INNER "try_compile project mode failed:\n${output}")
ADD_EXECUTABLE(TryCompile pass.c)
diff --git a/Tests/TryCompile/Inner/CMakeLists.txt b/Tests/TryCompile/Inner/CMakeLists.txt
index 41b94ae..d62bcc4 100644
--- a/Tests/TryCompile/Inner/CMakeLists.txt
+++ b/Tests/TryCompile/Inner/CMakeLists.txt
@@ -10,4 +10,6 @@ if(NOT SHOULD_PASS)
message(FATAL_ERROR "Inner try-compile SHOULD_PASS failed!")
endif()
-add_executable(inner ../pass.c)
+add_library(innerlib innerlib.c)
+add_executable(innerexe innerexe.c)
+target_link_libraries(innerexe innerlib)
diff --git a/Tests/TryCompile/Inner/innerexe.c b/Tests/TryCompile/Inner/innerexe.c
new file mode 100644
index 0000000..9b121a1
--- /dev/null
+++ b/Tests/TryCompile/Inner/innerexe.c
@@ -0,0 +1,2 @@
+extern int innerlib(void);
+int main() { return innerlib(); }
diff --git a/Tests/TryCompile/Inner/innerlib.c b/Tests/TryCompile/Inner/innerlib.c
new file mode 100644
index 0000000..0ce1179
--- /dev/null
+++ b/Tests/TryCompile/Inner/innerlib.c
@@ -0,0 +1 @@
+int innerlib(void) { return 0; }