Merge topic 'ninja-fix-subdir-objlib-languages'

07fc7b75 Tests: Test using objects from a language enabled in a subdirectory (#15325)
fdbfcfdf Ninja: Generate rules only for languages compiled in a target (#15325)
This commit is contained in:
Brad King 2014-12-24 06:38:24 -05:00 committed by CMake Topic Stage
commit 661622f011
6 changed files with 25 additions and 2 deletions

View File

@ -110,13 +110,26 @@ void cmNinjaNormalTargetGenerator::WriteLanguagesRules()
<< "\n\n"; << "\n\n";
#endif #endif
// Write rules for languages compiled in this target.
std::set<std::string> languages; std::set<std::string> languages;
this->GetTarget()->GetLanguages(languages, std::vector<cmSourceFile*> sourceFiles;
this->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE")); this->GetTarget()->GetSourceFiles(sourceFiles,
this->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE"));
for(std::vector<cmSourceFile*>::const_iterator
i = sourceFiles.begin(); i != sourceFiles.end(); ++i)
{
const std::string& lang = (*i)->GetLanguage();
if(!lang.empty())
{
languages.insert(lang);
}
}
for(std::set<std::string>::const_iterator l = languages.begin(); for(std::set<std::string>::const_iterator l = languages.begin();
l != languages.end(); l != languages.end();
++l) ++l)
{
this->WriteLanguageRules(*l); this->WriteLanguageRules(*l);
}
} }
const char *cmNinjaNormalTargetGenerator::GetVisibleTypeName() const const char *cmNinjaNormalTargetGenerator::GetVisibleTypeName() const

View File

@ -251,6 +251,7 @@ if(BUILD_TESTING)
endif() endif()
ADD_TEST_MACRO(COnly COnly) ADD_TEST_MACRO(COnly COnly)
ADD_TEST_MACRO(CxxOnly CxxOnly) ADD_TEST_MACRO(CxxOnly CxxOnly)
ADD_TEST_MACRO(CxxSubdirC CxxSubdirC)
ADD_TEST_MACRO(IPO COnly/COnly) ADD_TEST_MACRO(IPO COnly/COnly)
ADD_TEST_MACRO(OutDir runtime/OutDir) ADD_TEST_MACRO(OutDir runtime/OutDir)
ADD_TEST_MACRO(ObjectLibrary UseCshared) ADD_TEST_MACRO(ObjectLibrary UseCshared)

View File

@ -0,0 +1,4 @@
cmake_minimum_required(VERSION 3.0)
project(CxxSubdirC CXX)
add_subdirectory(Cdir)
add_executable(CxxSubdirC main.cxx $<TARGET_OBJECTS:Cobj>)

View File

@ -0,0 +1,2 @@
enable_language(C)
add_library(Cobj OBJECT Cobj.c)

View File

@ -0,0 +1 @@
int Cobj(void) { return 0; }

View File

@ -0,0 +1,2 @@
extern "C" int Cobj(void);
int main() { return Cobj(); }