in build/generator/gen_cmake.py [0:0]
def write(self):
targets = []
for target in self.get_install_sources():
group = None
enable_condition = []
enable_condition += get_target_conditions(target)
build_type = None
swig_lang = None
is_apache_mod = None
if isinstance(target, gen_base.TargetScript):
# there is nothing to build
continue
elif isinstance(target, gen_base.TargetRaModule):
group = "ra-libs"
build_type = "${SVN_RA_BUILD_TYPE}"
elif isinstance(target, gen_base.TargetFsModule):
group = "fs-libs"
build_type = "${SVN_FS_BUILD_TYPE}"
elif isinstance(target, gen_base.TargetApacheMod):
is_apache_mod = True
elif isinstance(target, gen_base.TargetSWIG):
swig_lang = target.lang
elif isinstance(target, gen_base.TargetLib):
if target.msvc_static:
build_type = "STATIC"
msvc_export = []
if isinstance(target, gen_base.TargetLib):
for export in target.msvc_export:
msvc_export.append("subversion/include/" + export)
sources = []
libs = []
for dep in self.get_dependencies(target.name):
enable_condition += get_target_conditions(dep)
if isinstance(dep, gen_base.TargetSWIG):
# Just ignore them
pass
elif isinstance(dep, gen_base.TargetLinked):
if dep.external_lib:
if dep.name == "ra-libs":
libs.append("ra-libs")
elif dep.name == "fs-libs":
libs.append("fs-libs")
elif dep.name in ["apriconv",
"apr_memcache",
"magic",
"macos-plist",
"macos-keychain",
"sasl"]:
# These dependencies are currently ignored
# TODO:
pass
else:
libs.append("external-" + dep.name)
else:
libs.append(dep.name)
elif isinstance(dep, gen_base.ObjectFile):
for source in self.graph.get_sources(gen_base.DT_OBJECT, dep,
gen_base.SourceFile):
sources.append(source.filename)
for obj in self.graph.get_sources(gen_base.DT_OBJECT, dep,
gen_base.ObjectFile):
for source in self.graph.get_sources(gen_base.DT_SWIG_C, obj,
gen_base.SWIGSource):
sources.append(source.filename)
target_type = get_target_type(target)
if target_type in ["exe", "lib", "test", "swig"]:
msvc_libs = []
msvc_objects = []
for lib in target.msvc_libs:
if lib.endswith(".obj"):
msvc_objects.append(lib)
else:
msvc_libs.append(lib)
if isinstance(target, gen_base.TargetLib) or target.install == "bin":
install_target = True
else:
install_target = False
enable_condition = list(set(enable_condition))
if len(enable_condition) > 0:
enable_condition_str = " AND ".join(enable_condition)
else:
enable_condition_str = "TRUE"
new_target = _eztdata(
name = target.name,
output_name = get_output_name(target),
type = target_type,
sources = sources,
libs = libs,
msvc_libs = msvc_libs,
msvc_objects = msvc_objects,
msvc_export = msvc_export,
enable_condition = enable_condition_str,
group = group,
build_type = build_type,
description = target.desc,
srcdir = target.path,
install_target = ezt.boolean(install_target),
swig_lang = swig_lang,
is_apache_mod = is_apache_mod,
namespace = os.path.basename(target.path),
)
targets.append(new_target)
data = _eztdata(
targets = targets,
)
output_file = open(os.path.join('build', 'cmake', 'targets.cmake'), 'w')
template = ezt.Template(compress_whitespace=False)
template.parse_file(os.path.join('build', 'generator', 'templates',
'targets.cmake.ezt'))
template.generate(output_file, data)