# Why circular plugin inside the NativeComponentPlugin?

**URL:** <https://discuss.gradle.org/t/why-circular-plugin-inside-the-nativecomponentplugin/19148>\
**Category:** Help/Discuss\
**Tags:** software-model\
**Created:** [August 23, 2016, 10:23pm UTC](https://discuss.gradle.org/t/why-circular-plugin-inside-the-nativecomponentplugin/19148 "2016-08-23T22:23:10Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Martin\_d\_Anjou](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/martin_d_anjou/32/5248_2.png) [@Martin\_d\_Anjou](https://discuss.gradle.org/u/Martin_d_Anjou)\
**Post date:** [August 23, 2016, 10:23pm UTC](https://discuss.gradle.org/t/why-circular-plugin-inside-the-nativecomponentplugin/19148/1 "2016-08-23T22:23:10Z")

</div>

I try to learn how the native plugins are structured, and I came across a strange cycle:

1. `CppPlugin` applies `NativeComponentPlugin`
2. `NativeComponentPlugin` applies `StandardToolChainsPlugin`
3. `StandardToolChainsPlugin` applies `GccCompilerPlugin`
4. `GccCompilerPlugin` applies `NativeComponentPlugin` (back to 2)

What purpose does this circular application of the `NativeComponentPlugin` serve?
