Skip to content

Commit 124c6eb

Browse files
committed
Omit binary targets for source-only packages
Package which do not have build rules (except source setup) and which do not depend on any binary package shall not be transformed into binary targets. Such binary targets might be convenient for use as "meta packages". But for Superbuild, we prefer explicit dependencies.
1 parent 915dc3d commit 124c6eb

File tree

1 file changed

+36
-21
lines changed

1 file changed

+36
-21
lines changed

CMakeLists.txt

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -938,9 +938,10 @@ endfunction()
938938
# Setup package dependencies
939939
function(_sb_resolve_dependencies)
940940
set(suffix "${ARGV0}")
941+
get_property(source_packages GLOBAL PROPERTY SB_SOURCE_PACKAGES)
941942
get_property(packages GLOBAL PROPERTY SB_PACKAGES)
942943
get_property(aliases GLOBAL PROPERTY SB_ALIASES)
943-
foreach(package ${packages})
944+
foreach(package ${source_packages} ${packages})
944945
if(NOT TARGET ${package}${suffix})
945946
continue()
946947
endif()
@@ -966,6 +967,9 @@ function(_sb_resolve_dependencies)
966967
string(REGEX REPLACE "^source:" "" real_dependency ${dependency})
967968
set(real_suffix "-source")
968969
set(real_package ${package}-source)
970+
if(NOT TARGET ${real_package})
971+
string(REGEX REPLACE "-source-source$" "-source" real_package ${real_package})
972+
endif()
969973
else()
970974
if(SUPERBUILD_DISABLE_DEPENDENCIES)
971975
continue()
@@ -1343,6 +1347,9 @@ function(superbuild_package)
13431347
endif()
13441348
_sb_make_source(${package})
13451349

1350+
set(binary_dependencies "${SB_PACKAGE_DEPENDS}")
1351+
list(FILTER binary_dependencies EXCLUDE REGEX "^source:.*")
1352+
13461353
if(DEFINED SB_PACKAGE_BUILD
13471354
OR "${package}" STREQUAL "toolchain-info")
13481355
if(TARGET ${package}-source)
@@ -1418,32 +1425,40 @@ function(superbuild_package)
14181425
add_dependencies(${executable}-${SB_PACKAGE_VERSION} ${package})
14191426
set(keyword "")
14201427
endforeach()
1421-
elseif(DEFINED SB_PACKAGE_DEPENDS)
1428+
elseif(binary_dependencies)
14221429
add_custom_target(${package})
1423-
else()
1430+
elseif(NOT DEFINED SB_PACKAGE_DEPENDS)
14241431
return()
14251432
endif()
14261433

1427-
# Publish package properties
1428-
set_property(TARGET ${package} PROPERTY SB_PACKAGE_FILE ${CMAKE_CURRENT_LIST_FILE})
1429-
foreach(arg ${sb_options} ${sb_one_value_args} ${sb_multi_value_args})
1430-
set_property(TARGET ${package} PROPERTY SB_PACKAGE_${arg} ${SB_PACKAGE_${arg}})
1431-
endforeach()
1432-
1433-
# Publish package via global properties
1434-
set_property(GLOBAL APPEND PROPERTY SB_PACKAGES ${package})
1435-
string(REPLACE "-" "." version ${SB_PACKAGE_VERSION})
1436-
get_property(default_version GLOBAL PROPERTY SB_DEFAULT_${SB_PACKAGE_NAME})
1437-
string(REPLACE "-" "." default_version "${default_version}")
1438-
if(NOT SB_PACKAGE_NO_DEFAULT
1439-
AND (NOT default_version
1440-
OR version VERSION_GREATER default_version))
1441-
set_property(GLOBAL PROPERTY SB_DEFAULT_${SB_PACKAGE_NAME} ${SB_PACKAGE_VERSION})
1434+
if(TARGET ${package})
1435+
# Publish package via global properties
1436+
set(target ${package})
1437+
set_property(GLOBAL APPEND PROPERTY SB_PACKAGES ${package})
1438+
1439+
string(REPLACE "-" "." version ${SB_PACKAGE_VERSION})
1440+
get_property(default_version GLOBAL PROPERTY SB_DEFAULT_${SB_PACKAGE_NAME})
1441+
string(REPLACE "-" "." default_version "${default_version}")
1442+
if(NOT SB_PACKAGE_NO_DEFAULT
1443+
AND (NOT default_version
1444+
OR version VERSION_GREATER default_version))
1445+
set_property(GLOBAL PROPERTY SB_DEFAULT_${SB_PACKAGE_NAME} ${SB_PACKAGE_VERSION})
1446+
endif()
1447+
1448+
# Publish provided aliases
1449+
foreach(alias ${SB_PACKAGE_PROVIDES})
1450+
set_property(GLOBAL APPEND PROPERTY SB_ALIASES "${alias} ${package}")
1451+
endforeach()
1452+
else()
1453+
# Publish source package via global properties
1454+
set(target ${package}-source)
1455+
set_property(GLOBAL APPEND PROPERTY SB_SOURCE_PACKAGES ${target})
14421456
endif()
14431457

1444-
# Publish provided aliases
1445-
foreach(alias ${SB_PACKAGE_PROVIDES})
1446-
set_property(GLOBAL APPEND PROPERTY SB_ALIASES "${alias} ${package}")
1458+
# Publish package properties
1459+
set_property(TARGET ${target} PROPERTY SB_PACKAGE_FILE ${CMAKE_CURRENT_LIST_FILE})
1460+
foreach(arg ${sb_options} ${sb_one_value_args} ${sb_multi_value_args})
1461+
set_property(TARGET ${target} PROPERTY SB_PACKAGE_${arg} ${SB_PACKAGE_${arg}})
14471462
endforeach()
14481463
endfunction()
14491464

0 commit comments

Comments
 (0)