summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-03-23 13:18:29 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2015-03-23 13:18:29 (GMT)
commita37937f7c0a37626298ccc80cffe5ec9fd26aa75 (patch)
tree74a3c4ca11b69ec061d3a81450e3b442aaabf2f1 /Source
parentcc8b8cdc751ff2dfa6e77a69da542d6aef066346 (diff)
parent4178cd88fc01bd38fde2f3ee7a1702cfb4808f93 (diff)
downloadCMake-a37937f7c0a37626298ccc80cffe5ec9fd26aa75.zip
CMake-a37937f7c0a37626298ccc80cffe5ec9fd26aa75.tar.gz
CMake-a37937f7c0a37626298ccc80cffe5ec9fd26aa75.tar.bz2
Merge topic 'xcode-xctest'
4178cd88 Help: Add notes for topic 'xcode-xctest' 87a4b858 Tests: Add XCTest example to test Frameworks and Cocoa App Bundles ba14510b OS X: Add FindXCTest module 3714955b OS X: Add handling for XCTest bundles 54a5cdbb Tests: Compute Xcode version for any generator on OS X
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx12
-rw-r--r--Source/cmTarget.cxx16
-rw-r--r--Source/cmTarget.h3
3 files changed, 28 insertions, 3 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index bd8a1f5..d340e72 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -804,6 +804,10 @@ GetSourcecodeValueFromFileExtension(const std::string& _ext,
{
sourcecode = "compiled.mach-o.objfile";
}
+ else if(ext == "xctest")
+ {
+ sourcecode = "wrapper.cfbundle";
+ }
else if(ext == "xib")
{
keepLastKnownFileType = true;
@@ -2598,7 +2602,9 @@ const char* cmGlobalXCodeGenerator::GetTargetFileType(cmTarget& cmtarget)
case cmTarget::STATIC_LIBRARY:
return "archive.ar";
case cmTarget::MODULE_LIBRARY:
- if (cmtarget.IsCFBundleOnApple())
+ if (cmtarget.IsXCTestOnApple())
+ return "wrapper.cfbundle";
+ else if (cmtarget.IsCFBundleOnApple())
return "wrapper.plug-in";
else
return ((this->XcodeVersion >= 22)?
@@ -2622,7 +2628,9 @@ const char* cmGlobalXCodeGenerator::GetTargetProductType(cmTarget& cmtarget)
case cmTarget::STATIC_LIBRARY:
return "com.apple.product-type.library.static";
case cmTarget::MODULE_LIBRARY:
- if (cmtarget.IsCFBundleOnApple())
+ if (cmtarget.IsXCTestOnApple())
+ return "com.apple.product-type.bundle.unit-test";
+ else if (cmtarget.IsCFBundleOnApple())
return "com.apple.product-type.bundle";
else
return ((this->XcodeVersion >= 22)?
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index b70f60d..b3d1155 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -616,6 +616,13 @@ bool cmTarget::IsCFBundleOnApple() const
}
//----------------------------------------------------------------------------
+bool cmTarget::IsXCTestOnApple() const
+{
+ return (this->IsCFBundleOnApple() &&
+ this->GetPropertyAsBool("XCTEST"));
+}
+
+//----------------------------------------------------------------------------
bool cmTarget::IsBundleOnApple() const
{
return this->IsFrameworkOnApple() || this->IsAppBundleOnApple() ||
@@ -6791,7 +6798,14 @@ std::string cmTarget::GetCFBundleDirectory(const std::string& config,
const char *ext = this->GetProperty("BUNDLE_EXTENSION");
if (!ext)
{
- ext = "bundle";
+ if (this->IsXCTestOnApple())
+ {
+ ext = "xctest";
+ }
+ else
+ {
+ ext = "bundle";
+ }
}
fpath += ext;
fpath += "/Contents";
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index 5170b31..a4ef977 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -527,6 +527,9 @@ public:
/** Return whether this target is a CFBundle (plugin) on Apple. */
bool IsCFBundleOnApple() const;
+ /** Return whether this target is a XCTest on Apple. */
+ bool IsXCTestOnApple() const;
+
/** Return whether this target is an executable Bundle on Apple. */
bool IsAppBundleOnApple() const;