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.
393 lines
11 KiB
393 lines
11 KiB
# Copyright 2022 The Meson development team |
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
# you may not use this file except in compliance with the License. |
|
# You may obtain a copy of the License at |
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0 |
|
|
|
# Unless required by applicable law or agreed to in writing, software |
|
# distributed under the License is distributed on an "AS IS" BASIS, |
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
# See the License for the specific language governing permissions and |
|
# limitations under the License. |
|
|
|
|
|
#### |
|
#### WARNING: This is an automatically generated file! Do not edit! |
|
#### Generated by tools/gen_data.py |
|
#### |
|
|
|
|
|
# TODO: Remember to remove this also from tools/gen_data.py |
|
from pathlib import Path |
|
import typing as T |
|
|
|
if T.TYPE_CHECKING: |
|
from .environment import Environment |
|
|
|
###################### |
|
# BEGIN Data section # |
|
###################### |
|
|
|
file_0_data_preload_cmake = '''\ |
|
if(MESON_PS_LOADED) |
|
return() |
|
endif() |
|
|
|
set(MESON_PS_LOADED ON) |
|
|
|
cmake_policy(PUSH) |
|
cmake_policy(SET CMP0054 NEW) # https://cmake.org/cmake/help/latest/policy/CMP0054.html |
|
|
|
# Dummy macros that have a special meaning in the meson code |
|
macro(meson_ps_execute_delayed_calls) |
|
endmacro() |
|
|
|
macro(meson_ps_reload_vars) |
|
endmacro() |
|
|
|
macro(meson_ps_disabled_function) |
|
message(WARNING "The function '${ARGV0}' is disabled in the context of CMake subprojects.\n" |
|
"This should not be an issue but may lead to compilation errors.") |
|
endmacro() |
|
|
|
# Helper macro to inspect the current CMake state |
|
macro(meson_ps_inspect_vars) |
|
set(MESON_PS_CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}") |
|
set(MESON_PS_CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") |
|
meson_ps_execute_delayed_calls() |
|
endmacro() |
|
|
|
|
|
# Override some system functions with custom code and forward the args |
|
# to the original function |
|
macro(add_custom_command) |
|
meson_ps_inspect_vars() |
|
_add_custom_command(${ARGV}) |
|
endmacro() |
|
|
|
macro(add_custom_target) |
|
meson_ps_inspect_vars() |
|
_add_custom_target(${ARGV}) |
|
endmacro() |
|
|
|
macro(set_property) |
|
meson_ps_inspect_vars() |
|
_set_property(${ARGV}) |
|
endmacro() |
|
|
|
function(set_source_files_properties) |
|
set(FILES) |
|
set(I 0) |
|
set(PROPERTIES OFF) |
|
|
|
while(I LESS ARGC) |
|
if(NOT PROPERTIES) |
|
if("${ARGV${I}}" STREQUAL "PROPERTIES") |
|
set(PROPERTIES ON) |
|
else() |
|
list(APPEND FILES "${ARGV${I}}") |
|
endif() |
|
|
|
math(EXPR I "${I} + 1") |
|
else() |
|
set(ID_IDX ${I}) |
|
math(EXPR PROP_IDX "${ID_IDX} + 1") |
|
|
|
set(ID "${ARGV${ID_IDX}}") |
|
set(PROP "${ARGV${PROP_IDX}}") |
|
|
|
set_property(SOURCE ${FILES} PROPERTY "${ID}" "${PROP}") |
|
math(EXPR I "${I} + 2") |
|
endif() |
|
endwhile() |
|
endfunction() |
|
|
|
# Disable some functions that would mess up the CMake meson integration |
|
macro(target_precompile_headers) |
|
meson_ps_disabled_function(target_precompile_headers) |
|
endmacro() |
|
|
|
set(MESON_PS_DELAYED_CALLS add_custom_command;add_custom_target;set_property) |
|
meson_ps_reload_vars() |
|
|
|
cmake_policy(POP) |
|
''' |
|
|
|
file_1_data_CMakeLists_txt = '''\ |
|
# fail noisily if attempt to use this file without setting: |
|
# cmake_minimum_required(VERSION ${CMAKE_VERSION}) |
|
# project(... LANGUAGES ...) |
|
|
|
cmake_policy(SET CMP0000 NEW) |
|
|
|
set(PACKAGE_FOUND FALSE) |
|
set(_packageName "${NAME}") |
|
string(TOUPPER "${_packageName}" PACKAGE_NAME) |
|
|
|
while(TRUE) |
|
if ("${VERSION}" STREQUAL "") |
|
find_package("${NAME}" QUIET COMPONENTS ${COMPS}) |
|
else() |
|
find_package("${NAME}" "${VERSION}" QUIET COMPONENTS ${COMPS}) |
|
endif() |
|
|
|
# ARCHS has to be set via the CMD interface |
|
if(${_packageName}_FOUND OR ${PACKAGE_NAME}_FOUND OR "${ARCHS}" STREQUAL "") |
|
break() |
|
endif() |
|
|
|
list(GET ARCHS 0 CMAKE_LIBRARY_ARCHITECTURE) |
|
list(REMOVE_AT ARCHS 0) |
|
endwhile() |
|
|
|
if(${_packageName}_FOUND OR ${PACKAGE_NAME}_FOUND) |
|
set(PACKAGE_FOUND TRUE) |
|
|
|
# Check the following variables: |
|
# FOO_VERSION |
|
# Foo_VERSION |
|
# FOO_VERSION_STRING |
|
# Foo_VERSION_STRING |
|
if(NOT DEFINED PACKAGE_VERSION) |
|
if(DEFINED ${_packageName}_VERSION) |
|
set(PACKAGE_VERSION "${${_packageName}_VERSION}") |
|
elseif(DEFINED ${PACKAGE_NAME}_VERSION) |
|
set(PACKAGE_VERSION "${${PACKAGE_NAME}_VERSION}") |
|
elseif(DEFINED ${_packageName}_VERSION_STRING) |
|
set(PACKAGE_VERSION "${${_packageName}_VERSION_STRING}") |
|
elseif(DEFINED ${PACKAGE_NAME}_VERSION_STRING) |
|
set(PACKAGE_VERSION "${${PACKAGE_NAME}_VERSION_STRING}") |
|
endif() |
|
endif() |
|
|
|
# Check the following variables: |
|
# FOO_LIBRARIES |
|
# Foo_LIBRARIES |
|
# FOO_LIBS |
|
# Foo_LIBS |
|
set(libs) |
|
if(DEFINED ${_packageName}_LIBRARIES) |
|
set(libs ${_packageName}_LIBRARIES) |
|
elseif(DEFINED ${PACKAGE_NAME}_LIBRARIES) |
|
set(libs ${PACKAGE_NAME}_LIBRARIES) |
|
elseif(DEFINED ${_packageName}_LIBS) |
|
set(libs ${_packageName}_LIBS) |
|
elseif(DEFINED ${PACKAGE_NAME}_LIBS) |
|
set(libs ${PACKAGE_NAME}_LIBS) |
|
endif() |
|
|
|
# Check the following variables: |
|
# FOO_INCLUDE_DIRS |
|
# Foo_INCLUDE_DIRS |
|
# FOO_INCLUDES |
|
# Foo_INCLUDES |
|
# FOO_INCLUDE_DIR |
|
# Foo_INCLUDE_DIR |
|
set(includes) |
|
if(DEFINED ${_packageName}_INCLUDE_DIRS) |
|
set(includes ${_packageName}_INCLUDE_DIRS) |
|
elseif(DEFINED ${PACKAGE_NAME}_INCLUDE_DIRS) |
|
set(includes ${PACKAGE_NAME}_INCLUDE_DIRS) |
|
elseif(DEFINED ${_packageName}_INCLUDES) |
|
set(includes ${_packageName}_INCLUDES) |
|
elseif(DEFINED ${PACKAGE_NAME}_INCLUDES) |
|
set(includes ${PACKAGE_NAME}_INCLUDES) |
|
elseif(DEFINED ${_packageName}_INCLUDE_DIR) |
|
set(includes ${_packageName}_INCLUDE_DIR) |
|
elseif(DEFINED ${PACKAGE_NAME}_INCLUDE_DIR) |
|
set(includes ${PACKAGE_NAME}_INCLUDE_DIR) |
|
endif() |
|
|
|
# Check the following variables: |
|
# FOO_DEFINITIONS |
|
# Foo_DEFINITIONS |
|
set(definitions) |
|
if(DEFINED ${_packageName}_DEFINITIONS) |
|
set(definitions ${_packageName}_DEFINITIONS) |
|
elseif(DEFINED ${PACKAGE_NAME}_DEFINITIONS) |
|
set(definitions ${PACKAGE_NAME}_DEFINITIONS) |
|
endif() |
|
|
|
set(PACKAGE_INCLUDE_DIRS "${${includes}}") |
|
set(PACKAGE_DEFINITIONS "${${definitions}}") |
|
set(PACKAGE_LIBRARIES "${${libs}}") |
|
endif() |
|
''' |
|
|
|
file_2_data_CMakeListsLLVM_txt = '''\ |
|
|
|
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() |
|
''' |
|
|
|
file_3_data_CMakePathInfo_txt = '''\ |
|
cmake_minimum_required(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}) |
|
|
|
set(TMP_PATHS_LIST) |
|
list(APPEND TMP_PATHS_LIST ${CMAKE_PREFIX_PATH}) |
|
list(APPEND TMP_PATHS_LIST ${CMAKE_FRAMEWORK_PATH}) |
|
list(APPEND TMP_PATHS_LIST ${CMAKE_APPBUNDLE_PATH}) |
|
list(APPEND TMP_PATHS_LIST $ENV{CMAKE_PREFIX_PATH}) |
|
list(APPEND TMP_PATHS_LIST $ENV{CMAKE_FRAMEWORK_PATH}) |
|
list(APPEND TMP_PATHS_LIST $ENV{CMAKE_APPBUNDLE_PATH}) |
|
list(APPEND TMP_PATHS_LIST ${CMAKE_SYSTEM_PREFIX_PATH}) |
|
list(APPEND TMP_PATHS_LIST ${CMAKE_SYSTEM_FRAMEWORK_PATH}) |
|
list(APPEND TMP_PATHS_LIST ${CMAKE_SYSTEM_APPBUNDLE_PATH}) |
|
|
|
set(LIB_ARCH_LIST) |
|
if(CMAKE_LIBRARY_ARCHITECTURE_REGEX) |
|
file(GLOB implicit_dirs RELATIVE /lib /lib/*-linux-gnu* ) |
|
foreach(dir ${implicit_dirs}) |
|
if("${dir}" MATCHES "${CMAKE_LIBRARY_ARCHITECTURE_REGEX}") |
|
list(APPEND LIB_ARCH_LIST "${dir}") |
|
endif() |
|
endforeach() |
|
endif() |
|
|
|
# "Export" these variables: |
|
set(MESON_ARCH_LIST ${LIB_ARCH_LIST}) |
|
set(MESON_PATHS_LIST ${TMP_PATHS_LIST}) |
|
set(MESON_CMAKE_ROOT ${CMAKE_ROOT}) |
|
set(MESON_CMAKE_SYSROOT ${CMAKE_SYSROOT}) |
|
set(MESON_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH}) |
|
|
|
message(STATUS ${TMP_PATHS_LIST}) |
|
''' |
|
|
|
|
|
#################### |
|
# END Data section # |
|
#################### |
|
|
|
class DataFile: |
|
def __init__(self, path: Path, sha256sum: str, data: str) -> None: |
|
self.path = path |
|
self.sha256sum = sha256sum |
|
self.data = data |
|
|
|
def write_once(self, path: Path) -> None: |
|
if not path.exists(): |
|
path.write_text(self.data, encoding='utf-8') |
|
|
|
def write_to_private(self, env: 'Environment') -> Path: |
|
out_file = Path(env.scratch_dir) / 'data' / self.path.name |
|
out_file.parent.mkdir(exist_ok=True) |
|
self.write_once(out_file) |
|
return out_file |
|
|
|
|
|
mesondata = { |
|
'cmake/data/preload.cmake': DataFile( |
|
Path('cmake/data/preload.cmake'), |
|
'ce8f30159aab25b92c26c58a219a427d47838bfa0739475221d6c8993b4946e5', |
|
file_0_data_preload_cmake, |
|
), |
|
'dependencies/data/CMakeLists.txt': DataFile( |
|
Path('dependencies/data/CMakeLists.txt'), |
|
'4dca24afa13e9311f0598a6ac29690490819bd7d82cfdaa0a2fe5eea3c0fa0d5', |
|
file_1_data_CMakeLists_txt, |
|
), |
|
'dependencies/data/CMakeListsLLVM.txt': DataFile( |
|
Path('dependencies/data/CMakeListsLLVM.txt'), |
|
'a824db0251c77482993534230f33c521275047a37189ae0ac80d9078e4d7006e', |
|
file_2_data_CMakeListsLLVM_txt, |
|
), |
|
'dependencies/data/CMakePathInfo.txt': DataFile( |
|
Path('dependencies/data/CMakePathInfo.txt'), |
|
'90da8b443982d9c87139b7dc84228eb58cab4315764949637208f25e2bda7db2', |
|
file_3_data_CMakePathInfo_txt, |
|
), |
|
}
|
|
|