Search in sources :

Example 1 with PBXNativeTarget

use of org.gradle.ide.xcode.internal.xcodeproj.PBXNativeTarget in project gradle by gradle.

the class GenerateXcodeProjectFileTask method toIndexPbxTarget.

private PBXTarget toIndexPbxTarget(XcodeTarget xcodeTarget) {
    PBXNativeTarget target = new PBXNativeTarget("[INDEXING ONLY] " + xcodeTarget.getName(), PBXTarget.ProductType.INDEXER);
    target.setProductName(xcodeTarget.getProductName());
    target.getBuildPhases().add(newSourceBuildPhase(xcodeTarget.getSources()));
    xcodeTarget.getBinaries().forEach(configureBuildSettings(xcodeTarget, target));
    // Create unbuildable build configuration so the indexer can keep functioning
    if (xcodeTarget.getBinaries().isEmpty()) {
        NSDictionary settings = newBuildSettings(xcodeTarget);
        target.getBuildConfigurationList().getBuildConfigurationsByName().getUnchecked(UNBUILDABLE_BUILD_CONFIGURATION_NAME).setBuildSettings(settings);
    }
    return target;
}
Also used : PBXNativeTarget(org.gradle.ide.xcode.internal.xcodeproj.PBXNativeTarget) NSDictionary(com.dd.plist.NSDictionary)

Example 2 with PBXNativeTarget

use of org.gradle.ide.xcode.internal.xcodeproj.PBXNativeTarget in project gradle by gradle.

the class GenerateXcodeProjectFileTask method toXCTestPbxTarget.

private PBXTarget toXCTestPbxTarget(XcodeTarget xcodeTarget) {
    PBXShellScriptBuildPhase hackBuildPhase = new PBXShellScriptBuildPhase();
    hackBuildPhase.setShellPath("/bin/sh");
    hackBuildPhase.setShellScript("# Script to generate specific Swift files Xcode expects when running tests.\n" + "set -eu\n" + "ARCH_ARRAY=($ARCHS)\n" + "SUFFIXES=(swiftdoc swiftmodule h)\n" + "for ARCH in \"${ARCH_ARRAY[@]}\"\n" + "do\n" + "  for SUFFIX in \"${SUFFIXES[@]}\"\n" + "  do\n" + "    touch \"$OBJECT_FILE_DIR_normal/$ARCH/$PRODUCT_NAME.$SUFFIX\"\n" + "  done\n" + "done");
    PBXShellScriptBuildPhase gradleBuildPhase = new PBXShellScriptBuildPhase();
    gradleBuildPhase.setShellPath("/bin/sh");
    gradleBuildPhase.setShellScript("exec \"" + xcodeTarget.getGradleCommand() + "\" " + buildGradleArgs(xcodeTarget) + " < /dev/null");
    PBXNativeTarget target = new PBXNativeTarget(xcodeTarget.getName(), xcodeTarget.getProductType());
    target.setProductName(xcodeTarget.getProductName());
    target.setGlobalID(xcodeTarget.getId());
    // Note the order in which the build phase are added is important
    target.getBuildPhases().add(hackBuildPhase);
    target.getBuildPhases().add(newSourceBuildPhase(xcodeTarget.getSources()));
    target.getBuildPhases().add(gradleBuildPhase);
    File outputFile = xcodeTarget.getDebugOutputFile().get().getAsFile();
    target.setProductReference(new PBXFileReference(outputFile.getName(), outputFile.getAbsolutePath(), PBXReference.SourceTree.ABSOLUTE));
    getAllBinaries().stream().filter(it -> !Objects.equals(it.getBuildConfigurationName(), TEST_DEBUG)).forEach(configureBuildSettings(xcodeTarget, target));
    NSDictionary testRunnerSettings = target.getBuildConfigurationList().getBuildConfigurationsByName().getUnchecked(TEST_DEBUG).getBuildSettings();
    if (!xcodeTarget.getCompileModules().isEmpty()) {
        testRunnerSettings.put("SWIFT_INCLUDE_PATHS", toSpaceSeparatedList(parentDirs(xcodeTarget.getCompileModules())));
    }
    testRunnerSettings.put("SWIFT_VERSION", toXcodeSwiftVersion(xcodeTarget.getSwiftSourceCompatibility()));
    testRunnerSettings.put("PRODUCT_NAME", target.getProductName());
    testRunnerSettings.put("OTHER_LDFLAGS", "-help");
    testRunnerSettings.put("OTHER_CFLAGS", "-help");
    testRunnerSettings.put("OTHER_SWIFT_FLAGS", "-help");
    testRunnerSettings.put("SWIFT_INSTALL_OBJC_HEADER", "NO");
    testRunnerSettings.put("SWIFT_OBJC_INTERFACE_HEADER_NAME", "$(PRODUCT_NAME).h");
    return target;
}
Also used : DefaultXcodeProject(org.gradle.ide.xcode.internal.DefaultXcodeProject) PBXProject(org.gradle.ide.xcode.internal.xcodeproj.PBXProject) PBXSourcesBuildPhase(org.gradle.ide.xcode.internal.xcodeproj.PBXSourcesBuildPhase) HashMap(java.util.HashMap) FileCollection(org.gradle.api.file.FileCollection) DisableCachingByDefault(org.gradle.work.DisableCachingByDefault) GidGenerator(org.gradle.ide.xcode.internal.xcodeproj.GidGenerator) ArrayList(java.util.ArrayList) PBXFileReference(org.gradle.ide.xcode.internal.xcodeproj.PBXFileReference) Inject(javax.inject.Inject) TEST_DEBUG(org.gradle.ide.xcode.internal.DefaultXcodeProject.TEST_DEBUG) Provider(org.gradle.api.provider.Provider) Optional(com.google.common.base.Optional) Map(java.util.Map) XcodeBinary(org.gradle.ide.xcode.internal.XcodeBinary) NSString(com.dd.plist.NSString) XcodeProjectFile(org.gradle.ide.xcode.tasks.internal.XcodeProjectFile) XcodePropertyAdapter(org.gradle.ide.xcode.internal.XcodePropertyAdapter) PBXLegacyTarget(org.gradle.ide.xcode.internal.xcodeproj.PBXLegacyTarget) PBXShellScriptBuildPhase(org.gradle.ide.xcode.internal.xcodeproj.PBXShellScriptBuildPhase) Incubating(org.gradle.api.Incubating) Internal(org.gradle.api.tasks.Internal) PBXTarget(org.gradle.ide.xcode.internal.xcodeproj.PBXTarget) PropertyListGeneratorTask(org.gradle.plugins.ide.api.PropertyListGeneratorTask) NSDictionary(com.dd.plist.NSDictionary) Action(org.gradle.api.Action) SwiftVersion(org.gradle.language.swift.SwiftVersion) PBXNativeTarget(org.gradle.ide.xcode.internal.xcodeproj.PBXNativeTarget) XcodeUtils.toSpaceSeparatedList(org.gradle.ide.xcode.internal.XcodeUtils.toSpaceSeparatedList) Collection(java.util.Collection) PBXBuildFile(org.gradle.ide.xcode.internal.xcodeproj.PBXBuildFile) Cast(org.gradle.internal.Cast) Collectors(java.util.stream.Collectors) PBXGroup(org.gradle.ide.xcode.internal.xcodeproj.PBXGroup) File(java.io.File) Objects(java.util.Objects) Consumer(java.util.function.Consumer) XcodeprojSerializer(org.gradle.ide.xcode.internal.xcodeproj.XcodeprojSerializer) MachineArchitecture(org.gradle.nativeplatform.MachineArchitecture) XcodeProject(org.gradle.ide.xcode.XcodeProject) List(java.util.List) PBXReference(org.gradle.ide.xcode.internal.xcodeproj.PBXReference) Joiner(com.google.common.base.Joiner) XcodeTarget(org.gradle.ide.xcode.internal.XcodeTarget) PBXShellScriptBuildPhase(org.gradle.ide.xcode.internal.xcodeproj.PBXShellScriptBuildPhase) PBXNativeTarget(org.gradle.ide.xcode.internal.xcodeproj.PBXNativeTarget) NSDictionary(com.dd.plist.NSDictionary) XcodeProjectFile(org.gradle.ide.xcode.tasks.internal.XcodeProjectFile) PBXBuildFile(org.gradle.ide.xcode.internal.xcodeproj.PBXBuildFile) File(java.io.File) PBXFileReference(org.gradle.ide.xcode.internal.xcodeproj.PBXFileReference)

Aggregations

NSDictionary (com.dd.plist.NSDictionary)2 PBXNativeTarget (org.gradle.ide.xcode.internal.xcodeproj.PBXNativeTarget)2 NSString (com.dd.plist.NSString)1 Joiner (com.google.common.base.Joiner)1 Optional (com.google.common.base.Optional)1 File (java.io.File)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 Objects (java.util.Objects)1 Consumer (java.util.function.Consumer)1 Collectors (java.util.stream.Collectors)1 Inject (javax.inject.Inject)1 Action (org.gradle.api.Action)1 Incubating (org.gradle.api.Incubating)1 FileCollection (org.gradle.api.file.FileCollection)1 Provider (org.gradle.api.provider.Provider)1 Internal (org.gradle.api.tasks.Internal)1