Author: rinrab
Date: Thu Jun 27 14:13:10 2024
New Revision: 1918707
URL: http://svn.apache.org/viewvc?rev=1918707&view=rev
Log:
On the 'cmake' branch: Implement internal dependencies between
libsvn_* targets.
* build/generator/gen_cmake.py
(cmake_target): Add `libs` field to the class and its constructor.
(Generator.write): Handle TargetLinked dependencies and add them to libs
of each target, but currently only if they are not external.
(Generator.write): Add target only if its type is 'exe' or 'lib', otherwise
the target would be simply ignored.
* build/generator/templates/CMakeLists.txt.ezt
(): Generate target_link_libraries commands, based on targets.libs fields.
Modified:
subversion/branches/cmake/build/generator/gen_cmake.py
subversion/branches/cmake/build/generator/templates/CMakeLists.txt.ezt
Modified: subversion/branches/cmake/build/generator/gen_cmake.py
URL:
http://svn.apache.org/viewvc/subversion/branches/cmake/build/generator/gen_cmake.py?rev=1918707&r1=1918706&r2=1918707&view=diff
==============================================================================
--- subversion/branches/cmake/build/generator/gen_cmake.py (original)
+++ subversion/branches/cmake/build/generator/gen_cmake.py Thu Jun 27 14:13:10
2024
@@ -8,10 +8,11 @@ class _eztdata(object):
vars(self).update(kw)
class cmake_target():
- def __init__(self, name: str, type: str, sources):
+ def __init__(self, name: str, type: str, sources, libs):
self.name = name
self.type = type
self.sources = sources
+ self.libs = libs
def get_target_type(target: gen_base.Target):
if isinstance(target, gen_base.TargetExe):
@@ -71,11 +72,15 @@ class Generator(gen_base.GeneratorBase):
pass
sources = []
+ libs = []
for dep in self.get_dependecies(target.name):
if isinstance(dep, gen_base.TargetLinked):
- # TODO:
- pass
+ if dep.external_lib:
+ # TODO: implement external dependecies
+ pass
+ else:
+ libs.append(dep.name)
elif isinstance(dep, gen_base.ObjectFile):
deps = self.graph.get_sources(gen_base.DT_OBJECT,
dep,
@@ -83,13 +88,17 @@ class Generator(gen_base.GeneratorBase):
for dep in deps:
sources.append(dep.filename)
+ target_type = get_target_type(target)
+
target = cmake_target(
name = target.name,
- type = get_target_type(target),
- sources = sources
+ type = target_type,
+ sources = sources,
+ libs = libs
)
- targets.append(target)
+ if target_type in ["exe", "lib"]:
+ targets.append(target)
data = _eztdata(
targets = targets,
Modified: subversion/branches/cmake/build/generator/templates/CMakeLists.txt.ezt
URL:
http://svn.apache.org/viewvc/subversion/branches/cmake/build/generator/templates/CMakeLists.txt.ezt?rev=1918707&r1=1918706&r2=1918707&view=diff
==============================================================================
--- subversion/branches/cmake/build/generator/templates/CMakeLists.txt.ezt
(original)
+++ subversion/branches/cmake/build/generator/templates/CMakeLists.txt.ezt Thu
Jun 27 14:13:10 2024
@@ -9,4 +9,7 @@ add_library([targets.name][for targets.s
add_executable([targets.name][for targets.sources]
[targets.sources][end]
)
-[end][end]
+[end]target_link_libraries([targets.name][for targets.libs]
+ [targets.libs][end]
+)
+[end]