• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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