[asterisk-commits] rizzo: trunk r92084 - /trunk/doc/CODING-GUIDELINES

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sun Dec 9 22:38:50 CST 2007


Author: rizzo
Date: Sun Dec  9 22:38:49 2007
New Revision: 92084

URL: http://svn.digium.com/view/asterisk?view=rev&rev=92084
Log:
add a bit of info on the build infrastructure


Modified:
    trunk/doc/CODING-GUIDELINES

Modified: trunk/doc/CODING-GUIDELINES
URL: http://svn.digium.com/view/asterisk/trunk/doc/CODING-GUIDELINES?view=diff&rev=92084&r1=92083&r2=92084
==============================================================================
--- trunk/doc/CODING-GUIDELINES (original)
+++ trunk/doc/CODING-GUIDELINES Sun Dec  9 22:38:49 2007
@@ -628,7 +628,48 @@
 	    ==  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
+
+    
 
 
 -----------------------------------------------




More information about the asterisk-commits mailing list