[llvm] [CMake] Disable LTO library when PIC is disables (PR #136372)
Petr Hosek via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 18 14:37:06 PDT 2025
https://github.com/petrhosek created https://github.com/llvm/llvm-project/pull/136372
Building shared libraries requires PIC. This matches what we do for Remarks which is another tool library.
>From 0f2ce137b590c8558bbbc622f641ede9b884f7bd Mon Sep 17 00:00:00 2001
From: Petr Hosek <phosek at google.com>
Date: Fri, 18 Apr 2025 21:34:55 +0000
Subject: [PATCH] [CMake] Disable LTO library when PIC is disables
Building shared libraries requires PIC. This matches what we do for
Remarks which is another tool library.
---
llvm/tools/lto/CMakeLists.txt | 91 ++++++++++++++++++-----------------
1 file changed, 48 insertions(+), 43 deletions(-)
diff --git a/llvm/tools/lto/CMakeLists.txt b/llvm/tools/lto/CMakeLists.txt
index c2f7d81063af8..8c7d7904e16ea 100644
--- a/llvm/tools/lto/CMakeLists.txt
+++ b/llvm/tools/lto/CMakeLists.txt
@@ -1,48 +1,53 @@
-set(LLVM_LINK_COMPONENTS
- AllTargetsAsmParsers
- AllTargetsCodeGens
- AllTargetsDescs
- AllTargetsDisassemblers
- AllTargetsInfos
- BitReader
- Core
- CodeGen
- LTO
- MC
- MCDisassembler
- Support
- Target
- TargetParser
- )
-
-set(SOURCES
- LTODisassembler.cpp
- lto.cpp
- )
-
-set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/lto.exports)
-
-if(CMAKE_SYSTEM_NAME STREQUAL AIX)
- set(LTO_LIBRARY_TYPE MODULE)
- set(LTO_LIBRARY_NAME libLTO)
- else()
- set(LTO_LIBRARY_TYPE SHARED)
- set(LTO_LIBRARY_NAME LTO)
-endif()
+# Building shared libraries requires PIC objects.
+if(LLVM_ENABLE_PIC)
+
+ set(LLVM_LINK_COMPONENTS
+ AllTargetsAsmParsers
+ AllTargetsCodeGens
+ AllTargetsDescs
+ AllTargetsDisassemblers
+ AllTargetsInfos
+ BitReader
+ Core
+ CodeGen
+ LTO
+ MC
+ MCDisassembler
+ Support
+ Target
+ TargetParser
+ )
-add_llvm_library(${LTO_LIBRARY_NAME} ${LTO_LIBRARY_TYPE} INSTALL_WITH_TOOLCHAIN
- ${SOURCES} DEPENDS intrinsics_gen)
+ set(SOURCES
+ LTODisassembler.cpp
+ lto.cpp
+ )
-install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/lto.h
- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/llvm-c"
- COMPONENT LTO)
+ set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/lto.exports)
-if (APPLE)
- set(LTO_VERSION ${LLVM_VERSION_MAJOR})
- if(LLVM_LTO_VERSION_OFFSET)
- math(EXPR LTO_VERSION "${LLVM_VERSION_MAJOR} + ${LLVM_LTO_VERSION_OFFSET}")
+ if(CMAKE_SYSTEM_NAME STREQUAL AIX)
+ set(LTO_LIBRARY_TYPE MODULE)
+ set(LTO_LIBRARY_NAME libLTO)
+ else()
+ set(LTO_LIBRARY_TYPE SHARED)
+ set(LTO_LIBRARY_NAME LTO)
endif()
- set_property(TARGET LTO APPEND_STRING PROPERTY
- LINK_FLAGS
- " -compatibility_version 1 -current_version ${LTO_VERSION}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}")
+
+ add_llvm_library(${LTO_LIBRARY_NAME} ${LTO_LIBRARY_TYPE} INSTALL_WITH_TOOLCHAIN
+ ${SOURCES} DEPENDS intrinsics_gen)
+
+ install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/lto.h
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/llvm-c"
+ COMPONENT LTO)
+
+ if (APPLE)
+ set(LTO_VERSION ${LLVM_VERSION_MAJOR})
+ if(LLVM_LTO_VERSION_OFFSET)
+ math(EXPR LTO_VERSION "${LLVM_VERSION_MAJOR} + ${LLVM_LTO_VERSION_OFFSET}")
+ endif()
+ set_property(TARGET LTO APPEND_STRING PROPERTY
+ LINK_FLAGS
+ " -compatibility_version 1 -current_version ${LTO_VERSION}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}")
+ endif()
+
endif()
More information about the llvm-commits
mailing list