1 The Samba Build System
\r
2 ======================
\r
4 The build system basically has two main parts: the autoconf-generated
\r
5 shell scripts which check for availability of functions and libraries
\r
6 which is stored in the .m4 files and the information about the various
\r
7 subsystems which is stored in the .mk files.
\r
11 the build system knows about the following object types
\r
14 a SUBSYSTEM is basicly a collection of functions, which provide an
\r
15 an generic API for a specific problem (e.g. libldb provides an api
\r
16 for gneric ldb databases. libldb_plugin provides a generic api
\r
17 for calling ldb plugins, so 'libldb' and 'libldb_plugin' are subsystems)
\r
20 a MODULE is a specify implementation of a API provided by a SUBSYSTEM.
\r
21 (e.g. 'libldb_tdb' and 'libldb_ldap' are implementations of the subsystem 'libldb' API,
\r
22 and 'libldb_plugin_timestamp' is a module of the 'libldb_plugin' subsystem)
\r
25 an EXT_LIB is an external library which is needed by a SUBSYSTEM, MODULE, BINARY or LIBRARY.
\r
26 (e.g. 'gtk' or 'KRB5')
\r
29 a BINARY means a executable binary file.
\r
30 (e.g. 'smbtorture' or 'ldbedit')
\r
31 a BINARY typically has only commandline handling and basic
\r
32 functionality code in it and depends on the functions of
\r
33 SUBSYSTEM's (REQUIRED_SUBSYSTEMS).
\r
36 a LIBRARY means a static and/or shared library,
\r
37 which depends on the used OS.
\r
38 (e.g. for libldb 'libldb.so', 'libldb.so.0' 'libldb.so.0.0.1'
\r
39 and libldb.a are created on linux)
\r
40 a LIBRARY typicly has only glue code in it and depends on
\r
41 SUBSYSTEM's (REQUIRED_SUBSYSTEMS).
\r
45 public.m4 - public M4 macros of the build system
\r
46 config_mk.pm - Support for reading .mk files
\r
47 dot.pm - Support for generating .dot files for analysis of dependencies
\r
48 input.pm - Input validation
\r
50 makefile.pm - Makefile generation
\r
51 output.pm - Dependency calculation
\r
56 Toplevel file: configure.in
\r
57 - included by autogen.sh: aclocal.m4
\r
58 which includes the SMB_YXZ*() macros
\r
60 - default tests of the build system
\r
61 are in build/smb_build/check_*.m4
\r
62 (mostly compiler and basic C type and function
\r
65 - subsystem specific stuff should be included by 'SMB_INCLUDE_M4()'
\r
68 Generating the configure file
\r
69 -------------------------
\r
70 you need to rerun ./autogen.sh when 'configure.in' or any
\r
71 '.m4' file was modified, then you need to rerun configure.
\r
74 Generating config.status
\r
75 -----------------------------
\r
76 you need to run ./config.status (or 'configure') after a '.mk'
\r
82 for now please take a look at the .m4 and .mk files
\r
83 you find in the source tree, they should be a good reference to start.
\r