//=============================================================================
//
//   File : KviBuildInfo.cpp
//   Creation date : Sat 19 Apr 2008 17:01:57 by Szymon Stefanek
//
//   This file is part of the KVIrc IRC Client distribution
//   Copyright (C) 2008 Szymon Stefanek <s.stefanek at libero dot it>
//   Copyright (C) 2008 Elvio Basello <hellvis69 at netsons dot org>
//
//   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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
//=============================================================================

#include "KviBuildInfo.h"
#include "kvi_sourcesdate.h"
#include "kvi_sysbuildinfo.h"

#include <QString>
#include <QStringList>

const QStringList feature_list{
	"IRC",
#ifdef COMPILE_DEBUG_MODE
	"Debug",
#endif
#ifdef COMPILE_IPV6_SUPPORT
	"IPv6",
#endif
#ifdef COMPILE_CRYPT_SUPPORT
	"Crypt",
#endif
#ifdef COMPILE_SSL_SUPPORT
	"SSL",
#endif
#ifdef COMPILE_GET_INTERFACE_ADDRESS
	"IfAddr",
#endif
#ifndef COMPILE_NO_IPC
	"IPC",
#endif
#ifdef COMPILE_KDE_SUPPORT
	"KDE",
#endif
#ifdef COMPILE_OSS_SUPPORT
	"OSS",
#endif
#ifdef COMPILE_AUDIOFILE_SUPPORT
	"Audiofile",
#endif
#ifdef COMPILE_PSEUDO_TRANSPARENCY
	"Transparency",
#endif
#ifdef COMPILE_PHONON_SUPPORT
	"Phonon",
#endif
#ifdef COMPILE_WEBENGINE_SUPPORT
	"WebEngine",
#endif
#ifndef COMPILE_DISABLE_DCC_VIDEO
	"DCCVideo",
#endif
#ifndef COMPILE_DISABLE_DCC_VOICE
	"DCCVoice",
#endif
#ifdef COMPILE_DCC_CANVAS
	"DCCCanvas",
#endif
#ifdef COMPILE_PERL_SUPPORT
	"Perl",
#endif
#ifdef COMPILE_PYTHON_SUPPORT
	"Python",
#endif
#ifdef COMPILE_ENCHANT_SUPPORT
	"Enchant",
#endif
	// This is not in "else" branch of below because some scripts may need it,
	// eg. /echo $features(Qt5) to determine if some features only available when Qt5 are present
	"Qt5",
#if(QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
	"Qt6",
#endif
	"KVS"
};

namespace KviBuildInfo
{
	QString buildDate()
	{
		return QString(KVIRC_BUILD_DATE);
	}

	QString buildSourcesDate()
	{
		return QString(KVI_SOURCES_DATE);
	}

	QString buildCommand()
	{
		return QString(KVIRC_BUILD_COMMAND);
	}

	QString buildFlags()
	{
		return QString(KVIRC_BUILD_FLAGS);
	}

	QString buildSystemName()
	{
#ifdef COMPILE_ON_WINDOWS
		return QString();
#else
		return QString(KVIRC_BUILD_SYSTEM_NAME);
#endif
	}

	QString buildCPU()
	{
		return QString(KVIRC_BUILD_CPU);
	}

	QString buildCompiler()
	{
		return QString(KVIRC_BUILD_COMPILER);
	}

	QString buildCompilerFlags()
	{
		QString flags = QString(KVIRC_BUILD_COMPILER_FLAGS);
		if(flags.isEmpty())
			return QString("N/A");
		else
			return flags;
	}

	const char * buildType()
	{
#ifdef COMPILE_DEBUG_MODE
		return "debug";
#else
		return "release";
#endif
	}

	QString buildRevision()
	{
#ifdef KVIRC_BUILD_REVISION
		return QString(KVIRC_BUILD_REVISION);
#else
		return QString();
#endif
	}

	QString qtVersion()
	{
		return QString(QT_VERSION_STR);
	}

	QString features()
	{
		return feature_list.join(", ");
	}
}
