/*
* This file is part of Code::Blocks Studio, an open-source cross-platform IDE
* Copyright (C) 2003 Yiannis An. Mandravellos
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Contact e-mail: Yiannis An. Mandravellos <mandrav@codeblocks.org>
* Program URL : http://www.codeblocks.org
*
* $Revision$
* $Id$
* $HeadURL$
*/
#include "sdk_precomp.h"
#ifndef CB_PRECOMP
#include "projectbuildtarget.h" // class's header file
#include "cbproject.h"
#include "manager.h"
#include "projectmanager.h"
#include "macrosmanager.h"
#include "globals.h"
#endif
// class constructor
ProjectBuildTarget::ProjectBuildTarget(cbProject* parentProject) : m_Project(parentProject)
{
m_BuildWithAll = false;
m_CreateStaticLib = true;
m_CreateDefFile = true;
m_UseConsoleRunner = true;
}
// class destructor
ProjectBuildTarget::~ProjectBuildTarget()
{
}
cbProject* ProjectBuildTarget::GetParentProject() {
return m_Project;
}
wxString ProjectBuildTarget::GetFullTitle() {
return m_Project->GetTitle() + _T(" - ") + GetTitle();
}
const wxString & ProjectBuildTarget::GetExternalDeps()
{
return m_ExternalDeps;
}
void ProjectBuildTarget::SetExternalDeps(const wxString& deps)
{
if (m_ExternalDeps != deps)
{
m_ExternalDeps = deps;
SetModified(true);
}
}
const wxString & ProjectBuildTarget::GetAdditionalOutputFiles()
{
return m_AdditionalOutputFiles;
}
void ProjectBuildTarget::SetAdditionalOutputFiles(const wxString& files)
{
if (m_AdditionalOutputFiles != files)
{
m_AdditionalOutputFiles = files;
SetModified(true);
}
}
bool ProjectBuildTarget::GetIncludeInTargetAll()
{
return m_BuildWithAll;
}
void ProjectBuildTarget::SetIncludeInTargetAll(bool buildIt)
{
if (m_BuildWithAll != buildIt)
{
m_BuildWithAll = buildIt;
SetModified(true);
}
}
bool ProjectBuildTarget::GetCreateDefFile()
{
return m_CreateDefFile;
}
void ProjectBuildTarget::SetCreateDefFile(bool createIt)
{
if (m_CreateDefFile != createIt)
{
m_CreateDefFile = createIt;
SetModified(true);
}
}
bool ProjectBuildTarget::GetCreateStaticLib()
{
return m_CreateStaticLib;
}
void ProjectBuildTarget::SetCreateStaticLib(bool createIt)
{
if (m_CreateStaticLib != createIt)
{
m_CreateStaticLib = createIt;
SetModified(true);
}
}
bool ProjectBuildTarget::GetUseConsoleRunner()
{
return GetTargetType() == ttConsoleOnly ? m_UseConsoleRunner : false;
}
void ProjectBuildTarget::SetUseConsoleRunner(bool useIt)
{
if (GetTargetType() == ttConsoleOnly && useIt != m_UseConsoleRunner)
{
m_UseConsoleRunner = useIt;
SetModified(true);
}
}
void ProjectBuildTarget::SetTargetType(const TargetType& pt)
{
TargetType ttold = GetTargetType();
CompileTargetBase::SetTargetType(pt);
if (ttold != GetTargetType() && GetTargetType() == ttConsoleOnly)
SetUseConsoleRunner(true); // by default, use console runner
}
// target dependencies: targets to be compiled (if necessary) before this one
void ProjectBuildTarget::AddTargetDep(ProjectBuildTarget* target) {
m_TargetDeps.Add(target);
}
// get the list of dependency targets of this target
BuildTargets& ProjectBuildTarget::GetTargetDeps() {
return m_TargetDeps;
}