The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.4 KiB
95 lines
2.4 KiB
cmake_minimum_required(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} ) |
|
|
|
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()
|
|
|