# specialist handling of header files for Samba
-import Build, re, Task, TaskGen, shutil, sys
-from samba_utils import *
+import os, re, sys, fnmatch
+import Build, Logs, Utils
+from samba_utils import TO_LIST, os_path_relpath
def header_install_path(header, header_path):
if found:
continue
+ if task.env.public_headers_allow_broken:
+ Logs.warn("Broken public header include '%s' in '%s'" % (hpath, relsrc))
+ outfile.write(line)
+ continue
+
# try to be nice to the developer by suggesting an alternative
suggested = find_suggested_header(hpath)
outfile.close()
outfile.close()
+def public_headers_simple(bld, public_headers, header_path=None, public_headers_install=True):
+ '''install some headers - simple version, no munging needed
+ '''
+ if not public_headers_install:
+ return
+ for h in TO_LIST(public_headers):
+ inst_path = header_install_path(h, header_path)
+ if h.find(':') != -1:
+ s = h.split(":")
+ h_name = s[0]
+ inst_name = s[1]
+ else:
+ h_name = h
+ inst_name = os.path.basename(h)
+ bld.INSTALL_FILES('${INCLUDEDIR}', h_name, destname=inst_name)
+
+
def PUBLIC_HEADERS(bld, public_headers, header_path=None, public_headers_install=True):
'''install some headers
directories relative to INCLUDEDIR
'''
bld.SET_BUILD_GROUP('final')
+
if not bld.env.build_public_headers:
- bld.env.build_public_headers = ''
+ # in this case no header munging neeeded. Used for tdb, talloc etc
+ public_headers_simple(bld, public_headers, header_path=header_path,
+ public_headers_install=public_headers_install)
+ return
# create the public header in the given path
# in the build tree
header_map[src_path] = target_path
- build_dir = os.path.join(bld.bldnode.abspath(),
- 'default',
- bld.env.build_public_headers,
- inst_path)
- if not os.path.exists(build_dir):
- mkdir_p(build_dir)
-
t = bld.SAMBA_GENERATOR('HEADER_%s/%s/%s' % (relpath2, inst_path, inst_name),
group='headers',
rule=create_public_header,