# Copyright 2021 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 = '''\ 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 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'), '412cec3315597041a978d018cdaca282dcd47693793540da88ae2f80d0cbd7cd', file_2_data_CMakeListsLLVM_txt, ), 'dependencies/data/CMakePathInfo.txt': DataFile( Path('dependencies/data/CMakePathInfo.txt'), '90da8b443982d9c87139b7dc84228eb58cab4315764949637208f25e2bda7db2', file_3_data_CMakePathInfo_txt, ), }