#!/usr/bin/env python # top level waf build script for samba4 srcdir = "." import samba_version bld.env.suffix3 = "3" bld.env.suffix4 = "4" # create separate build groups for building the asn1 and et compiler, then # building the C from ASN1 and IDL, and finally the main build process bld.SETUP_BUILD_GROUPS() bld.AUTOCLEANUP_STALE_FILES() # enable building of public headers in the build tree bld.env.build_public_headers = 'include/public' # these are includes which appear in public headers, but with #ifdef conditional # compilation, so they are safe bld.env.public_headers_skip = ['lib/param/param_proto.h', 'lib/param/param_functions.h'] version=samba_version.load_version(bld.env, is_install=bld.is_install) bld.SAMBA_MKVERSION('version.h') # bld.ENABLE_MAGIC_ORDERING() bld.env.ABS_TOP_SRCDIR = bld.srcnode.abspath() + '/docs-xml' bld.env.ABS_TOP_BUILDDIR = bld.bldnode.abspath() + '/docs-xml' bld.CONFIGURE_FILE('docs-xml/build/catalog.xml', ABS_TOP_BUILDDIR = bld.env.ABS_TOP_BUILDDIR, ABS_TOP_SRCDIR=bld.env.ABS_TOP_SRCDIR) bld.env.DOC_VERSION=version.STRING bld.CONFIGURE_FILE('docs-xml/build/DTD/samba.build.version', DOC_VERSION=bld.env.DOC_VERSION) bld.RECURSE('docs-xml') # This needs to be earlier than anything containing IDL # That in turn allows the build rules for fuzz_ndr_X to be # near the code bld.RECURSE('lib/fuzzing') bld.RECURSE('lib/replace') bld.RECURSE('lib/socket') bld.RECURSE('lib/talloc') bld.RECURSE('lib/tevent') bld.RECURSE('lib/texpect') bld.RECURSE('lib/addns') bld.RECURSE('lib/tdb') bld.RECURSE('lib/ldb') bld.RECURSE('lib/param') bld.RECURSE('lib/printer_driver') bld.RECURSE('lib/audit_logging') bld.RECURSE('lib/messaging') bld.RECURSE('dynconfig') bld.RECURSE('lib/util/charset') bld.RECURSE('python') bld.RECURSE('source4/param') bld.RECURSE('source4/librpc') bld.RECURSE('source4/dsdb') bld.RECURSE('source4/samba') bld.RECURSE('source4/cluster') bld.RECURSE('source4/libnet') bld.RECURSE('source4/auth') bld.RECURSE('auth') bld.RECURSE('auth/kerberos') bld.RECURSE('nsswitch') bld.RECURSE('nsswitch/libwbclient') bld.RECURSE('source4/lib/samba3') bld.RECURSE('source4/lib/socket') bld.RECURSE('lib/ldb-samba') bld.RECURSE('source4/lib/tls') bld.RECURSE('source4/lib/registry') bld.RECURSE('source4/lib/messaging') bld.RECURSE('source4/lib/events') if bld.CHECK_FOR_THIRD_PARTY(): bld.RECURSE('third_party') bld.RECURSE('source4/lib/stream') bld.RECURSE('lib/afs') bld.RECURSE('lib/util') bld.RECURSE('lib/tdb_wrap') bld.RECURSE('lib/tdr') bld.RECURSE('lib/tsocket') bld.RECURSE('lib/crypto') bld.RECURSE('lib/torture') bld.RECURSE('libgpo') bld.RECURSE('source4/dns_server') bld.RECURSE('source4/echo_server') bld.RECURSE('source4/smb_server') bld.RECURSE('source4/rpc_server') bld.RECURSE('source4/ldap_server') bld.RECURSE('source4/winbind') bld.RECURSE('source4/nbt_server') bld.RECURSE('source4/wrepl_server') bld.RECURSE('source4/cldap_server') bld.RECURSE('source4/ntp_signd') bld.RECURSE('source4/utils/oLschema2ldif') bld.RECURSE('source4/ntvfs') bld.RECURSE('source4/torture') bld.RECURSE('librpc') bld.RECURSE('source4') bld.RECURSE('source4/libcli') bld.RECURSE('libcli/smb') bld.RECURSE('libcli/util') bld.RECURSE('libcli/cldap') bld.RECURSE('libcli/wsp') bld.RECURSE('lib/smbconf') bld.RECURSE('lib/async_req') bld.RECURSE('lib/dbwrap') bld.RECURSE('libcli/security') bld.RECURSE('libcli/ldap') bld.RECURSE('libcli/nbt') bld.RECURSE('libcli/netlogon') bld.RECURSE('libcli/auth') bld.RECURSE('libcli/lsarpc') bld.RECURSE('libcli/drsuapi') bld.RECURSE('libcli/echo') bld.RECURSE('libcli/dns') bld.RECURSE('libcli/samsync') bld.RECURSE('libcli/registry') bld.RECURSE('libcli/http') bld.RECURSE('lib/mscat') bld.RECURSE('lib/cmdline') bld.RECURSE('source4/lib/policy') bld.RECURSE('libcli/named_pipe_auth') if bld.CONFIG_GET('ENABLE_SELFTEST'): bld.RECURSE('testsuite/unittests') bld.RECURSE('libcli/tstream_binding_handle') if bld.CONFIG_GET('KRB5_VENDOR') in (None, 'heimdal'): if bld.CONFIG_GET("HEIMDAL_KRB5_CONFIG") and bld.CONFIG_GET("USING_SYSTEM_KRB5"): # When both HEIMDAL_KRB5_CONFIG and KRB5_CONFIG are set and not equal, # it means one is Heimdal-specific (krb5-config.heimdal, for example) # and there is system heimdal bld.PROCESS_SEPARATE_RULE('system_heimdal') else: bld.PROCESS_SEPARATE_RULE('embedded_heimdal') else: bld.PROCESS_SEPARATE_RULE('system_mitkrb5') bld.RECURSE('libcli/smbreadline') if bld.AD_DC_BUILD_IS_ENABLED(): bld.RECURSE('source4/setup') bld.RECURSE('source4/kdc') if bld.env.with_ctdb: bld.RECURSE('ctdb') bld.RECURSE('source4/scripting') bld.RECURSE('pidl') bld.RECURSE('lib') bld.RECURSE('libds/common') bld.RECURSE('lib/pthreadpool') bld.RECURSE('source3') bld.RECURSE('dfs_server') bld.RECURSE('file_server') bld.RECURSE('lib/krb5_wrap') bld.RECURSE('packaging') bld.RECURSE('rust') bld.RECURSE('testsuite/headers') bld.SYMBOL_CHECK() bld.DUP_SYMBOL_CHECK()