/*************************************************************************** * Copyright (C) 2005-2007 Nicolas Hadacek * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * ***************************************************************************/ #include "generic_tool.h" #include "devices/list/device_list.h" #include "common/global/process.h" #include "tools/list/compile_config.h" //---------------------------------------------------------------------------- const Tool::Category::Data Tool::Category::DATA[Nb_Types] = { { "compiler", I18N_NOOP("Compiler:"), I18N_NOOP("Compiler") }, { "assembler", I18N_NOOP("Assembler:"), I18N_NOOP("Assembler") }, { "linker", I18N_NOOP("Linker:"), I18N_NOOP("Linker") }, { "bin_to_hex", I18N_NOOP("Bin to Hex:"), I18N_NOOP("Bin to Hex") }, { "librarian", I18N_NOOP("Librarian:"), I18N_NOOP("Librarian") } }; const Tool::ExecutableType::Data Tool::ExecutableType::DATA[Nb_Types] = { { "unix", I18N_NOOP("Unix") }, { "windows", I18N_NOOP("Windows") } }; const Compile::DirectoryType::Data Compile::DirectoryType::DATA[Nb_Types] = { { "executable", I18N_NOOP("Executable directory") }, { "include", I18N_NOOP("Header directory") }, { "linker_script", I18N_NOOP("Linker Script Directory") }, { "library", I18N_NOOP("Library Directory") }, { "source", I18N_NOOP("Source Directory") } }; const Tool::OutputExecutableType::Data Tool::OutputExecutableType::DATA[Nb_Types] = { { I18N_NOOP("COFF"), "coff", PURL::Coff }, { I18N_NOOP("ELF"), "elf", PURL::Elf } }; const Tool::OutputType::Data Tool::OutputType::DATA[Nb_Types] = { { "executable", I18N_NOOP("Executable") }, { "library", I18N_NOOP("Library") } }; //----------------------------------------------------------------------------- PURL::Directory Tool::Base::executableDirectory() const { return Compile::Config::directory(*_group, Compile::DirectoryType::Executable); } ::Process::LineOutput *Tool::Base::checkExecutableProcess(const PURL::Directory &dir, bool withWine, OutputExecutableType type) const { ::Process::LineOutput *process = new ::Process::LineOutput; process->setup(dir.path() + baseExecutable(withWine, type), checkExecutableOptions(withWine), withWine); PURL::Directory wdir = checkExecutableWorkingDirectory(); if ( !wdir.isEmpty() ) process->setWorkingDirectory(wdir.path()); return process; }