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)