initial commit
This commit is contained in:
commit
9d20827c46
2469 changed files with 470994 additions and 0 deletions
201
iris/qcm/buildmode.qcm
Normal file
201
iris/qcm/buildmode.qcm
Normal file
|
|
@ -0,0 +1,201 @@
|
|||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: buildmode
|
||||
section: project
|
||||
arg: release,Build with debugging turned off (default).
|
||||
arg: debug,Build with debugging turned on.
|
||||
arg: debug-and-release,Build two versions, with and without debugging turned on (mac only).
|
||||
arg: no-separate-debug-info,Do not store debug information in a separate file (default for mac).
|
||||
arg: separate-debug-info,Strip debug information into a separate .debug file (default for non-mac).
|
||||
arg: no-framework,Do not build as a Mac framework.
|
||||
arg: framework,Build as a Mac framework (default).
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
|
||||
#define QC_BUILDMODE
|
||||
bool qc_buildmode_release = false;
|
||||
bool qc_buildmode_debug = false;
|
||||
bool qc_buildmode_framework = false;
|
||||
bool qc_buildmode_separate_debug_info = false;
|
||||
|
||||
class qc_buildmode : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_buildmode(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "buildmode"; }
|
||||
QString shortname() const { return "buildmode"; }
|
||||
|
||||
// no output
|
||||
QString checkString() const { return QString(); }
|
||||
|
||||
bool exec()
|
||||
{
|
||||
// first, parse out the options
|
||||
bool opt_release = false;
|
||||
bool opt_debug = false;
|
||||
bool opt_debug_and_release = false;
|
||||
bool opt_no_framework = false;
|
||||
bool opt_framework = false;
|
||||
bool opt_no_separate_debug_info = false;
|
||||
bool opt_separate_debug_info = false;
|
||||
|
||||
if(conf->getenv("QC_RELEASE") == "Y")
|
||||
opt_release = true;
|
||||
if(conf->getenv("QC_DEBUG") == "Y")
|
||||
opt_debug = true;
|
||||
if(conf->getenv("QC_DEBUG_AND_RELEASE") == "Y")
|
||||
opt_debug_and_release = true;
|
||||
if(conf->getenv("QC_NO_FRAMEWORK") == "Y")
|
||||
opt_no_framework = true;
|
||||
if(conf->getenv("QC_FRAMEWORK") == "Y")
|
||||
opt_framework = true;
|
||||
if(conf->getenv("QC_NO_SEPARATE_DEBUG_INFO") == "Y")
|
||||
opt_no_separate_debug_info = true;
|
||||
if(conf->getenv("QC_SEPARATE_DEBUG_INFO") == "Y")
|
||||
opt_separate_debug_info = true;
|
||||
|
||||
bool staticmode = false;
|
||||
if(conf->getenv("QC_STATIC") == "Y")
|
||||
staticmode = true;
|
||||
|
||||
#ifndef Q_OS_MAC
|
||||
if(opt_debug_and_release)
|
||||
{
|
||||
printf("\nError: The --debug-and-release option is for mac only.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if(opt_framework)
|
||||
{
|
||||
printf("\nError: The --framework option is for mac only.\n");
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
if(opt_framework && opt_debug)
|
||||
{
|
||||
printf("\nError: Cannot use both --framework and --debug.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// sanity check exclusive options
|
||||
int x;
|
||||
|
||||
// build mode
|
||||
x = 0;
|
||||
if(opt_release)
|
||||
++x;
|
||||
if(opt_debug)
|
||||
++x;
|
||||
if(opt_debug_and_release)
|
||||
++x;
|
||||
if(x > 1)
|
||||
{
|
||||
printf("\nError: Use only one of --release, --debug, or --debug-and-release.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// framework
|
||||
if(opt_framework && staticmode)
|
||||
{
|
||||
printf("\nError: Cannot use both --framework and --static.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
x = 0;
|
||||
if(opt_no_framework)
|
||||
++x;
|
||||
if(opt_framework)
|
||||
++x;
|
||||
if(x > 1)
|
||||
{
|
||||
printf("\nError: Use only one of --framework or --no-framework.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// debug info
|
||||
x = 0;
|
||||
if(opt_no_separate_debug_info)
|
||||
++x;
|
||||
if(opt_separate_debug_info)
|
||||
++x;
|
||||
if(x > 1)
|
||||
{
|
||||
printf("\nError: Use only one of --separate-debug-info or --no-separate-debug-info\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// now process the options
|
||||
|
||||
if(opt_release)
|
||||
qc_buildmode_release = true;
|
||||
else if(opt_debug)
|
||||
qc_buildmode_debug = true;
|
||||
else if(opt_debug_and_release)
|
||||
{
|
||||
qc_buildmode_release = true;
|
||||
qc_buildmode_debug = true;
|
||||
}
|
||||
else // default
|
||||
qc_buildmode_release = true;
|
||||
|
||||
if(opt_framework)
|
||||
qc_buildmode_framework = true;
|
||||
else if(opt_no_framework)
|
||||
{
|
||||
// nothing to do
|
||||
}
|
||||
else // default
|
||||
{
|
||||
if(!staticmode && !opt_debug)
|
||||
qc_buildmode_framework = true;
|
||||
}
|
||||
|
||||
if(opt_separate_debug_info)
|
||||
qc_buildmode_separate_debug_info = true;
|
||||
else if(opt_no_separate_debug_info)
|
||||
{
|
||||
// nothing to do
|
||||
}
|
||||
else // default
|
||||
{
|
||||
#ifndef Q_OS_MAC
|
||||
qc_buildmode_separate_debug_info = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
// make the string
|
||||
QStringList opts;
|
||||
QString other;
|
||||
|
||||
if(qc_buildmode_release && qc_buildmode_debug)
|
||||
{
|
||||
opts += "debug_and_release";
|
||||
opts += "build_all";
|
||||
}
|
||||
else if(qc_buildmode_release)
|
||||
opts += "release";
|
||||
else // qc_buildmode_debug
|
||||
opts += "debug";
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
if(qc_buildmode_framework)
|
||||
opts += "lib_bundle";
|
||||
#endif
|
||||
|
||||
if(qc_buildmode_separate_debug_info)
|
||||
{
|
||||
opts += "separate_debug_info";
|
||||
other += "QMAKE_CFLAGS += -g\n";
|
||||
other += "QMAKE_CXXFLAGS += -g\n";
|
||||
}
|
||||
|
||||
QString str = QString("CONFIG += ") + opts.join(" ") + '\n';
|
||||
conf->addExtra(str);
|
||||
|
||||
if(!other.isEmpty())
|
||||
conf->addExtra(other);
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
Reference in a new issue