X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/b9883aef07a63590217f00afe74f586c8ea78e26..7e450a1c869a5b227e3c91c4e71049059f1193e6:/docs/build.tex diff --git a/docs/build.tex b/docs/build.tex index 0449c08c7..bfdfc2b57 100644 --- a/docs/build.tex +++ b/docs/build.tex @@ -45,11 +45,11 @@ This article refers to the "Kamikaze" branch of OpenWrt, which can be downloaded subversion using the following command: \begin{Verbatim} -$ svn co https://svn.openwrt.org/openwrt/trunk kamikaze +$ svn checkout https://svn.openwrt.org/openwrt/trunk kamikaze \end{Verbatim} -Additionally, ther is a trac interface on \href{https://dev.openwrt.org/}{https://dev.openwrt.org/} -which can be used to monitor svn commits and browse the sources. +Additionally, there is a trac interface on \href{https://dev.openwrt.org/}{https://dev.openwrt.org/} +which can be used to monitor svn commits and browse the source repository. \subsubsection{The directory structure} @@ -83,7 +83,7 @@ features or removed to save space. Note that packages are also maintained outsid trunk and can be obtained from subversion at the following location: \begin{Verbatim} -$ svn co https://svn.openwrt.org/openwrt/packages ../packages +$ svn checkout https://svn.openwrt.org/openwrt/packages packages \end{Verbatim} Those packages can be used to extend the functionality of the build system and need to be @@ -96,17 +96,16 @@ kamikaze packages $ ln -s packages/net/nmap kamikaze/package/nmap \end{Verbatim} -To include all packages, issue the following command : +To include all packages, issue the following command: \begin{Verbatim} $ ln -s packages/*/* kamikaze/package/ \end{Verbatim} - \texttt{target} refers to the embedded platform, this contains items which are specific to a specific embedded platform. Of particular interest here is the "\texttt{target/linux}" -directory which is broken down by platform and contains the kernel config and patches -to the kernel for a particular platform. There's also the "\texttt{target/image}" directory +directory which is broken down by platform \textit{} and contains the patches to the +kernel, profile config, for a particular platform. There's also the "\texttt{target/image}" directory which describes how to package a firmware for a specific platform. Both the target and package steps will use the directory "\texttt{build\_\textit{}}" @@ -143,7 +142,15 @@ Similar to the linux kernel config, almost every option has three choices, \end{itemize} After you've finished with the menu configuration, exit and when prompted, save your -configuration changes. To begin compiling the firmware, type "\texttt{make}". By default +configuration changes. + +If you want, you can also modify the kernel config for the selected target system. +simply run "\texttt{make kernel\_menuconfig}" and the build system will unpack the kernel sources +(if necessary), run menuconfig inside of the kernel tree, and then copy the kernel config +to \texttt{target/linux/\textit{}/config} so that it is preserved over +"\texttt{make clean}" calls. + +To begin compiling the firmware, type "\texttt{make}". By default OpenWrt will only display a high level overview of the compile process and not each individual command. @@ -178,7 +185,7 @@ in OpenWrt you'll find two things: \begin{itemize} \item \texttt{package/\textit{}/Makefile} \item \texttt{package/\textit{}/patches} - \item \texttt{package/\textit{}/files} + \item \texttt{package/\textit{}/files} \end{itemize} The patches directory is optional and typically contains bug fixes or optimizations to @@ -291,7 +298,7 @@ directly as the Nth argument to \texttt{BuildPackage}. \item \texttt{SECTION} \\ The type of package (currently unused) \item \texttt{CATEGORY} \\ - Which menu it appears in menuconfig : Network, Sound, Utilities, Multimedia ... + Which menu it appears in menuconfig: Network, Sound, Utilities, Multimedia ... \item \texttt{TITLE} \\ A short description of the package \item \texttt{URL} \\ @@ -299,7 +306,9 @@ directly as the Nth argument to \texttt{BuildPackage}. \item \texttt{MAINTAINER} (optional) \\ Who to contact concerning the package \item \texttt{DEPENDS} (optional) \\ - Which packages must be built/installed before this package. To reference a dependency defined in the same Makefile, use \textit{}. If defined as an external package, use \textit{+}. For a kernel version dependency use: \textit{@LINUX\_2\_} + Which packages must be built/installed before this package. To reference a dependency defined in the + same Makefile, use \textit{}. If defined as an external package, use + \textit{+}. For a kernel version dependency use: \textit{@LINUX\_2\_} \end{itemize} \textbf{\texttt{Package/\textit{}/conffiles} (optional):} \\ @@ -313,10 +322,29 @@ directly as the Nth argument to \texttt{BuildPackage}. You can leave this undefined if the source doesn't use configure or has a normal config script, otherwise you can put your own commands here or use "\texttt{\$(call Build/Configure/Default,\textit{})}" as above to - pass in additional arguments for a standard configure script. The first list of arguments will be passed to the configure script like that : $--arg 1$ $--arg 2$. The second list contains arguments that should be defined before running the configure script such as autoconf or compiler specific variables. + pass in additional arguments for a standard configure script. The first list of arguments will be passed + to the configure script like that: \texttt{--arg 1} \texttt{--arg 2}. The second list contains arguments that should be + defined before running the configure script such as autoconf or compiler specific variables. + + To make it easier to modify the configure command line, you can either extend or completely override the following variables: + \begin{itemize} + \item \texttt{CONFIGURE\_ARGS} \\ + Contains all command line arguments (format: \texttt{--arg 1} \texttt{--arg 2}) + \item \texttt{CONFIGURE\_VARS} \\ + Contains all environment variables that are passed to ./configure (format: \texttt{NAME="value"}) + \end{itemize} \textbf{\texttt{Build/Compile} (optional):} \\ How to compile the source; in most cases you should leave this undefined. + + As with \texttt{Build/Configure} there are two variables that allow you to override + the make command line environment variables and flags: + \begin{itemize} + \item \texttt{MAKE\_FLAGS} \\ + Contains all command line arguments (typically variable overrides like \texttt{NAME="value"} + \item \texttt{MAKE\_VARS} \\ + Contains all environment variables that are passed to the make command + \end{itemize} \textbf{\texttt{Package/\textit{}/install}:} \\ A set of commands to copy files out of the compiled source and into the ipkg