add a bit of info on the build infrastructure
authorLuigi Rizzo <rizzo@icir.org>
Mon, 10 Dec 2007 04:38:49 +0000 (04:38 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Mon, 10 Dec 2007 04:38:49 +0000 (04:38 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@92084 65c4cc65-6c06-0410-ace0-fbb531ad65f3

doc/CODING-GUIDELINES

index fb55776..fb4e60a 100644 (file)
@@ -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!