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]


Reply via email to