Warning, /games/ksirk/ksirk/iris/qcm/buildmode.qcm is written in an unsupported language. File is not indexed.
0001 /* 0002 -----BEGIN QCMOD----- 0003 name: buildmode 0004 section: project 0005 arg: release,Build with debugging turned off (default). 0006 arg: debug,Build with debugging turned on. 0007 arg: debug-and-release,Build two versions, with and without debugging turned on (mac only). 0008 arg: no-separate-debug-info,Do not store debug information in a separate file (default for mac). 0009 arg: separate-debug-info,Strip debug information into a separate .debug file (default for non-mac). 0010 arg: no-framework,Do not build as a Mac framework. 0011 arg: framework,Build as a Mac framework (default). 0012 -----END QCMOD----- 0013 */ 0014 0015 #define QC_BUILDMODE 0016 bool qc_buildmode_release = false; 0017 bool qc_buildmode_debug = false; 0018 bool qc_buildmode_framework = false; 0019 bool qc_buildmode_separate_debug_info = false; 0020 0021 class qc_buildmode : public ConfObj 0022 { 0023 public: 0024 qc_buildmode(Conf *c) : ConfObj(c) {} 0025 QString name() const { return "buildmode"; } 0026 QString shortname() const { return "buildmode"; } 0027 0028 // no output 0029 QString checkString() const { return QString(); } 0030 0031 bool exec() 0032 { 0033 // first, parse out the options 0034 bool opt_release = false; 0035 bool opt_debug = false; 0036 bool opt_debug_and_release = false; 0037 bool opt_no_framework = false; 0038 bool opt_framework = false; 0039 bool opt_no_separate_debug_info = false; 0040 bool opt_separate_debug_info = false; 0041 0042 if(conf->getenv("QC_RELEASE") == "Y") 0043 opt_release = true; 0044 if(conf->getenv("QC_DEBUG") == "Y") 0045 opt_debug = true; 0046 if(conf->getenv("QC_DEBUG_AND_RELEASE") == "Y") 0047 opt_debug_and_release = true; 0048 if(conf->getenv("QC_NO_FRAMEWORK") == "Y") 0049 opt_no_framework = true; 0050 if(conf->getenv("QC_FRAMEWORK") == "Y") 0051 opt_framework = true; 0052 if(conf->getenv("QC_NO_SEPARATE_DEBUG_INFO") == "Y") 0053 opt_no_separate_debug_info = true; 0054 if(conf->getenv("QC_SEPARATE_DEBUG_INFO") == "Y") 0055 opt_separate_debug_info = true; 0056 0057 bool staticmode = false; 0058 if(conf->getenv("QC_STATIC") == "Y") 0059 staticmode = true; 0060 0061 #ifndef Q_OS_MAC 0062 if(opt_debug_and_release) 0063 { 0064 printf("\nError: The --debug-and-release option is for mac only.\n"); 0065 exit(1); 0066 } 0067 0068 if(opt_framework) 0069 { 0070 printf("\nError: The --framework option is for mac only.\n"); 0071 exit(1); 0072 } 0073 #endif 0074 0075 if(opt_framework && opt_debug) 0076 { 0077 printf("\nError: Cannot use both --framework and --debug.\n"); 0078 exit(1); 0079 } 0080 0081 // sanity check exclusive options 0082 int x; 0083 0084 // build mode 0085 x = 0; 0086 if(opt_release) 0087 ++x; 0088 if(opt_debug) 0089 ++x; 0090 if(opt_debug_and_release) 0091 ++x; 0092 if(x > 1) 0093 { 0094 printf("\nError: Use only one of --release, --debug, or --debug-and-release.\n"); 0095 exit(1); 0096 } 0097 0098 // framework 0099 if(opt_framework && staticmode) 0100 { 0101 printf("\nError: Cannot use both --framework and --static.\n"); 0102 exit(1); 0103 } 0104 0105 x = 0; 0106 if(opt_no_framework) 0107 ++x; 0108 if(opt_framework) 0109 ++x; 0110 if(x > 1) 0111 { 0112 printf("\nError: Use only one of --framework or --no-framework.\n"); 0113 exit(1); 0114 } 0115 0116 // debug info 0117 x = 0; 0118 if(opt_no_separate_debug_info) 0119 ++x; 0120 if(opt_separate_debug_info) 0121 ++x; 0122 if(x > 1) 0123 { 0124 printf("\nError: Use only one of --separate-debug-info or --no-separate-debug-info\n"); 0125 exit(1); 0126 } 0127 0128 // now process the options 0129 0130 if(opt_release) 0131 qc_buildmode_release = true; 0132 else if(opt_debug) 0133 qc_buildmode_debug = true; 0134 else if(opt_debug_and_release) 0135 { 0136 qc_buildmode_release = true; 0137 qc_buildmode_debug = true; 0138 } 0139 else // default 0140 qc_buildmode_release = true; 0141 0142 if(opt_framework) 0143 qc_buildmode_framework = true; 0144 else if(opt_no_framework) 0145 { 0146 // nothing to do 0147 } 0148 else // default 0149 { 0150 if(!staticmode && !opt_debug) 0151 qc_buildmode_framework = true; 0152 } 0153 0154 if(opt_separate_debug_info) 0155 qc_buildmode_separate_debug_info = true; 0156 else if(opt_no_separate_debug_info) 0157 { 0158 // nothing to do 0159 } 0160 else // default 0161 { 0162 #ifndef Q_OS_MAC 0163 qc_buildmode_separate_debug_info = true; 0164 #endif 0165 } 0166 0167 // make the string 0168 QStringList opts; 0169 QString other; 0170 0171 if(qc_buildmode_release && qc_buildmode_debug) 0172 { 0173 opts += "debug_and_release"; 0174 opts += "build_all"; 0175 } 0176 else if(qc_buildmode_release) 0177 opts += "release"; 0178 else // qc_buildmode_debug 0179 opts += "debug"; 0180 0181 #ifdef Q_OS_MAC 0182 if(qc_buildmode_framework) 0183 opts += "lib_bundle"; 0184 #endif 0185 0186 if(qc_buildmode_separate_debug_info) 0187 { 0188 opts += "separate_debug_info"; 0189 other += "QMAKE_CFLAGS += -g\n"; 0190 other += "QMAKE_CXXFLAGS += -g\n"; 0191 } 0192 0193 QString str = QString("CONFIG += ") + opts.join(" ") + '\n'; 0194 conf->addExtra(str); 0195 0196 if(!other.isEmpty()) 0197 conf->addExtra(other); 0198 0199 return true; 0200 } 0201 };