48 lines
1.8 KiB
CMake
48 lines
1.8 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Enable debug support in mdb
|
|
# Dwarf version 2 can be recognized by mdb
|
|
# The default dwarf version in gdb is not recognized by mdb
|
|
zephyr_cc_option(-g3 -gdwarf-2)
|
|
|
|
# Without this (poorly named) option, compiler may generate undefined
|
|
# references to abort().
|
|
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63691
|
|
zephyr_cc_option(-fno-delete-null-pointer-checks)
|
|
|
|
zephyr_cc_option_ifdef(CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS -munaligned-access)
|
|
|
|
if(NOT COMPILER STREQUAL arcmwdt)
|
|
if(CONFIG_THREAD_LOCAL_STORAGE)
|
|
# Instruct compiler to use proper register as cached thread pointer for thread local storage.
|
|
# For ARCv2 the default register is usually not specified - so we need to specify it
|
|
# For ARCv3 the register is fixed to r30, so we don't need to specify it
|
|
zephyr_compile_options_ifdef(CONFIG_ISA_ARCV2 -mtp-regno=26)
|
|
else()
|
|
# If thread local storage isn't used - we can safely schedule thread pointer register
|
|
zephyr_compile_options_ifdef(CONFIG_ISA_ARCV2 -mtp-regno=none)
|
|
endif()
|
|
endif()
|
|
|
|
add_subdirectory(core)
|
|
|
|
if(COMPILER STREQUAL arcmwdt)
|
|
add_subdirectory(arcmwdt)
|
|
|
|
if(CONFIG_64BIT)
|
|
zephyr_compile_options(-Ml)
|
|
# Instruct MWDT assembler not to warn when we load only lower half (32bit) of symbol
|
|
# instead of full 64bit address in ASM code. It is valid as we don't support Zephyr
|
|
# linkage to high addresses for 64bit ARC platforms.
|
|
zephyr_compile_options(-Wa,-offwarn=168)
|
|
endif()
|
|
endif()
|
|
|
|
if(CONFIG_ISA_ARCV3 AND CONFIG_64BIT)
|
|
set_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT elf64-littlearc64)
|
|
elseif(CONFIG_ISA_ARCV3 AND NOT CONFIG_64BIT)
|
|
set_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT elf32-littlearc64)
|
|
else()
|
|
set_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT elf32-littlearc)
|
|
endif()
|