projects.py: Add --exclude support to ldflags

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2017-03-14 15:38:56 +00:00
commit db9cd2755f

View file

@ -209,29 +209,33 @@ def get_libname(names):
return ' '.join(reversed(vals)) return ' '.join(reversed(vals))
# -L needs to contain more paths than libs linked with -l would require # -L needs to contain more paths than libs linked with -l would require
def get_ldpathflags(names): def get_ldpathflags(names, exclude = []):
deps = get_modules_from_project_txt(names, 'pkg.required.jw', 'build', deps = get_modules_from_project_txt(names, 'pkg.required.jw', 'build',
scope = 2, add_self=True, names_only=True) scope = 2, add_self=True, names_only=True)
r = '' r = ''
for m in deps: for m in deps:
if m in exclude:
continue
libname = get_libname([m]) libname = get_libname([m])
if len(libname): if len(libname):
r = r + ' -L' + proj_dir(m) + '/lib' r = r + ' -L' + proj_dir(m) + '/lib'
print(r[1:]) print(r[1:])
def get_ldflags(names): def get_ldflags(names, exclude = []):
#print(names) #print(names)
deps = get_modules_from_project_txt(names, 'pkg.required.jw', 'build', deps = get_modules_from_project_txt(names, 'pkg.required.jw', 'build',
scope = 1, add_self=False, names_only=True) scope = 1, add_self=False, names_only=True)
#print(deps) #print(deps)
r = '' r = ''
for m in reversed(deps): for m in reversed(deps):
if m in exclude:
continue
libname = get_libname([m]) libname = get_libname([m])
if len(libname): if len(libname):
#r = r + ' -L' + proj_dir(m) + '/lib -l' + libname #r = r + ' -L' + proj_dir(m) + '/lib -l' + libname
r = r + ' -l' + libname r = r + ' -l' + libname
if len(r): if len(r):
ldpathflags = get_ldpathflags(names) ldpathflags = get_ldpathflags(names, exclude)
if ldpathflags: if ldpathflags:
r = ldpathflags + ' ' + r r = ldpathflags + ' ' + r
return r[1::] return r[1::]
@ -309,8 +313,9 @@ def cmd_libname(args_):
def cmd_ldflags(args_): def cmd_ldflags(args_):
parser = argparse.ArgumentParser(description='ldlibpath') parser = argparse.ArgumentParser(description='ldlibpath')
parser.add_argument('module', nargs='*', help='Modules') parser.add_argument('module', nargs='*', help='Modules')
parser.add_argument('--exclude', action='append', help='Exclude Modules', default=[])
args=parser.parse_args(args_) args=parser.parse_args(args_)
print(get_ldflags(args.module)) print(get_ldflags(args.module, args.exclude))
def cmd_cflags(args_): def cmd_cflags(args_):
parser = argparse.ArgumentParser(description='cflags') parser = argparse.ArgumentParser(description='cflags')