From 46546809f5c7c5d0b96902f12f764eebf8cc1d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=BCmmel?= Date: Sun, 15 Jul 2012 15:05:34 +0200 Subject: Ninja: windres is also used for cross-compiling It makes no sense to set windres.exe as default, especially when we are on Linux or Unix. --- Source/cmGlobalNinjaGenerator.cxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 07cc75f..78208e3 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -475,9 +475,8 @@ void cmGlobalNinjaGenerator { UsingMinGW = true; std::string rc = cmSystemTools::FindProgram("windres"); - if(rc.empty()) - rc = "windres.exe";; - mf->AddDefinition("CMAKE_RC_COMPILER", rc.c_str()); + if(!rc.empty()) + mf->AddDefinition("CMAKE_RC_COMPILER", rc.c_str()); } } this->cmGlobalGenerator::EnableLanguage(language, mf, optional); -- cgit v0.12 From 0c89c10cfcd9bdd11531e3680216235f5b34ac8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=BCmmel?= Date: Sun, 15 Jul 2012 16:03:22 +0200 Subject: Ninja: search for windres with prefix --- Source/cmGlobalNinjaGenerator.cxx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 78208e3..3c97afc 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -474,9 +474,17 @@ void cmGlobalNinjaGenerator if(mf->IsOn("CMAKE_COMPILER_IS_MINGW")) { UsingMinGW = true; - std::string rc = cmSystemTools::FindProgram("windres"); - if(!rc.empty()) - mf->AddDefinition("CMAKE_RC_COMPILER", rc.c_str()); + if(!mf->GetDefinition("CMAKE_RC_COMPILER")) + { + std::string windres = "windres"; + std::string gcc = mf->GetRequiredDefinition("CMAKE_C_COMPILER"); + std::string::size_type prefix = gcc.rfind("gcc"); + if (prefix != std::string::npos) + windres.insert(0, gcc.substr(0, prefix)); + windres = cmSystemTools::FindProgram(windres.c_str()); + if(!windres.empty()) + mf->AddDefinition("CMAKE_RC_COMPILER", windres.c_str()); + } } } this->cmGlobalGenerator::EnableLanguage(language, mf, optional); -- cgit v0.12 From 78588e03435103fca17372278cbecf29c867eec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=BCmmel?= Date: Sun, 15 Jul 2012 18:48:31 +0200 Subject: Ninja: there could be null pointers --- Source/cmGlobalNinjaGenerator.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 3c97afc..ca3a270 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -474,10 +474,11 @@ void cmGlobalNinjaGenerator if(mf->IsOn("CMAKE_COMPILER_IS_MINGW")) { UsingMinGW = true; - if(!mf->GetDefinition("CMAKE_RC_COMPILER")) + if(!mf->GetDefinition("CMAKE_RC_COMPILER") + && mf->GetDefinition("CMAKE_C_COMPILER")) { std::string windres = "windres"; - std::string gcc = mf->GetRequiredDefinition("CMAKE_C_COMPILER"); + std::string gcc = mf->GetDefinition("CMAKE_C_COMPILER"); std::string::size_type prefix = gcc.rfind("gcc"); if (prefix != std::string::npos) windres.insert(0, gcc.substr(0, prefix)); -- cgit v0.12 From 6547f369e4c3b71071da8534fcbe141320389c82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=BCmmel?= Date: Sun, 15 Jul 2012 19:38:51 +0200 Subject: Ninja: more searching for windres search for windres with and without prefix, and also when only CXX compiler is set. --- Source/cmGlobalNinjaGenerator.cxx | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index ca3a270..abf5c82 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -474,15 +474,30 @@ void cmGlobalNinjaGenerator if(mf->IsOn("CMAKE_COMPILER_IS_MINGW")) { UsingMinGW = true; - if(!mf->GetDefinition("CMAKE_RC_COMPILER") - && mf->GetDefinition("CMAKE_C_COMPILER")) + if(!mf->GetDefinition("CMAKE_RC_COMPILER")) { - std::string windres = "windres"; - std::string gcc = mf->GetDefinition("CMAKE_C_COMPILER"); - std::string::size_type prefix = gcc.rfind("gcc"); - if (prefix != std::string::npos) - windres.insert(0, gcc.substr(0, prefix)); - windres = cmSystemTools::FindProgram(windres.c_str()); + std::string windres = cmSystemTools::FindProgram("windres"); + if(windres.empty()) + { + std::string path; + std::string::size_type prefix = std::string::npos; + if (mf->GetDefinition("CMAKE_C_COMPILER")) + { + path = mf->GetDefinition("CMAKE_C_COMPILER"); + prefix = path.rfind("gcc"); + } + else if (mf->GetDefinition("CMAKE_CXX_COMPILER")) + { + path = mf->GetDefinition("CMAKE_CXX_COMPILER"); + prefix = path.rfind("++"); + prefix--; + } + if (prefix != std::string::npos) + { + windres = path.substr(0, prefix) + "windres"; + windres = cmSystemTools::FindProgram(windres.c_str()); + } + } if(!windres.empty()) mf->AddDefinition("CMAKE_RC_COMPILER", windres.c_str()); } -- cgit v0.12 From c8641037487fbce4e3901ad87087181c42b0d356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=BCmmel?= Date: Mon, 16 Jul 2012 17:09:10 +0200 Subject: Ninja: path is already declared --- Source/cmGlobalNinjaGenerator.cxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index abf5c82..912e53e 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -479,22 +479,22 @@ void cmGlobalNinjaGenerator std::string windres = cmSystemTools::FindProgram("windres"); if(windres.empty()) { - std::string path; + std::string compiler_path; std::string::size_type prefix = std::string::npos; if (mf->GetDefinition("CMAKE_C_COMPILER")) { - path = mf->GetDefinition("CMAKE_C_COMPILER"); - prefix = path.rfind("gcc"); + compiler_path = mf->GetDefinition("CMAKE_C_COMPILER"); + prefix = compiler_path.rfind("gcc"); } else if (mf->GetDefinition("CMAKE_CXX_COMPILER")) { - path = mf->GetDefinition("CMAKE_CXX_COMPILER"); - prefix = path.rfind("++"); + compiler_path = mf->GetDefinition("CMAKE_CXX_COMPILER"); + prefix = compiler_path.rfind("++"); prefix--; } if (prefix != std::string::npos) { - windres = path.substr(0, prefix) + "windres"; + windres = compiler_path.substr(0, prefix) + "windres"; windres = cmSystemTools::FindProgram(windres.c_str()); } } -- cgit v0.12