VERSION: Disable GIT_SNAPSHOT for the 4.9.1 release.
[Samba.git] / BUILD_SYSTEMS.txt
blobf1d1ce393fb7111e02d362b64da3281dd0861039
1 BUILDING SAMBA 4.0
2 ===================================
4 The waf build
5 -------------
7 Samba 4.0 ships with a new build system, based on waf.  A background to
8 this build system can be found at https://wiki.samba.org/index.php/Waf
10 This is the build system that is used when you run ./configure && make
11 in the top level of a Samba 4.0 release tree.
13 For the vast majority of our users, this is the build system you should
14 use.  It supports parallel and incremental builds, and builds the whole
15 Samba suite, the file server, the print server, the NT4 domain
16 controller, winbind, the AD Domain Controller, the client libraries and
17 the python libraries.  
19 A key feature for many of our distributors and OEMs is that despite the
20 range of additional features, the resulting binaries and libraries are
21 substantially smaller, because we use shared libraries extensively. 
23 For distributions that have a requirement to use the system-supplied
24 Kerberos library, we support building against a Heimdal or system MIT
25 Kerberos library, provided the version is recent enough (otherwise we
26 will use our internal version of Heimdal).  Please note that builds
27 with MIT krb5 support will not have AD DC features.
29 Where we provide a tool under a name that was used in Samba 3.x, it
30 continues to behave in the same way it always has.  This will ensure
31 that our change in build system does not impact on our user's ability
32 to use Samba as they always have.
34 For developers, this build system backs a comprehensive 'make test',
35 which provides code coverage of around 48% of our code by line:
36 https://build.samba.org/lcov/data/coverage/samba_4_0_test/
38 This build system also implements important features such as ABI
39 checking (which protects you as users from accidental changes to our
40 published libraries), symbol versions and dependency checked incremental
41 rebuilds after header-file changes. 
43 The waf build also assists developers by providing fully-linked binaries
44 that run from bin/ without needing to set LD_LIBRARY_PATH. 
46 For users who do not have python installed on their systems, we provide
47 a install_with_python.sh script, which will install a local copy of
48 python sufficient to run the build system, without impacting on the rest
49 of the system.  
51 Within this requirement, we expect that this build will run on all our
52 supported platforms, and will actively deal with any portability issues
53 that users can bring to our attention. 
55 For all these reasons, we highly recommend this new build system to all
56 our users, for whatever purpose you want to put Samba to.
58 The autoconf build
59 ------------------
61 The autoconf build was removed in Samba 4.1.  If you have tried and
62 failed to use our waf build system, you may wish to use the latest
63 supported 4.0 release instead, while we address your use case.
65 Optional Libraries
66 ------------------
68 To assist users and distributors to build Samba with the full feature
69 set, the build system will abort if our dependent libraries and their
70 header files are not found on the target system.  This will mean for
71 example, that xattr, acl and ldap headers must be installed for the
72 default build to complete.  The configure system will check for these
73 headers, and the error message will indicate the option (such as
74 --without-acl-support) that can be specified to skip this requirement.
76 This will assist users and in particular distributors in building fully
77 functional packages, while allowing those on systems truly without these
78 facilities to continue to build Samba after careful consideration.
80 This feature is not currently supported for xattr.