[flang-commits] [flang] [Flang] Multi-config CMake output paths in standalone builds (PR #208690)

Michael Kruse via flang-commits flang-commits at lists.llvm.org
Fri Jul 10 03:47:51 PDT 2026


https://github.com/Meinersbur created https://github.com/llvm/llvm-project/pull/208690

When using a multi-config generator with CMake (such as "Ninja Multi-Config" or any Visual Studio generator), the output path must be specific to each config by having it include `${CMAKE_CFG_INTDIR}`. `CMAKE_CFG_INTDIR` will just be `.` in single-config generators. Use the same path as used by LLVM: https://github.com/llvm/llvm-project/blob/cd662a7c4fb03a88d0e429a7fc8d8b470a812e2b/llvm/CMakeLists.txt#L562-L563

`LLVM_LIBDIR_SUFFIX` was seemingly forgotten in one of the paths.

This is not complete support (neither has LLVM). More paths would need to be config-specific. In particular, `check-flang` does not work, but at least one can build the executables.

>From ec23013ccdaf5698391996182a43f2b66c7b071e Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Fri, 10 Jul 2026 12:34:41 +0200
Subject: [PATCH] Multi-config generators

---
 flang/CMakeLists.txt | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt
index 42a7031c37fe9..84b4786314579 100644
--- a/flang/CMakeLists.txt
+++ b/flang/CMakeLists.txt
@@ -210,11 +210,11 @@ if (FLANG_STANDALONE_BUILD)
 
   link_directories("${LLVM_LIBRARY_DIR}")
 
-  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
   set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
-    ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
+    ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
   set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
-    ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
+    ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
 
   set(LLVM_EXTERNAL_LIT "${LLVM_TOOLS_BINARY_DIR}/llvm-lit" CACHE STRING "Command used to spawn lit")
   set(LIT_ARGS_DEFAULT "-sv")
@@ -295,8 +295,8 @@ include_directories(SYSTEM ${CLANG_INCLUDE_DIR})
 
 # tco tool and FIR lib output directories
 if(FLANG_STANDALONE_BUILD)
-  set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/bin)
-  set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/lib)
+  set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
+  set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
 endif()
 # Always build tco tool
 set(LLVM_BUILD_TOOLS ON)



More information about the flang-commits mailing list