1# Copyright (C) 2022 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15if(CONFIG_CHRE) 16 get_filename_component(CHRE_DIR "${ZEPHYR_CURRENT_MODULE_DIR}" ABSOLUTE) 17 18 zephyr_library() 19 20 set(CHRE_INCLUDE_DIRS 21 "${CHRE_DIR}/chpp/include" 22 "${CHRE_DIR}/chre_api/include" 23 "${CHRE_DIR}/chre_api/include/chre_api" 24 "${CHRE_DIR}/core/include" 25 "${CHRE_DIR}/pal/include" 26 "${CHRE_DIR}/platform/include" 27 "${CHRE_DIR}/platform/shared/include" 28 "${CHRE_DIR}/platform/shared/fbs/include" 29 "${CHRE_DIR}/util/include" 30 "${CMAKE_CURRENT_SOURCE_DIR}/include") 31 zephyr_include_directories("${CHRE_INCLUDE_DIRS}") 32 zephyr_library_include_directories("${CHRE_INCLUDE_DIRS}") 33 34 zephyr_library_sources( 35 "context.cc" 36 "host_link.cc" 37 "init.cc" 38 "log_module.c" 39 "memory.cc" 40 "platform_nanoapp.cc" 41 "power_control_manager.cc" 42 "system_time.cc" 43 "system_timer.cc" 44 "${CHRE_DIR}/core/debug_dump_manager.cc" 45 "${CHRE_DIR}/core/event.cc" 46 "${CHRE_DIR}/core/event_loop.cc" 47 "${CHRE_DIR}/core/event_loop_manager.cc" 48 "${CHRE_DIR}/core/event_ref_queue.cc" 49 "${CHRE_DIR}/core/host_comms_manager.cc" 50 "${CHRE_DIR}/core/init.cc" 51 "${CHRE_DIR}/core/nanoapp.cc" 52 "${CHRE_DIR}/core/settings.cc" 53 "${CHRE_DIR}/core/static_nanoapps.cc" 54 "${CHRE_DIR}/core/timer_pool.cc" 55 "${CHRE_DIR}/platform/shared/version.cc" 56 "${CHRE_DIR}/platform/shared/system_time.cc" 57 "${CHRE_DIR}/util/buffer_base.cc" 58 "${CHRE_DIR}/util/duplicate_message_detector.cc" 59 "${CHRE_DIR}/util/dynamic_vector_base.cc" 60 "${CHRE_DIR}/util/hash.cc" 61 ) 62 zephyr_linker_sources(SECTIONS linker_chre.ld) 63 64 # Optional audio support 65 if(CONFIG_CHRE_AUDIO_SUPPORT_ENABLED) 66 zephyr_compile_definitions(CHRE_AUDIO_SUPPORT_ENABLED) 67 zephyr_library_sources("${CHRE_DIR}/core/audio_request_manager.cc") 68 endif() 69 70 # Optional GNSS support 71 if(CONFIG_CHRE_GNSS_SUPPORT_ENABLED) 72 zephyr_compile_definitions(CHRE_GNSS_SUPPORT_ENABLED) 73 zephyr_library_sources("${CHRE_DIR}/core/gnss_manager.cc") 74 endif() 75 76 # Optional sensor support 77 if(CONFIG_CHRE_SENSORS_SUPPORT_ENABLED) 78 zephyr_compile_definitions(CHRE_SENSORS_SUPPORT_ENABLED) 79 zephyr_library_sources( 80 "${CHRE_DIR}/core/sensor.cc" 81 "${CHRE_DIR}/core/sensor_request.cc" 82 "${CHRE_DIR}/core/sensor_request_manager.cc" 83 "${CHRE_DIR}/core/sensor_request_multiplexer.cc" 84 "${CHRE_DIR}/core/sensor_type.cc" 85 "${CHRE_DIR}/core/sensor_type_helpers.cc" 86 ) 87 endif() 88 89 # Optional WiFi support 90 if(CONFIG_CHRE_WIFI_SUPPORT_ENABLED) 91 zephyr_compile_definitions(CHRE_WIFI_SUPPORT_ENABLED) 92 zephyr_library_sources( 93 "${CHRE_DIR}/core/wifi_request_manager.cc" 94 "${CHRE_DIR}/core/wifi_scan_request.cc" 95 ) 96 endif() 97 98 # Optional WWAN support 99 if(CONFIG_CHRE_WWAN_SUPPORT_ENABLED) 100 zephyr_compile_definitions(CHRE_WWAN_SUPPORT_ENABLED) 101 zephyr_library_sources("${CHRE_DIR}/core/wwan_request_manager.cc") 102 endif() 103 104 zephyr_compile_definitions( 105 CHRE_MESSAGE_TO_HOST_MAX_SIZE=${CONFIG_CHRE_MESSAGE_TO_HOST_MAX_SIZE}) 106 107 zephyr_compile_definitions(CHRE_FILENAME=__FILE__) 108 109 # Add logging definitions 110 if((NOT DEFINED CONFIG_CHRE_LOG_LEVEL) OR 111 "${CONFIG_CHRE_LOG_LEVEL}" EQUAL "0") 112 zephyr_compile_definitions(CHRE_MINIMUM_LOG_LEVEL=CHRE_LOG_LEVEL_MUTE) 113 elseif("${CONFIG_CHRE_LOG_LEVEL}" EQUAL "1") 114 zephyr_compile_definitions(CHRE_MINIMUM_LOG_LEVEL=CHRE_LOG_LEVEL_ERROR) 115 elseif("${CONFIG_CHRE_LOG_LEVEL}" EQUAL "2") 116 zephyr_compile_definitions(CHRE_MINIMUM_LOG_LEVEL=CHRE_LOG_LEVEL_WARN) 117 elseif("${CONFIG_CHRE_LOG_LEVEL}" EQUAL "3") 118 zephyr_compile_definitions(CHRE_MINIMUM_LOG_LEVEL=CHRE_LOG_LEVEL_INFO) 119 elseif(("${CONFIG_CHRE_LOG_LEVEL}" EQUAL "4") OR 120 ("${CONFIG_CHRE_LOG_LEVEL}" EQUAL "5")) 121 # Debug and verbose are collapsed into one since Zephyr doesn't 122 # differentiate the two levels 123 zephyr_compile_definitions(CHRE_MINIMUM_LOG_LEVEL=CHRE_LOG_LEVEL_VERBOSE) 124 endif() 125 126 if(DEFINED CONFIG_CHRE_ASSERTIONS) 127 zephyr_compile_definitions(CHRE_ASSERTIONS_ENABLED) 128 else() 129 zephyr_compile_definitions(CHRE_ASSERTIONS_DISABLED) 130 endif() 131 132 zephyr_compile_definitions(CHRE_FIRST_SUPPORTED_API_VERSION=CHRE_API_VERSION_1_5) 133endif() 134