import os from samba_utils import os_path_relpath def build_test_headers(task): '''symlink a header in the build tree''' tgt = task.outputs[0].bldpath(task.env) f = open(tgt, mode='w') f.write('/* generated header test */\n') hlist = task.env.public_headers_list[:] hlist.sort() # We need to include tdb.h before ntdb.h. It's the rules! if 'tdb.h' in hlist and 'ntdb.h' in hlist: hlist.remove('ntdb.h') hlist.append('ntdb.h') for h in hlist: f.write('#include "%s"\n' % os.path.normpath(h)) f.close() relpath1 = os_path_relpath(bld.srcnode.abspath(), bld.curdir) public_headers = [] for h in bld.env.public_headers_list: public_headers.append(os.path.join(relpath1, bld.env.build_public_headers, h)) bld.SAMBA_GENERATOR('test_headers.h', group='main', rule=build_test_headers, source=public_headers, target='test_headers.h') cflags='' for lib in ['talloc', 'tevent', 'tdb', 'ldb', 'popt' ]: ename = 'CPPPATH_%s' % lib.upper() for p in bld.env[ename]: cflags += bld.env.CPPPATH_ST % p + ' ' if not bld.env.USING_SYSTEM_POPT: cflags += bld.env.CPPPATH_ST % '../lib/popt' if bld.env.DEVELOPER_MODE: bld.SAMBA_BINARY('test_headers', source='test_headers.c', includes="#include/public", pyembed=True, cflags=cflags, local_include=True, global_include=False, use_global_deps=False, install=False)