mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
The SDK directory is now confusing as the Windows target also has a SDK overlay. In order to make this more uniform, move the SDK directory to Darwin which covers the fact that this covers the XNU family of OSes. The Windows directory contains the SDK overlay for the Windows target.
47 lines
1.6 KiB
Plaintext
47 lines
1.6 KiB
Plaintext
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
#include <objc/runtime.h>
|
|
|
|
// This method is only used on "embedded" targets. It's not necessary on
|
|
// Mac or simulators.
|
|
#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
|
|
|
|
/// CoreFoundation SPI for finding the enclosing bundle. This is only
|
|
/// ever called on older OSes, so there's no worry of running into
|
|
/// trouble if the implementation is changed later on.
|
|
extern "C" CFURLRef _CFBundleCopyBundleURLForExecutableURL(CFURLRef url);
|
|
|
|
@implementation NSBundle (SwiftAdditions)
|
|
|
|
/// Given an executable path as a C string, look up the corresponding
|
|
/// NSBundle instance, if any.
|
|
+ (NSBundle *)_swift_bundleWithExecutablePath: (const char *)path {
|
|
NSString *nspath = [[NSFileManager defaultManager]
|
|
stringWithFileSystemRepresentation:path length:strlen(path)];
|
|
NSURL *executableURL = [NSURL fileURLWithPath:nspath];
|
|
NSURL *bundleURL =
|
|
(NSURL *)_CFBundleCopyBundleURLForExecutableURL((CFURLRef)executableURL);
|
|
if (!bundleURL)
|
|
return nil;
|
|
|
|
NSBundle *bundle = [NSBundle bundleWithURL: bundleURL];
|
|
[bundleURL release];
|
|
return bundle;
|
|
}
|
|
|
|
@end
|
|
|
|
#endif
|