Upgrading from Gradle 6 to Gradle 8

Hello Gradle Community,

I’m working on integrating a custom toolchain for the our processor into a Gradle 8.8 project. Specifically, we have our own implementation of GCC for this architecture.

Context:

With the previous version of Gradle, we were using models and platforms, see below:

class coolidgePlugin implements Plugin<Project> {
    @Override
    void apply(Project project) {
        project.plugins.apply('cpp-application')

        project.model {
            platforms {
                coolidge {
                    architecture "brane"
                    operatingSystem "linux"
                }
            }
            toolChains {
                gcc(Gcc) {
                    target("braneManycore"){
                        cppCompiler.executable 'br-g++'
                        assembler.executable 'br-g++'
                        linker.executable 'br-g++'
                    }
                }
            }
        }
    }
}

Question:

  1. What is the recommended approach for creating and integrating a custom toolchain in Gradle 8.8? There has been a lot of changes in the API and we’re don’t know what is the best option.

  2. If extending GccToolChain is the recommended route, could you provide guidance or examples on how to properly set up and instantiate the necessary internal dependencies in Gradle 8.8?

  3. Which approach is likely to offer better stability and maintainability with future Gradle versions?

Thank you in advance for your insights and recommendations!
Nicolas