use of com.facebook.buck.apple.XcodeWorkspaceConfigDescription in project buck by facebook.
the class WorkspaceAndProjectGenerator method addExtraWorkspaceSchemes.
private static void addExtraWorkspaceSchemes(TargetGraph projectGraph, AppleDependenciesCache dependenciesCache, ImmutableSortedMap<String, BuildTarget> extraSchemes, ImmutableMap.Builder<String, XcodeWorkspaceConfigDescription.Arg> schemeConfigsBuilder, ImmutableSetMultimap.Builder<String, Optional<TargetNode<?, ?>>> schemeNameToSrcTargetNodeBuilder, ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescription.Arg, ?>> extraTestNodesBuilder) {
for (Map.Entry<String, BuildTarget> extraSchemeEntry : extraSchemes.entrySet()) {
BuildTarget extraSchemeTarget = extraSchemeEntry.getValue();
Optional<TargetNode<?, ?>> extraSchemeNode = projectGraph.getOptional(extraSchemeTarget);
if (!extraSchemeNode.isPresent() || !(extraSchemeNode.get().getDescription() instanceof XcodeWorkspaceConfigDescription)) {
throw new HumanReadableException("Extra scheme target '%s' should be of type 'xcode_workspace_config'", extraSchemeTarget);
}
XcodeWorkspaceConfigDescription.Arg extraSchemeArg = (XcodeWorkspaceConfigDescription.Arg) extraSchemeNode.get().getConstructorArg();
String schemeName = extraSchemeEntry.getKey();
addWorkspaceScheme(projectGraph, dependenciesCache, schemeName, extraSchemeArg, schemeConfigsBuilder, schemeNameToSrcTargetNodeBuilder, extraTestNodesBuilder);
}
}
use of com.facebook.buck.apple.XcodeWorkspaceConfigDescription in project buck by facebook.
the class ProjectCommand method generateWorkspacesForTargets.
@VisibleForTesting
static ImmutableSet<BuildTarget> generateWorkspacesForTargets(final CommandRunnerParams params, final TargetGraphAndTargets targetGraphAndTargets, ImmutableSet<BuildTarget> passedInTargetsSet, ImmutableSet<ProjectGenerator.Option> options, ImmutableList<String> buildWithBuckFlags, Optional<ImmutableSet<UnflavoredBuildTarget>> focusModules, Map<Path, ProjectGenerator> projectGenerators, boolean combinedProject, boolean buildWithBuck) throws IOException, InterruptedException {
ImmutableSet<BuildTarget> targets;
if (passedInTargetsSet.isEmpty()) {
targets = targetGraphAndTargets.getProjectRoots().stream().map(TargetNode::getBuildTarget).collect(MoreCollectors.toImmutableSet());
} else {
targets = passedInTargetsSet;
}
LOG.debug("Generating workspace for config targets %s", targets);
ImmutableSet.Builder<BuildTarget> requiredBuildTargetsBuilder = ImmutableSet.builder();
for (final BuildTarget inputTarget : targets) {
TargetNode<?, ?> inputNode = targetGraphAndTargets.getTargetGraph().get(inputTarget);
XcodeWorkspaceConfigDescription.Arg workspaceArgs;
if (inputNode.getDescription() instanceof XcodeWorkspaceConfigDescription) {
TargetNode<XcodeWorkspaceConfigDescription.Arg, ?> castedWorkspaceNode = castToXcodeWorkspaceTargetNode(inputNode);
workspaceArgs = castedWorkspaceNode.getConstructorArg();
} else if (canGenerateImplicitWorkspaceForDescription(inputNode.getDescription())) {
workspaceArgs = createImplicitWorkspaceArgs(inputNode);
} else {
throw new HumanReadableException("%s must be a xcode_workspace_config, apple_binary, apple_bundle, or apple_library", inputNode);
}
BuckConfig buckConfig = params.getBuckConfig();
AppleConfig appleConfig = new AppleConfig(buckConfig);
HalideBuckConfig halideBuckConfig = new HalideBuckConfig(buckConfig);
CxxBuckConfig cxxBuckConfig = new CxxBuckConfig(buckConfig);
SwiftBuckConfig swiftBuckConfig = new SwiftBuckConfig(buckConfig);
CxxPlatform defaultCxxPlatform = params.getCell().getKnownBuildRuleTypes().getDefaultCxxPlatforms();
WorkspaceAndProjectGenerator generator = new WorkspaceAndProjectGenerator(params.getCell(), targetGraphAndTargets.getTargetGraph(), workspaceArgs, inputTarget, options, combinedProject, buildWithBuck, buildWithBuckFlags, focusModules, !appleConfig.getXcodeDisableParallelizeBuild(), new ExecutableFinder(), params.getEnvironment(), params.getCell().getKnownBuildRuleTypes().getCxxPlatforms(), defaultCxxPlatform, params.getBuckConfig().getView(ParserConfig.class).getBuildFileName(), input -> ActionGraphCache.getFreshActionGraph(params.getBuckEventBus(), targetGraphAndTargets.getTargetGraph().getSubgraph(ImmutableSet.of(input))).getResolver(), params.getBuckEventBus(), halideBuckConfig, cxxBuckConfig, appleConfig, swiftBuckConfig);
ListeningExecutorService executorService = params.getExecutors().get(ExecutorPool.PROJECT);
Preconditions.checkNotNull(executorService, "CommandRunnerParams does not have executor for PROJECT pool");
generator.generateWorkspaceAndDependentProjects(projectGenerators, executorService);
ImmutableSet<BuildTarget> requiredBuildTargetsForWorkspace = generator.getRequiredBuildTargets();
LOG.debug("Required build targets for workspace %s: %s", inputTarget, requiredBuildTargetsForWorkspace);
requiredBuildTargetsBuilder.addAll(requiredBuildTargetsForWorkspace);
}
return requiredBuildTargetsBuilder.build();
}
use of com.facebook.buck.apple.XcodeWorkspaceConfigDescription in project buck by facebook.
the class ProjectCommand method getIdeBasedOnPassedInTargetsAndProjectGraph.
private Ide getIdeBasedOnPassedInTargetsAndProjectGraph(BuckConfig buckConfig, ImmutableSet<BuildTarget> passedInTargetsSet, Optional<TargetGraph> projectGraph) {
if (ide != null) {
return ide;
}
Ide projectIde = getIdeFromBuckConfig(buckConfig).orElse(null);
if (projectIde == null && !passedInTargetsSet.isEmpty() && projectGraph.isPresent()) {
Ide guessedIde = null;
for (BuildTarget buildTarget : passedInTargetsSet) {
Optional<TargetNode<?, ?>> node = projectGraph.get().getOptional(buildTarget);
if (!node.isPresent()) {
throw new HumanReadableException("Project graph %s doesn't contain build target " + "%s", projectGraph.get(), buildTarget);
}
Description<?> description = node.get().getDescription();
boolean canGenerateXcodeProject = canGenerateImplicitWorkspaceForDescription(description);
canGenerateXcodeProject |= description instanceof XcodeWorkspaceConfigDescription;
if (guessedIde == null && canGenerateXcodeProject) {
guessedIde = Ide.XCODE;
} else if (guessedIde == Ide.XCODE && !canGenerateXcodeProject || guessedIde == Ide.INTELLIJ && canGenerateXcodeProject) {
throw new HumanReadableException("Passed targets (%s) contain both Xcode and Idea " + "projects.\nCan't choose Ide from this mixed set. " + "Please pass only Xcode targets or only Idea targets.", passedInTargetsSet);
} else {
guessedIde = Ide.INTELLIJ;
}
}
projectIde = guessedIde;
}
if (projectIde == null) {
throw new HumanReadableException("Please specify ide using --ide option or set ide in " + ".buckconfig");
}
return projectIde;
}
use of com.facebook.buck.apple.XcodeWorkspaceConfigDescription in project buck by facebook.
the class AbstractProjectPredicates method forIde.
/**
* Creates a {@link ProjectPredicates} value type configured for
* the specified IDE.
*/
public static ProjectPredicates forIde(ProjectCommand.Ide targetIde) {
Predicate<TargetNode<?, ?>> projectRootsPredicate;
AssociatedTargetNodePredicate associatedProjectPredicate;
// Prepare the predicates to create the project graph based on the IDE.
switch(targetIde) {
case INTELLIJ:
projectRootsPredicate = input -> input.getDescription() instanceof ProjectConfigDescription;
associatedProjectPredicate = (targetNode, targetGraph) -> {
ProjectConfigDescription.Arg projectArg;
if (targetNode.getDescription() instanceof ProjectConfigDescription) {
projectArg = (ProjectConfigDescription.Arg) targetNode.getConstructorArg();
} else {
return false;
}
BuildTarget projectTarget = null;
if (projectArg.srcTarget.isPresent()) {
projectTarget = projectArg.srcTarget.get();
} else if (projectArg.testTarget.isPresent()) {
projectTarget = projectArg.testTarget.get();
}
return (projectTarget != null && targetGraph.getOptional(projectTarget).isPresent());
};
break;
case XCODE:
projectRootsPredicate = input -> input.getDescription() instanceof XcodeWorkspaceConfigDescription;
associatedProjectPredicate = (targetNode, targetGraph) -> false;
break;
default:
// unreachable
throw new IllegalStateException("'ide' should always be of type 'INTELLIJ' or 'XCODE'");
}
return ProjectPredicates.of(projectRootsPredicate, associatedProjectPredicate);
}
use of com.facebook.buck.apple.XcodeWorkspaceConfigDescription in project buck by facebook.
the class KnownBuildRuleTypes method createBuilder.
@VisibleForTesting
static Builder createBuilder(BuckConfig config, ProjectFilesystem filesystem, ProcessExecutor processExecutor, AndroidDirectoryResolver androidDirectoryResolver) throws InterruptedException, IOException {
Platform platform = Platform.detect();
AndroidBuckConfig androidConfig = new AndroidBuckConfig(config, platform);
Optional<String> ndkVersion = androidConfig.getNdkVersion();
// out which one we will end up using.
if (!ndkVersion.isPresent()) {
ndkVersion = androidDirectoryResolver.getNdkVersion();
}
AppleConfig appleConfig = new AppleConfig(config);
SwiftBuckConfig swiftBuckConfig = new SwiftBuckConfig(config);
final ImmutableList<AppleCxxPlatform> appleCxxPlatforms = buildAppleCxxPlatforms(filesystem, appleConfig.getAppleDeveloperDirectorySupplier(processExecutor), appleConfig.getExtraToolchainPaths(), appleConfig.getExtraPlatformPaths(), config, appleConfig, swiftBuckConfig, processExecutor);
final FlavorDomain<AppleCxxPlatform> platformFlavorsToAppleCxxPlatforms = FlavorDomain.from("Apple C++ Platform", appleCxxPlatforms);
ImmutableMap.Builder<Flavor, SwiftPlatform> swiftPlatforms = ImmutableMap.builder();
for (Flavor flavor : platformFlavorsToAppleCxxPlatforms.getFlavors()) {
Optional<SwiftPlatform> swiftPlatformOptional = platformFlavorsToAppleCxxPlatforms.getValue(flavor).getSwiftPlatform();
if (swiftPlatformOptional.isPresent()) {
swiftPlatforms.put(flavor, swiftPlatformOptional.get());
}
}
CxxBuckConfig cxxBuckConfig = new CxxBuckConfig(config);
// Setup the NDK C/C++ platforms.
Optional<Path> ndkRoot = androidDirectoryResolver.getNdkOrAbsent();
ImmutableMap.Builder<NdkCxxPlatforms.TargetCpuType, NdkCxxPlatform> ndkCxxPlatformsBuilder = ImmutableMap.builder();
if (ndkRoot.isPresent()) {
NdkCxxPlatformCompiler.Type compilerType = androidConfig.getNdkCompiler().orElse(NdkCxxPlatforms.DEFAULT_COMPILER_TYPE);
String gccVersion = androidConfig.getNdkGccVersion().orElse(NdkCxxPlatforms.getDefaultGccVersionForNdk(ndkVersion));
String clangVersion = androidConfig.getNdkClangVersion().orElse(NdkCxxPlatforms.getDefaultClangVersionForNdk(ndkVersion));
String compilerVersion = compilerType == NdkCxxPlatformCompiler.Type.GCC ? gccVersion : clangVersion;
NdkCxxPlatformCompiler compiler = NdkCxxPlatformCompiler.builder().setType(compilerType).setVersion(compilerVersion).setGccVersion(gccVersion).build();
ndkCxxPlatformsBuilder.putAll(NdkCxxPlatforms.getPlatforms(cxxBuckConfig, filesystem, ndkRoot.get(), compiler, androidConfig.getNdkCxxRuntime().orElse(NdkCxxPlatforms.DEFAULT_CXX_RUNTIME), androidConfig.getNdkAppPlatform().orElse(NdkCxxPlatforms.DEFAULT_TARGET_APP_PLATFORM), androidConfig.getNdkCpuAbis().orElse(NdkCxxPlatforms.DEFAULT_CPU_ABIS), platform));
}
ImmutableMap<NdkCxxPlatforms.TargetCpuType, NdkCxxPlatform> ndkCxxPlatforms = ndkCxxPlatformsBuilder.build();
// Create a map of system platforms.
ImmutableMap.Builder<Flavor, CxxPlatform> cxxSystemPlatformsBuilder = ImmutableMap.builder();
// testing our Android NDK support for right now.
for (NdkCxxPlatform ndkCxxPlatform : ndkCxxPlatforms.values()) {
cxxSystemPlatformsBuilder.put(ndkCxxPlatform.getCxxPlatform().getFlavor(), ndkCxxPlatform.getCxxPlatform());
}
for (AppleCxxPlatform appleCxxPlatform : platformFlavorsToAppleCxxPlatforms.getValues()) {
cxxSystemPlatformsBuilder.put(appleCxxPlatform.getCxxPlatform().getFlavor(), appleCxxPlatform.getCxxPlatform());
}
CxxPlatform defaultHostCxxPlatform = DefaultCxxPlatforms.build(platform, filesystem, cxxBuckConfig);
cxxSystemPlatformsBuilder.put(defaultHostCxxPlatform.getFlavor(), defaultHostCxxPlatform);
ImmutableMap<Flavor, CxxPlatform> cxxSystemPlatformsMap = cxxSystemPlatformsBuilder.build();
// Add the host platform if needed (for example, when building on Linux).
Flavor hostFlavor = CxxPlatforms.getHostFlavor();
if (!cxxSystemPlatformsMap.containsKey(hostFlavor)) {
cxxSystemPlatformsBuilder.put(hostFlavor, CxxPlatform.builder().from(defaultHostCxxPlatform).setFlavor(hostFlavor).build());
cxxSystemPlatformsMap = cxxSystemPlatformsBuilder.build();
}
// Add platforms for each cxx flavor obtained from the buck config files
// from sections of the form cxx#{flavor name}.
// These platforms are overrides for existing system platforms.
ImmutableSet<Flavor> possibleHostFlavors = CxxPlatforms.getAllPossibleHostFlavors();
HashMap<Flavor, CxxPlatform> cxxOverridePlatformsMap = new HashMap<Flavor, CxxPlatform>(cxxSystemPlatformsMap);
ImmutableSet<Flavor> cxxFlavors = CxxBuckConfig.getCxxFlavors(config);
for (Flavor flavor : cxxFlavors) {
CxxPlatform baseCxxPlatform = cxxSystemPlatformsMap.get(flavor);
if (baseCxxPlatform == null) {
if (possibleHostFlavors.contains(flavor)) {
// If a flavor is for an alternate host, it's safe to skip.
continue;
}
LOG.info("Applying \"%s\" overrides to default host platform", flavor);
baseCxxPlatform = defaultHostCxxPlatform;
}
cxxOverridePlatformsMap.put(flavor, CxxPlatforms.copyPlatformWithFlavorAndConfig(baseCxxPlatform, platform, new CxxBuckConfig(config, flavor), flavor));
}
// Finalize our "default" host.
// TODO(Ktwu) The host flavor should default to a concrete flavor
// like "linux-x86_64", not "default".
hostFlavor = DefaultCxxPlatforms.FLAVOR;
Optional<String> hostCxxPlatformOverride = cxxBuckConfig.getHostPlatform();
if (hostCxxPlatformOverride.isPresent()) {
Flavor overrideFlavor = InternalFlavor.of(hostCxxPlatformOverride.get());
if (cxxOverridePlatformsMap.containsKey(overrideFlavor)) {
hostFlavor = overrideFlavor;
}
}
CxxPlatform hostCxxPlatform = CxxPlatform.builder().from(cxxOverridePlatformsMap.get(hostFlavor)).setFlavor(DefaultCxxPlatforms.FLAVOR).build();
cxxOverridePlatformsMap.put(DefaultCxxPlatforms.FLAVOR, hostCxxPlatform);
ImmutableMap<Flavor, CxxPlatform> cxxPlatformsMap = ImmutableMap.<Flavor, CxxPlatform>builder().putAll(cxxOverridePlatformsMap).build();
ExecutableFinder executableFinder = new ExecutableFinder();
// Build up the final list of C/C++ platforms.
FlavorDomain<CxxPlatform> cxxPlatforms = new FlavorDomain<>("C/C++ platform", cxxPlatformsMap);
// Get the default target platform from config.
CxxPlatform defaultCxxPlatform = CxxPlatforms.getConfigDefaultCxxPlatform(cxxBuckConfig, cxxPlatformsMap, hostCxxPlatform);
DBuckConfig dBuckConfig = new DBuckConfig(config);
ReactNativeBuckConfig reactNativeBuckConfig = new ReactNativeBuckConfig(config);
RustBuckConfig rustBuckConfig = new RustBuckConfig(config);
GoBuckConfig goBuckConfig = new GoBuckConfig(config, processExecutor, cxxPlatforms);
HalideBuckConfig halideBuckConfig = new HalideBuckConfig(config);
ProGuardConfig proGuardConfig = new ProGuardConfig(config);
DxConfig dxConfig = new DxConfig(config);
PythonBuckConfig pyConfig = new PythonBuckConfig(config, executableFinder);
ImmutableList<PythonPlatform> pythonPlatformsList = pyConfig.getPythonPlatforms(processExecutor);
FlavorDomain<PythonPlatform> pythonPlatforms = FlavorDomain.from("Python Platform", pythonPlatformsList);
PythonBinaryDescription pythonBinaryDescription = new PythonBinaryDescription(pyConfig, pythonPlatforms, cxxBuckConfig, defaultCxxPlatform, cxxPlatforms);
// Look up the timeout to apply to entire test rules.
Optional<Long> defaultTestRuleTimeoutMs = config.getLong("test", "rule_timeout");
// Prepare the downloader if we're allowing mid-build downloads
Downloader downloader;
DownloadConfig downloadConfig = new DownloadConfig(config);
if (downloadConfig.isDownloadAtRuntimeOk()) {
downloader = StackedDownloader.createFromConfig(config, androidDirectoryResolver.getSdkOrAbsent());
} else {
// Or just set one that blows up
downloader = new ExplodingDownloader();
}
Builder builder = builder();
JavaBuckConfig javaConfig = config.getView(JavaBuckConfig.class);
JavacOptions defaultJavacOptions = javaConfig.getDefaultJavacOptions();
JavaOptions defaultJavaOptions = javaConfig.getDefaultJavaOptions();
JavaOptions defaultJavaOptionsForTests = javaConfig.getDefaultJavaOptionsForTests();
KotlinBuckConfig kotlinBuckConfig = new KotlinBuckConfig(config);
ScalaBuckConfig scalaConfig = new ScalaBuckConfig(config);
InferBuckConfig inferBuckConfig = new InferBuckConfig(config);
LuaConfig luaConfig = new LuaBuckConfig(config, executableFinder);
CxxBinaryDescription cxxBinaryDescription = new CxxBinaryDescription(cxxBuckConfig, inferBuckConfig, defaultCxxPlatform, cxxPlatforms);
CxxLibraryDescription cxxLibraryDescription = new CxxLibraryDescription(cxxBuckConfig, defaultCxxPlatform, inferBuckConfig, cxxPlatforms);
FlavorDomain<SwiftPlatform> platformFlavorsToSwiftPlatforms = new FlavorDomain<>("Swift Platform", swiftPlatforms.build());
SwiftLibraryDescription swiftLibraryDescription = new SwiftLibraryDescription(cxxBuckConfig, swiftBuckConfig, cxxPlatforms, platformFlavorsToSwiftPlatforms);
builder.register(swiftLibraryDescription);
CodeSignIdentityStore codeSignIdentityStore = CodeSignIdentityStore.fromSystem(processExecutor, appleConfig.getCodeSignIdentitiesCommand());
ProvisioningProfileStore provisioningProfileStore = ProvisioningProfileStore.fromSearchPath(processExecutor, appleConfig.getProvisioningProfileReadCommand(), appleConfig.getProvisioningProfileSearchPath());
AppleLibraryDescription appleLibraryDescription = new AppleLibraryDescription(cxxLibraryDescription, swiftLibraryDescription, platformFlavorsToAppleCxxPlatforms, defaultCxxPlatform, codeSignIdentityStore, provisioningProfileStore, appleConfig);
builder.register(appleLibraryDescription);
PrebuiltAppleFrameworkDescription appleFrameworkDescription = new PrebuiltAppleFrameworkDescription();
builder.register(appleFrameworkDescription);
AppleBinaryDescription appleBinaryDescription = new AppleBinaryDescription(cxxBinaryDescription, swiftLibraryDescription, platformFlavorsToAppleCxxPlatforms, codeSignIdentityStore, provisioningProfileStore, appleConfig);
builder.register(appleBinaryDescription);
HaskellBuckConfig haskellBuckConfig = new HaskellBuckConfig(config, executableFinder);
builder.register(new HaskellLibraryDescription(haskellBuckConfig, cxxBuckConfig, cxxPlatforms));
builder.register(new HaskellBinaryDescription(haskellBuckConfig, cxxPlatforms, defaultCxxPlatform));
builder.register(new HaskellPrebuiltLibraryDescription());
if (javaConfig.getDxThreadCount().isPresent()) {
LOG.warn("java.dx_threads has been deprecated. Use dx.max_threads instead");
}
// Create an executor service exclusively for the smart dexing step.
ListeningExecutorService dxExecutorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(dxConfig.getDxMaxThreadCount().orElse(javaConfig.getDxThreadCount().orElse(SmartDexingStep.determineOptimalThreadCount())), new CommandThreadFactory("SmartDexing")));
builder.register(new AndroidAarDescription(new AndroidManifestDescription(), cxxBuckConfig, defaultJavacOptions, ndkCxxPlatforms));
builder.register(new AndroidBinaryDescription(defaultJavaOptions, defaultJavacOptions, proGuardConfig, ndkCxxPlatforms, dxExecutorService, config, cxxBuckConfig, dxConfig));
builder.register(new AndroidBuildConfigDescription(defaultJavacOptions));
builder.register(new AndroidInstrumentationApkDescription(proGuardConfig, defaultJavacOptions, ndkCxxPlatforms, dxExecutorService, cxxBuckConfig, dxConfig));
builder.register(new AndroidInstrumentationTestDescription(defaultJavaOptions, defaultTestRuleTimeoutMs));
builder.register(new AndroidLibraryDescription(defaultJavacOptions, new DefaultAndroidLibraryCompilerFactory(scalaConfig, kotlinBuckConfig)));
builder.register(new AndroidManifestDescription());
builder.register(new AndroidPrebuiltAarDescription(defaultJavacOptions));
builder.register(new AndroidReactNativeLibraryDescription(reactNativeBuckConfig));
builder.register(new AndroidResourceDescription(config.isGrayscaleImageProcessingEnabled()));
builder.register(new ApkGenruleDescription());
builder.register(new AppleAssetCatalogDescription());
builder.register(new ApplePackageDescription(appleConfig, defaultCxxPlatform, platformFlavorsToAppleCxxPlatforms));
AppleBundleDescription appleBundleDescription = new AppleBundleDescription(appleBinaryDescription, appleLibraryDescription, cxxPlatforms, platformFlavorsToAppleCxxPlatforms, defaultCxxPlatform, codeSignIdentityStore, provisioningProfileStore, appleConfig);
builder.register(appleBundleDescription);
builder.register(new AppleResourceDescription());
builder.register(new AppleTestDescription(appleConfig, appleLibraryDescription, cxxPlatforms, platformFlavorsToAppleCxxPlatforms, defaultCxxPlatform, codeSignIdentityStore, provisioningProfileStore, appleConfig.getAppleDeveloperDirectorySupplierForTests(processExecutor), defaultTestRuleTimeoutMs));
builder.register(new CoreDataModelDescription());
builder.register(new CsharpLibraryDescription());
builder.register(cxxBinaryDescription);
builder.register(cxxLibraryDescription);
builder.register(new CxxGenruleDescription(cxxPlatforms));
builder.register(new CxxLuaExtensionDescription(luaConfig, cxxBuckConfig, cxxPlatforms));
builder.register(new CxxPythonExtensionDescription(pythonPlatforms, cxxBuckConfig, cxxPlatforms));
builder.register(new CxxTestDescription(cxxBuckConfig, defaultCxxPlatform, cxxPlatforms, defaultTestRuleTimeoutMs));
builder.register(new DBinaryDescription(dBuckConfig, cxxBuckConfig, defaultCxxPlatform));
builder.register(new DLibraryDescription(dBuckConfig, cxxBuckConfig, defaultCxxPlatform));
builder.register(new DTestDescription(dBuckConfig, cxxBuckConfig, defaultCxxPlatform, defaultTestRuleTimeoutMs));
builder.register(new ExportFileDescription());
builder.register(new GenruleDescription());
builder.register(new GenAidlDescription());
builder.register(new GoBinaryDescription(goBuckConfig));
builder.register(new GoLibraryDescription(goBuckConfig));
builder.register(new GoTestDescription(goBuckConfig, defaultTestRuleTimeoutMs));
builder.register(new GraphqlLibraryDescription());
GroovyBuckConfig groovyBuckConfig = new GroovyBuckConfig(config);
builder.register(new GroovyLibraryDescription(groovyBuckConfig, defaultJavacOptions));
builder.register(new GroovyTestDescription(groovyBuckConfig, defaultJavaOptionsForTests, defaultJavacOptions, defaultTestRuleTimeoutMs));
builder.register(new GwtBinaryDescription(defaultJavaOptions));
builder.register(new HalideLibraryDescription(cxxBuckConfig, defaultCxxPlatform, cxxPlatforms, halideBuckConfig));
builder.register(new IosReactNativeLibraryDescription(reactNativeBuckConfig));
builder.register(new JavaBinaryDescription(defaultJavaOptions, defaultJavacOptions, defaultCxxPlatform, javaConfig));
builder.register(new JavaAnnotationProcessorDescription());
builder.register(new JavaLibraryDescription(defaultJavacOptions));
builder.register(new JavaTestDescription(defaultJavaOptionsForTests, defaultJavacOptions, defaultTestRuleTimeoutMs, defaultCxxPlatform));
builder.register(new JsBundleDescription());
builder.register(new JsLibraryDescription());
builder.register(new KeystoreDescription());
builder.register(new KotlinLibraryDescription(kotlinBuckConfig, defaultJavacOptions));
builder.register(new KotlinTestDescription(kotlinBuckConfig, defaultJavaOptionsForTests, defaultJavacOptions, defaultTestRuleTimeoutMs));
builder.register(new LuaBinaryDescription(luaConfig, cxxBuckConfig, defaultCxxPlatform, cxxPlatforms, pythonPlatforms));
builder.register(new LuaLibraryDescription());
builder.register(new NdkLibraryDescription(ndkVersion, ndkCxxPlatforms));
OcamlBuckConfig ocamlBuckConfig = new OcamlBuckConfig(config, defaultCxxPlatform);
builder.register(new OcamlBinaryDescription(ocamlBuckConfig));
builder.register(new OcamlLibraryDescription(ocamlBuckConfig));
builder.register(new PrebuiltCxxLibraryDescription(cxxBuckConfig, cxxPlatforms));
builder.register(PrebuiltCxxLibraryGroupDescription.of());
builder.register(new CxxPrecompiledHeaderDescription());
builder.register(new PrebuiltDotnetLibraryDescription());
builder.register(new PrebuiltJarDescription());
builder.register(new PrebuiltNativeLibraryDescription());
builder.register(new PrebuiltOcamlLibraryDescription());
builder.register(new PrebuiltPythonLibraryDescription());
builder.register(new ProjectConfigDescription());
builder.register(pythonBinaryDescription);
PythonLibraryDescription pythonLibraryDescription = new PythonLibraryDescription(pythonPlatforms, cxxPlatforms);
builder.register(pythonLibraryDescription);
builder.register(new PythonTestDescription(pythonBinaryDescription, pyConfig, pythonPlatforms, cxxBuckConfig, defaultCxxPlatform, defaultTestRuleTimeoutMs, cxxPlatforms));
builder.register(new RemoteFileDescription(downloader));
builder.register(new RobolectricTestDescription(defaultJavaOptionsForTests, defaultJavacOptions, defaultTestRuleTimeoutMs, defaultCxxPlatform));
builder.register(new RustBinaryDescription(rustBuckConfig, cxxPlatforms, defaultCxxPlatform));
builder.register(new RustLibraryDescription(rustBuckConfig, cxxPlatforms, defaultCxxPlatform));
builder.register(new RustTestDescription(rustBuckConfig, cxxPlatforms, defaultCxxPlatform));
builder.register(new PrebuiltRustLibraryDescription());
builder.register(new ScalaLibraryDescription(scalaConfig));
builder.register(new ScalaTestDescription(scalaConfig, defaultJavaOptionsForTests, defaultTestRuleTimeoutMs, defaultCxxPlatform));
builder.register(new SceneKitAssetsDescription());
builder.register(new ShBinaryDescription());
builder.register(new ShTestDescription(defaultTestRuleTimeoutMs));
builder.register(new WorkerToolDescription(config));
builder.register(new XcodePostbuildScriptDescription());
builder.register(new XcodePrebuildScriptDescription());
builder.register(new XcodeWorkspaceConfigDescription());
builder.register(new ZipFileDescription());
builder.register(new TargetGroupDescription());
builder.setCxxPlatforms(cxxPlatforms);
builder.setDefaultCxxPlatform(defaultCxxPlatform);
builder.register(VersionedAliasDescription.of());
return builder;
}
Aggregations