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]
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.