// Copyright 2018 the original author or authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// dot -Tpng src/docs/userguide/img/cpp-sourcesets-compilation.dot > src/docs/userguide/img/cpp-sourcesets-compilation.png
digraph cppSourcesetsCompilation {
  graph [ dpi = 100, fontname="Sans"];
  node [fontname = "Sans"];
  edge [fontname = "Sans"];
  node [shape=rectangle, fixedsize=true, width=2.6, height=0.8];

  subgraph firstLine {
    {rank=same cppCompileVariant implementation variantImplementation}
    cppCompileVariant -> includeRoot
    implementation -> includeRoot
    variantImplementation -> includeRoot

    cppCompileVariant[style=dashed, label=<cppCompile<i>Variant</i><br/>(configuration)>]
    implementation[style=dashed, label="implementation\n(configuration)"]
    variantImplementation[style=dashed, label=<main<i>Variant</i>Implementation<br/>(configuration)>]
  }

  subgraph secondLine {
    includeRoot[style="rounded,filled", fillcolor="#bfffbf", label="Compilation include roots"]
  }

  subgraph thirdLine {
    {rank=same sourceFiles compileVariantCpp outputDirectory}
    includeRoot -> compileVariantCpp
    sourceFiles -> compileVariantCpp
    compileVariantCpp -> outputDirectory

    sourceFiles[style="rounded,filled", fillcolor="#bfffbf", label="Source files"]
    compileVariantCpp[label=<compile<i>Variant</i>Cpp>]
    outputDirectory[style="rounded,filled", fillcolor="#bfffbf", label="Output directory"]
  }
}
