|  | # Copyright (c) 2019 Intel Corp. | 
|  | # SPDX-License-Identifier: Apache-2.0 | 
|  |  | 
|  | # Convert the .bin file argument to a .o file, create a wrapper | 
|  | # library for the .o file, and register the library as a generated | 
|  | # file that is to be linked in after the first link. | 
|  | function(add_bin_file_to_the_next_link target_dependency bin) | 
|  | add_custom_command( | 
|  | OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${bin}.o | 
|  | COMMAND | 
|  | ${CMAKE_OBJCOPY} | 
|  | -I binary | 
|  | -B ${OUTPUT_ARCH} | 
|  | -O ${OUTPUT_FORMAT} | 
|  | --rename-section .data=${bin},CONTENTS,ALLOC,LOAD,READONLY,DATA | 
|  | ${bin}.bin | 
|  | ${bin}.o | 
|  | DEPENDS ${target_dependency} ${bin}.bin | 
|  | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} | 
|  | ) | 
|  | add_custom_target(${bin}_o DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${bin}.o) | 
|  | add_library(${bin} STATIC IMPORTED GLOBAL) | 
|  | set_property(TARGET ${bin} PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${bin}.o) | 
|  | add_dependencies(${bin} ${bin}_o) | 
|  | set_property(GLOBAL APPEND PROPERTY GENERATED_KERNEL_OBJECT_FILES ${bin}) | 
|  | endfunction() | 
|  |  | 
|  | if(CONFIG_X86_64) | 
|  | include(intel64.cmake) | 
|  | else() | 
|  | include(ia32.cmake) | 
|  | endif() | 
|  |  | 
|  | # Always set for 64-bit (long mode requires page tables), optional for 32-bit | 
|  | if (CONFIG_MMU) | 
|  | set(GEN_MMU ${ZEPHYR_BASE}/arch/x86/gen_mmu.py) | 
|  |  | 
|  | if(DEFINED X86_EXTRA_GEN_MMU_ARGUMENTS) | 
|  | # Make the string into a list, or else it will be passed to ${GEN_MMU} | 
|  | # as a quoted string, which is then parsed as one item by Python's | 
|  | # argparse. | 
|  | string(REPLACE " " ";" | 
|  | X86_EXTRA_GEN_MMU_ARGUMENTS | 
|  | "${X86_EXTRA_GEN_MMU_ARGUMENTS}") | 
|  | else() | 
|  | set(X86_EXTRA_GEN_MMU_ARGUMENTS "") | 
|  | endif() | 
|  |  | 
|  | add_custom_target( | 
|  | pagetables_bin_target | 
|  | DEPENDS | 
|  | pagetables.bin | 
|  | ) | 
|  | add_custom_command( | 
|  | OUTPUT pagetables.bin | 
|  | COMMAND | 
|  | ${PYTHON_EXECUTABLE} | 
|  | ${GEN_MMU} | 
|  | --kernel $<TARGET_FILE:${ZEPHYR_PREBUILT_EXECUTABLE}> | 
|  | --output pagetables.bin | 
|  | $<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:--verbose> | 
|  | ${X86_EXTRA_GEN_MMU_ARGUMENTS} | 
|  | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} | 
|  | DEPENDS ${ZEPHYR_PREBUILT_EXECUTABLE} ${GEN_MMU} | 
|  | ) | 
|  |  | 
|  | add_bin_file_to_the_next_link(pagetables_bin_target pagetables) | 
|  | endif() | 
|  |  | 
|  | if(CONFIG_ARCH_HAS_TIMING_FUNCTIONS AND | 
|  | NOT CONFIG_SOC_HAS_TIMING_FUNCTIONS AND | 
|  | NOT CONFIG_BOARD_HAS_TIMING_FUNCTIONS) | 
|  | zephyr_library_sources_ifdef(CONFIG_TIMING_FUNCTIONS timing.c) | 
|  | endif() |