Author: rinrab
Date: Fri Jun 13 12:44:06 2025
New Revision: 1926386
URL: http://svn.apache.org/viewvc?rev=1926386&view=rev
Log:
Make APR and APR Util dependencies to be linked as PUBLIC, since our headers
require them.
* build/generator/gen_cmake.py
(PUBLIC_LIB_DEPENDS): Define a white-list of libraries to consider as PUBLIC.
(Generator::write): Prepare private_libs and public_libs separately.
* build/generator/templates/targets.cmake.ezt
(libs): Link private_libs and public_libs separately.
* CMakeLists.txt: revert part of r1926360, where APR include dir is added to
global include directories.
Patch by: brane
Reviewed by: dsahlberg, rinrab
Modified:
subversion/trunk/CMakeLists.txt
subversion/trunk/build/generator/gen_cmake.py
subversion/trunk/build/generator/templates/targets.cmake.ezt
Modified: subversion/trunk/CMakeLists.txt
URL:
http://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?rev=1926386&r1=1926385&r2=1926386&view=diff
==============================================================================
--- subversion/trunk/CMakeLists.txt (original)
+++ subversion/trunk/CMakeLists.txt Fri Jun 13 12:44:06 2025
@@ -289,12 +289,6 @@ else()
endif()
endif()
-# APR and APR-Util include directories must be available to all our sources,
-# not just those that happen to link with one or the other of these libraries.
-get_target_property(_apr_include external-apr INTERFACE_INCLUDE_DIRECTORIES)
-get_target_property(_apu_include external-aprutil
INTERFACE_INCLUDE_DIRECTORIES)
-include_directories(${_apr_include} ${_apu_include})
-
### ZLIB
if(SVN_USE_PKG_CONFIG)
Modified: subversion/trunk/build/generator/gen_cmake.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_cmake.py?rev=1926386&r1=1926385&r2=1926386&view=diff
==============================================================================
--- subversion/trunk/build/generator/gen_cmake.py (original)
+++ subversion/trunk/build/generator/gen_cmake.py Fri Jun 13 12:44:06 2025
@@ -53,6 +53,10 @@ def get_module_name(name):
return name[7:].upper()
+# APR and APR-Util are part of our public interface and should be
+# declared PUBLIC in library target dependencies.
+PUBLIC_LIB_DEPENDS = frozenset(["external-apr", "external-aprutil"])
+
def get_output_name(target):
if target.name.startswith("lib"):
return target.name[3:] + "-1"
@@ -146,7 +150,8 @@ class Generator(gen_base.GeneratorBase):
msvc_export.append("subversion/include/" + export)
sources = []
- libs = []
+ private_libs = []
+ public_libs = []
for dep in self.get_dependencies(target.name):
enable_condition += get_target_conditions(dep)
@@ -157,9 +162,9 @@ class Generator(gen_base.GeneratorBase):
elif isinstance(dep, gen_base.TargetLinked):
if dep.external_lib:
if dep.name == "ra-libs":
- libs.append("ra-libs")
+ private_libs.append("ra-libs")
elif dep.name == "fs-libs":
- libs.append("fs-libs")
+ private_libs.append("fs-libs")
elif dep.name in ["apriconv",
"apr_memcache",
"magic",
@@ -170,9 +175,14 @@ class Generator(gen_base.GeneratorBase):
# TODO:
pass
else:
- libs.append("external-" + dep.name)
+ dep_name = "external-" + dep.name
+ if (dep_name in PUBLIC_LIB_DEPENDS
+ and not isinstance(target, gen_base.TargetExe)):
+ public_libs.append(dep_name)
+ else:
+ private_libs.append(dep_name)
else:
- libs.append(dep.name)
+ private_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):
@@ -212,7 +222,9 @@ class Generator(gen_base.GeneratorBase):
output_name = get_output_name(target),
type = target_type,
sources = sources,
- libs = libs,
+ libs = public_libs + private_libs,
+ public_libs = public_libs,
+ private_libs = private_libs,
msvc_libs = msvc_libs,
msvc_objects = msvc_objects,
msvc_export = msvc_export,
Modified: subversion/trunk/build/generator/templates/targets.cmake.ezt
URL:
http://svn.apache.org/viewvc/subversion/trunk/build/generator/templates/targets.cmake.ezt?rev=1926386&r1=1926385&r2=1926386&view=diff
==============================================================================
--- subversion/trunk/build/generator/templates/targets.cmake.ezt (original)
+++ subversion/trunk/build/generator/templates/targets.cmake.ezt Fri Jun 13
12:44:06 2025
@@ -69,9 +69,12 @@ if ([targets.enable_condition])[is targe
WORKING_DIRECTORY $<TARGET_FILE_DIR:[targets.name]>
)
set_tests_properties([targets.namespace].[targets.name] PROPERTIES
ENVIRONMENT LD_LIBRARY_PATH=$<TARGET_FILE_DIR:[targets.name]>)
- [end]target_link_libraries([targets.name] PRIVATE[for targets.libs]
- [targets.libs][end]
- )[if-any targets.msvc_libs]
+ [end][if-any targets.public_libs]target_link_libraries([targets.name]
PUBLIC[for targets.public_libs]
+ [targets.public_libs][end]
+ )
+ [end][if-any targets.private_libs]target_link_libraries([targets.name]
PRIVATE[for targets.private_libs]
+ [targets.private_libs][end]
+ )[end][if-any targets.msvc_libs]
if (WIN32)
target_link_libraries([targets.name] PRIVATE[for targets.msvc_libs]
[targets.msvc_libs][end])
endif()[end][if-any targets.msvc_objects]