blob: 2589335ee3a910ae098f811aff9739d36e38acd3 [file] [log] [blame]
# Copyright (c) 2019 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
add_library(base_module OBJECT base_module.c)
target_include_directories(base_module PUBLIC
${SOC_DIR}/${ARCH}/${SOC_PATH}/include
../include
)
add_library(boot_module OBJECT boot_module.c)
target_include_directories(boot_module PUBLIC
${SOC_DIR}/${ARCH}/${SOC_PATH}/include
../include
)
add_executable(bootloader
boot_entry.S
${ARCH_DIR}/${ARCH}/core/startup/memctl_default.S
${ARCH_DIR}/${ARCH}/core/startup/memerror-vector.S
boot_loader.c
start_address.S
)
target_sources_ifdef(CONFIG_RESET_VECTOR_IN_BOOTLOADER bootloader PRIVATE
${ARCH_DIR}/${ARCH}/core/startup/reset-vector.S
)
add_dependencies(bootloader ${SYSCALL_LIST_H_TARGET})
target_include_directories(bootloader PUBLIC
./
${SOC_DIR}/${ARCH}/${SOC_PATH}/
${SOC_DIR}/${ARCH}/${SOC_PATH}/include
${SOC_DIR}/${ARCH}/${SOC_FAMILY}/common/include
${PROJECT_BINARY_DIR}/include/generated
${ZEPHYR_BASE}/include
)
# TODO: pre-process linker script. How do we use toplevel infrastructure ??
set(bootloader_linker_script "boot_ldr")
add_custom_command(TARGET bootloader
PRE_LINK
DEPENDS ${bootloader_linker_script}.x
COMMENT "Generating Bootloader!!!!!!!"
COMMAND ${CMAKE_C_COMPILER}
-x assembler-with-cpp
${NOSYSDEF_CFLAG}
-MD
-D_LINKER
-D_ASMLANGUAGE
-I ${SOC_DIR}/${ARCH}/${SOC_PATH}/include
-I ${SOC_DIR}/${ARCH}/${SOC_FAMILY}/common/include
${current_defines}
${linker_pass_define}
-E ${SOC_DIR}/${ARCH}/${SOC_FAMILY}/common/bootloader/${bootloader_linker_script}.x
-P # Prevent generation of debug `#line' directives.
-o ${bootloader_linker_script}.ld
VERBATIM
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
set_source_files_properties(boot_entry.S PROPERTIES COMPILE_FLAGS -DASSEMBLY)
if(CONFIG_RESET_VECTOR_IN_BOOTLOADER)
set_source_files_properties(${ARCH_DIR}/${ARCH}/core/startup/reset-vector.S PROPERTIES COMPILE_FLAGS -DBOOTLOADER)
endif()
target_compile_options(bootloader PUBLIC
-fno-inline-functions
-mlongcalls
-mtext-section-literals
-imacros${CMAKE_BINARY_DIR}/zephyr/include/generated/autoconf.h
-D__SIZEOF_LONG__=4
)
target_link_libraries(bootloader PUBLIC -Wl,--no-check-sections -ucall_user_start -Wl,-static -nostdlib)
target_link_libraries(bootloader PRIVATE -T${CMAKE_BINARY_DIR}/zephyr/${bootloader_linker_script}.ld)
if(CONFIG_XTENSA_HAL)
target_link_libraries(bootloader PRIVATE XTENSA_HAL)
target_link_libraries(bootloader PRIVATE modules_xtensa_hal)
endif()