void AdvancedDlg::OnAddExistingCompiler() { wxString folder = ::wxDirSelector(_("Select the compiler folder")); if(folder.IsEmpty()) { return; } CompilerPtr cmp = m_compilersDetector.Locate(folder); if(cmp) { // We found new compiler // Prompt the user to give it a name while(true) { wxString name = ::wxGetTextFromUser(_("Set a name to the compiler"), _("New compiler found!"), cmp->GetName()); if(name.IsEmpty()) { return; } // Add the compiler if(BuildSettingsConfigST::Get()->IsCompilerExist(name)) { continue; } cmp->SetName(name); break; } // Save the new compiler BuildSettingsConfigST::Get()->SetCompiler(cmp); // Reload the dialog LoadCompilers(); } }
void CompilerLocatorMinGW::AddTools(CompilerPtr compiler, const wxString& binFolder, const wxString& name) { wxFileName masterPath(binFolder, ""); masterPath.RemoveLastDir(); if ( m_locatedFolders.count(masterPath.GetPath()) ) { return; } m_locatedFolders.insert( masterPath.GetPath() ); if ( name.IsEmpty() ) { compiler->SetName("MinGW ( " + masterPath.GetDirs().Last() + " )"); } else { compiler->SetName("MinGW ( " + name + " )"); } CL_DEBUG("Found MinGW compiler under: %s. \"%s\"", masterPath.GetPath(), compiler->GetName()); wxFileName toolFile(binFolder, ""); toolFile.SetFullName("g++.exe"); AddTool(compiler, "CXX", toolFile.GetFullPath()); AddTool(compiler, "LinkerName", toolFile.GetFullPath()); AddTool(compiler, "SharedObjectLinkerName", toolFile.GetFullPath(), "-shared -fPIC"); toolFile.SetFullName("gcc.exe"); AddTool(compiler, "CC", toolFile.GetFullPath()); toolFile.SetFullName("ar.exe"); AddTool(compiler, "AR", toolFile.GetFullPath(), "rcu"); toolFile.SetFullName("windres.exe"); AddTool(compiler, "ResourceCompiler", toolFile.GetFullPath()); toolFile.SetFullName("as.exe"); AddTool(compiler, "AS", toolFile.GetFullPath()); toolFile.SetFullName("make.exe"); if ( toolFile.FileExists() ) { AddTool(compiler, "MAKE", toolFile.GetFullPath()); } else { toolFile.SetFullName("mingw32-make.exe"); if ( toolFile.FileExists() ) { AddTool(compiler, "MAKE", toolFile.GetFullPath()); } } }
void CompilerLocatorCrossGCC::AddTools(CompilerPtr compiler, const wxString& binFolder, const wxString& prefix, const wxString& suffix) { compiler->SetName("Cross GCC ( " + prefix + " )"); compiler->SetInstallationPath(binFolder); CL_DEBUG("Found CrossGCC compiler under: %s. \"%s\"", binFolder, compiler->GetName()); wxFileName toolFile(binFolder, ""); toolFile.SetFullName(prefix + "-g++"); toolFile.SetExt(suffix); AddTool(compiler, "CXX", toolFile.GetFullPath(), suffix); AddTool(compiler, "LinkerName", toolFile.GetFullPath()); AddTool(compiler, "SharedObjectLinkerName", toolFile.GetFullPath(), "-shared -fPIC"); toolFile.SetFullName(prefix + "-gcc"); toolFile.SetExt(suffix); AddTool(compiler, "CC", toolFile.GetFullPath()); toolFile.SetFullName(prefix + "-ar"); toolFile.SetExt(suffix); AddTool(compiler, "AR", toolFile.GetFullPath(), "rcu"); toolFile.SetFullName(prefix + "-windres"); toolFile.SetExt(suffix); if(toolFile.FileExists()) AddTool(compiler, "ResourceCompiler", toolFile.GetFullPath()); toolFile.SetFullName(prefix + "-as"); toolFile.SetExt(suffix); AddTool(compiler, "AS", toolFile.GetFullPath()); toolFile.SetFullName(prefix + "-gdb"); toolFile.SetExt(suffix); AddTool(compiler, "Debugger", toolFile.GetFullPath()); toolFile.SetFullName("make"); toolFile.SetExt(suffix); wxString makeExtraArgs; if(wxThread::GetCPUCount() > 1) { makeExtraArgs << "-j" << wxThread::GetCPUCount(); } // XXX Need this on Windows? // makeExtraArgs << " SHELL=cmd.exe "; // What to do if there's no make here? (on Windows) if(toolFile.FileExists()) AddTool(compiler, "MAKE", toolFile.GetFullPath(), makeExtraArgs); }
bool AdvancedDlg::CreateNewCompiler(const wxString& name, const wxString& copyFrom) { if(BuildSettingsConfigST::Get()->IsCompilerExist(name)) { wxMessageBox(_("A compiler with this name already exists"), _("Error"), wxOK | wxICON_HAND); return false; } CompilerPtr cmp; if(!copyFrom.IsEmpty()) { cmp = BuildSettingsConfigST::Get()->GetCompiler(copyFrom); } else { cmp = BuildSettingsConfigST::Get()->GetCompiler(name); } cmp->SetName(name); BuildSettingsConfigST::Get()->SetCompiler(cmp); return true; }
void CompilerMainPage::OnRenameCompiler(wxCommandEvent& event) { int selection = m_listBoxCompilers->GetSelection(); if(selection == wxNOT_FOUND) return; wxString newName = ::wxGetTextFromUser(_("New Compiler Name"), _("Rename Compiler"), m_listBoxCompilers->GetStringSelection()); if(newName.IsEmpty()) return; CompilerPtr compiler = BuildSettingsConfigST::Get()->GetCompiler(m_listBoxCompilers->GetStringSelection()); if(!compiler) return; // Delete the old compiler BuildSettingsConfigST::Get()->DeleteCompiler(compiler->GetName()); // Create new one with differet name compiler->SetName(newName); BuildSettingsConfigST::Get()->SetCompiler(compiler); // Reload the content LoadCompilers(); }