[FE training-materials-updates] autotools/agenda: update to reflect reality
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Fri May 22 17:32:12 CEST 2015
Repository : git://git.free-electrons.com/training-materials.git
On branch : master
Link : http://git.free-electrons.com/training-materials/commit/?id=c02acad7d6d9bad108063ad3dc0c24dd2f842176
>---------------------------------------------------------------
commit c02acad7d6d9bad108063ad3dc0c24dd2f842176
Author: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
Date: Fri May 22 17:31:49 2015 +0200
autotools/agenda: update to reflect reality
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
>---------------------------------------------------------------
c02acad7d6d9bad108063ad3dc0c24dd2f842176
agenda/autotools-agenda.tex | 87 +++++++++++++++++++++++++++------------------
1 file changed, 52 insertions(+), 35 deletions(-)
diff --git a/agenda/autotools-agenda.tex b/agenda/autotools-agenda.tex
index 4feb0a8..c9d8520 100644
--- a/agenda/autotools-agenda.tex
+++ b/agenda/autotools-agenda.tex
@@ -37,10 +37,14 @@
{\bf Overview} &
Understand the role of the {\em autotools} \par
- Comparison with other solutions \par
- Using {\em autoconf}, writing {\em configure.ac} files \par
- Using {\em automake}, writing {\em Makefile.am} files \par
- Using {\em libtool} to generate libraries \\
+ Usage of the {\em autotools} \par
+ Basics of {\em autoconf} and {\em automake} \par
+ Advanced {\em autoconf} topics: configuration header, checking for
+ functions, headers and libraries, writing custom tests, handling
+ external software and optional features, pkg-config, etc. \par
+ Advanced {\em automake} topics: subdirectories, conditionals,
+ shared libraries with {\em libtool}, etc. \par
+ References to books and tutorials about {\em autotools}\\
\hline
{\bf Duration} & {\bf One} day - 8 hours
@@ -99,6 +103,9 @@
\hline
\end{tabularx}}
+
+\newpage
+
\normalsize
\section{Day 1 - Morning}
@@ -109,20 +116,24 @@
\begin{itemize}
\item What the {\em autotools} are, what the alternatives are, and
what they are useful for.
- \item General architecture of the {\em autotools}: role of
- \code{autoconf}, \code{automake} and \code{libtool}.
\item Usage of an existing software component using the {\em
- autotools}: \code{autoreconf}, generated files, configuring and
- building the software component.
+ autotools}: configuring and building the software component.
+ \item Standard Makefile targets, filesystem hierarchy, configuration variables
+ \item System types: build, host, target
+ \item Cross-compilation
+ \item Out of tree build
+ \item Diverted installation
+ \item Cache variables
+ \item Using {\em autoreconf}
\end{itemize}
}
{Lab - Usage of an existing software component using the {\em autotools}}
{
\begin{itemize}
- \item Use \code{autoreconf}, and explore generated files
- \item Configure the software component, explore the newly generated
- files
- \item Build the software component
+ \item First build of an {\em autotools} package
+ \item Out-of-tree build and cross-compilation
+ \item Overriding cache variables
+ \item Using {\em autoreconf}
\end{itemize}
}
@@ -130,15 +141,9 @@
{Lecture - autoconf/automake: the basics}
{
\begin{itemize}
- \item Brief introduction to the \code{m4} macro language, used in
- \code{autoconf}
- \item The basic \code{autoconf} macros, and writing a simple
- \code{configure.ac} file
- \item The basic \code{automake} macros, and writing simple
- \code{Makefile.am} files
- \item Interaction between \code{autoconf} and \code{automake}
- \item Using \code{config.h} in C code
- \item Documentation and resources about {\em autotools}
+ \item \code{configure.ac} language and basic macros
+ \item \code{AC_CONFIG_FILES} and {\em output variables}
+ \item Minimal \code{Makefile.am}
\end{itemize}
}
@@ -148,31 +153,43 @@
{Lab - autoconf/automake: the basics}
{
\begin{itemize}
- \item Experiment with \code{autoconf} and \code{automake} by creating
- the build system for a small project composed of several applications.
+ \item Your first \code{configure.ac}
+ \item Adding and building a program
+ \item Going further: \code{autoscan} and \code{make dist}
\end{itemize}
}
\feagendatwocolumn
-{Lecture - More advanced topics}
+{Lecture - Autoconf advanced}
+{
+ \begin{itemize}
+ \item Configuration header
+ \item Checking for functions, headers, libraries
+ \item Custom tests
+ \item Handling external software and optional features
+ \item \code{pkg-config}
+ \end{itemize}
+}
+{Lecture - Automake advanced}
{
\begin{itemize}
- \item Building shared and static libraries with \code{libtool}
- \item Creating user-configurable options with \code{autoconf} and
- handle them using \code{automake}
- \item Detecting dependencies such as header files, functions,
- programs or libraries, usage of \code{pkg-config}
- \item Providing \code{pkg-config} files for the libraries being
- installed
+ \item Subdirectories
+ \item Conditionals
+ \item Shared libraries
+ \item Misc: variables, macro and auxiliarly directories, silent
+ rules, etc.
\end{itemize}
}
+
+\feagendaonecolumn
{Lab - Implement more advanced options}
{
\begin{itemize}
- \item Extend the project of the previous lab by adding libraries
- built using \code{libtool}
- \item Extend the project of the previous lab by using more advanced
- \code{autoconf} and \code{automake} features.
+ \item Use \code{AC_ARG_ENABLE} and \code{config.h}
+ \item Implement a shared library
+ \item Switch to multiple directories
+ \item Make the compilation of programs conditional
+ \item Use \code{pkg-config}
\end{itemize}
}
More information about the training-materials-updates
mailing list