From 01f08fcb3cf11b11102ae030d2ba14c24e68dcd7 Mon Sep 17 00:00:00 2001 From: Gary Hale Date: Mon, 1 Jul 2024 10:22:09 -0400 Subject: [PATCH] Fix plugin name and clean up some rough edges --- .../testbed-cpp-application/src/main/cpp/main.cpp | 2 +- .../unified-plugin/plugin-cpp/build.gradle.kts | 2 +- .../cpp/StandaloneCppApplicationPlugin.java | 13 ++++++++----- .../cpp/StandaloneCppLibraryPlugin.java | 13 ++++++++----- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/unified-prototype/testbed-cpp-application/src/main/cpp/main.cpp b/unified-prototype/testbed-cpp-application/src/main/cpp/main.cpp index fd2b10ed..65c806a5 100644 --- a/unified-prototype/testbed-cpp-application/src/main/cpp/main.cpp +++ b/unified-prototype/testbed-cpp-application/src/main/cpp/main.cpp @@ -17,7 +17,7 @@ string os() { #ifdef __MACH__ return "macOS"; #else - return "unknown OS" + return "unknown OS"; #endif } diff --git a/unified-prototype/unified-plugin/plugin-cpp/build.gradle.kts b/unified-prototype/unified-plugin/plugin-cpp/build.gradle.kts index 162769c6..c49c62fd 100644 --- a/unified-prototype/unified-plugin/plugin-cpp/build.gradle.kts +++ b/unified-prototype/unified-plugin/plugin-cpp/build.gradle.kts @@ -21,7 +21,7 @@ gradlePlugin { implementationClass = "org.gradle.api.experimental.cpp.StandaloneCppApplicationPlugin" tags = setOf("declarative-gradle") } - create("swift-ecosystem") { + create("cpp-ecosystem") { id = "org.gradle.experimental.cpp-ecosystem" implementationClass = "org.gradle.api.experimental.cpp.CppEcosystemPlugin" tags = setOf("declarative-gradle") diff --git a/unified-prototype/unified-plugin/plugin-cpp/src/main/java/org/gradle/api/experimental/cpp/StandaloneCppApplicationPlugin.java b/unified-prototype/unified-plugin/plugin-cpp/src/main/java/org/gradle/api/experimental/cpp/StandaloneCppApplicationPlugin.java index 31dab5bd..d4502614 100644 --- a/unified-prototype/unified-plugin/plugin-cpp/src/main/java/org/gradle/api/experimental/cpp/StandaloneCppApplicationPlugin.java +++ b/unified-prototype/unified-plugin/plugin-cpp/src/main/java/org/gradle/api/experimental/cpp/StandaloneCppApplicationPlugin.java @@ -15,12 +15,15 @@ import org.gradle.util.internal.TextUtil; public abstract class StandaloneCppApplicationPlugin implements Plugin { - @SoftwareType(name = "cppApplication", modelPublicType = CppApplication.class) + public static final String CPP_APPLICATION = "cppApplication"; + + @SoftwareType(name = CPP_APPLICATION) abstract public CppApplication getApplication(); @Override public void apply(Project target) { CppApplication application = getApplication(); + target.getExtensions().add(CPP_APPLICATION, application); target.getPlugins().apply(CppApplicationPlugin.class); target.getPlugins().apply(CliApplicationConventionsPlugin.class); @@ -33,8 +36,8 @@ private void linkDslModelToPlugin(Project project, CppApplication application) { model.getImplementationDependencies().getDependencies().addAllLater(application.getDependencies().getImplementation().getDependencies()); - project.afterEvaluate(p -> { - for (CppBinary binary : model.getBinaries().get()) { + project.getComponents().withType(org.gradle.language.cpp.CppApplication.class).configureEach(applicationComponent -> + applicationComponent.getBinaries().configureEach(binary -> { binary.getCompileTask().get().getCompilerArgs().add(application.getCppVersion().map(v -> "--std=" + v)); if (binary instanceof CppExecutable) { Provider executable = ((CppExecutable) binary).getDebuggerExecutableFile(); @@ -44,7 +47,7 @@ private void linkDslModelToPlugin(Project project, CppApplication application) { }); application.getRunTasks().add(runTask); } - } - }); + }) + ); } } diff --git a/unified-prototype/unified-plugin/plugin-cpp/src/main/java/org/gradle/api/experimental/cpp/StandaloneCppLibraryPlugin.java b/unified-prototype/unified-plugin/plugin-cpp/src/main/java/org/gradle/api/experimental/cpp/StandaloneCppLibraryPlugin.java index 38704289..018e6158 100644 --- a/unified-prototype/unified-plugin/plugin-cpp/src/main/java/org/gradle/api/experimental/cpp/StandaloneCppLibraryPlugin.java +++ b/unified-prototype/unified-plugin/plugin-cpp/src/main/java/org/gradle/api/experimental/cpp/StandaloneCppLibraryPlugin.java @@ -7,12 +7,15 @@ import org.gradle.language.cpp.plugins.CppLibraryPlugin; public abstract class StandaloneCppLibraryPlugin implements Plugin { - @SoftwareType(name = "cppLibrary", modelPublicType = CppLibrary.class) + public static final String CPP_LIBRARY = "cppLibrary"; + + @SoftwareType(name = CPP_LIBRARY) abstract public CppLibrary getLibrary(); @Override public void apply(Project target) { CppLibrary library = getLibrary(); + target.getExtensions().add(CPP_LIBRARY, library); target.getPlugins().apply(CppLibraryPlugin.class); @@ -25,10 +28,10 @@ private void linkDslModelToPlugin(Project project, CppLibrary library) { model.getImplementationDependencies().getDependencies().addAllLater(library.getDependencies().getImplementation().getDependencies()); model.getApiDependencies().getDependencies().addAllLater(library.getDependencies().getApi().getDependencies()); - project.afterEvaluate(p -> { - for (CppBinary binary : model.getBinaries().get()) { + project.getComponents().withType(org.gradle.language.cpp.CppLibrary.class).configureEach(libraryComponent -> + libraryComponent.getBinaries().configureEach(binary -> { binary.getCompileTask().get().getCompilerArgs().add(library.getCppVersion().map(v -> "--std=" + v)); - } - }); + }) + ); } }