From f55fd19b6b565827af5fbf504952dcc35b8b7360 Mon Sep 17 00:00:00 2001 From: Stella Laurenzo Date: Tue, 20 Jun 2023 13:03:46 -0700 Subject: [PATCH] Define/guard MLIR_STANDALONE_BUILD LLVM_LIBRARY_OUTPUT_INTDIR var. It looks like MLIR is using the more modern CMAKE_LIBRARY_OUTPUT_DIRECTORY, but AddLLVM still uses this older LLVM specific alias. In the specific case I was running into, the empty variable was causing `-Wl,-rpath-link,` on the command line, causing the following argument to be swallowed. This was maddening, because the following argument was the .o file containing `main` and I was getting `main` undefined errors when it was clearly there. This is egregious enough that I chose to guard it. Differential Revision: https://reviews.llvm.org/D153373 --- llvm/cmake/modules/AddLLVM.cmake | 3 +++ mlir/CMakeLists.txt | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 926336e4a7aa..b9635b034632 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -2358,6 +2358,9 @@ function(llvm_setup_rpath name) endif() if(LLVM_LINKER_IS_GNULD) # $ORIGIN is not interpreted at link time by ld.bfd + if(NOT LLVM_LIBRARY_OUTPUT_INTDIR) + message(SEND_ERROR "Project does not define LLVM_LIBRARY_OUTPUT_INTDIR and it is required") + endif() set_property(TARGET ${name} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-rpath-link,${LLVM_LIBRARY_OUTPUT_INTDIR} ") endif() diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt index f31403aebb22..006317507034 100644 --- a/mlir/CMakeLists.txt +++ b/mlir/CMakeLists.txt @@ -35,6 +35,11 @@ if(MLIR_STANDALONE_BUILD) "${CMAKE_CURRENT_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin") + # Some LLVM CMake utilities use these aliases for the CMake builtin variables. + # We set them for compatibility. + set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) + set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + set(LLVM_LIT_ARGS "-sv" CACHE STRING "Default options for lit") endif()