@@ -19,7 +19,9 @@ check_required_components(Nabla)
1919# nabla_sync_runtime_modules(
2020# [TARGETS <t1;t2;...>]
2121# [DESTINATION <path>]
22- # [DESTINATION_<CONFIG> <path>]...
22+ # [DESTINATION_DEBUG <path>]
23+ # [DESTINATION_RELEASE <path>]
24+ # [DESTINATION_RELWITHDEBINFO <path>]
2325# [MODE <CONFIGURE_TIME|BUILD_TIME|BOTH>]
2426# [RUNTIME_MODULES_SUBDIR <relative-subdir>]
2527# [BUILD_TRIGGER_TARGETS <t1;t2;...>]
@@ -37,7 +39,9 @@ check_required_components(Nabla)
3739# nabla_setup_runtime_modules(
3840# [TARGETS <t1;t2;...>]
3941# [DESTINATION <path>]
40- # [DESTINATION_<CONFIG> <path>]...
42+ # [DESTINATION_DEBUG <path>]
43+ # [DESTINATION_RELEASE <path>]
44+ # [DESTINATION_RELWITHDEBINFO <path>]
4145# [APPLY_LOOKUP_TO_TARGETS <t1;t2;...>]
4246# [RUNTIME_MODULES_SUBDIR <relative-subdir>]
4347# [MODE <CONFIGURE_TIME|BUILD_TIME|BOTH>]
@@ -106,64 +110,24 @@ function(_nbl_runtime_modules_collect_consumer_configs _OUT_CONFIGS)
106110 set (${_OUT_CONFIGS} ${_consumer_configs} PARENT_SCOPE )
107111endfunction ()
108112
109- function (_nbl_runtime_modules_extract_destination_overrides _OUT_OVERRIDES _OUT_UNKNOWN )
110- set (_tokens ${ARGN} )
111- set (_overrides "" )
112- set (_unknown "" )
113-
114- list (LENGTH _tokens _tokens_len)
115- math (EXPR _tokens_mod2 "${_tokens_len} % 2" )
116- if (_tokens_mod2)
117- set (${_OUT_OVERRIDES} "" PARENT_SCOPE )
118- set (${_OUT_UNKNOWN} "${_tokens} " PARENT_SCOPE )
119- return ()
120- endif ()
121-
122- while (TRUE )
123- list (LENGTH _tokens _tokens_len)
124- if (_tokens_len EQUAL 0)
125- break ()
126- endif ()
127-
128- list (POP_FRONT _tokens _key)
129- list (POP_FRONT _tokens _value)
130- string (TOUPPER "${_key} " _key_upper)
131-
132- if (_key_upper MATCHES "^DESTINATION_[A-Z0-9_]+$" )
133- string (REGEX REPLACE "^DESTINATION_" "" _cfg_upper "${_key_upper} " )
134- list (APPEND _overrides "${_cfg_upper} ::${_value} " )
135- else ()
136- list (APPEND _unknown "${_key} " "${_value} " )
137- endif ()
138- endwhile ()
139-
140- set (${_OUT_OVERRIDES} ${_overrides} PARENT_SCOPE )
141- set (${_OUT_UNKNOWN} ${_unknown} PARENT_SCOPE )
142- endfunction ()
143-
144- function (_nbl_runtime_modules_expand_destination_pairs _DESTINATION_DEFAULT _DESTINATION_OVERRIDES _OUT_CFG_DST_PAIRS )
113+ function (_nbl_runtime_modules_expand_destination_pairs _DESTINATION_DEFAULT _DESTINATION_DEBUG _DESTINATION_RELEASE _DESTINATION_RELWITHDEBINFO _OUT_CFG_DST_PAIRS )
145114 _nbl_runtime_modules_collect_consumer_configs (_consumer_configs )
146115 set (_cfg_dst_pairs "" )
147116
148117 foreach (_consumer_config IN LISTS _consumer_configs)
149118 string (TOUPPER "${_consumer_config} " _cfg_upper)
150- set (_resolved_destination "" )
151-
152- foreach (_override IN LISTS _DESTINATION_OVERRIDES)
153- string (REPLACE "::" ";" _override_parts "${_override} " )
154- list (GET _override_parts 0 _override_cfg_upper)
155- if (_override_cfg_upper STREQUAL _cfg_upper)
156- list (GET _override_parts 1 _resolved_destination)
157- break ()
158- endif ()
159- endforeach ()
160-
161- if (_resolved_destination STREQUAL "" )
119+ if (_cfg_upper STREQUAL "DEBUG" AND NOT _DESTINATION_DEBUG STREQUAL "" )
120+ set (_resolved_destination "${_DESTINATION_DEBUG} " )
121+ elseif (_cfg_upper STREQUAL "RELEASE" AND NOT _DESTINATION_RELEASE STREQUAL "" )
122+ set (_resolved_destination "${_DESTINATION_RELEASE} " )
123+ elseif (_cfg_upper STREQUAL "RELWITHDEBINFO" AND NOT _DESTINATION_RELWITHDEBINFO STREQUAL "" )
124+ set (_resolved_destination "${_DESTINATION_RELWITHDEBINFO} " )
125+ else ()
162126 set (_resolved_destination "${_DESTINATION_DEFAULT} " )
163127 endif ()
164128
165129 if (_resolved_destination STREQUAL "" )
166- message (FATAL_ERROR "Nabla: missing destination for consumer config \" ${_consumer_config} \" . Provide DESTINATION or DESTINATION_ ${_cfg_upper} ." )
130+ message (FATAL_ERROR "Nabla: missing destination for consumer config \" ${_consumer_config} \" . Provide DESTINATION or one of DESTINATION_DEBUG/DESTINATION_RELEASE/DESTINATION_RELWITHDEBINFO ." )
167131 endif ()
168132
169133 if (_resolved_destination MATCHES "\\ $<")
@@ -525,7 +489,9 @@ endfunction()
525489# nabla_sync_runtime_modules(
526490# [TARGETS <t1;t2;...>]
527491# [DESTINATION <path>]
528- # [DESTINATION_<CONFIG> <path> ...]
492+ # [DESTINATION_DEBUG <path>]
493+ # [DESTINATION_RELEASE <path>]
494+ # [DESTINATION_RELWITHDEBINFO <path>]
529495# [MODE BUILD_TIME|CONFIGURE_TIME|BOTH]
530496# [RUNTIME_MODULES_SUBDIR <relative_subdir>]
531497# [BUILD_TRIGGER_TARGETS <t1;t2;...>]
@@ -537,7 +503,7 @@ endfunction()
537503# - TARGETS mode
538504# Copies beside each target runtime dir under RUNTIME_MODULES_SUBDIR.
539505# - DESTINATION mode
540- # Copies to explicit DESTINATION or DESTINATION_<CONFIG> paths.
506+ # Copies to explicit DESTINATION or DESTINATION_DEBUG/RELEASE/RELWITHDEBINFO paths.
541507#
542508# MODE:
543509# - BUILD_TIME
@@ -555,11 +521,10 @@ function(nabla_sync_runtime_modules)
555521 set (_nbl_runtime_modules_subdir "Libraries" )
556522 set (_nbl_mode BUILD_TIME)
557523
558- cmake_parse_arguments (_NBL_CUSTOM "" "MODE;DESTINATION;RUNTIME_MODULES_SUBDIR" "TARGETS;BUILD_TRIGGER_TARGETS" ${ARGV} )
559- _nbl_runtime_modules_extract_destination_overrides (_destination_overrides _unknown_tokens ${_NBL_CUSTOM_UNPARSED_ARGUMENTS} )
524+ cmake_parse_arguments (_NBL_CUSTOM "" "MODE;DESTINATION;DESTINATION_DEBUG;DESTINATION_RELEASE;DESTINATION_RELWITHDEBINFO;RUNTIME_MODULES_SUBDIR" "TARGETS;BUILD_TRIGGER_TARGETS" ${ARGV} )
560525
561- if (_unknown_tokens )
562- message (FATAL_ERROR "Nabla: unexpected arguments for nabla_sync_runtime_modules: ${_unknown_tokens } " )
526+ if (_NBL_CUSTOM_UNPARSED_ARGUMENTS )
527+ message (FATAL_ERROR "Nabla: unexpected arguments for nabla_sync_runtime_modules: ${_NBL_CUSTOM_UNPARSED_ARGUMENTS } " )
563528 endif ()
564529
565530 if (_NBL_CUSTOM_RUNTIME_MODULES_SUBDIR)
@@ -583,7 +548,13 @@ function(nabla_sync_runtime_modules)
583548 if (DEFINED _NBL_CUSTOM_DESTINATION AND NOT _NBL_CUSTOM_DESTINATION STREQUAL "" )
584549 set (_has_destination ON )
585550 endif ()
586- if (_destination_overrides)
551+ if (DEFINED _NBL_CUSTOM_DESTINATION_DEBUG AND NOT _NBL_CUSTOM_DESTINATION_DEBUG STREQUAL "" )
552+ set (_has_destination ON )
553+ endif ()
554+ if (DEFINED _NBL_CUSTOM_DESTINATION_RELEASE AND NOT _NBL_CUSTOM_DESTINATION_RELEASE STREQUAL "" )
555+ set (_has_destination ON )
556+ endif ()
557+ if (DEFINED _NBL_CUSTOM_DESTINATION_RELWITHDEBINFO AND NOT _NBL_CUSTOM_DESTINATION_RELWITHDEBINFO STREQUAL "" )
587558 set (_has_destination ON )
588559 endif ()
589560
@@ -592,7 +563,7 @@ function(nabla_sync_runtime_modules)
592563 endif ()
593564
594565 if (NOT _has_targets AND NOT _has_destination)
595- message (FATAL_ERROR "Nabla: nabla_sync_runtime_modules requires TARGETS or DESTINATION/DESTINATION_<CONFIG> " )
566+ message (FATAL_ERROR "Nabla: nabla_sync_runtime_modules requires TARGETS or DESTINATION/DESTINATION_DEBUG/DESTINATION_RELEASE/DESTINATION_RELWITHDEBINFO " )
596567 endif ()
597568
598569 if (_has_targets)
@@ -615,7 +586,13 @@ function(nabla_sync_runtime_modules)
615586 return ()
616587 endif ()
617588
618- _nbl_runtime_modules_expand_destination_pairs ("${_NBL_CUSTOM_DESTINATION} " "${_destination_overrides} " _cfg_dst_pairs )
589+ _nbl_runtime_modules_expand_destination_pairs (
590+ "${_NBL_CUSTOM_DESTINATION} "
591+ "${_NBL_CUSTOM_DESTINATION_DEBUG} "
592+ "${_NBL_CUSTOM_DESTINATION_RELEASE} "
593+ "${_NBL_CUSTOM_DESTINATION_RELWITHDEBINFO} "
594+ _cfg_dst_pairs
595+ )
619596
620597 if (_nbl_mode STREQUAL "CONFIGURE_TIME" OR _nbl_mode STREQUAL "BOTH" )
621598 set (_enable_configure_depends OFF )
@@ -639,7 +616,9 @@ endfunction()
639616# nabla_setup_runtime_modules(
640617# [TARGETS <t1;t2;...>]
641618# [DESTINATION <path>]
642- # [DESTINATION_<CONFIG> <path> ...]
619+ # [DESTINATION_DEBUG <path>]
620+ # [DESTINATION_RELEASE <path>]
621+ # [DESTINATION_RELWITHDEBINFO <path>]
643622# [MODE BUILD_TIME|CONFIGURE_TIME|BOTH]
644623# [RUNTIME_MODULES_SUBDIR <relative_subdir>]
645624# [INSTALL_RULES ON|OFF]
@@ -662,11 +641,10 @@ function(nabla_setup_runtime_modules)
662641 set (_nbl_install_rules OFF )
663642 set (_nbl_mode BUILD_TIME)
664643
665- cmake_parse_arguments (_NBL_CUSTOM "" "RUNTIME_MODULES_SUBDIR;INSTALL_RULES;MODE;DESTINATION" "TARGETS;APPLY_LOOKUP_TO_TARGETS;BUILD_TRIGGER_TARGETS" ${ARGV} )
666- _nbl_runtime_modules_extract_destination_overrides (_destination_overrides _unknown_tokens ${_NBL_CUSTOM_UNPARSED_ARGUMENTS} )
644+ cmake_parse_arguments (_NBL_CUSTOM "" "RUNTIME_MODULES_SUBDIR;INSTALL_RULES;MODE;DESTINATION;DESTINATION_DEBUG;DESTINATION_RELEASE;DESTINATION_RELWITHDEBINFO" "TARGETS;APPLY_LOOKUP_TO_TARGETS;BUILD_TRIGGER_TARGETS" ${ARGV} )
667645
668- if (_unknown_tokens )
669- message (FATAL_ERROR "Nabla: unexpected arguments for nabla_setup_runtime_modules: ${_unknown_tokens } " )
646+ if (_NBL_CUSTOM_UNPARSED_ARGUMENTS )
647+ message (FATAL_ERROR "Nabla: unexpected arguments for nabla_setup_runtime_modules: ${_NBL_CUSTOM_UNPARSED_ARGUMENTS } " )
670648 endif ()
671649
672650 if (_NBL_CUSTOM_RUNTIME_MODULES_SUBDIR)
@@ -690,12 +668,15 @@ function(nabla_setup_runtime_modules)
690668 if (DEFINED _NBL_CUSTOM_DESTINATION AND NOT _NBL_CUSTOM_DESTINATION STREQUAL "" )
691669 list (APPEND _sync_args DESTINATION "${_NBL_CUSTOM_DESTINATION} " )
692670 endif ()
693- foreach (_override IN LISTS _destination_overrides)
694- string (REPLACE "::" ";" _override_parts "${_override} " )
695- list (GET _override_parts 0 _cfg_upper)
696- list (GET _override_parts 1 _cfg_destination)
697- list (APPEND _sync_args "DESTINATION_${_cfg_upper} " "${_cfg_destination} " )
698- endforeach ()
671+ if (DEFINED _NBL_CUSTOM_DESTINATION_DEBUG AND NOT _NBL_CUSTOM_DESTINATION_DEBUG STREQUAL "" )
672+ list (APPEND _sync_args DESTINATION_DEBUG "${_NBL_CUSTOM_DESTINATION_DEBUG} " )
673+ endif ()
674+ if (DEFINED _NBL_CUSTOM_DESTINATION_RELEASE AND NOT _NBL_CUSTOM_DESTINATION_RELEASE STREQUAL "" )
675+ list (APPEND _sync_args DESTINATION_RELEASE "${_NBL_CUSTOM_DESTINATION_RELEASE} " )
676+ endif ()
677+ if (DEFINED _NBL_CUSTOM_DESTINATION_RELWITHDEBINFO AND NOT _NBL_CUSTOM_DESTINATION_RELWITHDEBINFO STREQUAL "" )
678+ list (APPEND _sync_args DESTINATION_RELWITHDEBINFO "${_NBL_CUSTOM_DESTINATION_RELWITHDEBINFO} " )
679+ endif ()
699680 if (_NBL_CUSTOM_BUILD_TRIGGER_TARGETS)
700681 list (APPEND _sync_args BUILD_TRIGGER_TARGETS ${_NBL_CUSTOM_BUILD_TRIGGER_TARGETS} )
701682 endif ()
0 commit comments