diff --git a/docs/java.dot b/docs/java.dot new file mode 100644 index 000000000..ad7628d26 --- /dev/null +++ b/docs/java.dot @@ -0,0 +1,127 @@ +digraph java { + //rankdir="LR"; + //splines="false"; + //cluster=true; + //node [ ordering="in" ]; + node [ shape="rect" style="rounded" color="blue" ]; + + { + rank="same"; + lib_java_sources [ label="library\njava sources" group="lib" ]; + lib2_java_sources [ label="library\njava sources" group="lib2" ]; + app_java_sources [ label="app\njava sources" group="app" ]; + } + + node [ group="lib"]; + { + rank="same"; + lib_java_classes [ label="library java\n.class files" ]; + lib_java_headers [ label="library java\nheader .class files" ]; + } + + node [ group="lib2"]; + { + rank="same"; + lib_spacer [ style=invis width=4 ]; + lib2_java_classes [ label="library java\n.class files" ]; + lib2_java_headers [ label="library java\nheader .class files" ]; + } + { + rank="same"; + lib2_combined_classes [ label="combined library\n.class files" ]; + lib2_combined_headers [ label="combined library\nheader .class files" ]; + } + + node [ group="app"]; + { + rank="same"; + lib2_spacer [ style=invis width=4 ]; + app_java_classes [ label="app java\n.class files" ]; + } + { + rank="same"; + app_combined_classes [ label="combined app and library\n.class files" ]; + } + { + rank="same"; + app_dex [ label="app classes.dex files" ]; + } + + + node [ shape="rect" style="" color="black" ]; + node [ group="lib"]; + { + rank="same"; + lib_turbine_action [ label="turbine" ]; + lib_javac_action [ label="javac" ]; + } + + node [ group="lib2"]; + { + rank="same"; + lib2_turbine_action [ label="turbine" ]; + lib2_javac_action [ label="javac" ]; + } + { + rank="same"; + lib2_combine_action [ label="merge_zips" ]; + lib2_combine_headers_action [ label="merge_zips" ]; + } + + node [ group="app"]; + { + rank="same"; + app_javac_action [ label="javac" ]; + } + { + rank="same"; + app_combine_action [ label="merge_zips" ]; + } + { + rank="same"; + app_r8_action [ label="r8" ]; + } + + // library + + lib_java_sources -> lib_turbine_action [ weight=100 ]; + lib_turbine_action -> lib_java_headers [ weight=100 ]; + + lib_java_sources -> lib_javac_action [ weight=1000 ]; + lib_javac_action -> lib_java_classes [ weight=100 ]; + + lib_java_headers -> lib_spacer [ style=invis ]; + + // library 2 + + lib_java_headers -> lib2_turbine_action [ weight=0 ]; + lib2_java_sources -> lib2_turbine_action [ weight=100 ]; + lib2_turbine_action -> lib2_java_headers [ weight=100 ]; + + lib_java_headers -> lib2_javac_action [ weight=0 ]; + lib2_java_sources -> lib2_javac_action [ weight=1000 ]; + lib2_javac_action ->lib2_java_classes [ weight=100 ]; + + lib_java_classes -> lib2_combine_action [ weight=0 ]; + lib2_java_classes -> lib2_combine_action [ weight=100 ]; + lib2_combine_action -> lib2_combined_classes [ weight=100 ]; + + lib_java_headers -> lib2_combine_headers_action [ weight=0 ]; + lib2_java_headers -> lib2_combine_headers_action [ weight=100 ]; + lib2_combine_headers_action -> lib2_combined_headers [ weight=100 ]; + + lib2_combined_headers -> lib2_spacer [ style=invis ]; + + // app + + lib2_combined_headers -> app_javac_action [ weight=0 ]; + app_java_sources -> app_javac_action [ weight=1000 ]; + app_javac_action -> app_java_classes [ weight=100 ]; + + lib2_combined_classes -> app_combine_action [ weight=0 ]; + app_java_classes -> app_combine_action [ weight=100 ]; + app_combine_action -> app_combined_classes [ weight=100 ]; + + app_combined_classes -> app_r8_action; + app_r8_action -> app_dex [ weight=100 ]; +} diff --git a/docs/kotlin.dot b/docs/kotlin.dot new file mode 100644 index 000000000..7a23c160c --- /dev/null +++ b/docs/kotlin.dot @@ -0,0 +1,196 @@ +digraph java { + //rankdir="LR"; + //splines="false"; + //cluster=true; + ranksep="0.75 equally" + //node [ ordering="in" ]; + node [ shape="rect" style="rounded" color="blue" ]; + { + rank="same"; + lib_java_sources [ label="library\njava sources" group="lib" ]; + lib_kotlin_sources [ label="library\nkotlin sources" group="lib" ]; + lib2_java_sources [ label="library\njava sources" group="lib2" ]; + lib2_kotlin_sources [ label="library\nkotlin sources" group="lib2" ]; + app_java_sources [ label="app\njava sources" group="app" ]; + app_kotlin_sources [ label="app\nkotlin sources" group="app" ]; + } + + node [ group="lib"]; + { + rank="same"; + lib_kotlin_classes [ label="library kotlin\n.class files" ]; + lib_kotlin_headers [ label="library kotlin\nheader .class files" ]; + } + { + rank="same"; + lib_java_classes [ label="library java\n.class files" ]; + lib_java_headers [ label="library java\nheader .class files" ]; + } + { + rank="same"; + lib_combined_classes [ label="combined library\n.class files" ]; + lib_combined_headers [ label="combined library\nheader .class files" ]; + } + + node [ group="lib2"]; + { + rank="same"; + lib_spacer [ style=invis width=4 ]; + lib2_kotlin_classes [ label="library kotlin\n.class files" ]; + lib2_kotlin_headers [ label="library kotlin\nheader .class files" ]; + } + { + rank="same"; + lib2_java_classes [ label="library java\n.class files" ]; + lib2_java_headers [ label="library java\nheader .class files" ]; + } + { + rank="same"; + lib2_combined_classes [ label="combined library\n.class files" ]; + lib2_combined_headers [ label="combined library\nheader .class files" ]; + } + + node [ group="app"]; + { + rank="same"; + lib2_spacer [ style=invis width=4 ]; + app_kotlin_classes [ label="app kotlin\n.class files" ]; + app_kotlin_headers [ label="app kotlin\nheader .class files" ] } + { + rank="same"; + app_java_classes [ label="app java\n.class files" ]; + } + { + rank="same"; + app_combined_classes [ label="combined app and library\n.class files" ]; + } + { + rank="same"; + app_dex [ label="app classes.dex files" ]; + } + + + node [ shape="rect" style="" color="black" ]; + node [ group="lib"]; + { + rank="same"; + lib_kotlinc_action [ label="kotlinc" ]; + } + { + rank="same"; + lib_turbine_action [ label="turbine" ]; + lib_javac_action [ label="javac" ]; + } + { + rank="same"; + lib_combine_action [ label="merge_zips" ]; + lib_combine_headers_action [ label="merge_zips" ]; + } + + node [ group="lib2"]; + { + rank="same"; + lib2_kotlinc_action [ label="kotlinc" ]; + } + { + rank="same"; + lib2_turbine_action [ label="turbine" ]; + lib2_javac_action [ label="javac" ]; + } + { + rank="same"; + lib2_combine_action [ label="merge_zips" ]; + lib2_combine_headers_action [ label="merge_zips" ]; + } + + node [ group="app"]; + { + rank="same"; + app_kotlinc_action [ label="kotlinc" ]; + } + { + rank="same"; + app_javac_action [ label="javac" ]; + } + { + rank="same"; + app_combine_action [ label="merge_zips" ]; + } + { + rank="same"; + app_r8_action [ label="r8" ]; + } + + // library + + lib_kotlin_sources -> lib_kotlinc_action [ weight=100 ]; + lib_java_sources -> lib_kotlinc_action; + lib_kotlinc_action -> lib_kotlin_classes, lib_kotlin_headers [ weight=100 ]; + + lib_kotlin_headers -> lib_turbine_action [ weight=0 ]; + lib_java_sources -> lib_turbine_action [ weight=100 ]; + lib_turbine_action -> lib_java_headers [ weight=100 ]; + + lib_kotlin_headers -> lib_javac_action [ weight=0 ]; + lib_java_sources -> lib_javac_action [ weight=1000 ]; + lib_javac_action -> lib_java_classes [ weight=100 ]; + + lib_kotlin_classes -> lib_combine_action [ weight = 0 ]; + lib_java_classes -> lib_combine_action [ weight = 100 ]; + lib_combine_action -> lib_combined_classes [ weight=100 ]; + + lib_kotlin_headers -> lib_combine_headers_action [ weight = 0 ]; + lib_java_headers -> lib_combine_headers_action [ weight = 100 ]; + lib_combine_headers_action -> lib_combined_headers [ weight=100 ]; + + lib_combined_headers -> lib_spacer [ style=invis ]; + + // library 2 + + lib_combined_headers -> lib2_kotlinc_action [ weight=0 ]; + lib2_kotlin_sources -> lib2_kotlinc_action [ weight=100 ]; + lib2_java_sources -> lib2_kotlinc_action; + lib2_kotlinc_action -> lib2_kotlin_classes, lib2_kotlin_headers [ weight=100 ]; + + lib_combined_headers -> lib2_turbine_action [ weight=0 ]; + lib2_kotlin_headers -> lib2_turbine_action [ weight=0 ]; + lib2_java_sources -> lib2_turbine_action [ weight=100 ]; + lib2_turbine_action -> lib2_java_headers [ weight=100 ]; + + lib_combined_headers -> lib2_javac_action [ weight=0 ]; + lib2_kotlin_headers -> lib2_javac_action [ weight=0 ]; + lib2_java_sources -> lib2_javac_action [ weight=1000 ]; + lib2_javac_action ->lib2_java_classes [ weight=100 ]; + + lib_combined_classes -> lib2_combine_action [ weight=0 ]; + lib2_kotlin_classes -> lib2_combine_action [ weight=0 ]; + lib2_java_classes -> lib2_combine_action [ weight=100 ]; + lib2_combine_action -> lib2_combined_classes [ weight=100 ]; + + lib_combined_headers -> lib2_combine_headers_action [ weight=0 ]; + lib2_kotlin_headers -> lib2_combine_headers_action [ weight=0 ]; + lib2_java_headers -> lib2_combine_headers_action [ weight=100 ]; + lib2_combine_headers_action -> lib2_combined_headers [ weight=100 ]; + + lib2_combined_headers -> lib2_spacer [ style=invis ]; + + // app + + lib2_combined_headers -> app_kotlinc_action [ weight=0 ]; + app_kotlin_sources -> app_kotlinc_action [ weight=100 ]; + app_java_sources -> app_kotlinc_action; + app_kotlinc_action -> app_kotlin_headers, app_kotlin_classes [ weight=100 ]; + + lib2_combined_headers -> app_javac_action [ weight=0 ]; + app_kotlin_headers -> app_javac_action [ weight=0 ]; + app_java_sources -> app_javac_action [ weight=1000 ]; + app_javac_action -> app_java_classes [ weight=100 ]; + + lib2_combined_classes -> app_combine_action [ weight=0 ]; + app_kotlin_classes -> app_combine_action [ weight=0 ]; + app_java_classes -> app_combine_action [ weight=100 ]; + app_combine_action -> app_combined_classes [ weight=100 ]; + + app_combined_classes -> app_r8_action; + app_r8_action -> app_dex [ weight=100 ]; +} diff --git a/docs/kotlin_with_annotation_processors.dot b/docs/kotlin_with_annotation_processors.dot new file mode 100644 index 000000000..70c9bf319 --- /dev/null +++ b/docs/kotlin_with_annotation_processors.dot @@ -0,0 +1,277 @@ +digraph java { + //rankdir="LR"; + //splines="false"; + //cluster=true; + ranksep="0.75 equally" + //node [ ordering="in" ]; + node [ shape="rect" style="rounded" color="blue" ]; + { + rank="same"; + lib_java_sources [ label="library\njava sources" group="lib" ]; + lib_kotlin_sources [ label="library\nkotlin sources" group="lib" ]; + lib2_java_sources [ label="library\njava sources" group="lib2" ]; + lib2_kotlin_sources [ label="library\nkotlin sources" group="lib2" ]; + app_java_sources [ label="app\njava sources" group="app" ]; + app_kotlin_sources [ label="app\nkotlin sources" group="app" ]; + } + + node [ group="lib"]; + { + rank="same"; + lib_kotlin_stubs [ label="library\nkotlin stubs" ]; + } + { + rank="same"; + lib_apt_src_jar [ label="library annotation\nprocessor sources" ]; + } + { + rank="same"; + lib_kotlin_classes [ label="library kotlin\n.class files" ]; + lib_kotlin_headers [ label="library kotlin\nheader .class files" ]; + } + { + rank="same"; + lib_java_classes [ label="library java\n.class files" ]; + lib_java_headers [ label="library java\nheader .class files" ]; + } + { + rank="same"; + lib_combined_classes [ label="combined library\n.class files" ]; + lib_combined_headers [ label="combined library\nheader .class files" ]; + } + + node [ group="lib2"]; + { + rank="same"; + lib_spacer [ style=invis width=4 ]; + lib2_kotlin_stubs [ label="library\nkotlin stubs" ]; + } + { + rank="same"; + lib2_apt_src_jar [ label="library annotation\nprocessor sources" ]; + } + { + rank="same"; + lib2_kotlin_classes [ label="library kotlin\n.class files" ]; + lib2_kotlin_headers [ label="library kotlin\nheader .class files" ]; + } + { + rank="same"; + lib2_java_classes [ label="library java\n.class files" ]; + lib2_java_headers [ label="library java\nheader .class files" ]; + } + { + rank="same"; + lib2_combined_classes [ label="combined library\n.class files" ]; + lib2_combined_headers [ label="combined library\nheader .class files" ]; + } + + node [ group="app"]; + { + rank="same"; + lib2_spacer [ style=invis width=4 ]; + app_kotlin_stubs [ label="app\nkotlin stubs" ]; + } + { + rank="same"; + app_apt_src_jar [ label="app annotation\nprocessor sources" ]; + } + { + rank="same"; + app_kotlin_classes [ label="app kotlin\n.class files" ]; + app_kotlin_headers [ label="app kotlin\nheader .class files" ] } + { + rank="same"; + app_java_classes [ label="app java\n.class files" ]; + } + { + rank="same"; + app_combined_classes [ label="combined app and library\n.class files" ]; + } + { + rank="same"; + app_dex [ label="app classes.dex files" ]; + } + + + node [ shape="rect" style="" color="black" ]; + node [ group="lib"]; + { + rank="same"; + lib_kapt_action [ label="kapt" ]; + } + { + rank="same"; + lib_turbine_apt_action [ label="turbine apt" ]; + } + { + rank="same"; + lib_kotlinc_action [ label="kotlinc" ]; + } + { + rank="same"; + lib_turbine_action [ label="turbine" ]; + lib_javac_action [ label="javac" ]; + } + { + rank="same"; + lib_combine_action [ label="merge_zips" ]; + lib_combine_headers_action [ label="merge_zips" ]; + } + + node [ group="lib2"]; + { + rank="same"; + lib2_kapt_action [ label="kapt" ]; + } + { + rank="same"; + lib2_turbine_apt_action [ label="turbine apt" ]; + } + { + rank="same"; + lib2_kotlinc_action [ label="kotlinc" ]; + } + { + rank="same"; + lib2_turbine_action [ label="turbine" ]; + lib2_javac_action [ label="javac" ]; + } + { + rank="same"; + lib2_combine_action [ label="merge_zips" ]; + lib2_combine_headers_action [ label="merge_zips" ]; + } + + node [ group="app"]; + { + rank="same"; + app_kapt_action [ label="kapt" ]; + } + { + rank="same"; + app_turbine_apt_action [ label="turbine apt" ]; + } + { + rank="same"; + app_kotlinc_action [ label="kotlinc" ]; + } + { + rank="same"; + app_javac_action [ label="javac" ]; + } + { + rank="same"; + app_combine_action [ label="merge_zips" ]; + } + { + rank="same"; + app_r8_action [ label="r8" ]; + } + + // library + + lib_kotlin_sources -> lib_kapt_action [ weight=0 ]; + lib_java_sources -> lib_kapt_action; + lib_kapt_action -> lib_kotlin_stubs [ weight=100 ]; + + lib_kotlin_stubs -> lib_turbine_apt_action [ weight=100 ]; + lib_turbine_apt_action -> lib_apt_src_jar [ weight=100 ]; + + lib_apt_src_jar -> lib_kotlinc_action [ weight=0 ]; + lib_kotlin_sources -> lib_kotlinc_action [ weight=100 ]; + lib_java_sources -> lib_kotlinc_action; + lib_kotlinc_action -> lib_kotlin_classes, lib_kotlin_headers [ weight=100 ]; + + lib_apt_src_jar -> lib_turbine_action [ weight=0 ]; + lib_kotlin_headers -> lib_turbine_action [ weight=0 ]; + lib_java_sources -> lib_turbine_action [ weight=100 ]; + lib_turbine_action -> lib_java_headers [ weight=100 ]; + + lib_apt_src_jar -> lib_javac_action [ weight=0 ]; + lib_kotlin_headers -> lib_javac_action [ weight=0 ]; + lib_java_sources -> lib_javac_action [ weight=1000 ]; + lib_javac_action -> lib_java_classes [ weight=100 ]; + + lib_kotlin_classes -> lib_combine_action [ weight = 0 ]; + lib_java_classes -> lib_combine_action [ weight = 100 ]; + lib_combine_action -> lib_combined_classes [ weight=100 ]; + + lib_kotlin_headers -> lib_combine_headers_action [ weight = 0 ]; + lib_java_headers -> lib_combine_headers_action [ weight = 100 ]; + lib_combine_headers_action -> lib_combined_headers [ weight=100 ]; + + lib_combined_headers -> lib_spacer [ style=invis ]; + + // library 2 + + lib_combined_headers -> lib2_kapt_action [ weight=0 ]; + lib2_kotlin_sources -> lib2_kapt_action [ weight=0 ]; + lib2_java_sources -> lib2_kapt_action; + lib2_kapt_action -> lib2_kotlin_stubs [ weight=100 ]; + + lib_combined_headers -> lib2_turbine_apt_action [ weight=0 ]; + lib2_kotlin_stubs -> lib2_turbine_apt_action [ weight=100 ]; + lib2_turbine_apt_action -> lib2_apt_src_jar [ weight=100 ]; + + lib_combined_headers -> lib2_kotlinc_action [ weight=0 ]; + lib2_apt_src_jar -> lib2_kotlinc_action [ weight=0 ]; + lib2_kotlin_sources -> lib2_kotlinc_action [ weight=100 ]; + lib2_java_sources -> lib2_kotlinc_action; + lib2_kotlinc_action -> lib2_kotlin_classes, lib2_kotlin_headers [ weight=100 ]; + + lib_combined_headers -> lib2_turbine_action [ weight=0 ]; + lib2_apt_src_jar -> lib2_turbine_action [ weight=0 ]; + lib2_kotlin_headers -> lib2_turbine_action [ weight=0 ]; + lib2_java_sources -> lib2_turbine_action [ weight=100 ]; + lib2_turbine_action -> lib2_java_headers [ weight=100 ]; + + lib_combined_headers -> lib2_javac_action [ weight=0 ]; + lib2_apt_src_jar -> lib2_javac_action [ weight=0 ]; + lib2_kotlin_headers -> lib2_javac_action [ weight=0 ]; + lib2_java_sources -> lib2_javac_action [ weight=1000 ]; + lib2_javac_action ->lib2_java_classes [ weight=100 ]; + + lib_combined_classes -> lib2_combine_action [ weight=0 ]; + lib2_kotlin_classes -> lib2_combine_action [ weight=0 ]; + lib2_java_classes -> lib2_combine_action [ weight=100 ]; + lib2_combine_action -> lib2_combined_classes [ weight=100 ]; + + lib_combined_headers -> lib2_combine_headers_action [ weight=0 ]; + lib2_kotlin_headers -> lib2_combine_headers_action [ weight=0 ]; + lib2_java_headers -> lib2_combine_headers_action [ weight=100 ]; + lib2_combine_headers_action -> lib2_combined_headers [ weight=100 ]; + + lib2_combined_headers -> lib2_spacer [ style=invis ]; + + // app + + lib2_combined_headers -> app_kapt_action [ weight=0 ]; + app_kotlin_sources -> app_kapt_action [ weight=0 ]; + app_java_sources -> app_kapt_action; + app_kapt_action -> app_kotlin_stubs [ weight=100 ]; + + lib2_combined_headers -> app_turbine_apt_action [ weight=0 ]; + app_kotlin_stubs -> app_turbine_apt_action [ weight=100 ]; + app_turbine_apt_action -> app_apt_src_jar [ weight=100 ]; + + lib2_combined_headers -> app_kotlinc_action [ weight=0 ]; + app_apt_src_jar -> app_kotlinc_action [ weight=0 ]; + app_kotlin_sources -> app_kotlinc_action [ weight=100 ]; + app_java_sources -> app_kotlinc_action; + app_kotlinc_action -> app_kotlin_headers, app_kotlin_classes [ weight=100 ]; + + lib2_combined_headers -> app_javac_action [ weight=0 ]; + app_apt_src_jar -> app_javac_action [ weight=0 ]; + app_kotlin_headers -> app_javac_action [ weight=0 ]; + app_java_sources -> app_javac_action [ weight=1000 ]; + app_javac_action -> app_java_classes [ weight=100 ]; + + lib2_combined_classes -> app_combine_action [ weight=0 ]; + app_kotlin_classes -> app_combine_action [ weight=0 ]; + app_java_classes -> app_combine_action [ weight=100 ]; + app_combine_action -> app_combined_classes [ weight=100 ]; + + app_combined_classes -> app_r8_action; + app_r8_action -> app_dex [ weight=100 ]; +}