diff options
author | Luigi Rizzo <rizzo@icir.org> | 2007-12-10 04:38:49 +0000 |
---|---|---|
committer | Luigi Rizzo <rizzo@icir.org> | 2007-12-10 04:38:49 +0000 |
commit | b70e98be1ae33f50c6edbf2d08b1411799081720 (patch) | |
tree | aea8ada2bce3f9c6c4d69b639c9d6db06591d540 /doc/CODING-GUIDELINES | |
parent | 7d85d15cd0d9b568b79e1ff5df1f285f2ba16d0f (diff) |
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
Diffstat (limited to 'doc/CODING-GUIDELINES')
-rw-r--r-- | doc/CODING-GUIDELINES | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/doc/CODING-GUIDELINES b/doc/CODING-GUIDELINES index fb557764f..fb4e60ae6 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! |