Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions llvm/cmake/modules/AddLLVM.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -51,20 +51,27 @@ function(llvm_update_compile_flags name)

# LLVM_REQUIRES_RTTI is an internal flag that individual
# targets can use to force RTTI
set(LLVM_CONFIG_HAS_RTTI YES CACHE INTERNAL "")
if(NOT (LLVM_REQUIRES_RTTI OR LLVM_ENABLE_RTTI))
set(LLVM_CONFIG_HAS_RTTI NO CACHE INTERNAL "")
list(APPEND LLVM_COMPILE_DEFINITIONS GTEST_HAS_RTTI=0)
if (LLVM_COMPILER_IS_GCC_COMPATIBLE)
list(APPEND LLVM_COMPILE_CXXFLAGS "-fno-rtti")
set(LLVM_CONFIG_RTTI_CXXFLAG "-fno-rtti" CACHE INTERNAL "")
elseif (MSVC)
list(APPEND LLVM_COMPILE_CXXFLAGS "/GR-")
set(LLVM_CONFIG_RTTI_CXXFLAG "/GR-" CACHE INTERNAL "")
elseif (CMAKE_CXX_COMPILER_ID MATCHES "XL")
list(APPEND LLVM_COMPILE_CXXFLAGS "-qnortti")
set(LLVM_CONFIG_RTTI_CXXFLAG "-qnortti" CACHE INTERNAL "")
else()
set(LLVM_CONFIG_RTTI_CXXFLAG "" CACHE INTERNAL "")
endif ()
elseif(MSVC)
list(APPEND LLVM_COMPILE_CXXFLAGS "/GR")
else()
set(LLVM_CONFIG_HAS_RTTI YES CACHE INTERNAL "")
if(MSVC)
set(LLVM_CONFIG_RTTI_CXXFLAG "/GR" CACHE INTERNAL "")
else()
set(LLVM_CONFIG_RTTI_CXXFLAG "" CACHE INTERNAL "")
endif()
endif()
list(APPEND LLVM_COMPILE_CXXFLAGS ${LLVM_CONFIG_RTTI_CXXFLAG})

target_compile_options(${name} PRIVATE ${LLVM_COMPILE_FLAGS} $<$<COMPILE_LANGUAGE:CXX>:${LLVM_COMPILE_CXXFLAGS}>)
target_compile_definitions(${name} PRIVATE ${LLVM_COMPILE_DEFINITIONS})
Expand Down
5 changes: 1 addition & 4 deletions llvm/tools/llvm-config/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@ endforeach()

string(REPLACE ";" " " SYSTEM_LIBS "${SYSTEM_LIBS}")

# Fetch target specific compile options, e.g. RTTI option
get_property(COMPILE_FLAGS TARGET llvm-config PROPERTY COMPILE_FLAGS)

# NOTE: We don't want to start extracting any random C/CXX flags that the
# user may add that could affect the ABI. We only want to extract flags
# that have been added by the LLVM build system.
Expand All @@ -61,7 +58,7 @@ set(LLVM_CPPFLAGS "${LLVM_DEFINITIONS}")
set(LLVM_CFLAGS "${LLVM_C_STD_FLAG} ${LLVM_DEFINITIONS}")
# The language standard potentially affects the ABI/API of LLVM, so we want
# to make sure it is reported by llvm-config.
set(LLVM_CXXFLAGS "${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ${LLVM_CXX_STDLIB_FLAG} ${COMPILE_FLAGS} ${LLVM_DEFINITIONS}")
set(LLVM_CXXFLAGS "${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ${LLVM_CXX_STDLIB_FLAG} ${LLVM_CONFIG_RTTI_CXXFLAG} ${LLVM_DEFINITIONS}")
set(LLVM_BUILD_SYSTEM cmake)
set(LLVM_HAS_RTTI ${LLVM_CONFIG_HAS_RTTI})
set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}")
Expand Down