Search in sources :

Example 11 with NativeToolChainInternal

use of org.gradle.nativeplatform.toolchain.internal.NativeToolChainInternal in project gradle by gradle.

the class AbstractLinkTask method createCompiler.

@SuppressWarnings("unchecked")
private Compiler<LinkerSpec> createCompiler() {
    NativePlatformInternal targetPlatform = Cast.cast(NativePlatformInternal.class, this.targetPlatform.get());
    NativeToolChainInternal toolChain = Cast.cast(NativeToolChainInternal.class, getToolChain().get());
    PlatformToolProvider toolProvider = toolChain.select(targetPlatform);
    Class<LinkerSpec> linkerSpecType = (Class<LinkerSpec>) createLinkerSpec().getClass();
    return toolProvider.newCompiler(linkerSpecType);
}
Also used : LinkerSpec(org.gradle.nativeplatform.internal.LinkerSpec) NativeToolChainInternal(org.gradle.nativeplatform.toolchain.internal.NativeToolChainInternal) PlatformToolProvider(org.gradle.nativeplatform.toolchain.internal.PlatformToolProvider) NativePlatformInternal(org.gradle.nativeplatform.platform.internal.NativePlatformInternal)

Example 12 with NativeToolChainInternal

use of org.gradle.nativeplatform.toolchain.internal.NativeToolChainInternal in project gradle by gradle.

the class ExtractSymbols method createCompiler.

private Compiler<SymbolExtractorSpec> createCompiler() {
    NativePlatformInternal targetPlatform = Cast.cast(NativePlatformInternal.class, this.targetPlatform.get());
    NativeToolChainInternal toolChain = Cast.cast(NativeToolChainInternal.class, getToolChain().get());
    PlatformToolProvider toolProvider = toolChain.select(targetPlatform);
    return toolProvider.newCompiler(SymbolExtractorSpec.class);
}
Also used : NativeToolChainInternal(org.gradle.nativeplatform.toolchain.internal.NativeToolChainInternal) PlatformToolProvider(org.gradle.nativeplatform.toolchain.internal.PlatformToolProvider) NativePlatformInternal(org.gradle.nativeplatform.platform.internal.NativePlatformInternal)

Example 13 with NativeToolChainInternal

use of org.gradle.nativeplatform.toolchain.internal.NativeToolChainInternal in project gradle by gradle.

the class CreateStaticLibrary method createCompiler.

private Compiler<StaticLibraryArchiverSpec> createCompiler() {
    NativePlatformInternal targetPlatform = Cast.cast(NativePlatformInternal.class, this.targetPlatform.get());
    NativeToolChainInternal toolChain = Cast.cast(NativeToolChainInternal.class, getToolChain().get());
    PlatformToolProvider toolProvider = toolChain.select(targetPlatform);
    return toolProvider.newCompiler(StaticLibraryArchiverSpec.class);
}
Also used : NativeToolChainInternal(org.gradle.nativeplatform.toolchain.internal.NativeToolChainInternal) PlatformToolProvider(org.gradle.nativeplatform.toolchain.internal.PlatformToolProvider) NativePlatformInternal(org.gradle.nativeplatform.platform.internal.NativePlatformInternal)

Example 14 with NativeToolChainInternal

use of org.gradle.nativeplatform.toolchain.internal.NativeToolChainInternal in project gradle by gradle.

the class CompileTaskConfig method configureCompileTaskCommon.

private void configureCompileTaskCommon(final AbstractNativeCompileTask task, final NativeBinarySpecInternal binary, final LanguageSourceSetInternal sourceSet) {
    task.getToolChain().set(binary.getToolChain());
    task.getTargetPlatform().set(binary.getTargetPlatform());
    task.setPositionIndependentCode(binary instanceof SharedLibraryBinarySpec);
    task.includes(((HeaderExportingSourceSet) sourceSet).getExportedHeaders().getSourceDirectories());
    task.includes(new Callable<List<FileCollection>>() {

        @Override
        public List<FileCollection> call() {
            Collection<NativeDependencySet> libs = binary.getLibs((DependentSourceSet) sourceSet);
            return CollectionUtils.collect(libs, new Transformer<FileCollection, NativeDependencySet>() {

                @Override
                public FileCollection transform(NativeDependencySet original) {
                    return original.getIncludeRoots();
                }
            });
        }
    });
    FileCollectionFactory fileCollectionFactory = ((ProjectInternal) task.getProject()).getServices().get(FileCollectionFactory.class);
    task.getSystemIncludes().from(fileCollectionFactory.create(new MinimalFileSet() {

        @Override
        public Set<File> getFiles() {
            PlatformToolProvider platformToolProvider = ((NativeToolChainInternal) binary.getToolChain()).select((NativePlatformInternal) binary.getTargetPlatform());
            ToolType toolType = languageTransform.getToolType();
            return new LinkedHashSet<File>(platformToolProvider.getSystemLibraries(toolType).getIncludeDirs());
        }

        @Override
        public String getDisplayName() {
            return "System includes for " + binary.getToolChain().getDisplayName();
        }
    }));
    for (String toolName : languageTransform.getBinaryTools().keySet()) {
        Tool tool = binary.getToolByName(toolName);
        if (tool instanceof PreprocessingTool) {
            task.setMacros(((PreprocessingTool) tool).getMacros());
        }
        task.getCompilerArgs().set(tool.getArgs());
    }
}
Also used : LinkedHashSet(java.util.LinkedHashSet) Transformer(org.gradle.api.Transformer) PreprocessingTool(org.gradle.nativeplatform.PreprocessingTool) ToolType(org.gradle.nativeplatform.toolchain.internal.ToolType) SharedLibraryBinarySpec(org.gradle.nativeplatform.SharedLibraryBinarySpec) MinimalFileSet(org.gradle.api.internal.file.collections.MinimalFileSet) NativeToolChainInternal(org.gradle.nativeplatform.toolchain.internal.NativeToolChainInternal) DependentSourceSet(org.gradle.language.nativeplatform.DependentSourceSet) HeaderExportingSourceSet(org.gradle.language.nativeplatform.HeaderExportingSourceSet) PlatformToolProvider(org.gradle.nativeplatform.toolchain.internal.PlatformToolProvider) FileCollection(org.gradle.api.file.FileCollection) Collection(java.util.Collection) List(java.util.List) File(java.io.File) NativeDependencySet(org.gradle.nativeplatform.NativeDependencySet) FileCollectionFactory(org.gradle.api.internal.file.FileCollectionFactory) PreprocessingTool(org.gradle.nativeplatform.PreprocessingTool) Tool(org.gradle.nativeplatform.Tool)

Example 15 with NativeToolChainInternal

use of org.gradle.nativeplatform.toolchain.internal.NativeToolChainInternal in project gradle by gradle.

the class AssembleTaskConfig method configureAssembleTask.

private void configureAssembleTask(Assemble task, final NativeBinarySpecInternal binary, final LanguageSourceSetInternal sourceSet) {
    task.setDescription("Assembles the " + sourceSet + " of " + binary);
    task.getToolChain().set(binary.getToolChain());
    task.getTargetPlatform().set(binary.getTargetPlatform());
    task.source(sourceSet.getSource());
    FileCollectionFactory fileCollectionFactory = ((ProjectInternal) task.getProject()).getServices().get(FileCollectionFactory.class);
    task.includes(fileCollectionFactory.create(new MinimalFileSet() {

        @Override
        public Set<File> getFiles() {
            PlatformToolProvider platformToolProvider = ((NativeToolChainInternal) binary.getToolChain()).select((NativePlatformInternal) binary.getTargetPlatform());
            return new LinkedHashSet<File>(platformToolProvider.getSystemLibraries(ToolType.ASSEMBLER).getIncludeDirs());
        }

        @Override
        public String getDisplayName() {
            return "System includes for " + binary.getToolChain().getDisplayName();
        }
    }));
    final Project project = task.getProject();
    task.setObjectFileDir(new File(binary.getNamingScheme().getOutputDirectory(project.getBuildDir(), "objs"), sourceSet.getProjectScopedName()));
    Tool assemblerTool = binary.getToolByName("assembler");
    task.setAssemblerArgs(assemblerTool.getArgs());
    binary.binaryInputs(task.getOutputs().getFiles().getAsFileTree().matching(new PatternSet().include("**/*.obj", "**/*.o")));
}
Also used : LinkedHashSet(java.util.LinkedHashSet) NativeToolChainInternal(org.gradle.nativeplatform.toolchain.internal.NativeToolChainInternal) Project(org.gradle.api.Project) PlatformToolProvider(org.gradle.nativeplatform.toolchain.internal.PlatformToolProvider) MinimalFileSet(org.gradle.api.internal.file.collections.MinimalFileSet) File(java.io.File) PatternSet(org.gradle.api.tasks.util.PatternSet) FileCollectionFactory(org.gradle.api.internal.file.FileCollectionFactory) Tool(org.gradle.nativeplatform.Tool)

Aggregations

NativeToolChainInternal (org.gradle.nativeplatform.toolchain.internal.NativeToolChainInternal)23 PlatformToolProvider (org.gradle.nativeplatform.toolchain.internal.PlatformToolProvider)20 NativePlatformInternal (org.gradle.nativeplatform.platform.internal.NativePlatformInternal)12 File (java.io.File)6 TaskAction (org.gradle.api.tasks.TaskAction)5 BuildOperationLogger (org.gradle.internal.operations.logging.BuildOperationLogger)5 DefaultNativePlatform (org.gradle.nativeplatform.platform.internal.DefaultNativePlatform)5 Project (org.gradle.api.Project)4 NativeCompileSpec (org.gradle.nativeplatform.toolchain.internal.NativeCompileSpec)4 NativeToolChainRegistryInternal (org.gradle.nativeplatform.toolchain.internal.NativeToolChainRegistryInternal)4 LinkedHashSet (java.util.LinkedHashSet)3 FileCollectionFactory (org.gradle.api.internal.file.FileCollectionFactory)3 MinimalFileSet (org.gradle.api.internal.file.collections.MinimalFileSet)3 WorkResult (org.gradle.api.tasks.WorkResult)3 Names (org.gradle.language.nativeplatform.internal.Names)3 SwiftPlatform (org.gradle.language.swift.SwiftPlatform)3 DefaultSwiftPlatform (org.gradle.language.swift.internal.DefaultSwiftPlatform)3 NativeLanguage (org.gradle.nativeplatform.toolchain.internal.NativeLanguage)3 List (java.util.List)2 Callable (java.util.concurrent.Callable)2