1From 194513bababa9707ec54bc7119613a0d5eca9f79 Mon Sep 17 00:00:00 2001
2From: Etienne Cordonnier <ecordonnier@snap.com>
3Date: Fri, 17 Mar 2023 10:33:11 +0100
4Subject: [PATCH] android-tools: modifications to make it build in yocto
5
6- Fix relocation errors on aarch64, e.g.:
7"relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTV19SparseFileBufSource' which may bind externally can not be used when making a shared object; recompile with -fPIC"
8
9- use ln -f to avoid error "File exists" on incremental builds
10
11- fix missing headers
12
13Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
14
15- fix warning: library search path "/usr/lib/p7zip" is unsafe for cross-compilation
16
17- fix error: include location "/usr/include/android" is unsafe for cross-compilation
18
19Upstream-Status: Pending
20Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
21---
22 debian/development/etc1tool.mk                 |  1 -
23 debian/external/boringssl/libcrypto.mk         |  1 +
24 debian/libnativehelper/libnativehelper.mk      |  1 -
25 debian/system/core/adb.mk                      |  1 -
26 debian/system/core/append2simg.mk              |  2 +-
27 debian/system/core/fastboot.mk                 |  3 +--
28 debian/system/core/img2simg.mk                 |  2 +-
29 debian/system/core/libbacktrace.mk             | 10 ++++------
30 debian/system/core/libbase.mk                  |  5 +++--
31 debian/system/core/libcutils.mk                |  5 +++--
32 debian/system/core/liblog.mk                   |  3 ++-
33 debian/system/core/libsparse.mk                |  5 +++--
34 debian/system/core/libutils.mk                 |  4 ++--
35 debian/system/core/libziparchive.mk            |  5 +++--
36 debian/system/core/simg2img.mk                 |  2 +-
37 debian/system/core/simg2simg.mk                |  2 +-
38 debian/system/extras/libext4_utils.mk          |  1 -
39 frameworks/native/libs/adbd_auth/adbd_auth.cpp |  2 ++
40 system/core/adb/adb_listeners.cpp              | 12 ++++++------
41 system/core/adb/transport_local.cpp            |  2 +-
42 20 files changed, 35 insertions(+), 34 deletions(-)
43
44diff --git a/debian/development/etc1tool.mk b/debian/development/etc1tool.mk
45index 2d787e98bb86..e03ac5f0048c 100644
46--- a/debian/development/etc1tool.mk
47+++ b/debian/development/etc1tool.mk
48@@ -4,7 +4,6 @@ SOURCES = development/tools/etc1tool/etc1tool.cpp
49
50 CXXFLAGS += -std=gnu++2a
51 CPPFLAGS += \
52-  -I/usr/include/android \
53   -Idevelopment/include \
54   -Iframeworks/native/opengl/include \
55
56diff --git a/debian/external/boringssl/libcrypto.mk b/debian/external/boringssl/libcrypto.mk
57index c0ea54f4..b3a77bfd 100644
58--- a/debian/external/boringssl/libcrypto.mk
59+++ b/debian/external/boringssl/libcrypto.mk
60@@ -27,6 +27,7 @@ CPPFLAGS += \
61   -DBORINGSSL_IMPLEMENTATION \
62   -DBORINGSSL_SHARED_LIBRARY \
63   -DOPENSSL_SMALL \
64+  -DOPENSSL_NO_ASM \
65   -Iexternal/boringssl/src/crypto \
66   -Iexternal/boringssl/src/include \
67
68diff --git a/debian/libnativehelper/libnativehelper.mk b/debian/libnativehelper/libnativehelper.mk
69index 7a0c94a6b7b5..880b2fdf9154 100644
70--- a/debian/libnativehelper/libnativehelper.mk
71+++ b/debian/libnativehelper/libnativehelper.mk
72@@ -11,7 +11,6 @@ OBJECTS = $(SOURCES:.cpp=.o)
73
74 CXXFLAGS += -std=gnu++2a
75 CPPFLAGS += \
76-  -I/usr/include/android \
77   -Ilibnativehelper/header_only_include \
78   -Ilibnativehelper/include \
79   -Ilibnativehelper/include_jni \
80diff --git a/debian/system/core/adb.mk b/debian/system/core/adb.mk
81index 9769b68ab793..58c9a63bd225 100644
82--- a/debian/system/core/adb.mk
83+++ b/debian/system/core/adb.mk
84@@ -19,7 +19,6 @@ CPPFLAGS += \
85   -D_GNU_SOURCE \
86   -DADB_HOST=1 \
87   -DADB_VERSION='"$(DEB_VERSION)"' \
88-  -I/usr/include/android \
89   -Iexternal/boringssl/include \
90   -Isystem/core/adb \
91   -Isystem/core/base/include \
92@@ -28,7 +27,6 @@ CPPFLAGS += \
93 LDFLAGS += \
94   -Ldebian/out/system/core \
95   -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
96-  -fuse-ld=gold \
97   -lbase \
98   -lcutils \
99   -lpthread \
100diff --git a/debian/system/core/append2simg.mk b/debian/system/core/append2simg.mk
101index 1599bdb8..598c751d 100644
102--- a/debian/system/core/append2simg.mk
103+++ b/debian/system/core/append2simg.mk
104@@ -11,7 +11,7 @@ CPPFLAGS += \
105
106 LDFLAGS += \
107   -Ldebian/out/system/core \
108-  -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
109+  -Wl,-rpath='$$ORIGIN/../lib/android' \
110   -lbase \
111   -llog \
112   -lpthread \
113diff --git a/debian/system/core/fastboot.mk b/debian/system/core/fastboot.mk
114index d5c9a285..a59ba1a4 100644
115--- a/debian/system/core/fastboot.mk
116+++ b/debian/system/core/fastboot.mk
117@@ -30,7 +30,6 @@ CXXFLAGS += -std=gnu++2a -fpermissive
118 CPPFLAGS += \
119    -D_FILE_OFFSET_BITS=64 \
120    -DPLATFORM_TOOLS_VERSION='"$(PLATFORM_TOOLS_VERSION)"' \
121-   -I/usr/include/android \
122    -Iexternal/boringssl/include \
123    -Iexternal/avb \
124    -Isystem/core/adb \
125@@ -49,8 +48,7 @@ CPPFLAGS += \
126
127 LDFLAGS += \
128   -Ldebian/out/system/core \
129-  -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
130-  -fuse-ld=gold \
131+  -Wl,-rpath='$$ORIGIN/../lib/android' \
132   -lbase \
133   -lcutils \
134   -lpthread \
135diff --git a/debian/system/core/img2simg.mk b/debian/system/core/img2simg.mk
136index 11adf014..8baf5ba5 100644
137--- a/debian/system/core/img2simg.mk
138+++ b/debian/system/core/img2simg.mk
139@@ -11,7 +11,7 @@ CPPFLAGS += \
140
141 LDFLAGS += \
142   -Ldebian/out/system/core \
143-  -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
144+  -Wl,-rpath='$$ORIGIN/../lib/android' \
145   -lbase \
146   -llog \
147   -lpthread \
148diff --git a/debian/system/core/libbacktrace.mk b/debian/system/core/libbacktrace.mk
149index e3411d76..e7dd984c 100644
150--- a/debian/system/core/libbacktrace.mk
151+++ b/debian/system/core/libbacktrace.mk
152@@ -1,4 +1,4 @@
153-include /usr/share/dpkg/architecture.mk
154+include rules_yocto.mk
155
156 NAME = libbacktrace
157
158@@ -81,12 +81,10 @@ CPPFLAGS += \
159   -Isystem/core/libunwindstack/include \
160
161 LDFLAGS += \
162-  -L/usr/lib/p7zip \
163   -Ldebian/out/system/core \
164-  -Wl,-rpath=/usr/lib/p7zip \
165-  -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
166+  -Wl,-rpath='$$ORIGIN' \
167   -Wl,-soname,$(NAME).so.0 \
168-  -l:7z.so \
169+  -l7z \
170   -lbase \
171   -llog \
172   -lpthread \
173@@ -101,7 +99,7 @@ endif
174 build: $(OBJECTS_CXX) $(OBJECTS_ASSEMBLY) debian/out/external/libunwind/libunwind.a
175 	mkdir -p debian/out/system/core
176 	$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
177-	cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
178+	cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
179
180 $(OBJECTS_CXX): %.o: %.cpp
181 	$(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS)
182diff --git a/debian/system/core/libbase.mk b/debian/system/core/libbase.mk
183index d2b074ba..8a90d6de 100644
184--- a/debian/system/core/libbase.mk
185+++ b/debian/system/core/libbase.mk
186@@ -1,3 +1,4 @@
187+include rules_yocto.mk
188 NAME = libbase
189
190 SOURCES = \
191@@ -30,7 +31,7 @@ CPPFLAGS += \
192
193 LDFLAGS += \
194   -Ldebian/out/system/core \
195-  -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
196+  -Wl,-rpath='$$ORIGIN' \
197   -Wl,-soname,$(NAME).so.0 \
198   -llog \
199   -lpthread \
200@@ -44,7 +45,7 @@ endif
201
202 build: $(OBJECTS)
203 	$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
204-	cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
205+	cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
206
207 $(OBJECTS): %.o: %.cpp
208 	$(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS)
209diff --git a/debian/system/core/libcutils.mk b/debian/system/core/libcutils.mk
210index 9d928b56..c22b0965 100644
211--- a/debian/system/core/libcutils.mk
212+++ b/debian/system/core/libcutils.mk
213@@ -1,3 +1,4 @@
214+include rules_yocto.mk
215 NAME = libcutils
216
217 libcutils_nonwindows_sources = \
218@@ -47,7 +48,7 @@ CPPFLAGS += \
219
220 LDFLAGS += \
221   -Ldebian/out/system/core \
222-  -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
223+  -Wl,-rpath='$$ORIGIN' \
224   -Wl,-soname,$(NAME).so.0 \
225   -lbase \
226   -llog \
227@@ -56,7 +57,7 @@ LDFLAGS += \
228
229 build: $(OBJECTS_C) $(OBJECTS_CXX)
230 	$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
231-	cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
232+	cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
233
234 $(OBJECTS_C): %.o: %.c
235 	$(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS)
236diff --git a/debian/system/core/liblog.mk b/debian/system/core/liblog.mk
237index f8c3d7fe..34a07341 100644
238--- a/debian/system/core/liblog.mk
239+++ b/debian/system/core/liblog.mk
240@@ -1,3 +1,4 @@
241+include rules_yocto.mk
242 NAME = liblog
243
244 liblog_sources = \
245@@ -35,7 +36,7 @@ LDFLAGS += \
246 build: $(OBJECTS)
247 	mkdir -p debian/out/system/core
248 	$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
249-	cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
250+	cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
251
252 $(OBJECTS): %.o: %.cpp
253 	$(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS)
254diff --git a/debian/system/core/libsparse.mk b/debian/system/core/libsparse.mk
255index c2b2694c..2da12b8e 100644
256--- a/debian/system/core/libsparse.mk
257+++ b/debian/system/core/libsparse.mk
258@@ -1,3 +1,4 @@
259+include rules_yocto.mk
260 NAME = libsparse
261
262 SOURCES = \
263@@ -19,7 +20,7 @@ CPPFLAGS += \
264
265 LDFLAGS += \
266   -Ldebian/out/system/core \
267-  -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
268+  -Wl,-rpath='$$ORIGIN' \
269   -Wl,-soname,$(NAME).so.0 \
270   -lbase \
271   -lz \
272@@ -27,7 +28,7 @@ LDFLAGS += \
273
274 build: $(OBJECTS)
275 	$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
276-	cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
277+	cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
278
279 $(OBJECTS): %.o: %.cpp
280 	$(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS)
281diff --git a/debian/system/core/libutils.mk b/debian/system/core/libutils.mk
282index c37b1d2d..0c748c8b 100644
283--- a/debian/system/core/libutils.mk
284+++ b/debian/system/core/libutils.mk
285@@ -1,4 +1,4 @@
286-include /usr/share/dpkg/architecture.mk
287+include rules_yocto.mk
288
289 NAME = libutils
290
291@@ -41,7 +41,7 @@ CPPFLAGS += \
292
293 LDFLAGS += \
294   -Ldebian/out/system/core \
295-  -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
296+  -Wl,-rpath='$$ORIGIN' \
297   -Wl,-soname,$(NAME).so.0 \
298   -lbacktrace \
299   -lcutils \
300diff --git a/debian/system/core/libziparchive.mk b/debian/system/core/libziparchive.mk
301index 1b286b4e..1b7499be 100644
302--- a/debian/system/core/libziparchive.mk
303+++ b/debian/system/core/libziparchive.mk
304@@ -1,3 +1,4 @@
305+include rules_yocto.mk
306 NAME = libziparchive
307
308 SOURCES = \
309@@ -19,7 +20,7 @@ CPPFLAGS += \
310
311 LDFLAGS += \
312   -Ldebian/out/system/core \
313-  -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
314+  -Wl,-rpath='$$ORIGIN' \
315   -Wl,-soname,$(NAME).so.0 \
316   -lbase \
317   -llog \
318@@ -29,7 +30,7 @@ LDFLAGS += \
319
320 build: $(OBJECTS)
321 	$(CXX) $^ -o debian/out/system/core/$(NAME).so.0 $(LDFLAGS)
322-	cd debian/out/system/core && ln -s $(NAME).so.0 $(NAME).so
323+	cd debian/out/system/core && ln -sf $(NAME).so.0 $(NAME).so
324
325 $(OBJECTS): %.o: %.cc
326 	$(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPFLAGS)
327diff --git a/debian/system/core/simg2img.mk b/debian/system/core/simg2img.mk
328index f6e3f59d..df4f44f3 100644
329--- a/debian/system/core/simg2img.mk
330+++ b/debian/system/core/simg2img.mk
331@@ -13,7 +13,7 @@ CPPFLAGS += \
332
333 LDFLAGS += \
334   -Ldebian/out/system/core \
335-  -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
336+  -Wl,-rpath='$$ORIGIN/../lib/android' \
337   -lbase \
338   -llog \
339   -lpthread \
340diff --git a/debian/system/core/simg2simg.mk b/debian/system/core/simg2simg.mk
341index ed53b04c..646ab030 100644
342--- a/debian/system/core/simg2simg.mk
343+++ b/debian/system/core/simg2simg.mk
344@@ -13,7 +13,7 @@ CPPFLAGS += \
345
346 LDFLAGS += \
347   -Ldebian/out/system/core \
348-  -Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
349+  -Wl,-rpath='$$ORIGIN/../lib/android' \
350   -lbase \
351   -llog \
352   -lpthread \
353diff --git a/debian/system/extras/libext4_utils.mk b/debian/system/extras/libext4_utils.mk
354index 264bb95ad36a..99125097c8e3 100644
355--- a/debian/system/extras/libext4_utils.mk
356+++ b/debian/system/extras/libext4_utils.mk
357@@ -25,7 +25,6 @@ CPPFLAGS += \
358   -D_LARGEFILE64_SOURCE \
359   -DFEC_NO_KLOG \
360   -DSQUASHFS_NO_KLOG \
361-  -I/usr/include/android \
362   -Isystem/core/base/include \
363   -Isystem/core/libcutils/include \
364   -Isystem/core/libsparse/include \
365diff --git a/frameworks/native/libs/adbd_auth/adbd_auth.cpp b/frameworks/native/libs/adbd_auth/adbd_auth.cpp
366index a9c23110..6ca334ba 100644
367--- a/frameworks/native/libs/adbd_auth/adbd_auth.cpp
368+++ b/frameworks/native/libs/adbd_auth/adbd_auth.cpp
369@@ -23,8 +23,10 @@
370 #include <sys/eventfd.h>
371 #include <sys/uio.h>
372
373+#include <atomic>
374 #include <chrono>
375 #include <deque>
376+#include <optional>
377 #include <string>
378 #include <string_view>
379 #include <tuple>
380diff --git a/system/core/adb/adb_listeners.cpp b/system/core/adb/adb_listeners.cpp
381index 29909a55..440cdbd4 100644
382--- a/system/core/adb/adb_listeners.cpp
383+++ b/system/core/adb/adb_listeners.cpp
384@@ -109,7 +109,7 @@ static void listener_event_func(int _fd, unsigned ev, void* _l)
385 }
386
387 // Called as a transport disconnect function. |arg| is the raw alistener*.
388-static void listener_disconnect(void* arg, atransport*) EXCLUDES(listener_list_mutex) {
389+static void listener_disconnect(void* arg, atransport*) {
390     std::lock_guard<std::mutex> lock(listener_list_mutex);
391     for (auto iter = listener_list.begin(); iter != listener_list.end(); ++iter) {
392         if (iter->get() == arg) {
393@@ -121,7 +121,7 @@ static void listener_disconnect(void* arg, atransport*) EXCLUDES(listener_list_m
394 }
395
396 // Write the list of current listeners (network redirections) into a string.
397-std::string format_listeners() EXCLUDES(listener_list_mutex) {
398+std::string format_listeners() {
399     std::lock_guard<std::mutex> lock(listener_list_mutex);
400     std::string result;
401     for (auto& l : listener_list) {
402@@ -140,7 +140,7 @@ std::string format_listeners() EXCLUDES(listener_list_mutex) {
403 }
404
405 InstallStatus remove_listener(const char* local_name, atransport* transport)
406-    EXCLUDES(listener_list_mutex) {
407+{
408     std::lock_guard<std::mutex> lock(listener_list_mutex);
409     for (auto iter = listener_list.begin(); iter != listener_list.end(); ++iter) {
410         if (local_name == (*iter)->local_name) {
411@@ -151,7 +151,7 @@ InstallStatus remove_listener(const char* local_name, atransport* transport)
412     return INSTALL_STATUS_LISTENER_NOT_FOUND;
413 }
414
415-void remove_all_listeners() EXCLUDES(listener_list_mutex) {
416+void remove_all_listeners() {
417     std::lock_guard<std::mutex> lock(listener_list_mutex);
418     auto iter = listener_list.begin();
419     while (iter != listener_list.end()) {
420@@ -164,7 +164,7 @@ void remove_all_listeners() EXCLUDES(listener_list_mutex) {
421     }
422 }
423
424-void close_smartsockets() EXCLUDES(listener_list_mutex) {
425+void close_smartsockets() {
426     std::lock_guard<std::mutex> lock(listener_list_mutex);
427     auto pred = [](const std::unique_ptr<alistener>& listener) {
428         return listener->local_name == "*smartsocket*";
429@@ -174,7 +174,7 @@ void close_smartsockets() EXCLUDES(listener_list_mutex) {
430
431 InstallStatus install_listener(const std::string& local_name, const char* connect_to,
432                                atransport* transport, int no_rebind, int* resolved_tcp_port,
433-                               std::string* error) EXCLUDES(listener_list_mutex) {
434+                               std::string* error) {
435     std::lock_guard<std::mutex> lock(listener_list_mutex);
436     for (auto& l : listener_list) {
437         if (local_name == l->local_name) {
438diff --git a/system/core/adb/transport_local.cpp b/system/core/adb/transport_local.cpp
439index c7261860..5988ec4d 100644
440--- a/system/core/adb/transport_local.cpp
441+++ b/system/core/adb/transport_local.cpp
442@@ -333,7 +333,7 @@ struct EmulatorConnection : public FdConnection {
443
444 /* Only call this function if you already hold local_transports_lock. */
445 static atransport* find_emulator_transport_by_adb_port_locked(int adb_port)
446-    REQUIRES(local_transports_lock) {
447+{
448     auto it = local_transports.find(adb_port);
449     if (it == local_transports.end()) {
450         return nullptr;
451--
4522.34.1
453
454