-
-
Notifications
You must be signed in to change notification settings - Fork 271
Expand file tree
/
Copy pathcore.mk
More file actions
543 lines (450 loc) · 19.7 KB
/
Copy pathcore.mk
File metadata and controls
543 lines (450 loc) · 19.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
#VERBOSE=1
ndk_jobs :=
#ndk_v := NDK_TOOLCHAIN_VERSION=4.9
AVOS_NATIVE_DEPS :=
JAVA_DEPS :=
build_type :=
prev_build_type = $(shell cat $(AVOS_DIR)/obj/build_type 2>/dev/null)
phony_rules := all full extractdb install logs clearlogs screenshot layout dumplayout publish release share crowdindl clean
native_rules :=
native_clean_rules :=
os := $(shell echo $(shell uname -s) | tr '[:upper:]' '[:lower:]')
ifeq ($(os), darwin)
readlink_prefix := g
JAVA8 := $(shell /usr/libexec/java_home -v 1.8)
JAVA11 := $(shell /usr/libexec/java_home -v 11)
JAVA17 := $(shell /usr/libexec/java_home -v 17)
endif
ifeq ($(os), linux)
JAVA8 := $(shell update-alternatives --list java | sed -nE -e 's/(.*java-8[^/]*).*/\1/p')
JAVA11 := $(shell update-alternatives --list java | sed -nE -e 's/(.*java-11[^/]*).*/\1/p')
JAVA17 := $(shell update-alternatives --list java | sed -nE -e 's/(.*java-17[^/]*).*/\1/p')
ifeq (,$(JAVA8))
JAVA8 := $(shell update-alternatives --list java | sed -nE -e 's/(.*jdk-8[^/]*).*/\1/p')
endif
ifeq (,$(JAVA11))
JAVA11 := $(shell update-alternatives --list java | sed -nE -e 's/(.*jdk-11[^/]*).*/\1/p')
endif
ifeq (,$(JAVA17))
JAVA17 := $(shell update-alternatives --list java | sed -nE -e 's/(.*jdk-17[^/]*).*/\1/p')
endif
endif
READLINK := $(readlink_prefix)readlink
ifneq (,$(ANDROID_SDK))
android_sdk := $(ANDROID_SDK)
endif
ifneq (,$(ANDROID_HOME))
android_sdk := $(ANDROID_HOME)
endif
ifneq (,$(ANDROID_SDK_ROOT))
android_sdk := $(ANDROID_SDK_ROOT)
endif
$(info android_sdk is $(android_sdk))
WHICHSDKMANAGER := $(shell PATH=$(android_sdk)/cmdline-tools/latest/bin:$(android_sdk)/cmdline-tools/bin:$(android_sdk)/tools/bin:$$PATH which sdkmanager)
ifeq ($(WHICHSDKMANAGER), $(android_sdk)/tools/bin/sdkmanager)
SDKMANAGER := yes | JAVA_HOME=$(JAVA8) $(android_sdk)/tools/bin/sdkmanager
endif
ifeq ($(WHICHSDKMANAGER), $(android_sdk)/cmdline-tools/bin/sdkmanager)
SDKMANAGER := yes | JAVA_HOME=$(JAVA11) $(android_sdk)/cmdline-tools/bin/sdkmanager --sdk_root=$(android_sdk)
endif
ifeq ($(WHICHSDKMANAGER), $(android_sdk)/cmdline-tools/latest/bin/sdkmanager)
SDKMANAGER := yes | JAVA_HOME=$(JAVA11) $(android_sdk)/cmdline-tools/latest/bin/sdkmanager
endif
ifneq ($(wildcard $(android_sdk)/ndk/.*),)
android_ndk := $(shell ls -d $(android_sdk)/ndk/* | sort -V | tail -n 1)
endif
$(info android_ndk is $(android_ndk))
# cmake path detection (latest installed cmake)
ifneq ($(wildcard $(android_sdk)/cmake/.*),)
android_cmake := $(shell ls -d $(android_sdk)/cmake/* | sort -V | tail -n 1)
endif
$(info android_cmake is $(android_cmake))
# NDK prebuilt and LLVM toolchain paths
# WARNING: x86_64 hardcoded, should be changed when NDK ships native arm64 prebuilt for Apple Silicon
ndk_host := prebuilt/$(os)-x86_64
ndk_prebuilt := $(android_ndk)/$(ndk_host)
ndk_llvm := $(android_ndk)/toolchains/llvm/$(ndk_host)
# export NDK environment variables
export ANDROID_NDK_HOME := $(android_ndk)
export ANDROID_NDK_ROOT := $(android_ndk)
# augment PATH with cmake, NDK prebuilt tools and LLVM toolchain
export PATH := $(android_cmake)/bin:$(ndk_llvm)/bin:$(ndk_prebuilt)/bin:$(android_sdk)/cmdline-tools/latest/bin:$(android_sdk)/cmdline-tools/bin:$(android_sdk)/tools/bin:$(shell echo $$PATH)
ifneq (,$(ASAN))
asan := $(ASAN)
endif
ndk_debug :=
ifeq (,$(NDK_CPU_ARM_NEON))
NDK_CPU_ARM_NEON = 1
endif
ifeq (,$(NDK_CPU_X86))
NDK_CPU_X86 = 1
endif
ifeq (,$(NDK_CPU_ARM_64))
NDK_CPU_ARM_64= 1
endif
ifeq (,$(NDK_CPU_X86_64))
NDK_CPU_X86_64 = 1
endif
NDK_APP_ABI :=
ifeq ($(NDK_CPU_ARM_NEON),1)
NDK_APP_ABI += armeabi-v7a
endif
ifeq ($(NDK_CPU_X86),1)
NDK_APP_ABI += x86
endif
ifeq ($(NDK_CPU_ARM_64),1)
NDK_APP_ABI += arm64-v8a
endif
ifeq ($(NDK_CPU_X86_64),1)
NDK_APP_ABI += x86_64
endif
REPO_TOP_DIR := $(shell pwd)
AVOS_DIR := native/avos
FFMPEG_DIR := native/ffmpeg-android-builder
FFMPEG_PREBUILT_DIR := native/prebuilt/ffmpeg
DAV1D_DIR := native/dav1d-android-builder
DAV1D_PREBUILT_DIR := native/prebuilt/dav1d
OPUS_DIR := native/opus-android-builder
OPUS_PREBUILT_DIR := native/prebuilt/opus
OPENSSL_DIR := native/openssl-android-builder
OPENSSL_PREBUILT_DIR := native/prebuilt/openssl
LIBMYSOFA_DIR := native/libmysofa-android-builder
LIBMYSOFA_PREBUILT_DIR := native/prebuilt/libmysofa
TORRENTD_PREBUILT_DIR := native/prebuilt/torrentd
NATIVE_PKG_LIST := \
FileCoreLibrary \
native/libnativehelper
$(foreach PKG,$(NATIVE_PKG_LIST),$(eval PKG_EXTRA_DEPS_$(PKG) := native_build_$(PKG)))
NATIVE_LIST := $(NATIVE_PKG_LIST) \
$(AVOS_DIR)
NATIVE_CLEAN_DEPS_$(AVOS_DIR) := \
native/avos/jni/Android.mk \
native/avos/codecs.mk \
native/avos/main.mk \
native/avos/ndkbuild.mk \
native/avos/avos_config_android.mk \
native/avos/common.mk \
native/avos/sound.mk \
native/avos/fb.mk
ifeq (1,$(VERBOSE))
ndk_v += V=1
endif
ifeq (,$(MAKE_JOBS))
ndk_jobs = -j 12
else
ndk_jobs = -j $(MAKE_JOBS)
endif
ifneq (,$(NDK_DEBUG))
ndk_debug := NDK_DEBUG=$(NDK_DEBUG)
endif
ifeq (DEBUG,$(BUILD))
build_type := debug
endif
ifeq (RELEASE,$(BUILD))
build_type := release
endif
ifeq (,$(build_type))
BUILD := DEBUG
build_type := debug
endif
define gen_native_build
native_rules += native_build_$(1)
native_clean_rules += native_clean_$(1)
ifeq (,NATIVE_CLEAN_DEPS_$(1))
NATIVE_CLEAN_DEPS_$(1):=
endif
$(1)/obj/clean: $(NATIVE_CLEAN_DEPS_$(1))
@if [ -d "$(1)/obj" ]; then \
echo "mk changed; force clean"; \
make native_clean_$(1); \
fi;
native_build_$(1): $(1)/obj/clean
@if [ -n "$(prev_build_type)" -a "$(prev_build_type)" != "$(build_type)" ];then \
echo "BUILD type changed; force clean"; \
make native_clean_$(1); \
fi;
@if [ -d $(1) ];then \
mkdir -p $(1)/obj; \
echo $(build_type) > $(1)/obj/build_type; \
touch $(1)/obj/clean; \
REPO_TOP_DIR=$(REPO_TOP_DIR) BUILD=$(BUILD) NDK_APP_ABI="$(NDK_APP_ABI)" ASAN="$(asan)" android_ndk=$(android_ndk) $(android_ndk)/ndk-build $(ndk_debug) $(ndk_v) $(ndk_jobs) -C $(1); \
fi;
native_clean_$(1):
@if [ -d $(1) ];then \
$(android_ndk)/ndk-build -C $(1) clean; \
rm -rf $(1)/obj; \
rm -rf $(1)/libs/*/*; \
fi;
endef
all:
cd Video; ANDROID_SDK_ROOT=$(android_sdk) ./gradlew aND
full:
cd Video; ANDROID_SDK_ROOT=$(android_sdk) ./gradlew -PadultScrape -Psponsor aND
# Publish release bundle
publish:
cd Video; ANDROID_SDK_ROOT=$(android_sdk) ./gradlew publishNoamazonReleaseBundle
# Build release artifacts
release:
cd AVP/release; ./release.sh
# Build APKs and upload them to Google Drive (AVP/share/) via rclone
# Usage:
# make share (keeps previous APKs on Google Drive by default)
# make share KEEP=0 (cleans up previous APKs on Google Drive)
# make share CLEAN=1 (alias for KEEP=0)
share:
@echo "--- Starting build ---"
cd Video; ANDROID_SDK_ROOT=$(android_sdk) ./gradlew -PbugReport -Psponsor aNR
@APK_BASE_DIR="Video/build/outputs/apk/noamazon/release"; \
RCLONE_REMOTE="gmailmarc"; \
REMOTE_PATH="AVP/share"; \
if [ "$(KEEP)" = "0" ] || [ "$(KEEP)" = "false" ] || [ "$(CLEAN)" = "1" ] || [ "$(CLEAN)" = "true" ]; then \
echo "--- Cleaning up previous APKs on Google Drive ---"; \
rclone delete "$${RCLONE_REMOTE}:$${REMOTE_PATH}/" --include "org.courville.nova-*.apk"; \
else \
echo "--- Keeping previous APKs on Google Drive (use KEEP=0 or CLEAN=1 to delete) ---"; \
fi; \
LINK_ARM64=""; \
LINK_ARM32=""; \
for arch in "arm64-v8a" "armeabi-v7a"; do \
APK_FILE=$$(ls $${APK_BASE_DIR}/org.courville.nova-*-$${arch}-release.apk 2>/dev/null | head -n 1); \
if [ -f "$$APK_FILE" ]; then \
FILENAME=$$(basename "$$APK_FILE"); \
echo "Uploading $$FILENAME..."; \
rclone copy "$$APK_FILE" "$${RCLONE_REMOTE}:$${REMOTE_PATH}/" --progress; \
LINK=$$(rclone link "$${RCLONE_REMOTE}:$${REMOTE_PATH}/$${FILENAME}"); \
if [ "$$arch" = "arm64-v8a" ]; then \
LINK_ARM64="$$LINK"; \
elif [ "$$arch" = "armeabi-v7a" ]; then \
LINK_ARM32="$$LINK"; \
fi; \
echo "Architecture: $$arch"; \
echo "Public Link : $$LINK"; \
echo "------------------------------------------------"; \
else \
echo "Warning: No APK found for architecture $$arch in $$APK_BASE_DIR"; \
fi; \
done; \
echo ""; \
echo "--- Final Message ---"; \
echo "Can you please try this [arm64 apk]($${LINK_ARM64}) or [arm32 apk]($${LINK_ARM32}) depending of your architecture and report if it helps?"; \
echo ""; \
echo "Finished."
# Extract media database from connected device
extractdb:
adb exec-out run-as org.courville.nova cat databases/media.db > media.db
# Install debug build to connected device
install:
cd Video; ANDROID_SDK_ROOT=$(android_sdk) ./gradlew installNoamazonDebug
# Stream logcat for running app to next available nova-NNN.log file
logs:
@n=1; \
while [ -e "nova-$$(printf '%03d' $$n).log" ]; do \
n=$$((n+1)); \
done; \
logfile="nova-$$(printf '%03d' $$n).log"; \
trap 'echo ""; echo "Log file: $$logfile"' INT; \
pid=$$(adb shell pidof -s org.courville.nova); \
if [ -z "$$pid" ]; then \
echo "org.courville.nova is not running"; \
exit 1; \
fi; \
echo "Capturing logcat for pid $$pid to $$logfile (Ctrl-C to stop)..."; \
adb logcat --pid=$$pid -v brief | tee "$$logfile"
# Clear device logcat buffer
clearlogs:
adb logcat -c
# Capture screenshot from connected device
screenshot:
adb exec-out screencap -p > screenshot.png
# Dump UI hierarchy XML from connected device
layout dumplayout:
adb shell uiautomator dump /data/local/tmp/window_dump.xml && adb pull /data/local/tmp/window_dump.xml
# Download translations from Crowdin
crowdindl:
crowdin download
AVP/android-setup: AVP/android-cmdline-tools AVP/android-ndk AVP/android-cmake AVP/android-others
AVP/android-ndk:
echo "installing android ndk..."
#yes | $(WHICHSDKMANAGER) '$(shell $(WHICHSDKMANAGER) --list | grep ndk\;$(ndk_ver) | sed 's/^.*\(ndk;$(ndk_ver)\.[0-9\.]*\) .*$$/\1/g' | tail -n 1)' > /dev/null
yes | $(WHICHSDKMANAGER) '$(shell $(WHICHSDKMANAGER) --list | grep "^ ndk;" | sed "s/^.*\(ndk;[0-9\.]*\).*/\1/g" | tail -n 1)' > /dev/null
AVP/android-cmdline-tools:
#yes | $(WHICHSDKMANAGER) 'cmdline-tools;latest' > /dev/null
@ver=$(shell $(WHICHSDKMANAGER) --list | grep "cmdline-tools;latest" | sed "s/[^|]*| *\([0-9\.]*\).*/\1/"); \
if [ -d "$(android_sdk)/cmdline-tools/$$ver" ]; then \
echo "android cmdline-tools $$ver already installed, skipping"; \
else \
echo "installing android cmdline-tools $$ver..."; \
yes | $(WHICHSDKMANAGER) "cmdline-tools;$$ver" > /dev/null; \
fi
AVP/android-cmake:
#yes | $(WHICHSDKMANAGER) '$(shell $(WHICHSDKMANAGER) --list | grep cmake | sed "s/^.*\(cmake;[0-9\.]*\).*$$/\1/g" | head -n 1)' > /dev/null
@echo "installing android cmake..."
yes | $(WHICHSDKMANAGER) '$(shell $(WHICHSDKMANAGER) --list | grep "cmake;" | grep -v rc | grep -v alpha | sed "s/^.*\(cmake;[0-9\.]*\).*$$/\1/g" | sort -V | tail -n 1)' > /dev/null
AVP/android-others:
#yes | $(WHICHSDKMANAGER) platform-tools 'build-tools;30.0.3' > /dev/null
@echo "installing android buildtools..."
yes | $(WHICHSDKMANAGER) platform-tools '$(shell $(WHICHSDKMANAGER) --list | grep "build-tools;" | grep -v rc | grep -v alpha | sed "s/^.*\(build-tools;[0-9\.]*\).*$$/\1/g" | sort -V | tail -n 1)' > /dev/null
$(foreach PKG,$(NATIVE_LIST),$(eval $(call gen_native_build,$(PKG))))
phony_rules += all full publish release clean native native_clean external_build external_clean clean_native_build clean_prebuilt $(native_rules) $(native_clean_rules)
.PHONY: $(phony_rules)
define cp_ffmpeg_libs
@if [ "$(NDK_CPU_ARM_NEON)" = "1" ];then \
mkdir -p $(1)/libs/armeabi-v7a; \
cp $(DAV1D_PREBUILT_DIR)/lib/armeabi-v7a/libdav1d.so $(1)/libs/armeabi-v7a/libdav1d.so; \
cp $(OPUS_PREBUILT_DIR)/lib/armeabi-v7a/libopus.so $(1)/libs/armeabi-v7a/libopus.so; \
cp $(LIBMYSOFA_PREBUILT_DIR)/lib/armeabi-v7a/libmysofa.so $(1)/libs/armeabi-v7a/libmysofa.so; \
cp -r $(FFMPEG_PREBUILT_DIR)/dist-$(2)-armeabi-v7a/lib/*so $(1)/libs/armeabi-v7a; \
fi;
@if [ "$(NDK_CPU_X86)" = "1" ];then \
mkdir -p $(1)/libs/x86; \
cp $(DAV1D_PREBUILT_DIR)/lib/x86/libdav1d.so $(1)/libs/x86/libdav1d.so; \
cp $(OPUS_PREBUILT_DIR)/lib/x86/libopus.so $(1)/libs/x86/libopus.so; \
cp $(LIBMYSOFA_PREBUILT_DIR)/lib/x86/libmysofa.so $(1)/libs/x86/libmysofa.so; \
cp -r $(FFMPEG_PREBUILT_DIR)/dist-$(2)-x86/lib/*so $(1)/libs/x86; \
fi
@if [ "$(NDK_CPU_ARM_64)" = "1" ];then \
mkdir -p $(1)/libs/arm64-v8a; \
cp $(DAV1D_PREBUILT_DIR)/lib/arm64-v8a/libdav1d.so $(1)/libs/arm64-v8a/libdav1d.so; \
cp $(OPUS_PREBUILT_DIR)/lib/arm64-v8a/libopus.so $(1)/libs/arm64-v8a/libopus.so; \
cp $(LIBMYSOFA_PREBUILT_DIR)/lib/arm64-v8a/libmysofa.so $(1)/libs/arm64-v8a/libmysofa.so; \
cp -r $(FFMPEG_PREBUILT_DIR)/dist-$(2)-arm64-v8a/lib/*so $(1)/libs/arm64-v8a; \
fi
@if [ "$(NDK_CPU_X86_64)" = "1" ];then \
mkdir -p $(1)/libs/x86_64; \
cp $(DAV1D_PREBUILT_DIR)/lib/x86_64/libdav1d.so $(1)/libs/x86_64/libdav1d.so; \
cp $(OPUS_PREBUILT_DIR)/lib/x86_64/libopus.so $(1)/libs/x86_64/libopus.so; \
cp $(LIBMYSOFA_PREBUILT_DIR)/lib/x86_64/libmysofa.so $(1)/libs/x86_64/libmysofa.so; \
cp -r $(FFMPEG_PREBUILT_DIR)/dist-$(2)-x86_64/lib/*so $(1)/libs/x86_64; \
fi
endef
define make_avos
MAKE_JOBS=$(MAKE_JOBS) BUILD=$(BUILD) $(ndk_debug) NDK_APP_ABI="$(NDK_APP_ABI)" LIBAV_CONFIG=$(2) make native_build_native/avos
@if [ "$(NDK_CPU_ARM_NEON)" = "1" ];then \
mkdir -p $(1)/libs/armeabi-v7a; \
cp -r $(AVOS_DIR)/libs/armeabi-v7a/*so $(1)/libs/armeabi-v7a; \
fi
@if [ "$(NDK_CPU_ARM_NO_NEON)" = "1" ];then \
mkdir -p $(1)/libs/armeabi-v7a; \
cp -r $(AVOS_DIR)/libs/armeabi/*no_neon.so $(1)/libs/armeabi-v7a; \
cp $(AVOS_DIR)/libs/armeabi/libcputest.so $(1)/libs/armeabi-v7a; \
fi
@if [ "$(NDK_CPU_X86)" = "1" ];then \
mkdir -p $(1)/libs/x86; \
cp -r $(AVOS_DIR)/libs/x86/*so $(1)/libs/x86; \
fi
@if [ "$(NDK_CPU_ARM_64)" = "1" ];then \
mkdir -p $(1)/libs/arm64-v8a; \
cp -r $(AVOS_DIR)/libs/arm64-v8a/*so $(1)/libs/arm64-v8a; \
fi
@if [ "$(NDK_CPU_X86_64)" = "1" ];then \
mkdir -p $(1)/libs/x86_64; \
cp -r $(AVOS_DIR)/libs/x86_64/*so $(1)/libs/x86_64; \
fi
endef
native_avos: native_build_native/avos
clean_native_build:
rm -rf native/boost/boost-*
rm -rf $(DAV1D_DIR)/build-*
rm -rf $(FFMPEG_DIR)/ffmpeg.git
rm -rf $(OPUS_DIR)/opus $(OPUS_DIR)/build-*
rm -rf $(OPENSSL_DIR)/openssl.git
rm -rf $(LIBMYSOFA_DIR)/libmysofa $(LIBMYSOFA_DIR)/build-*
rm -rf native/libtorrent-android-builder/libtorrent
rm -rf native/torrentd/obj
rm -rf $(AVOS_DIR)/obj $(AVOS_DIR)/libs
rm -rf native/libnativehelper/obj native/libnativehelper/libs
clean_prebuilt:
rm -rf native/torrentd/obj
rm -rf $(TORRENTD_PREBUILT_DIR)/libs
rm -rf $(FFMPEG_PREBUILT_DIR)/dist-*
rm -rf $(DAV1D_DIR)/build-*
rm -rf $(DAV1D_PREBUILT_DIR)/lib/*
rm -rf $(OPUS_DIR)/build-*
rm -rf $(OPUS_PREBUILT_DIR)/lib/*
rm -rf $(OPUS_PREBUILT_DIR)/include/*
rm -rf $(OPENSSL_PREBUILT_DIR)/dist-*
rm -rf $(LIBMYSOFA_DIR)/build-*
rm -rf $(LIBMYSOFA_PREBUILT_DIR)/lib/*
rm -rf $(LIBMYSOFA_PREBUILT_DIR)/include/*
rm -rf MediaLib/libs/trakt-java.jar
rm -rf MediaLib/libs/cling-*-2.1.2.jar
rm -rf MediaLib/libs/seamless-*-1.1.2.jar
rm -rf FileCoreLibrary/libs/jcifs-ng.jar
$(FFMPEG_PREBUILT_DIR)/dist-full-arm64-v8a/lib/libavcodec.so:
make native_build_native/ffmpeg-android-builder
native_avos_base: $(FFMPEG_PREBUILT_DIR)/dist-full-arm64-v8a/lib/libavcodec.so
$(call cp_ffmpeg_libs,MediaLib,base)
$(call make_avos,MediaLib,base)
native_avos_full: native_build_native/ffmpeg-android-builder
$(call cp_ffmpeg_libs,MediaLib,full)
$(call make_avos,MediaLib,full)
native_build_native/ffmpeg-android-builder: native_build_native/dav1d-android-builder native_build_native/opus-android-builder native_build_native/openssl-android-builder native_build_native/libmysofa-android-builder
cd native/ffmpeg-android-builder; REPO_TOP_DIR=$(REPO_TOP_DIR) bash bootstrap_avp_ffmpeg.sh
native_build_native/dav1d-android-builder:
cd native/dav1d-android-builder; REPO_TOP_DIR=$(REPO_TOP_DIR) bash bootstrap_avp_dav1d.sh
native_build_native/opus-android-builder:
cd native/opus-android-builder; REPO_TOP_DIR=$(REPO_TOP_DIR) bash build.sh
native_build_native/openssl-android-builder:
cd native/openssl-android-builder; REPO_TOP_DIR=$(REPO_TOP_DIR) bash bootstrap.sh
native_build_native/libmysofa-android-builder:
cd native/libmysofa-android-builder; REPO_TOP_DIR=$(REPO_TOP_DIR) bash build.sh
native_build_native/torrentd: native_build_native/boost native_build_native/libtorrent
@if [ -f $(TORRENTD_PREBUILT_DIR)/libs/arm64-v8a/torrentd ]; then \
echo "torrentd already built, skipping"; \
else \
mkdir -p $(TORRENTD_PREBUILT_DIR)/libs; \
REPO_TOP_DIR=$(REPO_TOP_DIR) BUILD=$(BUILD) NDK_APP_ABI="$(NDK_APP_ABI)" ASAN="$(asan)" android_ndk=$(android_ndk) $(android_ndk)/ndk-build $(ndk_debug) $(ndk_v) $(ndk_jobs) -C native/torrentd NDK_LIBS_OUT=$(REPO_TOP_DIR)/$(TORRENTD_PREBUILT_DIR)/libs; \
fi
native_clean_native/torrentd:
rm -rf native/torrentd/obj
rm -rf $(TORRENTD_PREBUILT_DIR)/libs
native_build_native/boost:
@if [ -f $(TORRENTD_PREBUILT_DIR)/libs/arm64-v8a/torrentd ]; then \
echo "torrentd prebuilt exists, skipping boost"; \
else \
cd native/boost; REPO_TOP_DIR=$(REPO_TOP_DIR) bash bootstrap_avp_boost.sh; \
fi
native_build_native/libtorrent:
@if [ -f $(TORRENTD_PREBUILT_DIR)/libs/arm64-v8a/torrentd ]; then \
echo "torrentd prebuilt exists, skipping libtorrent"; \
else \
cd native/libtorrent-android-builder; REPO_TOP_DIR=$(REPO_TOP_DIR) bash bootstrap_libtorrent.sh; \
fi
native_torrentd: native_build_native/torrentd
rm -f MediaLib/libs/armeabi/libtorrentd.so ;\
for i in armeabi-v7a arm64-v8a x86 x86_64;do \
mkdir -p MediaLib/libs/$$i ;\
cp $(TORRENTD_PREBUILT_DIR)/libs/$$i/torrentd MediaLib/libs/$$i/libtorrentd.so ;\
done
trakt-java: MediaLib/libs/trakt-java.jar
jcifs-ng: FileCoreLibrary/libs/jcifs-ng.jar
cling-objects = MediaLib/libs/cling-core-2.1.2.jar MediaLib/libs/cling-support-2.1.2.jar
seamless-objects = MediaLib/libs/seamless-util-1.1.2.jar MediaLib/libs/seamless-http-1.1.2.jar MediaLib/libs/seamless-xml-1.1.2.jar MediaLib/libs/seamless-swing-1.1.2.jar
seamless: $(seamless-objects)
cling: $(cling-objects)
MediaLib/libs/cling-core-2.1.2.jar:
MediaLib/libs/cling-support-2.1.2.jar:
cd external/cling; JAVA_HOME="$(JAVA8)" mvn install -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dmaven.source.skip -DskipTests -Dmaven.javadoc.skip=true && mv */target/cling*2.1.2.jar ../../MediaLib/libs
MediaLib/libs/seamless-util-1.1.2.jar:
MediaLib/libs/seamless-http-1.1.2.jar:
MediaLib/libs/seamless-xml-1.1.2.jar:
MediaLib/libs/seamless-swing-1.1.2.jar:
cd external/seamless; JAVA_HOME="$(JAVA8)" mvn install -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dmaven.source.skip -DskipTests -Dmaven.javadoc.skip=true && mv */target/seamless*1.1.2.jar ../../MediaLib/libs
FileCoreLibrary/libs/jcifs-ng.jar:
cd external/jcifs-ng; mvn install -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dmaven.source.skip --batch-mode -DskipTests -Dmaven.javadoc.skip=true -Dgpg.skip=true && mv ./target/jcifs-ng-*.jar ../../FileCoreLibrary/libs/jcifs-ng.jar
MediaLib/libs/trakt-java.jar:
cd external/trakt-java; mvn install -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dmaven.source.skip -DskipTests -Dmaven.javadoc.skip=true && mv ./target/trakt-java-*.jar ../../MediaLib/libs/trakt-java.jar
external_build: jcifs-ng seamless cling
external_clean: external_clean_jcifs-ng external_clean_cling external_clean_seamless
external_clean_jcifs-ng:
cd external/jcifs-ng; mvn clean; rm -f ../../FileCoreLibrary/libs/jcifs-ng.jar
external_clean_trakt-java:
cd external/trakt-java; mvn clean; rm -f ../../MediaLib/libs/trakt-java.jar
external_clean_cling:
cd external/cling; mvn clean; rm -f ../../MediaLib/libs/cling*-2.1.2.jar
external_clean_seamless:
cd external/seamless; mvn clean; rm -f ../../MediaLib/libs/seamless*-1.1.2.jar
native_libnativehelper: native_build_native/libnativehelper
native : $(native_rules)
native_clean: $(native_clean_rules)
clean: native_clean external_clean