From 0a3caf087804b054984e6db845df9f4ff968057d Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 13 May 2024 14:28:05 -0400 Subject: ExternalProject: Restore support for Xcode with an effective platform Revert commit cabad8a37f (ExternalProject: Always use $ for source files, 2023-02-02, v3.27.0-rc1~550^2~3) and restore Xcode-specific behavior intentionally preserved by commit c111d440ce (ExternalProject: Express per-config step stamp file paths using CONFIG genex, 2022-06-08, v3.24.0-rc1~15^2). Unfortunately we still do not have a test case, so leave a comment to avoid reverting this. Issue: #23645 Issue: #23652 --- Modules/ExternalProject.cmake | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index a5dceaa..a6cd8df 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -2187,7 +2187,16 @@ function(_ep_get_configuration_subdir_genex suffix_var) set(suffix "") get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(_isMultiConfig) - set(suffix "/$") + if(CMAKE_GENERATOR STREQUAL "Xcode") + # The Xcode generator does not support per-config sources, + # so use the underlying build system's placeholder instead. + # FIXME(#23652): We have no test for the use case requiring + # CMAKE_CFG_INTDIR for XCODE_EMIT_EFFECTIVE_PLATFORM_NAME, + # but $ does not work. + set(suffix "/${CMAKE_CFG_INTDIR}") + else() + set(suffix "/$") + endif() endif() set(${suffix_var} "${suffix}" PARENT_SCOPE) endfunction() -- cgit v0.12