void BuildConfiguration::emitBuildDirectoryChanged() { if (buildDirectory() != m_lastEmmitedBuildDirectory) { m_lastEmmitedBuildDirectory = buildDirectory(); emit buildDirectoryChanged(); } }
void Qt4BuildConfiguration::emitBuildDirectoryChanged() { // We also emit buildDirectoryChanged if the the Qt version's supportShadowBuild changed if (buildDirectory() != m_lastEmmitedBuildDirectory || supportsShadowBuilds() != m_qtVersionSupportsShadowBuilds) { m_lastEmmitedBuildDirectory = buildDirectory(); m_qtVersionSupportsShadowBuilds = supportsShadowBuilds(); emit buildDirectoryChanged(); } }
void QmakeBuildConfiguration::setBuildDirectory(const FileName &directory) { if (directory == buildDirectory()) return; BuildConfiguration::setBuildDirectory(directory); QTC_CHECK(supportsShadowBuilds() || (!supportsShadowBuilds() && buildDirectory() == target()->project()->projectDirectory())); emitProFileEvaluateNeeded(); }
BuildConfiguration::BuildConfiguration(Target *target, Core::Id id) : ProjectConfiguration(target, id) { Utils::MacroExpander *expander = macroExpander(); expander->setDisplayName(tr("Build Settings")); expander->setAccumulating(true); expander->registerSubProvider([target] { return target->macroExpander(); }); expander->registerVariable("buildDir", tr("Build directory"), [this] { return buildDirectory().toUserOutput(); }); expander->registerVariable(Constants::VAR_CURRENTBUILD_NAME, tr("Name of current build"), [this] { return displayName(); }, false); expander->registerPrefix(Constants::VAR_CURRENTBUILD_ENV, tr("Variables in the current build environment"), [this](const QString &var) { return environment().value(var); }); updateCacheAndEmitEnvironmentChanged(); connect(target, &Target::kitChanged, this, &BuildConfiguration::updateCacheAndEmitEnvironmentChanged); connect(this, &BuildConfiguration::environmentChanged, this, &BuildConfiguration::emitBuildDirectoryChanged); // Many macroexpanders are based on the current project, so they may change the environment: connect(ProjectTree::instance(), &ProjectTree::currentProjectChanged, this, &BuildConfiguration::updateCacheAndEmitEnvironmentChanged); }
void CMountPointReader::buildDirectory() { IFileList * list = Parent->createFileList(); const u32 size = list->getFileCount(); for (u32 i=0; i < size; ++i) { core::string<c16> full = list->getFullFileName(i); full = full.subString(Path.size(), full.size() - Path.size()); if (!list->isDirectory(i)) { addItem(full, list->getFileSize(i), false, RealFileNames.size()); RealFileNames.push_back(list->getFullFileName(i)); } else { const core::string<c16> rel = list->getFileName(i); core::string<c16> pwd = Parent->getWorkingDirectory(); if (core::lastChar(pwd) != '/') pwd.append('/'); pwd.append(rel); if ( rel != "." && rel != ".." ) { addItem(full, 0, true, 0); Parent->changeWorkingDirectoryTo(pwd); buildDirectory (); Parent->changeWorkingDirectoryTo(".."); } } } list->drop(); }
CUnZipReader::CUnZipReader( IFileSystem * parent, const c8* basename, bool ignoreCase, bool ignorePaths) :CZipReader ( 0, ignoreCase, ignorePaths ), Parent ( parent ) { strcpy ( Buf, Parent->getWorkingDirectory () ); Parent->changeWorkingDirectoryTo ( basename ); buildDirectory ( ); Parent->changeWorkingDirectoryTo ( Buf ); FileList.sort(); }
TestOutputReader *QtTestConfiguration::outputReader(const QFutureInterface<TestResultPtr> &fi, QProcess *app) const { static const Core::Id id = Core::Id(Constants::FRAMEWORK_PREFIX).withSuffix(QtTest::Constants::FRAMEWORK_NAME); TestFrameworkManager *manager = TestFrameworkManager::instance(); auto qtSettings = qSharedPointerCast<QtTestSettings>(manager->settingsForTestFramework(id)); const QtTestOutputReader::OutputMode mode = qtSettings && qtSettings->useXMLOutput ? QtTestOutputReader::XML : QtTestOutputReader::PlainText; return new QtTestOutputReader(fi, app, buildDirectory(), projectFile(), mode, TestType::QtTest); }
/** Retuns the currently selected run directory * The returned string can be: * if run/directoryradio == executable * The directory where the executable is * if run/directoryradio == build * The directory where the executable is relative to build directory * if run/directoryradio == custom * The custom directory absolute path */ QString AntProjectPart::runDirectory() const { return buildDirectory(); /// \FIXME put the code below into use! QDomDocument &dom = *projectDom(); /// \FIXME there is no kdevantproject so this will not work ! QString directoryRadioString = DomUtil::readEntry(dom, "/kdevantproject/run/directoryradio"); QString DomMainProgram = DomUtil::readEntry(dom, "/kdevantproject/run/mainprogram"); if ( directoryRadioString == "build" ) return buildDirectory(); if ( directoryRadioString == "custom" ) return DomUtil::readEntry(dom, "/kdevantproject/run/customdirectory"); int pos = DomMainProgram.findRev('/'); if (pos != -1) return buildDirectory() + "/" + DomMainProgram.left(pos); return buildDirectory() + "/" + DomMainProgram; }
//! compatible Folder Architecture CMountPointReader::CMountPointReader(IFileSystem * parent, const io::path& basename, bool ignoreCase, bool ignorePaths) : CFileList(basename, ignoreCase, ignorePaths), Parent(parent) { //! ensure CFileList path ends in a slash if (Path.lastChar() != '/' ) Path.append('/'); const io::path& work = Parent->getWorkingDirectory(); Parent->changeWorkingDirectoryTo(basename); buildDirectory(); Parent->changeWorkingDirectoryTo(work); sort(); }
bool FolderImage::open(const QString &fileName, FileTypes::FileType /* type */) { if (dir.exists(fileName)) { dir.setPath(fileName); buildDirectory(); m_originalFileName = fileName; m_geometry.initialize(false, 40, 26, 128); m_newGeometry.initialize(m_geometry); m_isReadOnly = true; m_isModified = false; m_isUnmodifiable = true; return true; } else { return false; } }
bool Qt4BuildConfiguration::fromMap(const QVariantMap &map) { if (!BuildConfiguration::fromMap(map)) return false; m_shadowBuild = map.value(QLatin1String(USE_SHADOW_BUILD_KEY), true).toBool(); m_qmakeBuildConfiguration = BaseQtVersion::QmakeBuildConfigs(map.value(QLatin1String(BUILD_CONFIGURATION_KEY)).toInt()); m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY), defaultShadowBuildDirectory()).toString(); m_lastEmmitedBuildDirectory = buildDirectory(); m_qtVersionSupportsShadowBuilds = supportsShadowBuilds(); m_lastKitState = LastKitState(target()->kit()); connect(ProjectExplorer::ToolChainManager::instance(), SIGNAL(toolChainUpdated(ProjectExplorer::ToolChain*)), this, SLOT(toolChainUpdated(ProjectExplorer::ToolChain*))); connect(QtSupport::QtVersionManager::instance(), SIGNAL(qtVersionsChanged(QList<int>,QList<int>,QList<int>)), this, SLOT(qtVersionsChanged(QList<int>,QList<int>,QList<int>))); return true; }
void CUnZipReader::buildDirectory ( ) { s32 i; s32 size; const c8 * rel; IFileList * list; list = new CFileList (); SZipFileEntry entry; size = list->getFileCount(); for ( i = 0; i!= size; ++i ) { if ( false == list->isDirectory( i ) ) { entry.zipFileName = list->getFullFileName ( i ); entry.header.FilenameLength = entry.zipFileName.size (); extractFilename(&entry); FileList.push_back(entry); } else { rel = list->getFileName ( i ); if ( strcmp ( rel, "." ) && strcmp ( rel, ".." ) ) { Parent->changeWorkingDirectoryTo ( rel ); buildDirectory (); Parent->changeWorkingDirectoryTo ( ".." ); } } } list->drop (); }
void CMountPointReader::buildDirectory() { IFileList * list = Parent->createFileList(); if (!list) return; const uint32_t size = list->getFileCount(); for (uint32_t i=0; i < size; ++i) { io::path full = list->getFullFileName(i); full = full.subString(Path.size(), full.size() - Path.size()); if (!list->isDirectory(i)) { addItem(full, list->getFileOffset(i), list->getFileSize(i), false, RealFileNames.size()); RealFileNames.push_back(list->getFullFileName(i)); } else { const io::path rel = list->getFileName(i); RealFileNames.push_back(list->getFullFileName(i)); io::path pwd = Parent->getWorkingDirectory(); if (pwd.lastChar() != '/') pwd.append('/'); pwd.append(rel); if ( rel != "." && rel != ".." ) { addItem(full, 0, 0, true, 0); Parent->changeWorkingDirectoryTo(pwd); buildDirectory(); Parent->changeWorkingDirectoryTo(".."); } } } list->drop(); }
/// returns whether this is a shadow build configuration or not /// note, even if shadowBuild() returns true, it might be using the /// source directory as the shadow build directory, thus it /// still is a in-source build bool Qt4BuildConfiguration::isShadowBuild() const { return buildDirectory().toString() != target()->project()->projectDirectory(); }
bool FolderImage::readSector(quint16 sector, QByteArray &data) { /* Boot */ QFile boot(dir.path() + "/$boot.bin"); data = QByteArray(128, 0); int bootFileSector; if (sector == 1) { if (!boot.open(QFile::ReadOnly)) { data[1] = 0x01; data[3] = 0x07; data[4] = 0x40; data[5] = 0x15; data[6] = 0x4c; data[7] = 0x14; data[8] = 0x07; // JMP 0x0714 data[0x14] = 0x38; // SEC data[0x15] = 0x60; // RTS } else { data = boot.read(128); buildDirectory(); for(int i=0; i<64; i++) { // AtariDOS, MyDos, SmartDOS and DosXL if(atariFiles[i].longName.toUpper() == "DOS.SYS") { bootFileSector = 369 + i; data[15] = bootFileSector % 256; data[16] = bootFileSector / 256; break; } // MyPicoDOS if(atariFiles[i].longName.toUpper() == "PICODOS.SYS") { bootFileSector = 369 + i; if(g_disablePicoHiSpeed) { data[15] = 0; QFile boot(dir.path() + "/$boot.bin"); QByteArray speed; boot.open(QFile::ReadWrite); boot.seek(15); speed = boot.read(1); speed[0] = '\x30'; boot.seek(15); boot.write(speed); boot.close(); } data[9] = bootFileSector % 256; data[10] = bootFileSector / 256; // Create the piconame.txt file QFile picoName(dir.path() + "/piconame.txt"); picoName.open(QFile::WriteOnly); QByteArray nameLine; nameLine.append(dir.dirName() + '\x9B'); picoName.write(nameLine); for(int i=0; i<64; i++){ if(atariFiles[i].exists) { if(atariFiles[i].longName != "$boot.bin") { nameLine.clear(); nameLine.append(atariFiles[i].atariName); QByteArray space; int size; size = atariFiles[i].atariName.size(); for(int j=0; j<=8-size-1; j++) { space[j] = '\x20'; } nameLine.append(space); nameLine.append(atariFiles[i].atariExt); nameLine.append('\x20'); nameLine.append(atariFiles[i].longName.mid(0, atariFiles[i].longName.indexOf(".", -1)-1)); nameLine.append('\x9B'); picoName.write(nameLine); } } else { picoName.close(); break; } } break; } // SpartaDOS, force it to change to AtariDOS format after the boot if(atariFiles[i].longName.toUpper() == "X32.DOS") { QFile x32Dos(dir.path() + "/x32.dos"); x32Dos.open(QFile::ReadOnly); QByteArray flag; flag = x32Dos.readAll(); if(flag[0] == '\xFF') { flag[0] = '\x00'; data[1] = 0x01; data[3] = 0x07; data[4] = 0x40; data[5] = 0x15; data[6] = 0x4c; data[7] = 0x14; data[8] = 0x07; data[0x14] = 0x38; data[0x15] = 0x60; } break; } } } return true; } if (sector == 2) { boot.open(QFile::ReadOnly); boot.seek(128); data = boot.read(128); return true; } if (sector == 3) { boot.open(QFile::ReadOnly); boot.seek(256); data = boot.read(128); return true; } // SpartaDOS Boot if ((sector >= 32 && sector <= 134) || sector == 5 || sector == 6) { boot.open(QFile::ReadOnly); boot.seek((sector-1)*128); data = boot.read(128); if(sector == 134) { QFile x32Dos(dir.path() + "/x32.dos"); x32Dos.open(QFile::ReadWrite); QByteArray flag; flag = x32Dos.readAll(); if(flag[0] == '\x00') { flag[0] = '\xFF'; x32Dos.seek(0); x32Dos.write(flag); x32Dos.close(); } } return true; } /* VTOC */ if (sector == 360) { data = QByteArray(128, 0); data[0] = 2; data[1] = 1010 % 256; data[2] = 1010 / 256; data[10] = 0x7F; for (int i = 11; i < 100; i++) { data[i] = 0xff; } return true; } /* Directory sectors */ if (sector >= 361 && sector <=368) { if (sector == 361) { buildDirectory(); } data.resize(0); for (int i = (sector - 361) * 8; i < (sector - 360) * 8; i++) { QByteArray entry; if (!atariFiles[i].exists) { entry = QByteArray(16, 0); } else { entry = ""; entry[0] = 0x42; QFileInfo info = atariFiles[i].original;; int size = (info.size() + 124) / 125; if (size > 999) { size = 999; } entry[1] = size % 256; entry[2] = size / 256; int first = 369 + i; entry[3] = first % 256; entry[4] = first / 256; entry += atariFiles[i].atariName.toLatin1(); while (entry.count() < 13) { entry += 32; } entry += atariFiles[i].atariExt.toLatin1(); while (entry.count() < 16) { entry += 32; } } data += entry; } return true; } /* Data sectors */ /* First sector of the file */ int size, next; if (sector >= 369 && sector <= 432) { atariFileNo = sector - 369; if (!atariFiles[atariFileNo].exists) { data = QByteArray(128, 0); return true; } QFile file(atariFiles[atariFileNo].original.absoluteFilePath()); file.open(QFile::ReadOnly); data = file.read(125); size = data.size(); data.resize(128); if (file.atEnd()) { next = 0; } else { next = 433; } data[125] = (atariFileNo * 4) | (next / 256); data[126] = next % 256; data[127] = size; return true; } /* Rest of the file sectors */ if ((sector >= 433 && sector <= 1023)) { QFile file(atariFiles[atariFileNo].original.absoluteFilePath()); file.open(QFile::ReadOnly); atariFiles[atariFileNo].pos = (125+((sector-433)*125))+(atariFiles[atariFileNo].sectPass*73875); file.seek(atariFiles[atariFileNo].pos); data = file.read(125); next = sector + 1; if (sector == 1023) { next = 433; atariFiles[atariFileNo].sectPass += 1; } size = data.size(); data.resize(128); atariFiles[atariFileNo].lastSector = sector; if (file.atEnd()) { next = 0; } data[125] = (atariFileNo * 4) | (next / 256); data[126] = next % 256; data[127] = size; return true; } /* Any other sector */ data = QByteArray(128, 0); return true; }
void ProjectExplorerSettingsWidget::updateResetButton() { m_ui.resetButton->setEnabled(buildDirectory() != QLatin1String(Core::Constants::DEFAULT_BUILD_DIRECTORY)); }
/// returns whether this is a shadow build configuration or not /// note, even if shadowBuild() returns true, it might be using the /// source directory as the shadow build directory, thus it /// still is a in-source build bool QmakeBuildConfiguration::isShadowBuild() const { return buildDirectory() != target()->project()->projectDirectory(); }