From: Luigi Rizzo Date: Mon, 10 Dec 2007 04:38:49 +0000 (+0000) Subject: add a bit of info on the build infrastructure X-Git-Tag: 1.6.0-beta1~3^2~478 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b70e98be1ae33f50c6edbf2d08b1411799081720;p=thirdparty%2Fasterisk.git add a bit of info on the build infrastructure git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@92084 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/doc/CODING-GUIDELINES b/doc/CODING-GUIDELINES index fb557764f5..fb4e60ae6f 100644 --- a/doc/CODING-GUIDELINES +++ b/doc/CODING-GUIDELINES @@ -628,8 +628,49 @@ headers. Please update this file if you add new headers. == PART TWO: BUILD ARCHITECTURE == ------------------------------------ +The asterisk build architecture relies on 'autoconf' to detect the +system configuration, and on a locally developed tool (menuselect) to +select build options and modules list, and on gmake to do the build. + +autoconf will store its findings in two files: + + + include/asterisk/autoconfig.h + contains C macros, normally #define HAVE_FOO or HAVE_FOO_H , + for all functions and headers that have been detected at build time. + These are meant to be used by C or C++ source files. + + + makeopts + contains variables that can be used by Makefiles. + In addition to the usual CC, LD, ... variables pointing to + the various build tools, and prefix, includedir ... which are + useful for generic compiler flags, there are variables + for each package detected. + These are normally of the form FOO_INCLUDE=... FOO_LIB=... + FOO_DIR=... indicating, for each package, the useful libraries + and header files. + +menuselect produces two files, both to be read by the Makefile: + + menuselect.makeopts + contains for each subdirectory a list of modules that must be + excluded from the build, plus some additional informatiom. + + menuselect.makedeps + contains, for each module, a list of packages it depends on. + For each of these packages, we can collect the relevant INCLUDE + and LIB files from makeopts + +The top level Makefile is in charge of setting up the build environment, +creating header files with build options, and recursively invoking the +subdir Makefiles to produce modules and the main executable. + +The sources are split in multiple directories, more or less divided by +module type (apps/ channels/ funcs/ res/ ...) or by function, for the main +binary (main/ pbx/). + + TO BE COMPLETED + + ----------------------------------------------- Welcome to the Asterisk development community!