diff options
Diffstat (limited to 'qmake')
-rw-r--r-- | qmake/generators/mac/pbuilder_pbx.cpp | 104 | ||||
-rw-r--r-- | qmake/generators/win32/msbuild_objectmodel.cpp | 4 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 4 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.h | 1 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.cpp | 13 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.h | 1 |
6 files changed, 127 insertions, 0 deletions
diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp index 7798130392..3383e66ea6 100644 --- a/qmake/generators/mac/pbuilder_pbx.cpp +++ b/qmake/generators/mac/pbuilder_pbx.cpp @@ -1318,6 +1318,96 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) if(!project->isEmpty("DESTDIR")) t << "\t\t\t" << writeSettings("productInstallPath", project->first("DESTDIR")) << ";\n"; t << "\t\t};\n"; + + // Test target for running Qt unit tests under XCTest + if (project->isActiveConfig("testcase") && project->isActiveConfig("app_bundle")) { + QString devNullFileReferenceKey = keyFor(pbx_dir + "QMAKE_PBX_DEV_NULL_FILE_REFERENCE"); + t << "\t\t" << devNullFileReferenceKey << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", "/dev/null") << ";\n" + << "\t\t\t" << writeSettings("path", "/dev/null") << ";\n" + << "\t\t\t" << writeSettings("lastKnownFileType", "sourcecode.c.c") << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "<absolute>") << ";\n" + << "\t\t};\n"; + + QString devNullBuildFileKey = keyFor(pbx_dir + "QMAKE_PBX_DEV_NULL_BUILD_FILE"); + t << "\t\t" << devNullBuildFileKey << " = {\n" + << "\t\t\t" << writeSettings("fileRef", devNullFileReferenceKey) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXBuildFile", SettingsNoQuote) << ";\n" + << "\t\t};\n"; + + QString dummySourceBuildPhaseKey = keyFor(pbx_dir + "QMAKE_PBX_DUMMY_SOURCE_BUILD_PHASE"); + t << "\t\t" << dummySourceBuildPhaseKey << " = {\n" + << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("files", devNullBuildFileKey, SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXSourcesBuildPhase", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" + << "\t\t};\n"; + + ProStringList testBundleBuildConfigs; + + ProString targetName = project->first("QMAKE_ORIG_TARGET"); + ProString testHost = "$(BUILT_PRODUCTS_DIR)/" + targetName + ".app/"; + if (!project->isActiveConfig("ios")) + testHost.append("Contents/MacOS/"); + testHost.append(targetName); + + static const char * const configs[] = { "Debug", "Release", 0 }; + for (int i = 0; configs[i]; i++) { + QString testBundleBuildConfig = keyFor(pbx_dir + "QMAKE_PBX_TEST_BUNDLE_BUILDCONFIG_" + configs[i]); + t << "\t\t" << testBundleBuildConfig << " = {\n" + << "\t\t\t" << writeSettings("isa", "XCBuildConfiguration", SettingsNoQuote) << ";\n" + << "\t\t\tbuildSettings = {\n" + << "\t\t\t\t" << writeSettings("INFOPLIST_FILE", project->first("QMAKE_XCODE_SPECDIR") + "/QtTest.plist") << ";\n" + << "\t\t\t\t" << writeSettings("OTHER_LDFLAGS", "") << ";\n" + << "\t\t\t\t" << writeSettings("TEST_HOST", testHost) << ";\n" + << "\t\t\t\t" << writeSettings("DEBUG_INFORMATION_FORMAT", "dwarf-with-dsym") << ";\n" + << "\t\t\t};\n" + << "\t\t\t" << writeSettings("name", configs[i], SettingsNoQuote) << ";\n" + << "\t\t};\n"; + + testBundleBuildConfigs.append(testBundleBuildConfig); + } + + QString testBundleBuildConfigurationListKey = keyFor(pbx_dir + "QMAKE_PBX_TEST_BUNDLE_BUILDCONFIG_LIST"); + t << "\t\t" << testBundleBuildConfigurationListKey << " = {\n" + << "\t\t\t" << writeSettings("isa", "XCConfigurationList", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("buildConfigurations", testBundleBuildConfigs, SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("defaultConfigurationIsVisible", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("defaultConfigurationName", "Debug", SettingsNoQuote) << ";\n" + << "\t\t};\n"; + + QString primaryTargetDependencyKey = keyFor(pbx_dir + "QMAKE_PBX_PRIMARY_TARGET_DEP"); + t << "\t\t" << primaryTargetDependencyKey << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXTargetDependency", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("target", keyFor(pbx_dir + "QMAKE_PBX_TARGET")) << ";\n" + << "\t\t};\n"; + + QString testBundleReferenceKey = keyFor("QMAKE_TEST_BUNDLE_REFERENCE"); + t << "\t\t" << testBundleReferenceKey << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("explicitFileType", "wrapper.cfbundle") << ";\n" + << "\t\t\t" << writeSettings("includeInIndex", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "BUILT_PRODUCTS_DIR", SettingsNoQuote) << ";\n" + << "\t\t};\n"; + + QString testTargetKey = keyFor(pbx_dir + "QMAKE_PBX_TEST_TARGET"); + project->values("QMAKE_PBX_TARGETS").append(testTargetKey); + t << "\t\t" << testTargetKey << " = {\n" + << "\t\t\t" << writeSettings("buildPhases", dummySourceBuildPhaseKey, SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("dependencies", primaryTargetDependencyKey, SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("buildConfigurationList", testBundleBuildConfigurationListKey) << ";\n" + << "\t\t\t" << writeSettings("productType", "com.apple.product-type.bundle.unit-test") << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXNativeTarget", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("productReference", testBundleReferenceKey) << ";\n" + << "\t\t\t" << writeSettings("name", "Qt Test") << ";\n" + << "\t\t};\n"; + + QLatin1Literal testTargetID("TestTargetID"); + project->values(ProKey("QMAKE_PBX_TARGET_ATTRIBUTES_" + testTargetKey + "_" + testTargetID)).append(keyFor(pbx_dir + "QMAKE_PBX_TARGET")); + project->values(ProKey("QMAKE_PBX_TARGET_ATTRIBUTES_" + testTargetKey)).append(ProKey(testTargetID)); + } + //DEBUG/RELEASE QString defaultConfig; for(int as_release = 0; as_release < 2; as_release++) @@ -1543,6 +1633,19 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) t << "\t\t\t" << writeSettings("projectDirPath", ProStringList()) << ";\n" << "\t\t\t" << writeSettings("projectRoot", "") << ";\n" << "\t\t\t" << writeSettings("targets", project->values("QMAKE_PBX_TARGETS"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << "attributes = {\n" + << "\t\t\t\tTargetAttributes = {\n"; + foreach (const ProString &target, project->values("QMAKE_PBX_TARGETS")) { + const ProStringList &attributes = project->values(ProKey("QMAKE_PBX_TARGET_ATTRIBUTES_" + target)); + if (attributes.isEmpty()) + continue; + t << "\t\t\t\t\t" << target << " = {\n"; + foreach (const ProString &attribute, attributes) + t << "\t\t\t\t\t\t" << writeSettings(attribute.toQString(), project->first(ProKey("QMAKE_PBX_TARGET_ATTRIBUTES_" + target + "_" + attribute))) << ";\n"; + t << "\t\t\t\t\t};\n"; + } + t << "\t\t\t\t};\n" + << "\t\t\t};\n" << "\t\t};\n"; // FIXME: Deal with developmentRegion and knownRegions for QMAKE_PBX_ROOT @@ -1600,6 +1703,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) schemeData.replace("@QMAKE_ORIG_TARGET@", target); schemeData.replace("@TARGET_PBX_KEY@", keyFor(pbx_dir + "QMAKE_PBX_TARGET")); + schemeData.replace("@TEST_BUNDLE_PBX_KEY@", keyFor("QMAKE_TEST_BUNDLE_REFERENCE")); QTextStream outputSchemeStream(&outputSchemeFile); outputSchemeStream << schemeData; diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp index 3d1b05c9b3..6c2d2c6206 100644 --- a/qmake/generators/win32/msbuild_objectmodel.cpp +++ b/qmake/generators/win32/msbuild_objectmodel.cpp @@ -571,6 +571,7 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProjectSingleConfig &tool) addFilters(tempProj, xmlFilter, "Source Files"); addFilters(tempProj, xmlFilter, "Translation Files"); addFilters(tempProj, xmlFilter, "Deployment Files"); + addFilters(tempProj, xmlFilter, "Distribution Files"); for (int x = 0; x < tempProj.ExtraCompilers.count(); ++x) addFilters(tempProj, xmlFilter, tempProj.ExtraCompilers.at(x)); @@ -585,6 +586,7 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProjectSingleConfig &tool) outputFilter(tempProj, xml, xmlFilter, "Form Files"); outputFilter(tempProj, xml, xmlFilter, "Resource Files"); outputFilter(tempProj, xml, xmlFilter, "Deployment Files"); + outputFilter(tempProj, xml, xmlFilter, "Distribution Files"); for (int x = 0; x < tempProj.ExtraCompilers.count(); ++x) { outputFilter(tempProj, xml, xmlFilter, tempProj.ExtraCompilers.at(x)); @@ -804,6 +806,7 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool) addFilters(tool, xmlFilter, "Source Files"); addFilters(tool, xmlFilter, "Translation Files"); addFilters(tool, xmlFilter, "Deployment Files"); + addFilters(tool, xmlFilter, "Distribution Files"); for (int x = 0; x < tool.ExtraCompilers.count(); ++x) addFilters(tool, xmlFilter, tool.ExtraCompilers.at(x)); @@ -818,6 +821,7 @@ void VCXProjectWriter::write(XmlOutput &xml, VCProject &tool) outputFilter(tool, xml, xmlFilter, "Form Files"); outputFilter(tool, xml, xmlFilter, "Resource Files"); outputFilter(tool, xml, xmlFilter, "Deployment Files"); + outputFilter(tool, xml, xmlFilter, "Distribution Files"); for (int x = 0; x < tool.ExtraCompilers.count(); ++x) { outputFilter(tool, xml, xmlFilter, tool.ExtraCompilers.at(x)); } diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index 4a65d24687..917f4467a0 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -2449,6 +2449,8 @@ const VCFilter &VCProjectSingleConfig::filterByName(const QString &name) const return ResourceFiles; if (name == "Deployment Files") return DeploymentFiles; + if (name == "Distribution Files") + return DistributionFiles; return filterForExtraCompiler(name); } @@ -2531,6 +2533,7 @@ void VCProjectWriter::write(XmlOutput &xml, VCProjectSingleConfig &tool) outputFilter(tempProj, xml, "Form Files"); outputFilter(tempProj, xml, "Resource Files"); outputFilter(tempProj, xml, "Deployment Files"); + outputFilter(tempProj, xml, "Distribution Files"); QSet<QString> extraCompilersInProject; for (int i = 0; i < tool.ExtraCompilersFiles.count(); ++i) { @@ -2584,6 +2587,7 @@ void VCProjectWriter::write(XmlOutput &xml, VCProject &tool) outputFilter(tool, xml, "Form Files"); outputFilter(tool, xml, "Resource Files"); outputFilter(tool, xml, "Deployment Files"); + outputFilter(tool, xml, "Distribution Files"); for (int x = 0; x < tool.ExtraCompilers.count(); ++x) { outputFilter(tool, xml, tool.ExtraCompilers.at(x)); } diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h index 62ea9bc055..59136b16c8 100644 --- a/qmake/generators/win32/msvc_objectmodel.h +++ b/qmake/generators/win32/msvc_objectmodel.h @@ -1010,6 +1010,7 @@ public: VCFilter FormFiles; VCFilter ResourceFiles; VCFilter DeploymentFiles; + VCFilter DistributionFiles; VCFilterList ExtraCompilersFiles; bool flat_files; diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index 57557732c5..4822bcf22a 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -56,6 +56,7 @@ const char _GUIDTranslationFiles[] = "{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C} const char _GUIDFormFiles[] = "{99349809-55BA-4b9d-BF79-8FDBB0286EB3}"; const char _GUIDExtraCompilerFiles[] = "{E0D8C965-CC5F-43d7-AD63-FAEF0BBC0F85}"; const char _GUIDDeploymentFiles[] = "{D9D6E243-F8AF-46E4-B9FD-80ECBC20BA3E}"; +const char _GUIDDistributionFiles[] = "{B83CAF91-C7BF-462F-B76C-EA11631F866C}"; QT_END_NAMESPACE #ifdef Q_OS_WIN32 @@ -943,6 +944,7 @@ void VcprojGenerator::initProject() initTranslationFiles(); initFormFiles(); initResourceFiles(); + initDistributionFiles(); initExtraCompilerOutputs(); // Own elements ----------------------------- @@ -1565,6 +1567,17 @@ void VcprojGenerator::initResourceFiles() vcProject.ResourceFiles.Config = &(vcProject.Configuration); } +void VcprojGenerator::initDistributionFiles() +{ + vcProject.DistributionFiles.Name = "Distribution Files"; + vcProject.DistributionFiles.ParseFiles = _False; + vcProject.DistributionFiles.Filter = "*"; + vcProject.DistributionFiles.Guid = _GUIDDistributionFiles; + vcProject.DistributionFiles.addFiles(project->values("DISTFILES")); + vcProject.DistributionFiles.Project = this; + vcProject.DistributionFiles.Config = &(vcProject.Configuration); +} + void VcprojGenerator::initExtraCompilerOutputs() { ProStringList otherFilters; diff --git a/qmake/generators/win32/msvc_vcproj.h b/qmake/generators/win32/msvc_vcproj.h index 87cc39f323..3396ea4986 100644 --- a/qmake/generators/win32/msvc_vcproj.h +++ b/qmake/generators/win32/msvc_vcproj.h @@ -108,6 +108,7 @@ protected: void initFormFiles(); void initResourceFiles(); void initDeploymentFiles(); + void initDistributionFiles(); void initLexYaccFiles(); void initExtraCompilerOutputs(); |