1# 2# Copyright (c) 2024, Google, Inc. All rights reserved 3# 4# Permission is hereby granted, free of charge, to any person obtaining 5# a copy of this software and associated documentation files 6# (the "Software"), to deal in the Software without restriction, 7# including without limitation the rights to use, copy, modify, merge, 8# publish, distribute, sublicense, and/or sell copies of the Software, 9# and to permit persons to whom the Software is furnished to do so, 10# subject to the following conditions: 11# 12# The above copyright notice and this permission notice shall be 13# included in all copies or substantial portions of the Software. 14# 15# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 18# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 19# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 20# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 21# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22# 23 24LOCAL_DIR := $(GET_LOCAL_DIR) 25 26MODULE := $(LOCAL_DIR) 27 28MODULE_CRATE_NAME := rust_support 29 30MODULE_SRCS := \ 31 $(LOCAL_DIR)/lib.rs \ 32 33# Don't make this module depend on itself. 34MODULE_ADD_IMPLICIT_DEPS := false 35 36MODULE_DEPS := \ 37 $(call FIND_CRATE,bitflags) \ 38 $(call FIND_CRATE,num-derive) \ 39 $(call FIND_CRATE,num-traits) \ 40 $(call FIND_CRATE,log) \ 41 trusty/kernel/lib/ktipc \ 42 trusty/kernel/lib/vmm_obj_service \ 43 trusty/user/base/lib/liballoc-rust \ 44 trusty/user/base/lib/libcompiler_builtins-rust \ 45 trusty/user/base/lib/libcore-rust \ 46 trusty/user/base/lib/trusty-std \ 47 $(LOCAL_DIR)/wrappers \ 48 49MODULE_BINDGEN_ALLOW_FUNCTIONS := \ 50 _panic \ 51 event_init \ 52 event_signal \ 53 event_wait_timeout \ 54 fflush \ 55 fputs \ 56 handle_close \ 57 handle_decref \ 58 handle_set_detach_ref \ 59 handle_set_attach \ 60 handle_set_create \ 61 handle_set_wait \ 62 handle_wait \ 63 handle_ref_is_attached \ 64 ipc_get_msg \ 65 ipc_port_accept \ 66 ipc_port_connect_async \ 67 ipc_port_create \ 68 ipc_port_publish \ 69 ipc_put_msg \ 70 ipc_read_msg \ 71 ipc_send_msg \ 72 ktipc_server_init \ 73 ktipc_server_start \ 74 lk_fiqs_disabled \ 75 lk_interrupt_restore \ 76 lk_interrupt_save \ 77 lk_ints_disabled \ 78 lk_obj_ref_init \ 79 lk_spin_lock \ 80 lk_spin_trylock \ 81 lk_spin_unlock \ 82 lk_stdin \ 83 lk_stdout \ 84 lk_stderr \ 85 mutex_acquire_timeout \ 86 mutex_destroy \ 87 mutex_init \ 88 mutex_release \ 89 thread_create \ 90 thread_join \ 91 thread_resume \ 92 thread_sleep_ns \ 93 vaddr_to_paddr \ 94 vmm_alloc \ 95 vmm_alloc_obj \ 96 vmm_alloc_physical_etc \ 97 vmm_alloc_contiguous \ 98 vmm_free_region \ 99 vmm_get_obj \ 100 vmm_obj_del_ref \ 101 vmm_obj_slice_init \ 102 vmm_obj_slice_release \ 103 vmm_obj_service_add \ 104 vmm_obj_service_create_ro \ 105 vmm_obj_service_destroy \ 106 107MODULE_BINDGEN_ALLOW_TYPES := \ 108 Error \ 109 event_t \ 110 handle \ 111 handle_ref \ 112 iovec_kern \ 113 ipc_msg_.* \ 114 ktipc_port_acl \ 115 ktipc_server \ 116 lk_init_.* \ 117 lk_time_.* \ 118 obj_ref \ 119 spin_lock_save_flags_t \ 120 spin_lock_saved_state_t \ 121 spin_lock_t \ 122 trusty_ipc_event_type \ 123 uuid \ 124 uuid_t \ 125 vmm_obj \ 126 vmm_obj_service \ 127 vmm_obj_slice \ 128 129MODULE_BINDGEN_ALLOW_VARS := \ 130 .*_PRIORITY \ 131 _kernel_aspace \ 132 ARCH_MMU_FLAG_.* \ 133 DEFAULT_STACK_SIZE \ 134 EVENT_FLAG_AUTOUNSIGNAL \ 135 FILE \ 136 IPC_CONNECT_WAIT_FOR_PORT \ 137 IPC_HANDLE_POLL_.* \ 138 IPC_PORT_ALLOW_NS_CONNECT \ 139 IPC_PORT_ALLOW_TA_CONNECT \ 140 IPC_PORT_PATH_MAX \ 141 kernel_uuid \ 142 LK_LOGLEVEL_RUST \ 143 NUM_PRIORITIES \ 144 PAGE_SIZE \ 145 PAGE_SIZE_SHIFT \ 146 SPIN_LOCK_FLAG_FIQ \ 147 SPIN_LOCK_FLAG_INTERRUPTS \ 148 SPIN_LOCK_FLAG_IRQ \ 149 SPIN_LOCK_FLAG_IRQ_FIQ \ 150 SPIN_LOCK_INITIAL_VALUE \ 151 zero_uuid \ 152 153MODULE_BINDGEN_FLAGS := \ 154 --newtype-enum Error \ 155 --newtype-enum lk_init_level \ 156 --bitfield-enum lk_init_flags \ 157 --no-prepend-enum-name \ 158 --with-derive-custom Error=FromPrimitive \ 159 --with-derive-custom handle_waiter=Default \ 160 --with-derive-custom ipc_msg_info=Default \ 161 162MODULE_BINDGEN_SRC_HEADER := $(LOCAL_DIR)/bindings.h 163 164# This lets us include wrappers/include/reflist.h instead of the wrapped header: 165# trusty/kernel/shared/lk/reflist.h. 166MODULE_INCLUDES := $(LOCAL_DIR) 167 168MODULE_RUSTFLAGS += \ 169 -A clippy::disallowed_names \ 170 -A clippy::type-complexity \ 171 -A clippy::unnecessary_fallible_conversions \ 172 -A clippy::unnecessary-wraps \ 173 -A clippy::unusual-byte-groupings \ 174 -A clippy::upper-case-acronyms \ 175 -D clippy::undocumented_unsafe_blocks \ 176 177MODULE_RUST_USE_CLIPPY := true 178 179include make/module.mk 180