1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729 |
- if(NOT DEFINED ZEPHYR_BINARY_DIR)
- message(FATAL_ERROR "A user error has occurred.
- cmake was invoked with '${CMAKE_CURRENT_LIST_DIR}' specified as the source directory,
- but it must be invoked with an application source directory,
- such as '${CMAKE_CURRENT_LIST_DIR}/samples/hello_world'.
- Debug variables:
- CMAKE_CACHEFILE_DIR: ${CMAKE_CACHEFILE_DIR}
- ")
- endif()
- if(NOT ZEPHYR_BASE STREQUAL CMAKE_CURRENT_SOURCE_DIR)
- message(WARNING "ZEPHYR_BASE doesn't match CMAKE_CURRENT_SOURCE_DIR
- ZEPHYR_BASE = ${ZEPHYR_BASE}
- PWD = $ENV{PWD}
- CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}
- You may be using a mix of symbolic links and real paths which causes \
- subtle and hard to debug CMake issues.")
- endif()
- zephyr_check_compiler_flag(C "" toolchain_is_ok)
- assert(toolchain_is_ok "The toolchain is unable to build a dummy C file. See CMakeError.log.")
- set(CMAKE_EXECUTABLE_SUFFIX .elf)
- set(ZEPHYR_PREBUILT_EXECUTABLE zephyr_prebuilt)
- set(ZEPHYR_FINAL_EXECUTABLE zephyr_final)
- set(OFFSETS_H_TARGET offsets_h)
- set(SYSCALL_LIST_H_TARGET syscall_list_h_target)
- set(DRIVER_VALIDATION_H_TARGET driver_validation_h_target)
- set(KOBJ_TYPES_H_TARGET kobj_types_h_target)
- set(PARSE_SYSCALLS_TARGET parse_syscalls_target)
- define_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT BRIEF_DOCS " " FULL_DOCS " ")
- set_property( GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT elf32-little${ARCH})
- add_library(zephyr_interface INTERFACE)
- zephyr_library_named(zephyr)
- zephyr_include_directories(
- include
- ${PROJECT_BINARY_DIR}/include/generated
- ${USERINCLUDE}
- ${STDINCLUDE}
- )
- include(${ZEPHYR_BASE}/cmake/linker_script/${ARCH}/linker.cmake OPTIONAL)
- foreach(optional_include_dir
- ${SOC_DIR}/${ARCH}/${SOC_PATH}
- ${SOC_DIR}/${ARCH}/${SOC_PATH}/include
- ${SOC_DIR}/${ARCH}/${SOC_FAMILY}/include
- ${SOC_DIR}/${ARCH}/${SOC_FAMILY}/common/include
- )
- if(EXISTS ${optional_include_dir})
- zephyr_include_directories(${optional_include_dir})
- endif()
- endforeach()
- zephyr_compile_definitions(
- KERNEL
- __ZEPHYR__=1
- )
- if(TOOLCHAIN_USE_CUSTOM)
- zephyr_compile_definitions(__TOOLCHAIN_CUSTOM__)
- endif()
- zephyr_compile_definitions($<TARGET_PROPERTY:compiler,security_fortify> )
- if(CONFIG_STACK_CANARIES)
- endif()
- if(BUILD_VERSION)
- zephyr_compile_definitions(
- BUILD_VERSION=${BUILD_VERSION}
- )
- endif()
- get_property(OPTIMIZE_FOR_NO_OPTIMIZATIONS_FLAG TARGET compiler PROPERTY no_optimization)
- get_property(OPTIMIZE_FOR_DEBUG_FLAG TARGET compiler PROPERTY optimization_debug)
- get_property(OPTIMIZE_FOR_SPEED_FLAG TARGET compiler PROPERTY optimization_speed)
- get_property(OPTIMIZE_FOR_SIZE_FLAG TARGET compiler PROPERTY optimization_size)
- if(CONFIG_NO_OPTIMIZATIONS)
- set(OPTIMIZATION_FLAG ${OPTIMIZE_FOR_NO_OPTIMIZATIONS_FLAG})
- elseif(CONFIG_DEBUG_OPTIMIZATIONS)
- set(OPTIMIZATION_FLAG ${OPTIMIZE_FOR_DEBUG_FLAG})
- elseif(CONFIG_SPEED_OPTIMIZATIONS)
- set(OPTIMIZATION_FLAG ${OPTIMIZE_FOR_SPEED_FLAG})
- elseif(CONFIG_SIZE_OPTIMIZATIONS)
- set(OPTIMIZATION_FLAG ${OPTIMIZE_FOR_SIZE_FLAG})
- else()
- assert(0 "Unreachable code. Expected optimization level to have been chosen. See Kconfig.zephyr")
- endif()
- if(NOT CONFIG_ARCH_IS_SET)
- message(WARNING "\
- None of the CONFIG_<arch> (e.g. CONFIG_X86) symbols are set. \
- Select one of them from the SOC_SERIES_* symbol or, lacking that, from the \
- SOC_* symbol.")
- endif()
- zephyr_compile_options(${OPTIMIZATION_FLAG})
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,required>>)
- if(CONFIG_CPLUSPLUS)
-
-
- if(CONFIG_STD_CPP98)
- set(STD_CPP_DIALECT_FLAGS $<TARGET_PROPERTY:compiler-cpp,dialect_cpp98>)
- elseif(CONFIG_STD_CPP11)
- set(STD_CPP_DIALECT_FLAGS $<TARGET_PROPERTY:compiler-cpp,dialect_cpp11>)
- elseif(CONFIG_STD_CPP14)
- set(STD_CPP_DIALECT_FLAGS $<TARGET_PROPERTY:compiler-cpp,dialect_cpp14>)
- elseif(CONFIG_STD_CPP17)
- set(STD_CPP_DIALECT_FLAGS $<TARGET_PROPERTY:compiler-cpp,dialect_cpp17>)
- elseif(CONFIG_STD_CPP2A)
- set(STD_CPP_DIALECT_FLAGS $<TARGET_PROPERTY:compiler-cpp,dialect_cpp2a>)
- elseif(CONFIG_STD_CPP20)
- set(STD_CPP_DIALECT_FLAGS $<TARGET_PROPERTY:compiler-cpp,dialect_cpp20>)
- elseif(CONFIG_STD_CPP2B)
- set(STD_CPP_DIALECT_FLAGS $<TARGET_PROPERTY:compiler-cpp,dialect_cpp2b>)
- else()
- assert(0 "Unreachable code. Expected C++ standard to have been chosen. See Kconfig.zephyr.")
- endif()
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:${STD_CPP_DIALECT_FLAGS}>)
- endif()
- if(NOT CONFIG_EXCEPTIONS)
-
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,no_exceptions>>)
- endif()
- if(NOT CONFIG_RTTI)
-
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,no_rtti>>)
- endif()
- if(CONFIG_MISRA_SANE)
-
- zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,warning_error_misra_sane>>)
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,warning_error_misra_sane>>)
- endif()
- if(CONFIG_CODING_GUIDELINE_CHECK)
-
- zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,warning_error_coding_guideline>>)
- endif()
- zephyr_compile_options("SHELL: $<TARGET_PROPERTY:compiler,imacros> ${AUTOCONF_H}")
- zephyr_compile_options($<TARGET_PROPERTY:compiler,freestanding>)
- zephyr_compile_options($<TARGET_PROPERTY:compiler,no_common>)
- zephyr_compile_options($<TARGET_PROPERTY:compiler,debug>)
- if(CONFIG_COMPILER_COLOR_DIAGNOSTICS)
- zephyr_compile_options($<TARGET_PROPERTY:compiler,diagnostic>)
- endif()
- zephyr_compile_options(
- ${TOOLCHAIN_C_FLAGS}
- )
- zephyr_compile_options($<$<COMPILE_LANGUAGE:ASM>:$<TARGET_PROPERTY:asm,required>>)
- if(NOT CONFIG_ARCH_POSIX)
-
-
-
- zephyr_compile_options("SHELL: $<TARGET_PROPERTY:compiler,imacros> ${ZEPHYR_BASE}/include/toolchain/zephyr_stdint.h")
- endif()
- zephyr_compile_options(
- $<$<COMPILE_LANGUAGE:ASM>:-D_ASMLANGUAGE>
- )
- toolchain_ld_base()
- toolchain_ld_force_undefined_symbols(
- _OffsetAbsSyms
- _ConfigAbsSyms
- )
- if(NOT CONFIG_NATIVE_APPLICATION)
-
- toolchain_ld_baremetal()
- endif()
- if(CONFIG_LIB_CPLUSPLUS)
-
- toolchain_ld_cpp()
- endif()
- zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,warning_base>>)
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,warning_base>>)
- if(W MATCHES "1")
- zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,warning_dw_1>>)
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,warning_dw_1>>)
- endif()
- if(W MATCHES "2")
- zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,warning_dw_2>>)
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,warning_dw_2>>)
- endif()
- if(W MATCHES "3")
- zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,warning_dw_3>>)
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,warning_dw_3>>)
- endif()
- zephyr_compile_options($<TARGET_PROPERTY:compiler,warning_extended>)
- zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,warning_error_all>>)
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,warning_error_all>>)
- include(cmake/extra_flags.cmake)
- zephyr_cc_option(-fno-asynchronous-unwind-tables)
- zephyr_cc_option(-fno-pie)
- zephyr_cc_option(-fno-pic)
- zephyr_cc_option(-fno-strict-overflow)
- if(CONFIG_THREAD_LOCAL_STORAGE)
- zephyr_cc_option(-ftls-model=local-exec)
- endif()
- if(CONFIG_OVERRIDE_FRAME_POINTER_DEFAULT)
- if(CONFIG_OMIT_FRAME_POINTER)
- zephyr_cc_option(-fomit-frame-pointer)
- else()
- zephyr_cc_option(-fno-omit-frame-pointer)
- endif()
- endif()
- separate_arguments(COMPILER_OPT_AS_LIST UNIX_COMMAND ${CONFIG_COMPILER_OPT})
- zephyr_compile_options(${COMPILER_OPT_AS_LIST})
- if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang")
-
- zephyr_cc_option(-fno-reorder-functions)
- if(NOT ${ZEPHYR_TOOLCHAIN_VARIANT} STREQUAL "xcc")
- zephyr_cc_option(-fno-defer-pop)
- endif()
- endif()
- zephyr_cc_option_ifdef(CONFIG_STACK_USAGE -fstack-usage)
- zephyr_cc_option(-fmacro-prefix-map=${CMAKE_SOURCE_DIR}=CMAKE_SOURCE_DIR)
- zephyr_cc_option(-fmacro-prefix-map=${ZEPHYR_BASE}=ZEPHYR_BASE)
- if(WEST_TOPDIR)
- zephyr_cc_option(-fmacro-prefix-map=${WEST_TOPDIR}=WEST_TOPDIR)
- endif()
- if(CONFIG_USERSPACE)
- add_custom_target(app_smem)
- set(APP_SMEM_ALIGNED_DEP app_smem_aligned_linker)
- set(APP_SMEM_UNALIGNED_DEP app_smem_unaligned_linker)
- endif()
- if(CONFIG_USERSPACE)
- set(KOBJECT_LINKER_DEP kobject_linker)
- endif()
- get_property(TOPT GLOBAL PROPERTY TOPT)
- set_ifndef( TOPT -Wl,-T)
-
- if(CONFIG_HAVE_CUSTOM_LINKER_SCRIPT)
- set(LINKER_SCRIPT ${APPLICATION_SOURCE_DIR}/${CONFIG_CUSTOM_LINKER_SCRIPT})
- if(NOT EXISTS ${LINKER_SCRIPT})
- set(LINKER_SCRIPT ${CONFIG_CUSTOM_LINKER_SCRIPT})
- assert_exists(CONFIG_CUSTOM_LINKER_SCRIPT)
- endif()
- else()
-
- set(LINKER_SCRIPT ${BOARD_DIR}/linker.ld)
- if(NOT EXISTS ${LINKER_SCRIPT})
-
- set(LINKER_SCRIPT ${SOC_DIR}/${ARCH}/${SOC_PATH}/linker.ld)
- endif()
- endif()
- if(NOT EXISTS ${LINKER_SCRIPT})
- message(FATAL_ERROR "Could not find linker script: '${LINKER_SCRIPT}'. Corrupted configuration?")
- endif()
- configure_file(version.h.in ${PROJECT_BINARY_DIR}/include/generated/version.h)
- foreach(path
- ${BOARD_DIR}/dts.fixup
- ${PROJECT_SOURCE_DIR}/soc/${ARCH}/${SOC_PATH}/dts.fixup
- ${APPLICATION_SOURCE_DIR}/dts.fixup
- )
- if(EXISTS ${path})
- message(FATAL_ERROR
- "A deprecated filename has been detected. Porting is required."
- "The file '${path}' exists, but it should be named dts_fixup.h instead."
- "See https://github.com/zephyrproject-rtos/zephyr/pull/10352 for more details"
- )
- endif()
- endforeach()
- set_ifndef( DTS_BOARD_FIXUP_FILE ${BOARD_DIR}/dts_fixup.h)
- set_ifndef( DTS_SOC_FIXUP_FILE ${SOC_DIR}/${ARCH}/${SOC_PATH}/dts_fixup.h)
- set( DTS_APP_FIXUP_FILE ${APPLICATION_SOURCE_DIR}/dts_fixup.h)
- set_ifndef(DTS_CAT_OF_FIXUP_FILES ${ZEPHYR_BINARY_DIR}/include/generated/devicetree_fixups.h)
- file(WRITE ${DTS_CAT_OF_FIXUP_FILES} "/* May only be included by devicetree.h */\n\n")
- set(DISCOVERED_FIXUP_FILES)
- foreach(fixup_file
- ${DTS_BOARD_FIXUP_FILE}
- ${DTS_SOC_FIXUP_FILE}
- ${DTS_APP_FIXUP_FILE}
- ${shield_dts_fixups}
- )
- if(EXISTS ${fixup_file})
- file(READ ${fixup_file} contents)
- file(APPEND ${DTS_CAT_OF_FIXUP_FILES} "${contents}")
- string(APPEND DISCOVERED_FIXUP_FILES "- ${fixup_file}\n")
- endif()
- endforeach()
- if (DISCOVERED_FIXUP_FILES)
- message(WARNING "One or more dts_fixup.h files detected:\n${DISCOVERED_FIXUP_FILES}Use of these files is deprecated; use the devicetree.h API instead.")
- endif()
- add_subdirectory(arch)
- add_subdirectory(lib)
- include(misc/generated/CMakeLists.txt)
- if(EXISTS ${SOC_DIR}/${ARCH}/CMakeLists.txt)
- add_subdirectory(${SOC_DIR}/${ARCH} soc/${ARCH})
- else()
- add_subdirectory(${SOC_DIR}/${ARCH}/${SOC_PATH} soc/${ARCH}/${SOC_PATH})
- endif()
- add_subdirectory(boards)
- add_subdirectory(subsys)
- add_subdirectory(drivers)
- foreach(module_name ${ZEPHYR_MODULE_NAMES})
-
-
-
-
-
- zephyr_string(SANITIZE TOUPPER MODULE_NAME_UPPER ${module_name})
- if(NOT ${ZEPHYR_${MODULE_NAME_UPPER}_CMAKE_DIR} STREQUAL "")
- set(ZEPHYR_CURRENT_MODULE_DIR ${ZEPHYR_${MODULE_NAME_UPPER}_MODULE_DIR})
- set(ZEPHYR_CURRENT_CMAKE_DIR ${ZEPHYR_${MODULE_NAME_UPPER}_CMAKE_DIR})
- add_subdirectory(${ZEPHYR_CURRENT_CMAKE_DIR} ${CMAKE_BINARY_DIR}/modules/${module_name})
- endif()
- endforeach()
- set(ZEPHYR_CURRENT_MODULE_DIR)
- set(ZEPHYR_CURRENT_CMAKE_DIR)
- set(syscall_list_h ${CMAKE_CURRENT_BINARY_DIR}/include/generated/syscall_list.h)
- set(syscalls_json ${CMAKE_CURRENT_BINARY_DIR}/misc/generated/syscalls.json)
- set(struct_tags_json ${CMAKE_CURRENT_BINARY_DIR}/misc/generated/struct_tags.json)
- set(syscalls_subdirs_txt ${CMAKE_CURRENT_BINARY_DIR}/misc/generated/syscalls_subdirs.txt)
- set(syscalls_subdirs_trigger ${CMAKE_CURRENT_BINARY_DIR}/misc/generated/syscalls_subdirs.trigger)
- if(NOT (${CMAKE_HOST_SYSTEM_NAME} STREQUAL Windows))
- set(syscalls_links --create-links ${CMAKE_CURRENT_BINARY_DIR}/misc/generated/syscalls_links)
- endif()
- execute_process(
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${ZEPHYR_BASE}/scripts/subfolder_list.py
- --directory ${ZEPHYR_BASE}/include
- --out-file ${syscalls_subdirs_txt}
- --trigger ${syscalls_subdirs_trigger}
- ${syscalls_links}
- )
- file(STRINGS ${syscalls_subdirs_txt} PARSE_SYSCALLS_PATHS_DEPENDS ENCODING UTF-8)
- if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL Windows)
-
-
- set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${PARSE_SYSCALLS_PATHS_DEPENDS})
-
-
- file(GLOB_RECURSE PARSE_SYSCALLS_HEADER_DEPENDS ${ZEPHYR_BASE}/include/*.h)
- else()
-
-
-
-
-
-
- add_custom_command(OUTPUT ${PARSE_SYSCALLS_PATHS_DEPENDS}
- COMMAND ${CMAKE_COMMAND} -E echo ""
- COMMENT "Preparing syscall dependency handling"
- )
- add_custom_command(
- OUTPUT
- ${syscalls_subdirs_trigger}
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${ZEPHYR_BASE}/scripts/subfolder_list.py
- --directory ${ZEPHYR_BASE}/include
- --out-file ${syscalls_subdirs_txt}
- --trigger ${syscalls_subdirs_trigger}
- ${syscalls_links}
- DEPENDS ${PARSE_SYSCALLS_PATHS_DEPENDS}
- )
-
- if(NOT EXISTS ${syscalls_subdirs_txt})
- file(WRITE ${syscalls_subdirs_txt} "")
- endif()
-
-
-
-
- set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${syscalls_subdirs_txt})
- endif()
- if(CONFIG_APPLICATION_DEFINED_SYSCALL)
- list(APPEND SYSCALL_INCLUDE_DIRS ${APPLICATION_SOURCE_DIR})
- endif()
- if(CONFIG_ZTEST)
- list(APPEND SYSCALL_INCLUDE_DIRS ${ZEPHYR_BASE}/subsys/testsuite/ztest/include)
- endif()
- foreach(d ${SYSCALL_INCLUDE_DIRS})
- list(APPEND parse_syscalls_include_args
- --include ${d}
- )
- endforeach()
- add_custom_command(
- OUTPUT
- ${syscalls_json}
- ${struct_tags_json}
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${ZEPHYR_BASE}/scripts/parse_syscalls.py
- --include ${ZEPHYR_BASE}/include
- --include ${ZEPHYR_BASE}/drivers
- --include ${ZEPHYR_BASE}/subsys/net
- ${parse_syscalls_include_args}
- --json-file ${syscalls_json}
- --tag-struct-file ${struct_tags_json}
- DEPENDS ${syscalls_subdirs_trigger} ${PARSE_SYSCALLS_HEADER_DEPENDS}
- )
- add_custom_target(${SYSCALL_LIST_H_TARGET} DEPENDS ${syscall_list_h})
- set_property(TARGET ${SYSCALL_LIST_H_TARGET}
- APPEND PROPERTY
- ADDITIONAL_CLEAN_FILES
- ${CMAKE_CURRENT_BINARY_DIR}/include/generated/syscalls
- )
- add_custom_target(${PARSE_SYSCALLS_TARGET}
- DEPENDS
- ${syscalls_json}
- ${struct_tags_json}
- )
- if(CONFIG_64BIT)
- set(SYSCALL_LONG_REGISTERS_ARG --long-registers)
- endif()
- if(CONFIG_TIMEOUT_64BIT)
- set(SYSCALL_SPLIT_TIMEOUT_ARG --split-type k_timeout_t)
- endif()
- add_custom_command(OUTPUT include/generated/syscall_dispatch.c ${syscall_list_h}
-
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${ZEPHYR_BASE}/scripts/gen_syscalls.py
- --json-file ${syscalls_json}
- --base-output include/generated/syscalls
- --syscall-dispatch include/generated/syscall_dispatch.c
- --syscall-list ${syscall_list_h}
- ${SYSCALL_LONG_REGISTERS_ARG}
- ${SYSCALL_SPLIT_TIMEOUT_ARG}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- DEPENDS ${PARSE_SYSCALLS_TARGET}
- )
- set(gen_kobject_list_include_args --include ${struct_tags_json})
- set(DRV_VALIDATION ${PROJECT_BINARY_DIR}/include/generated/driver-validation.h)
- add_custom_command(
- OUTPUT ${DRV_VALIDATION}
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${ZEPHYR_BASE}/scripts/gen_kobject_list.py
- --validation-output ${DRV_VALIDATION}
- ${gen_kobject_list_include_args}
- $<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:--verbose>
- DEPENDS
- ${ZEPHYR_BASE}/scripts/gen_kobject_list.py
- ${PARSE_SYSCALLS_TARGET}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- )
- add_custom_target(${DRIVER_VALIDATION_H_TARGET} DEPENDS ${DRV_VALIDATION})
- include(${ZEPHYR_BASE}/cmake/kobj.cmake)
- gen_kobj(KOBJ_INCLUDE_PATH)
- add_custom_target(zephyr_generated_headers)
- add_dependencies(zephyr_generated_headers
- offsets_h
- )
- set(OFFSETS_LIB offsets)
- set(OFFSETS_C_PATH ${ARCH_DIR}/${ARCH}/core/offsets/offsets.c)
- set(OFFSETS_H_PATH ${PROJECT_BINARY_DIR}/include/generated/offsets.h)
- add_library( ${OFFSETS_LIB} OBJECT ${OFFSETS_C_PATH})
- target_include_directories(${OFFSETS_LIB} PRIVATE
- kernel/include
- ${ARCH_DIR}/${ARCH}/include
- )
- target_link_libraries(${OFFSETS_LIB} zephyr_interface)
- add_dependencies(zephyr_interface
- ${SYSCALL_LIST_H_TARGET}
- ${DRIVER_VALIDATION_H_TARGET}
- ${KOBJ_TYPES_H_TARGET}
- )
- add_custom_command(
- OUTPUT ${OFFSETS_H_PATH}
- COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/scripts/gen_offset_header.py
- -i $<TARGET_OBJECTS:${OFFSETS_LIB}>
- -o ${OFFSETS_H_PATH}
- DEPENDS
- ${OFFSETS_LIB}
- $<TARGET_OBJECTS:${OFFSETS_LIB}>
- )
- add_custom_target(${OFFSETS_H_TARGET} DEPENDS ${OFFSETS_H_PATH})
- zephyr_get_include_directories_for_lang(C ZEPHYR_INCLUDES)
- add_subdirectory(kernel)
- add_subdirectory(framework)
- get_property(ZEPHYR_LIBS_PROPERTY GLOBAL PROPERTY ZEPHYR_LIBS)
- foreach(zephyr_lib ${ZEPHYR_LIBS_PROPERTY})
- get_property(lib_type TARGET ${zephyr_lib} PROPERTY TYPE)
-
-
- if(${lib_type} STREQUAL STATIC_LIBRARY
- AND NOT ${zephyr_lib} STREQUAL app
- )
- get_property(source_list TARGET ${zephyr_lib} PROPERTY SOURCES)
- get_property(lib_imported TARGET ${zephyr_lib} PROPERTY IMPORTED)
- if(NOT source_list
- AND NOT ${lib_imported}
- )
- get_property(allow_empty TARGET ${zephyr_lib} PROPERTY ALLOW_EMPTY)
- if(NOT "${allow_empty}")
- message(WARNING
- "No SOURCES given to Zephyr library: ${zephyr_lib}\nExcluding target from build."
- )
- endif()
- target_sources(${zephyr_lib} PRIVATE ${ZEPHYR_BASE}/misc/empty_file.c)
- set_property(TARGET ${zephyr_lib} PROPERTY EXCLUDE_FROM_ALL TRUE)
- list(REMOVE_ITEM ZEPHYR_LIBS_PROPERTY ${zephyr_lib})
- continue()
- endif()
- endif()
-
- add_dependencies(${zephyr_lib} zephyr_generated_headers)
- endforeach()
- get_property(OUTPUT_FORMAT GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT)
- if (CONFIG_CODE_DATA_RELOCATION)
- set(CODE_RELOCATION_DEP code_relocation_source_lib)
- endif()
- zephyr_get_include_directories_for_lang(C
- ZEPHYR_INCLUDE_DIRS
- STRIP_PREFIX
- )
- if(CONFIG_GEN_ISR_TABLES)
- if(CONFIG_GEN_SW_ISR_TABLE)
- list(APPEND GEN_ISR_TABLE_EXTRA_ARG --sw-isr-table)
- endif()
- if(CONFIG_GEN_IRQ_VECTOR_TABLE)
- list(APPEND GEN_ISR_TABLE_EXTRA_ARG --vector-table)
- endif()
-
-
- add_custom_command(
- OUTPUT isr_tables.c isrList.bin
- COMMAND $<TARGET_PROPERTY:bintools,elfconvert_command>
- $<TARGET_PROPERTY:bintools,elfconvert_flag>
- $<TARGET_PROPERTY:bintools,elfconvert_flag_intarget>${OUTPUT_FORMAT}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_outtarget>binary
- $<TARGET_PROPERTY:bintools,elfconvert_flag_section_only>.intList
- $<TARGET_PROPERTY:bintools,elfconvert_flag_infile>$<TARGET_FILE:${ZEPHYR_PREBUILT_EXECUTABLE}>
- $<TARGET_PROPERTY:bintools,elfconvert_flag_outfile>isrList.bin
- $<TARGET_PROPERTY:bintools,elfconvert_flag_final>
- COMMAND ${PYTHON_EXECUTABLE}
- ${ZEPHYR_BASE}/arch/common/gen_isr_tables.py
- --output-source isr_tables.c
- --kernel $<TARGET_FILE:${ZEPHYR_PREBUILT_EXECUTABLE}>
- --intlist isrList.bin
- $<$<BOOL:${CONFIG_BIG_ENDIAN}>:--big-endian>
- $<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:--debug>
- ${GEN_ISR_TABLE_EXTRA_ARG}
- DEPENDS ${ZEPHYR_PREBUILT_EXECUTABLE}
- COMMAND_EXPAND_LISTS
- )
- set_property(GLOBAL APPEND PROPERTY GENERATED_KERNEL_SOURCE_FILES isr_tables.c)
- endif()
- if(CONFIG_KALLSYMS)
- set(KALLSYMS_PARAM --fbin=ksym.bin)
- if(CONFIG_KALLSYMS_NO_NAME)
- set(KALLSYMS_PARAM --no_symbols_name)
- endif()
- if(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
- MESSAGE(STATUS "operation system is Windows")
- set(KALLSYMS_APP ${ZEPHYR_BASE}/scripts/kallsyms_win.exe)
- else()
- MESSAGE(STATUS "operation system is linux ")
- set(KALLSYMS_APP ${ZEPHYR_BASE}/scripts/kallsyms)
- endif()
- add_custom_command(
- OUTPUT ksyms.S
- POST_BUILD
- COMMAND ${CMAKE_NM}
- -n
- ${ZEPHYR_PREBUILT_EXECUTABLE}.elf
- > k_syms.map
- COMMAND ${KALLSYMS_APP}
- ${KALLSYMS_PARAM}
- < k_syms.map
- > ksyms.S
- DEPENDS ${ZEPHYR_PREBUILT_EXECUTABLE}
- COMMAND_EXPAND_LISTS
- )
- add_custom_target(output_ksyms DEPENDS ksyms.S)
- set_property(GLOBAL APPEND PROPERTY GENERATED_KERNEL_SOURCE_FILES ksyms.S)
- endif()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if(CONFIG_CODE_DATA_RELOCATION)
-
- toolchain_ld_relocation()
- endif()
- if(CONFIG_USERSPACE)
- zephyr_get_compile_options_for_lang_as_string(C compiler_flags_priv)
- string(REPLACE "$<TARGET_PROPERTY:compiler,coverage>" ""
- NO_COVERAGE_FLAGS "${compiler_flags_priv}"
- )
- get_property(include_dir_in_interface TARGET zephyr_interface
- PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
- get_property(sys_include_dir_in_interface TARGET zephyr_interface
- PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES)
- get_property(compile_definitions_interface TARGET zephyr_interface
- PROPERTY INTERFACE_COMPILE_DEFINITIONS)
- set(GEN_KOBJ_LIST ${ZEPHYR_BASE}/scripts/gen_kobject_list.py)
- set(PROCESS_GPERF ${ZEPHYR_BASE}/scripts/process_gperf.py)
- set(KOBJECT_HASH_LIST kobject_hash.gperf)
- set(KOBJECT_HASH_OUTPUT_SRC_PRE kobject_hash_preprocessed.c)
- set(KOBJECT_HASH_OUTPUT_SRC kobject_hash.c)
- set(KOBJECT_HASH_OUTPUT_OBJ kobject_hash.c.obj)
- set(KOBJECT_HASH_OUTPUT_OBJ_RENAMED kobject_hash_renamed.o)
-
-
-
-
-
-
-
-
- add_custom_command(
- OUTPUT ${KOBJECT_HASH_LIST}
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${GEN_KOBJ_LIST}
- --kernel $<TARGET_FILE:${ZEPHYR_PREBUILT_EXECUTABLE}>
- --gperf-output ${KOBJECT_HASH_LIST}
- ${gen_kobject_list_include_args}
- $<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:--verbose>
- DEPENDS
- ${ZEPHYR_PREBUILT_EXECUTABLE}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- )
- add_custom_target(
- kobj_hash_list
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_HASH_LIST}
- )
-
-
- add_custom_command(
- OUTPUT ${KOBJECT_HASH_OUTPUT_SRC_PRE}
- COMMAND
- ${GPERF}
- --output-file ${KOBJECT_HASH_OUTPUT_SRC_PRE}
- --multiple-iterations 10
- ${KOBJECT_HASH_LIST}
- DEPENDS kobj_hash_list ${KOBJECT_HASH_LIST}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- )
- add_custom_target(
- kobj_hash_output_src_pre
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_HASH_OUTPUT_SRC_PRE}
- )
-
-
-
-
-
- add_custom_command(
- OUTPUT ${KOBJECT_HASH_OUTPUT_SRC}
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${PROCESS_GPERF}
- -i ${KOBJECT_HASH_OUTPUT_SRC_PRE}
- -o ${KOBJECT_HASH_OUTPUT_SRC}
- -p "struct z_object"
- $<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:--verbose>
- DEPENDS kobj_hash_output_src_pre ${KOBJECT_HASH_OUTPUT_SRC_PRE}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- )
- add_custom_target(
- kobj_hash_output_src
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_HASH_OUTPUT_SRC}
- )
-
-
-
- add_library(
- kobj_hash_output_lib
- STATIC ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_HASH_OUTPUT_SRC}
- )
- set_source_files_properties(${KOBJECT_HASH_OUTPUT_SRC}
- PROPERTIES COMPILE_FLAGS
- "${NO_COVERAGE_FLAGS} -fno-function-sections -fno-data-sections")
- set_source_files_properties(${KOBJECT_HASH_OUTPUT_SRC}
- PROPERTIES COMPILE_DEFINITIONS "${compile_definitions_interface}")
-
-
-
- add_library(kobj_hash_output_lib_interface INTERFACE)
- target_link_libraries(kobj_hash_output_lib kobj_hash_output_lib_interface)
- foreach(incl ${include_dir_in_interface})
- target_include_directories(kobj_hash_output_lib_interface INTERFACE ${incl})
- endforeach()
- foreach(incl ${sys_include_dir_in_interface})
- target_include_directories(kobj_hash_output_lib_interface SYSTEM INTERFACE ${incl})
- endforeach()
- set(
- KOBJECT_HASH_OUTPUT_OBJ_PATH
- ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/kobj_hash_output_lib.dir/${KOBJECT_HASH_OUTPUT_OBJ}
- )
- add_custom_command(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_HASH_OUTPUT_OBJ_RENAMED}
- COMMAND $<TARGET_PROPERTY:bintools,elfconvert_command>
- $<TARGET_PROPERTY:bintools,elfconvert_flag>
- $<TARGET_PROPERTY:bintools,elfconvert_flag_section_rename>.data=.kobject_data.data
- $<TARGET_PROPERTY:bintools,elfconvert_flag_section_rename>.sdata=.kobject_data.sdata
- $<TARGET_PROPERTY:bintools,elfconvert_flag_section_rename>.text=.kobject_data.text
- $<TARGET_PROPERTY:bintools,elfconvert_flag_section_rename>.rodata=.kobject_data.rodata
- $<TARGET_PROPERTY:bintools,elfconvert_flag_infile>${KOBJECT_HASH_OUTPUT_OBJ_PATH}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_outfile>${KOBJECT_HASH_OUTPUT_OBJ_RENAMED}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_final>
- DEPENDS kobj_hash_output_lib
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND_EXPAND_LISTS
- )
- add_custom_target(
- kobj_hash_output_obj_renamed
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_HASH_OUTPUT_OBJ_RENAMED}
- )
- add_library(kobj_hash_output_obj_renamed_lib STATIC IMPORTED GLOBAL)
- set_property(
- TARGET kobj_hash_output_obj_renamed_lib
- PROPERTY
- IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_HASH_OUTPUT_OBJ_RENAMED}
- )
- add_dependencies(
- kobj_hash_output_obj_renamed_lib
- kobj_hash_output_obj_renamed
- )
- set_property(
- GLOBAL APPEND PROPERTY
- GENERATED_KERNEL_OBJECT_FILES kobj_hash_output_obj_renamed_lib
- )
- endif()
- get_property(GKOF GLOBAL PROPERTY GENERATED_KERNEL_OBJECT_FILES)
- get_property(GKSF GLOBAL PROPERTY GENERATED_KERNEL_SOURCE_FILES)
- get_property(CSTD GLOBAL PROPERTY CSTD)
- set_ifndef(CSTD c99)
- zephyr_compile_options(
- $<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,cstd>${CSTD}>
- )
- toolchain_ld_configure_files()
- if(CONFIG_USERSPACE)
- set(APP_SMEM_ALIGNED_LD "${PROJECT_BINARY_DIR}/include/generated/app_smem_aligned.ld")
- set(APP_SMEM_UNALIGNED_LD "${PROJECT_BINARY_DIR}/include/generated/app_smem_unaligned.ld")
- if(CONFIG_LINKER_USE_PINNED_SECTION)
- set(APP_SMEM_PINNED_ALIGNED_LD
- "${PROJECT_BINARY_DIR}/include/generated/app_smem_pinned_aligned.ld")
- set(APP_SMEM_PINNED_UNALIGNED_LD
- "${PROJECT_BINARY_DIR}/include/generated/app_smem_pinned_unaligned.ld")
- if(NOT CONFIG_LINKER_GENERIC_SECTIONS_PRESENT_AT_BOOT)
-
-
-
-
- set_property(TARGET app_smem APPEND PROPERTY pinned_partitions "z_libc_partition")
- endif()
- get_property(APP_SMEM_PINNED_PARTITION_LIST TARGET app_smem PROPERTY pinned_partitions)
- if(APP_SMEM_PINNED_PARTITION_LIST)
- list(JOIN APP_SMEM_PINNED_PARTITION_LIST "," APP_SMEM_PINNED_PARTITION_LIST_ARG_CSL)
- set(APP_SMEM_PINNED_PARTITION_LIST_ARG "--pinpartitions=${APP_SMEM_PINNED_PARTITION_LIST_ARG_CSL}")
- endif()
- endif()
- set(OBJ_FILE_DIR "${PROJECT_BINARY_DIR}/../")
- add_custom_target(
- ${APP_SMEM_ALIGNED_DEP}
- DEPENDS
- ${APP_SMEM_ALIGNED_LD}
- ${APP_SMEM_PINNED_ALIGNED_LD}
- )
- add_custom_target(
- ${APP_SMEM_UNALIGNED_DEP}
- DEPENDS
- ${APP_SMEM_UNALIGNED_LD}
- ${APP_SMEM_PINNED_UNALIGNED_LD}
- )
- if(CONFIG_NEWLIB_LIBC)
- set(NEWLIB_PART -l libc.a z_libc_partition)
- endif()
- if(CONFIG_NEWLIB_LIBC_NANO)
- set(NEWLIB_PART -l libc_nano.a z_libc_partition)
- endif()
- add_custom_command(
- OUTPUT ${APP_SMEM_UNALIGNED_LD} ${APP_SMEM_PINNED_UNALIGNED_LD}
- COMMAND ${PYTHON_EXECUTABLE}
- ${ZEPHYR_BASE}/scripts/gen_app_partitions.py
- -d ${OBJ_FILE_DIR}
- -o ${APP_SMEM_UNALIGNED_LD}
- $<$<BOOL:${APP_SMEM_PINNED_UNALIGNED_LD}>:--pinoutput=${APP_SMEM_PINNED_UNALIGNED_LD}>
- ${APP_SMEM_PINNED_PARTITION_LIST_ARG}
- ${NEWLIB_PART}
- $<TARGET_PROPERTY:zephyr_property_target,COMPILE_OPTIONS>
- $<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:--verbose>
- DEPENDS
- kernel
- ${ZEPHYR_LIBS_PROPERTY}
- WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/
- COMMAND_EXPAND_LISTS
- COMMENT "Generating app_smem_unaligned linker section"
- )
- configure_linker_script(
- linker_app_smem_unaligned.cmd
- "-DLINKER_APP_SMEM_UNALIGNED"
- ${CODE_RELOCATION_DEP}
- ${APP_SMEM_UNALIGNED_DEP}
- ${APP_SMEM_UNALIGNED_LD}
- ${APP_SMEM_PINNED_UNALIGNED_LD}
- zephyr_generated_headers
- )
- add_custom_target(
- linker_app_smem_unaligned_script
- DEPENDS
- linker_app_smem_unaligned.cmd
- )
- set_property(TARGET
- linker_app_smem_unaligned_script
- PROPERTY INCLUDE_DIRECTORIES
- ${ZEPHYR_INCLUDE_DIRS}
- )
- set(APP_SMEM_UNALIGNED_LIB app_smem_unaligned_output_obj_renamed_lib)
- add_executable( app_smem_unaligned_prebuilt misc/empty_file.c)
- toolchain_ld_link_elf(
- TARGET_ELF app_smem_unaligned_prebuilt
- OUTPUT_MAP ${PROJECT_BINARY_DIR}/app_smem_unaligned_prebuilt.map
- LIBRARIES_PRE_SCRIPT ""
- LINKER_SCRIPT ${PROJECT_BINARY_DIR}/linker_app_smem_unaligned.cmd
- LIBRARIES_POST_SCRIPT ""
- DEPENDENCIES ${CODE_RELOCATION_DEP}
- )
- target_byproducts(TARGET app_smem_unaligned_prebuilt
- BYPRODUCTS ${PROJECT_BINARY_DIR}/app_smem_unaligned_prebuilt.map
- )
- set_property(TARGET app_smem_unaligned_prebuilt PROPERTY LINK_DEPENDS ${PROJECT_BINARY_DIR}/linker_app_smem_unaligned.cmd)
- add_dependencies( app_smem_unaligned_prebuilt linker_app_smem_unaligned_script ${OFFSETS_LIB})
- add_custom_command(
- OUTPUT ${APP_SMEM_ALIGNED_LD} ${APP_SMEM_PINNED_ALIGNED_LD}
- COMMAND ${PYTHON_EXECUTABLE}
- ${ZEPHYR_BASE}/scripts/gen_app_partitions.py
- -e $<TARGET_FILE:app_smem_unaligned_prebuilt>
- -o ${APP_SMEM_ALIGNED_LD}
- $<$<BOOL:${APP_SMEM_PINNED_ALIGNED_LD}>:--pinoutput=${APP_SMEM_PINNED_ALIGNED_LD}>
- ${APP_SMEM_PINNED_PARTITION_LIST_ARG}
- ${NEWLIB_PART}
- $<TARGET_PROPERTY:zephyr_property_target,COMPILE_OPTIONS>
- $<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:--verbose>
- DEPENDS
- kernel
- ${ZEPHYR_LIBS_PROPERTY}
- app_smem_unaligned_prebuilt
- WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/
- COMMAND_EXPAND_LISTS
- COMMENT "Generating app_smem_aligned linker section"
- )
- endif()
- if(CONFIG_USERSPACE)
-
-
-
-
-
-
- set(KOBJECT_PREBUILT_HASH_LIST kobject_prebuilt_hash.gperf)
- set(KOBJECT_PREBUILT_HASH_OUTPUT_SRC_PRE kobject_prebuilt_hash_preprocessed.c)
- set(KOBJECT_PREBUILT_HASH_OUTPUT_SRC kobject_prebuilt_hash.c)
- set(KOBJECT_PREBUILT_HASH_OUTPUT_OBJ kobject_prebuilt_hash.c.obj)
- add_custom_command(
- OUTPUT ${KOBJECT_PREBUILT_HASH_LIST}
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${GEN_KOBJ_LIST}
- --kernel $<TARGET_FILE:app_smem_unaligned_prebuilt>
- --gperf-output ${KOBJECT_PREBUILT_HASH_LIST}
- ${gen_kobject_list_include_args}
- $<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:--verbose>
- DEPENDS
- app_smem_unaligned_prebuilt
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- )
- add_custom_target(
- kobj_prebuilt_hash_list
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_PREBUILT_HASH_LIST}
- )
- add_custom_command(
- OUTPUT ${KOBJECT_PREBUILT_HASH_OUTPUT_SRC_PRE}
- COMMAND
- ${GPERF}
- --output-file ${KOBJECT_PREBUILT_HASH_OUTPUT_SRC_PRE}
- --multiple-iterations 10
- ${KOBJECT_PREBUILT_HASH_LIST}
- DEPENDS kobj_prebuilt_hash_list ${KOBJECT_PREBUILT_HASH_LIST}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- )
- add_custom_target(
- kobj_prebuilt_hash_output_src_pre
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_PREBUILT_HASH_OUTPUT_SRC_PRE}
- )
- add_custom_command(
- OUTPUT ${KOBJECT_PREBUILT_HASH_OUTPUT_SRC}
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${PROCESS_GPERF}
- -i ${KOBJECT_PREBUILT_HASH_OUTPUT_SRC_PRE}
- -o ${KOBJECT_PREBUILT_HASH_OUTPUT_SRC}
- -p "struct z_object"
- $<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:--verbose>
- DEPENDS kobj_prebuilt_hash_output_src_pre ${KOBJECT_PREBUILT_HASH_OUTPUT_SRC_PRE}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- )
- add_custom_target(
- kobj_prebuilt_hash_output_src
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_PREBUILT_HASH_OUTPUT_SRC}
- )
- add_library(
- kobj_prebuilt_hash_output_lib
- STATIC ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_PREBUILT_HASH_OUTPUT_SRC}
- )
- set_source_files_properties(${KOBJECT_PREBUILT_HASH_OUTPUT_SRC}
- PROPERTIES COMPILE_FLAGS
- "${NO_COVERAGE_FLAGS} -fno-function-sections -fno-data-sections")
- set_source_files_properties(${KOBJECT_PREBUILT_HASH_OUTPUT_SRC}
- PROPERTIES COMPILE_DEFINITIONS "${compile_definitions_interface}")
- add_library(kobj_prebuilt_hash_output_lib_interface INTERFACE)
- target_link_libraries(
- kobj_prebuilt_hash_output_lib
- kobj_prebuilt_hash_output_lib_interface
- )
- foreach(incl ${include_dir_in_interface})
- target_include_directories(
- kobj_prebuilt_hash_output_lib_interface
- INTERFACE ${incl}
- )
- endforeach()
- foreach(incl ${sys_include_dir_in_interface})
- target_include_directories(
- kobj_prebuilt_hash_output_lib_interface
- SYSTEM INTERFACE ${incl}
- )
- endforeach()
- set(
- KOBJECT_PREBUILT_HASH_OUTPUT_OBJ_PATH
- ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/kobj_prebuilt_hash_output_lib.dir/${KOBJECT_PREBUILT_HASH_OUTPUT_OBJ}
- )
- set(KOBJECT_LINKER_HEADER_DATA "${PROJECT_BINARY_DIR}/include/generated/linker-kobject-prebuilt-data.h")
- add_custom_command(
- OUTPUT ${KOBJECT_LINKER_HEADER_DATA}
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${ZEPHYR_BASE}/scripts/gen_kobject_placeholders.py
- --object ${KOBJECT_PREBUILT_HASH_OUTPUT_OBJ_PATH}
- --outdir ${PROJECT_BINARY_DIR}/include/generated
- --datapct ${CONFIG_KOBJECT_DATA_AREA_RESERVE_EXTRA_PERCENT}
- --rodata ${CONFIG_KOBJECT_RODATA_AREA_EXTRA_BYTES}
- $<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:--verbose>
- DEPENDS
- kobj_prebuilt_hash_output_lib
- ${KOBJECT_PREBUILT_HASH_OUTPUT_OBJ_PATH}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- )
- add_custom_target(
- ${KOBJECT_LINKER_DEP}
- DEPENDS
- ${KOBJECT_LINKER_HEADER_DATA}
- )
- endif()
- configure_linker_script(
- linker_zephyr_prebuilt.cmd
- "-DLINKER_ZEPHYR_PREBUILT"
- ${APP_SMEM_ALIGNED_DEP}
- ${KOBJECT_LINKER_DEP}
- ${CODE_RELOCATION_DEP}
- zephyr_generated_headers
- )
- add_custom_target(
- linker_zephyr_prebuilt_script_target
- DEPENDS
- linker_zephyr_prebuilt.cmd
- )
- set_property(TARGET
- linker_zephyr_prebuilt_script_target
- PROPERTY INCLUDE_DIRECTORIES
- ${ZEPHYR_INCLUDE_DIRS}
- )
- add_executable( ${ZEPHYR_PREBUILT_EXECUTABLE} misc/empty_file.c)
- toolchain_ld_link_elf(
- TARGET_ELF ${ZEPHYR_PREBUILT_EXECUTABLE}
- OUTPUT_MAP ${PROJECT_BINARY_DIR}/${ZEPHYR_PREBUILT_EXECUTABLE}.map
- LIBRARIES_PRE_SCRIPT ""
- LINKER_SCRIPT ${PROJECT_BINARY_DIR}/linker_zephyr_prebuilt.cmd
- DEPENDENCIES ${CODE_RELOCATION_DEP}
- )
- target_byproducts(TARGET ${ZEPHYR_PREBUILT_EXECUTABLE}
- BYPRODUCTS ${PROJECT_BINARY_DIR}/${ZEPHYR_PREBUILT_EXECUTABLE}.map
- )
- set_property(TARGET
- ${ZEPHYR_PREBUILT_EXECUTABLE}
- PROPERTY LINK_DEPENDS ${PROJECT_BINARY_DIR}/linker_zephyr_prebuilt.cmd
- )
- add_dependencies(
- ${ZEPHYR_PREBUILT_EXECUTABLE}
- linker_zephyr_prebuilt_script_target
- ${OFFSETS_LIB}
- )
- set(generated_kernel_files ${GKSF} ${GKOF})
- if(NOT generated_kernel_files)
-
-
- set(logical_target_for_zephyr_elf ${ZEPHYR_PREBUILT_EXECUTABLE})
- else()
-
-
-
-
-
-
- configure_linker_script(
- linker.cmd
- "-DLINKER_ZEPHYR_FINAL;-DLINKER_PASS2"
- ${CODE_RELOCATION_DEP}
- ${ZEPHYR_PREBUILT_EXECUTABLE}
- zephyr_generated_headers
- )
- add_custom_target(
- linker_zephyr_final_script_target
- DEPENDS
- linker.cmd
- )
- set_property(TARGET
- linker_zephyr_final_script_target
- PROPERTY INCLUDE_DIRECTORIES
- ${ZEPHYR_INCLUDE_DIRS}
- )
- add_executable( ${ZEPHYR_FINAL_EXECUTABLE} misc/empty_file.c ${GKSF})
- toolchain_ld_link_elf(
- TARGET_ELF ${ZEPHYR_FINAL_EXECUTABLE}
- OUTPUT_MAP ${PROJECT_BINARY_DIR}/${ZEPHYR_FINAL_EXECUTABLE}.map
- LIBRARIES_PRE_SCRIPT ${GKOF}
- LINKER_SCRIPT ${PROJECT_BINARY_DIR}/linker.cmd
- LIBRARIES_POST_SCRIPT ""
- DEPENDENCIES ${CODE_RELOCATION_DEP}
- )
- set_property(TARGET ${ZEPHYR_FINAL_EXECUTABLE} PROPERTY LINK_DEPENDS ${PROJECT_BINARY_DIR}/linker.cmd)
- add_dependencies( ${ZEPHYR_FINAL_EXECUTABLE} linker_zephyr_final_script_target)
-
- set(logical_target_for_zephyr_elf ${ZEPHYR_FINAL_EXECUTABLE})
- endif()
- set(logical_target_for_zephyr_elf ${logical_target_for_zephyr_elf} PARENT_SCOPE)
- set_target_properties(${logical_target_for_zephyr_elf} PROPERTIES OUTPUT_NAME ${KERNEL_NAME})
- set(post_build_commands "")
- set(post_build_byproducts "")
- list(APPEND
- post_build_commands
- COMMAND
- ${CMAKE_COMMAND} -E rename ${logical_target_for_zephyr_elf}.map ${KERNEL_MAP_NAME}
- )
- list(APPEND post_build_byproducts ${KERNEL_MAP_NAME})
- if(NOT CONFIG_BUILD_NO_GAP_FILL)
-
- set(GAP_FILL "$<TARGET_PROPERTY:bintools,elfconvert_flag_gapfill>0xff")
- endif()
- if(CONFIG_OUTPUT_PRINT_MEMORY_USAGE)
- target_link_libraries(${logical_target_for_zephyr_elf} $<TARGET_PROPERTY:linker,memusage>)
- get_property(memusage_build_command TARGET bintools PROPERTY memusage_command)
- if(memusage_build_command)
-
-
-
-
- list(APPEND
- post_build_commands
- COMMAND $<TARGET_PROPERTY:bintools,memusage_command>
- $<TARGET_PROPERTY:bintools,memusage_flag>
- $<TARGET_PROPERTY:bintools,memusage_infile>${KERNEL_ELF_NAME}
- )
-
-
- get_property(memusage_byproducts TARGET bintools PROPERTY memusage_byproducts)
- list(APPEND
- post_build_byproducts
- ${memusage_byproducts}
- )
- endif()
- endif()
- if(CONFIG_BUILD_OUTPUT_HEX OR BOARD_FLASH_RUNNER STREQUAL openocd)
- get_property(elfconvert_formats TARGET bintools PROPERTY elfconvert_formats)
- if(ihex IN_LIST elfconvert_formats)
- list(APPEND
- post_build_commands
- COMMAND $<TARGET_PROPERTY:bintools,elfconvert_command>
- $<TARGET_PROPERTY:bintools,elfconvert_flag>
- ${GAP_FILL}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_outtarget>ihex
- $<TARGET_PROPERTY:bintools,elfconvert_flag_section_remove>.comment
- $<TARGET_PROPERTY:bintools,elfconvert_flag_section_remove>COMMON
- $<TARGET_PROPERTY:bintools,elfconvert_flag_section_remove>.eh_frame
- $<TARGET_PROPERTY:bintools,elfconvert_flag_infile>${KERNEL_ELF_NAME}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_outfile>${KERNEL_HEX_NAME}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_final>
- )
- list(APPEND
- post_build_byproducts
- ${KERNEL_HEX_NAME}
-
- )
- endif()
- endif()
- if(CONFIG_BUILD_OUTPUT_BIN)
- get_property(elfconvert_formats TARGET bintools PROPERTY elfconvert_formats)
- if(binary IN_LIST elfconvert_formats)
- list(APPEND
- post_build_commands
- COMMAND $<TARGET_PROPERTY:bintools,elfconvert_command>
- $<TARGET_PROPERTY:bintools,elfconvert_flag>
- ${GAP_FILL}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_outtarget>binary
- $<TARGET_PROPERTY:bintools,elfconvert_flag_section_remove>.comment
- $<TARGET_PROPERTY:bintools,elfconvert_flag_section_remove>COMMON
- $<TARGET_PROPERTY:bintools,elfconvert_flag_section_remove>.eh_frame
- $<TARGET_PROPERTY:bintools,elfconvert_flag_infile>${KERNEL_ELF_NAME}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_outfile>${KERNEL_BIN_NAME}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_final>
- )
- list(APPEND
- post_build_byproducts
- ${KERNEL_BIN_NAME}
-
- )
- endif()
- endif()
- if(CONFIG_BUILD_OUTPUT_BIN AND CONFIG_BUILD_OUTPUT_UF2)
- list(APPEND
- post_build_commands
- COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/scripts/uf2conv.py
- -c
- -f ${CONFIG_BUILD_OUTPUT_UF2_FAMILY_ID}
- -b ${CONFIG_FLASH_LOAD_OFFSET}
- -o ${KERNEL_UF2_NAME}
- ${KERNEL_BIN_NAME}
- )
- list(APPEND
- post_build_byproducts
- ${KERNEL_UF2_NAME}
- )
- endif()
- if(CONFIG_CLEANUP_INTERMEDIATE_FILES)
- list(APPEND
- post_build_commands
- COMMAND
-
- ${CMAKE_COMMAND} -E remove ${ZEPHYR_PREBUILT_EXECUTABLE}.elf
- )
- endif()
- if(CONFIG_BUILD_OUTPUT_S19)
- get_property(elfconvert_formats TARGET bintools PROPERTY elfconvert_formats)
- if(srec IN_LIST elfconvert_formats)
-
- list(APPEND
- post_build_commands
- COMMAND $<TARGET_PROPERTY:bintools,elfconvert_command>
- $<TARGET_PROPERTY:bintools,elfconvert_flag>
- ${GAP_FILL}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_outtarget>srec
- $<TARGET_PROPERTY:bintools,elfconvert_flag_srec_len>1
- $<TARGET_PROPERTY:bintools,elfconvert_flag_infile>${KERNEL_ELF_NAME}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_outfile>${KERNEL_S19_NAME}
- $<TARGET_PROPERTY:bintools,elfconvert_flag_final>
- )
- list(APPEND
- post_build_byproducts
- ${KERNEL_S19_NAME}
-
- )
- endif()
- endif()
- if(CONFIG_OUTPUT_DISASSEMBLY)
- if(CONFIG_OUTPUT_DISASSEMBLE_ALL)
- set(disassembly_type "$<TARGET_PROPERTY:bintools,disassembly_flag_all>")
- else()
- set(disassembly_type "$<TARGET_PROPERTY:bintools,disassembly_flag_inline_source>")
- endif()
- list(APPEND
- post_build_commands
- COMMAND $<TARGET_PROPERTY:bintools,disassembly_command>
- $<TARGET_PROPERTY:bintools,disassembly_flag>
- ${disassembly_type}
- $<TARGET_PROPERTY:bintools,disassembly_flag_infile>${KERNEL_ELF_NAME}
- $<TARGET_PROPERTY:bintools,disassembly_flag_outfile>${KERNEL_LST_NAME}
- $<TARGET_PROPERTY:bintools,disassembly_flag_final>
- )
- list(APPEND
- post_build_byproducts
- ${KERNEL_LST_NAME}
- )
- endif()
- if(CONFIG_OUTPUT_STAT)
- list(APPEND
- post_build_commands
- COMMAND $<TARGET_PROPERTY:bintools,readelf_command>
- $<TARGET_PROPERTY:bintools,readelf_flag>
- $<TARGET_PROPERTY:bintools,readelf_flag_headers>
- $<TARGET_PROPERTY:bintools,readelf_flag_infile>${KERNEL_ELF_NAME}
- $<TARGET_PROPERTY:bintools,readelf_flag_outfile>${KERNEL_STAT_NAME}
- $<TARGET_PROPERTY:bintools,readelf_flag_final>
- )
- list(APPEND
- post_build_byproducts
- ${KERNEL_STAT_NAME}
- )
- endif()
- if(CONFIG_BUILD_OUTPUT_STRIPPED)
- list(APPEND
- post_build_commands
- COMMAND $<TARGET_PROPERTY:bintools,strip_command>
- $<TARGET_PROPERTY:bintools,strip_flag>
- $<TARGET_PROPERTY:bintools,strip_flag_all>
- $<TARGET_PROPERTY:bintools,strip_flag_infile>${KERNEL_ELF_NAME}
- $<TARGET_PROPERTY:bintools,strip_flag_outfile>${KERNEL_STRIP_NAME}
- $<TARGET_PROPERTY:bintools,strip_flag_final>
- )
- list(APPEND
- post_build_byproducts
- ${KERNEL_STRIP_NAME}
- )
- endif()
- if(CONFIG_BUILD_OUTPUT_EXE)
- list(APPEND
- post_build_commands
- COMMAND
- ${CMAKE_COMMAND} -E copy ${KERNEL_ELF_NAME} ${KERNEL_EXE_NAME}
- )
- list(APPEND
- post_build_byproducts
- ${KERNEL_EXE_NAME}
- )
- endif()
- if(CONFIG_BOOTLOADER_MCUBOOT)
- include(${CMAKE_CURRENT_LIST_DIR}/cmake/mcuboot.cmake)
- endif()
- get_property(extra_post_build_commands
- GLOBAL PROPERTY
- extra_post_build_commands
- )
- list(APPEND
- post_build_commands
- ${extra_post_build_commands}
- )
- get_property(extra_post_build_byproducts
- GLOBAL PROPERTY
- extra_post_build_byproducts
- )
- list(APPEND
- post_build_byproducts
- ${extra_post_build_byproducts}
- )
- if(CONFIG_LOG_DICTIONARY_SUPPORT)
- set(LOG_DICT_DB_NAME ${PROJECT_BINARY_DIR}/log_dictionary.json)
- list(APPEND
- post_build_commands
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${ZEPHYR_BASE}/scripts/logging/dictionary/database_gen.py
- ${KERNEL_ELF_NAME}
- ${LOG_DICT_DB_NAME}
- --build ${BUILD_VERSION}
- )
- list(APPEND
- post_build_byproducts
- ${LOG_DICT_DB_NAME}
- )
- endif()
- add_custom_command(
- TARGET ${logical_target_for_zephyr_elf}
- POST_BUILD
- ${post_build_commands}
- BYPRODUCTS
- ${post_build_byproducts}
- COMMENT "Generating files from ${KERNEL_ELF_NAME} for board: ${BOARD}"
- COMMAND_EXPAND_LISTS
-
- )
- get_property(HEX_FILES_TO_MERGE GLOBAL PROPERTY HEX_FILES_TO_MERGE)
- if(HEX_FILES_TO_MERGE)
-
- set(MERGED_HEX_NAME merged.hex)
- add_custom_command(
- OUTPUT ${MERGED_HEX_NAME}
- COMMAND
- ${PYTHON_EXECUTABLE}
- ${ZEPHYR_BASE}/scripts/mergehex.py
- -o ${MERGED_HEX_NAME}
- ${HEX_FILES_TO_MERGE}
- DEPENDS ${HEX_FILES_TO_MERGE} ${logical_target_for_zephyr_elf}
- )
- add_custom_target(mergehex ALL DEPENDS ${MERGED_HEX_NAME})
- list(APPEND RUNNERS_DEPS mergehex)
- message(VERBOSE "Merging hex files: ${HEX_FILES_TO_MERGE}")
- endif()
- if(EMU_PLATFORM)
- include(${ZEPHYR_BASE}/cmake/emu/${EMU_PLATFORM}.cmake)
- else()
- add_custom_target(run
- COMMAND
- ${CMAKE_COMMAND} -E echo
- "==================================================="
- "Emulation/Simulation not supported with this board."
- "==================================================="
- )
- endif()
- add_subdirectory(cmake/flash)
- add_subdirectory(cmake/usage)
- add_subdirectory(cmake/reports)
- if(NOT CONFIG_TEST)
- if(CONFIG_ASSERT AND (NOT CONFIG_FORCE_NO_ASSERT))
- message(WARNING "__ASSERT() statements are globally ENABLED")
- endif()
- endif()
- if(CONFIG_BOARD_DEPRECATED_RELEASE)
- message(WARNING "
- WARNING: The board '${BOARD}' is deprecated and will be
- removed in version ${CONFIG_BOARD_DEPRECATED_RELEASE}"
- )
- endif()
- if(CONFIG_SOC_DEPRECATED_RELEASE)
- message(WARNING "
- WARNING: The SoC '${SOC_NAME}' is deprecated and will be
- removed in version ${CONFIG_SOC_DEPRECATED_RELEASE}"
- )
- endif()
- set(build_types None Debug Release RelWithDebInfo MinSizeRel)
- if((CMAKE_BUILD_TYPE IN_LIST build_types) AND (NOT NO_BUILD_TYPE_WARNING))
- string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_uppercase)
- if(NOT (${OPTIMIZATION_FLAG} IN_LIST CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_uppercase}))
- message(WARNING "
- The CMake build type was set to '${CMAKE_BUILD_TYPE}', but the optimization flag was set to '${OPTIMIZATION_FLAG}'.
- This may be intentional and the warning can be turned off by setting the CMake variable 'NO_BUILD_TYPE_WARNING'"
- )
- endif()
- endif()
- zephyr_compile_options($<TARGET_PROPERTY:compiler,nostdinc>)
- target_include_directories(zephyr_interface SYSTEM INTERFACE $<TARGET_PROPERTY:compiler,nostdinc_include>)
- if(NOT CONFIG_LIB_CPLUSPLUS)
- zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,nostdincxx>>)
- endif()
- add_subdirectory_ifdef(
- CONFIG_MAKEFILE_EXPORTS
- cmake/makefile_exports
- )
|