diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2006-04-11 21:11:34 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2006-04-11 21:11:34 (GMT) |
commit | ed4974da55c3d8b2315c1b729fceee6e834673f2 (patch) | |
tree | b76aeb9f7f1b56ff935e96cd94e599b3801448ea /Source | |
parent | 08289893b8590be41d0541af7644e737035aee54 (diff) | |
download | CMake-ed4974da55c3d8b2315c1b729fceee6e834673f2.zip CMake-ed4974da55c3d8b2315c1b729fceee6e834673f2.tar.gz CMake-ed4974da55c3d8b2315c1b729fceee6e834673f2.tar.bz2 |
ENH: enable test for java with IDE builds
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CMakeLists.txt | 6 | ||||
-rw-r--r-- | Source/cmLocalGenerator.cxx | 41 |
2 files changed, 43 insertions, 4 deletions
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 3f56cec..9e2d6c1 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -1014,6 +1014,8 @@ IF(BUILD_TESTING) --test-command ${CMake_BINARY_DIR}/Tests/BootstrapTest/Bootstrap.cmk/cmake) ENDIF(UNIX AND CMAKE_RUN_LONG_TESTS AND NOT CMAKE_SKIP_BOOTSTRAP_TEST) + # fortran does not work for IDE builds because + # CMAKE_STANDARD_LIBRARIES needs to be per language IF(CMAKE_TEST_GENERATOR MATCHES "Makefiles") # see if we can find a fortran compiler on the machine # if so, add the fortran test and see if it works. @@ -1033,7 +1035,7 @@ IF(BUILD_TESTING) --build-two-config --test-command testf) ENDIF(CMAKE_Fortran_COMPILER_FULLPATH) - + ENDIF(CMAKE_TEST_GENERATOR MATCHES "Makefiles") INCLUDE(FindJava) IF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW) GET_FILENAME_COMPONENT(JNIPATH ${JAVA_COMPILE} PATH) @@ -1056,7 +1058,7 @@ IF(BUILD_TESTING) ENDIF("${JNI_FILE}" MATCHES "JDK1_2") ENDIF(JNI_H) ENDIF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW) - ENDIF(CMAKE_TEST_GENERATOR MATCHES "Makefiles") + IF (CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE OR WXWINDOWS_INCLUDE_DIR) # Will be set if the wxwindows gui is on diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index e802066..36fed56 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -565,7 +565,6 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang, cmTarget& target) std::string flags; // should be set std::string linkFlags; // should be set this->GetTargetFlags(linkLibs, flags, linkFlags, target); - std::string rule = this->Makefile->GetRequiredDefinition(createRule.c_str()); cmLocalGenerator::RuleVariables vars; vars.Language = llang; vars.Objects = objs.c_str(); @@ -573,7 +572,45 @@ void cmLocalGenerator::AddBuildTargetRule(const char* llang, cmTarget& target) vars.LinkLibraries = linkLibs.c_str(); vars.Flags = flags.c_str(); vars.LinkFlags = linkFlags.c_str(); - this->ExpandRuleVariables(rule, vars); + + cmCustomCommandLines commandLines; + std::vector<std::string> rules; + rules.push_back(this->Makefile->GetRequiredDefinition(createRule.c_str())); + std::vector<std::string> commands; + cmSystemTools::ExpandList(rules, commands); + for(std::vector<std::string>::iterator i = commands.begin(); + i != commands.end(); ++i) + { + // Expand the full command line string. + this->ExpandRuleVariables(*i, vars); + + // Parse the string to get the custom command line. + cmCustomCommandLine commandLine; + std::vector<cmStdString> cmd = cmSystemTools::ParseArguments(i->c_str()); + for(std::vector<cmStdString>::iterator a = cmd.begin(); + a != cmd.end(); ++a) + { + commandLine.push_back(*a); + } + + // Store this command line. + commandLines.push_back(commandLine); + } + std::string targetFullPath = target.GetFullPath(); + // Generate a meaningful comment for the command. + std::string comment = "Linking "; + comment += llang; + comment += " target "; + comment += this->Convert(targetFullPath.c_str(), START_OUTPUT); + this->Makefile->AddCustomCommandToOutput( + targetFullPath.c_str(), + objVector, + 0, + commandLines, + comment.c_str(), + this->Makefile->GetStartOutputDirectory() + ); + target.GetSourceFiles().push_back(this->Makefile->GetSource(targetFullPath.c_str())); } |