Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
7 views2 pages

CMake Lists LLVM

The document is a CMake script that attempts to find and configure the LLVM package, ensuring that the required components are available. It checks for various LLVM-related variables and sets output variables accordingly, including package version, libraries, include directories, and definitions. The script continues to search for the LLVM package until it is found or certain conditions are met.

Uploaded by

Amit Nehra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views2 pages

CMake Lists LLVM

The document is a CMake script that attempts to find and configure the LLVM package, ensuring that the required components are available. It checks for various LLVM-related variables and sets output variables accordingly, including package version, libraries, include directories, and definitions. The script continues to search for the LLVM package until it is found or certain conditions are met.

Uploaded by

Amit Nehra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

set(PACKAGE_FOUND FALSE)

while(TRUE)
find_package(LLVM REQUIRED CONFIG QUIET)

# ARCHS has to be set via the CMD interface


if(LLVM_FOUND OR "${ARCHS}" STREQUAL "")
break()
endif()

list(GET ARCHS 0 CMAKE_LIBRARY_ARCHITECTURE)


list(REMOVE_AT ARCHS 0)
endwhile()

if(LLVM_FOUND)
set(PACKAGE_FOUND TRUE)

foreach(mod IN LISTS LLVM_MESON_MODULES)


# Reset variables
set(out_mods)
set(real_mods)

# Generate a lower and upper case version


string(TOLOWER "${mod}" mod_L)
string(TOUPPER "${mod}" mod_U)

# Get the mapped components


llvm_map_components_to_libnames(out_mods ${mod} ${mod_L} ${mod_U})
list(SORT out_mods)
list(REMOVE_DUPLICATES out_mods)

# Make sure that the modules exist


foreach(i IN LISTS out_mods)
if(TARGET ${i})
list(APPEND real_mods ${i})
endif()
endforeach()

# Set the output variables


set(MESON_LLVM_TARGETS_${mod} ${real_mods})
foreach(i IN LISTS real_mods)
set(MESON_TARGET_TO_LLVM_${i} ${mod})
endforeach()
endforeach()

# Check the following variables:


# LLVM_PACKAGE_VERSION
# LLVM_VERSION
# LLVM_VERSION_STRING
if(NOT DEFINED PACKAGE_VERSION)
if(DEFINED LLVM_PACKAGE_VERSION)
set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}")
elseif(DEFINED LLVM_VERSION)
set(PACKAGE_VERSION "${LLVM_VERSION}")
elseif(DEFINED LLVM_VERSION_STRING)
set(PACKAGE_VERSION "${LLVM_VERSION_STRING}")
endif()
endif()
# Check the following variables:
# LLVM_LIBRARIES
# LLVM_LIBS
set(libs)
if(DEFINED LLVM_LIBRARIES)
set(libs LLVM_LIBRARIES)
elseif(DEFINED LLVM_LIBS)
set(libs LLVM_LIBS)
endif()

# Check the following variables:


# LLVM_INCLUDE_DIRS
# LLVM_INCLUDES
# LLVM_INCLUDE_DIR
set(includes)
if(DEFINED LLVM_INCLUDE_DIRS)
set(includes LLVM_INCLUDE_DIRS)
elseif(DEFINED LLVM_INCLUDES)
set(includes LLVM_INCLUDES)
elseif(DEFINED LLVM_INCLUDE_DIR)
set(includes LLVM_INCLUDE_DIR)
endif()

# Check the following variables:


# LLVM_DEFINITIONS
set(definitions)
if(DEFINED LLVM_DEFINITIONS)
set(definitions LLVM_DEFINITIONS)
endif()

set(PACKAGE_INCLUDE_DIRS "${${includes}}")
set(PACKAGE_DEFINITIONS "${${definitions}}")
set(PACKAGE_LIBRARIES "${${libs}}")
endif()

You might also like