aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mesondata.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/mesondata.py')
-rw-r--r--mesonbuild/mesondata.py381
1 files changed, 17 insertions, 364 deletions
diff --git a/mesonbuild/mesondata.py b/mesonbuild/mesondata.py
index 43b7bde..508c041 100644
--- a/mesonbuild/mesondata.py
+++ b/mesonbuild/mesondata.py
@@ -13,382 +13,35 @@
# 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 importlib.resources
+from pathlib import PurePosixPath, 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 = '''\
-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()
-'''
-
-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 __init__(self, path: str) -> None:
+ self.path = PurePosixPath(path)
def write_once(self, path: Path) -> None:
if not path.exists():
- path.write_text(self.data, encoding='utf-8')
+ data = importlib.resources.read_text( # [ignore encoding] it's on the next lines, Mr. Lint
+ ('mesonbuild' / self.path.parent).as_posix().replace('/', '.'),
+ self.path.name,
+ encoding='utf-8')
+ path.write_text(data, encoding='utf-8')
def write_to_private(self, env: 'Environment') -> Path:
+ try:
+ resource = importlib.resources.files('mesonbuild') / self.path
+ if isinstance(resource, Path):
+ return resource
+ except AttributeError:
+ # fall through to python 3.7 compatible code
+ pass
+
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'),
- '412cec3315597041a978d018cdaca282dcd47693793540da88ae2f80d0cbd7cd',
- file_2_data_CMakeListsLLVM_txt,
- ),
- 'dependencies/data/CMakePathInfo.txt': DataFile(
- Path('dependencies/data/CMakePathInfo.txt'),
- '90da8b443982d9c87139b7dc84228eb58cab4315764949637208f25e2bda7db2',
- file_3_data_CMakePathInfo_txt,
- ),
-}