conf.find_program('cargo', var='CARGO',
mandatory=not conf.env.disable_rust)
-def SAMBA_RUST(bld, name, source, enabled=True):
+def SAMBA_RUST(bld, rust_subdir, target_name, source, enabled=True):
# force-disable when we can't build rust modules, so
# every single call doesn't need to pass this in.
if bld.env.disable_rust:
release_flag = ''
if bld.env.debug or bld.env.developer:
- target = os.path.join('debug', name)
+ target = os.path.join('debug', target_name)
else:
release_flag = '--release'
- target = os.path.join('release', name)
+ target = os.path.join('release', target_name)
target = bld.path.find_or_declare(target)
- rust_vars = 'CARGO_TARGET_DIR=%s' % bld.path.find_or_declare('./')
+ # The Rust target directory is one directory above the located target
+ target_dir = os.path.join(os.path.dirname('%s' % target), '../')
- rule = [rust_vars, '${CARGO}', 'build',
- '--manifest-path=${SRC[0].abspath(env)}', release_flag]
- bld.SAMBA_GENERATOR(name,
+ rule = ['${CARGO}', 'build',
+ '--manifest-path=${SRC[0].abspath(env)}',
+ '--target-dir=%s' % target_dir,
+ release_flag]
+ bld.SAMBA_GENERATOR(target_name,
' '.join(rule),
- source='Cargo.toml %s' % source,
+ source='%s/Cargo.toml %s' % (rust_subdir, source),
target=target,
group='final',
enabled=enabled)
#!/usr/bin/env python
if conf.env.enable_himmelblau:
- bld.RECURSE('himmelblaud')
- bld.RECURSE('nss')
- bld.RECURSE('pam')
+ bld.SAMBA_RUST_BINARY('himmelblaud', 'himmelblaud', 'himmelblaud/src/main.rs param/src/lib.rs chelps/src/lib.rs dbg/src/lib.rs ntstatus_gen/src/lib.rs sock/src/lib.rs tdb/src/lib.rs version/src/lib.rs')
+ bld.SAMBA_RUST_LIBRARY('nss', 'libnss_himmelblau.so', 'nss/src/lib.rs sock/src/lib.rs ntstatus_gen/src/lib.rs param/src/lib.rs version/src/lib.rs')
+ bld.SAMBA_RUST_LIBRARY('pam', 'libpam_himmelblau.so', 'pam/src/lib.rs pam/src/pam/constants.rs pam/src/pam/conv.rs pam/src/pam/items.rs pam/src/pam/items.rs pam/src/pam/macros.rs pam/src/pam/mod.rs pam/src/pam/module.rs sock/src/lib.rs ntstatus_gen/src/lib.rs param/src/lib.rs version/src/lib.rs')