\documentclass[ignorenonframetext]{beamer} \usepackage[Symbols,MiscellaneousSymbols]{ucharclasses} \usepackage{fontspec} % \usepackage{bidi} \setmainfont{FreeSerif} \setsansfont{FreeSans} \setmonofont{FreeMono} \usepackage{array} \usepackage{fancyref} \usepackage{booktabs} \usepackage{threeparttable} \usepackage[backend=biber,natbib=true,hyperref=true,style=numeric-comp]{biblatex} \bibliography{references} \usepackage[nomargin,inline,draft]{fixme} \usepackage{texshade} \usepackage{tikz} \usepackage{nameref} \usepackage{zref-xr,zref-user} \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \mode
{ \usepackage[x11names,svgnames,usenames,dvipsnames]{xcolor} \usepackage[noxcolor]{beamerarticle} \usepackage{fancyhdr} \usepackage{graphicx} \usepackage[bf]{caption} \usepackage{rotating} \usepackage{setspace} \usepackage{acronym} \usepackage{dcolumn} \usepackage{adjustbox} \usepackage{longtable} \usepackage{geometry} \usepackage{pdflscape} \usepackage[hyperfigures,bookmarks,colorlinks]{hyperref} \oddsidemargin 0.0in \textwidth 6.5in \raggedbottom \clubpenalty = 10000 \widowpenalty = 10000 \pagestyle{fancy} } \usepackage{minted} \mode{ \usetheme{CambridgeUS} % http://identitystandards.illinois.edu/graphicstandardsmanual/generalguidelines/colors.html \definecolor{ilboldblue}{HTML}{002058} \definecolor{ilboldorange}{HTML}{E87722} \definecolor{ilblue}{HTML}{606EB2} \definecolor{ilorange}{HTML}{D45D00} \setbeamercolor{alerted text}{fg=ilboldblue} \setbeamercolor*{palette primary}{fg=ilblue,bg=ilorange} \setbeamercolor*{palette secondary}{fg=ilblue!20!white,bg=ilorange} \setbeamercolor*{palette tertiary}{bg=ilblue,fg=ilorange} \setbeamercolor*{palette quaternary}{fg=ilblue,bg=ilorange} \setbeamercolor*{sidebar}{fg=ilorange,bg=ilboldblue} \setbeamercolor*{palette sidebar primary}{fg=ilblue!10!white,bg=ilorange} \setbeamercolor*{palette sidebar secondary}{fg=ilorange} \setbeamercolor*{palette sidebar tertiary}{fg=ilblue} \setbeamercolor*{palette sidebar quaternary}{fg=ilorange} % \setbeamercolor*{titlelike}{parent=palette primary} \setbeamercolor{titlelike}{parent=palette primary,fg=ilboldblue,bg=ilorange} \setbeamercolor{frametitle}{fg=ilboldorange,bg=ilblue!80!white} \setbeamercolor{frametitle right}{fg=ilboldblue,bg=ilorange} \setbeamercolor*{separation line}{} \setbeamercolor*{fine separation line}{} \setbeamercovered{transparent} \logo{\begin{tikzpicture}% Pale figure {\node[opacity=0.7]{\IfFileExists{./logo.pdf}{\includegraphics[height=1.5cm]{logo.pdf}}{}% };}% \end{tikzpicture}} } \title{Using make for science} \author{Don Armstrong} \date{\today} \subject{make for science} \begin{document} \frame[plain]{\titlepage} \mode
{\maketitle} \section{What make was made for} \begin{frame}{What was make originally made to do?} \begin{itemize} \item Compiling and installing software from source \item Replacement of operating system specific compilation and installation shell scripts \item Re-compile when dependencies of the software were modified \end{itemize} \end{frame} \subsection{Brief history of makes} \begin{frame}{Brief history of make-alikes} \begin{itemize} \item \href{http://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html}{POSIX Make} (standardization of basic features of make) \item \href{http://www.gnu.org/software/make/manual/}{GNU Make} (standard make on Linux and OS X) \item \href{https://www.freebsd.org/cgi/man.cgi?query=make(1)}{BSD Make} (pmake or bmake) \item \href{https://msdn.microsoft.com/en-us/library/dd9y37ha.aspx}{nmake} (Part of visual studio) \item \href{http://plan9.bell-labs.com/sys/doc/mk.html}{Mk} (Plan 9 replacement of make) \end{itemize} \end{frame} \subsection{Other solutions in this problem space} \begin{frame}{Other non-make dependency builders} \begin{itemize} \item Ant (popular for java software) \item Cabal (popular for Haskell) \item Maven (also java) \item Rake (ruby build took) \item Gradle (Rake DSL) \item Leiningen (Clojure) \item Tweaker (task definitions in any language) \item \href{https://en.wikipedia.org/wiki/List_of_build_automation_software}{Wikipedia List of build automation software} \end{itemize} \end{frame} \section{Introduction to Makefiles} \begin{frame}[fragile]{Simple Makefile} \begin{minted}[showtabs]{make} hello_world: echo "hello world" > hello_world \end{minted} \end{frame} \subsection{General Syntax} \begin{frame}[fragile]{Simple Makefile} \begin{minted}[showtabs]{make} hello_world: echo "hello world" > hello_world \end{minted} \end{frame} \subsection{Variables} \subsection{Rules} \subsubsection{Default Target} \subsubsection{Special Targets} \subsubsection{Pattern Rules} \subsection{Functions} \section{Examples} \subsection{This Presentation} \subsection{Can you dig it?} \subsection{Calling records from SRA} \section{Why not make?} \subsection{Timestamps} \subsection{Complicated Workflows} \section{Further Resources} \end{document}