% All macros commented % 1 \newcommand{\paperpdf}{} % 2 \newcommand{\papertex}{} % 3 \newcommand{\projecttex}{} % 4 \newcommand{\verifytex}{} % 5 \newcommand{\initializetex}{} % 6 \newcommand{\downloadtex}{} % 7 \newcommand{\inputtwo}{} % 8 \newcommand{\inputsconf}{} % 9 \newcommand{\analysisonetex}{} % 10 \newcommand{\outoneb}{} % 11 \newcommand{\outonebdep}{} % 12 \newcommand{\inputone}{} % 13 \newcommand{\inputonedep}{} % 14 \newcommand{\analysistwotex}{} % 15 \newcommand{\outtwob}{} % 16 \newcommand{\outtwobdep}{} % 17 \newcommand{\analysisthreetex}{} % 18 \newcommand{\analysisthreeouts}{} % 19 \newcommand{\outtwoa}{} % 20 \newcommand{\outtwoadep}{} % 21 \newcommand{\outthreeadep}{} % 22 \begin{tikzpicture}[ line width=1.5pt, black!50, text=black, ] %% Use small fonts \footnotesize %% These white lines are only added to fix the vertical position of %% the figure so it doesn't change as we add more boxes. \draw [white] (-7.5,0) -- (7.4,0); \draw [white] (0,-4.7) -- (0,5.7); %% top-make.mk \node [at={(-0.05cm,2mm)}, rectangle, very thick, text centered, font=\ttfamily, text width=2.8cm, minimum height=7.8cm, draw=green!50!black!50, minimum width=\linewidth, fill=black!10!green!2!white, label={[shift={(0,-5mm)}]\texttt{top-make.mk}}] {}; %% Work-horse Makefiles. -5.6 -> -5.73 = -0.13 \node (initializemk) [node-makefile, at={(-5.73cm,-1.3cm)}, label={[shift={(0,-5mm)}]\texttt{initialize.mk}}] {}; \node (downloadmk) [node-makefile, at={(-2.93cm,-1.3cm)}, label={[shift={(0,-5mm)}]\texttt{download.mk}}] {}; \node (analysis1mk) [node-makefile, at={(-0.13cm,-1.3cm)}, label={[shift={(0,-5mm)}]\texttt{analysis1.mk}}] {}; \node (analysis2mk) [node-makefile, at={(2.67cm,-1.3cm)}, label={[shift={(0,-5mm)}]\texttt{analysis2.mk}}] {}; \node (analysis2mk) [node-makefile, at={(5.47cm,-1.3cm)}, label={[shift={(0,-5mm)}]\texttt{analysis3.mk}}] {}; %% verify.mk \node [at={(-5.3cm,-2.8cm)}, thick, rectangle, text centered, font=\ttfamily, text width=2.45cm, minimum width=3.5cm, minimum height=1.3cm, draw=green!50!black!50, fill=black!10!green!12!white, label={[shift={(1cm,-5mm)}]\texttt{verify.mk}}] {}; %% Paper.mk \node [at={(2.67cm,-2.8cm)}, thick, rectangle, text centered, text width=2.8cm, minimum width=8.5cm, minimum height=1.3cm, draw=green!50!black!50, fill=black!10!green!12!white, font=\ttfamily, label={[shift={(0,-5mm)}]\texttt{paper.mk}}] {}; %% paper.pdf \ifdefined\paperpdf \node (paperpdf) [node-terminal, at={(5.47cm,-2.9cm)}] {paper.pdf}; \fi %% paper.tex \ifdefined\papertex \node (reftex) [node-nonterminal, at={(2.67cm,-4.2cm)}] {references.tex}; \node (papertex) [node-nonterminal, at={(5.47cm,-4.2cm)}] {paper.tex}; \node (papertex-north) [node-point, at={(5.47cm,-3.58cm)}] {}; \draw [rounded corners] (reftex) |- (papertex-north); \draw [->] (papertex) -- (paperpdf); \fi %% project.tex \ifdefined\projecttex \node (projecttex) [node-terminal, at={(-0.13cm,-2.9cm)}] {project.tex}; \draw [->] (projecttex) -- (paperpdf); \fi %% verify.tex \ifdefined\verifytex \node (verifytex) [node-terminal, at={(-5.73cm,-2.9cm)}] {verify.tex}; \draw [->] (verifytex) -- (projecttex); \fi %% Initialize.tex \ifdefined\initializetex \node (initializetex) [node-terminal, at={(-5.73cm,-0.8cm)}] {initialize.tex}; \node (initialize-south) [node-point, at={(-5.73cm,-1.5cm)}] {}; \draw [->] (initializetex) -- (verifytex); \node [anchor=west, at={(-7.05cm,2.30cm)}] {Basic project info}; \node [anchor=west, at={(-7.05cm,1.95cm)}] {(e.g., Git commit).}; \node [anchor=west, at={(-7.05cm,1.10cm)}] {Also defines}; \node [anchor=west, at={(-7.05cm,0.75cm)}] {project structure}; \node [anchor=west, at={(-7.05cm,0.40cm)}] {(for \texttt{*.mk} files).}; \fi %% download.tex \ifdefined\downloadtex \node (downloadtex) [node-terminal, at={(-2.93cm,-0.8cm)}] {download.tex}; \draw [rounded corners, -] (downloadtex) |- (initialize-south); \fi %% input-2.dat \ifdefined\inputtwo \node (input2) [node-terminal, at={(-2.93cm,1.1cm)}] {input2.dat}; \draw [->] (input2) -- (downloadtex); \fi %% INPUTS.conf \ifdefined\inputsconf \node (INPUTS) [node-nonterminal, at={(-2.93cm,4.6cm)}] {INPUTS.conf}; \node (input2-west) [node-point, at={(-4.33cm,1.1cm)}] {}; \draw [->,rounded corners] (INPUTS.west) -| (input2-west) |- (input2); \fi %% analysis1.tex \ifdefined\analysisonetex \node (a1tex) [node-terminal, at={(-0.13cm,-0.8cm)}] {analysis1.tex}; \draw [rounded corners, -] (a1tex) |- (initialize-south); \fi %% out1b.dat \ifdefined\outoneb \node (out1b) [node-terminal, at={(-0.13cm,1.1cm)}] {out-1b.dat}; \draw [->] (out1b) -- (a1tex); \fi %% outonebdep \ifdefined\outonebdep \node (out1b-west) [node-point, at={(-1.53cm,1.1cm)}] {}; \node (out1a) [node-terminal, at={(-0.13cm,2.7cm)}] {out-1a.dat}; \node (a1conf1) [node-nonterminal, at={(-0.13cm,4.6cm)}] {param-1.conf}; \draw [->] (input2) -- (out1b); \draw [->] (out1a) -- (out1b); \draw [->,rounded corners] (a1conf1.west) -| (out1b-west) |- (out1b); \fi %% input1.dat \ifdefined\inputone \node (input1) [node-terminal, at={(-2.93cm,1.9cm)}] {input1.dat}; \draw [->,rounded corners,] (input1.north) |- (out1a); \fi %% input1 dependencies \ifdefined\inputonedep \node (input1-east) [node-point, at={(-1.53cm,1.9cm)}] {}; \node (input1-west) [node-point, at={(-4.33cm,1.9cm)}] {}; \draw [->,rounded corners] (INPUTS.west) -| (input1-west) |- (input1); \fi %% analysis2.tex \ifdefined\analysistwotex \node (a2tex) [node-terminal, at={(2.67cm,-0.8cm)}] {analysis2.tex}; \draw [rounded corners, -] (a2tex) |- (initialize-south); \fi %% out-2b.dat \ifdefined\outtwob \node (out2b) [node-terminal, at={(2.67cm,0.3cm)}] {out-2b.dat}; \draw [->] (out2b) -- (a2tex); \fi %% out-2b dependencies \ifdefined\outtwobdep \draw [->,rounded corners,] (out1b.south) |- (out2b); \fi %% analysis3.tex \ifdefined\analysisthreetex \node (a3tex) [node-terminal, at={(5.47cm,-0.8cm)}] {analysis3.tex}; \draw [rounded corners, -] (a3tex) |- (initialize-south); \fi %% Outputs of analysis3 \ifdefined\analysisthreeouts \node (out3a) [node-terminal, at={(5.47cm,2.7cm)}] {out-3a.dat}; \node (out3b) [node-terminal, at={(5.47cm,1.1cm)}] {out-3b.dat}; \node (a3tex-east) [node-point, at={(6.87cm,-0.8cm)}] {}; \draw [->,rounded corners] (out3a.east) -| (a3tex-east) |- (a3tex); \draw [->] (out3b) -- (a3tex); \fi %% out-2a.dat \ifdefined\outtwoa \node (out2a) [node-terminal, at={(2.67cm,1.9cm)}] {out-2a.dat}; \draw [->, rounded corners] (out2a.south) |- (out3b); \fi %% Dependencies of out-2a \ifdefined\outtwoadep \node (a2conf1) [node-nonterminal, at={(2.67cm,5.3cm)}] {param-2a.conf}; \node (a2conf2) [node-nonterminal, at={(2.67cm,4.6cm)}] {param-2b.conf}; \node (out2a-west) [node-point, at={(1.27cm,1.9cm)}] {}; \draw [->,rounded corners] (a2conf1.west) -| (out2a-west) |- (out2a); \draw [->,rounded corners] (a2conf2.west) -| (out2a-west) |- (out2a); \draw [->] (input1) -- (out2a); \fi %% Dependencies of out-3a \ifdefined\outthreeadep \node (out3a-west) [node-point, at={(4.07cm,2.7cm)}] {}; \node (a3conf1) [node-nonterminal, at={(5.47cm,4.6cm)}] {param-3.conf}; \draw [->] (out1a) -- (out3a); \draw [rounded corners] (a3conf1.west) -| (out3a-west) |- (out3a); \fi \end{tikzpicture}