Skip to content

Commit 38d2f02

Browse files
committed
Build tgcalls to the separate shared library
1 parent 9f90f68 commit 38d2f02

File tree

7 files changed

+225
-179
lines changed

7 files changed

+225
-179
lines changed

‎app/jni/BuildTgCalls.cmake

+175-1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,180 @@ target_link_libraries(tgcalls PRIVATE
9696
)
9797

9898
target_link_libraries(tgcalls PUBLIC
99-
webrtc
10099
tgvoip
100+
)
101+
102+
set(TGCALLS_LIB "tgcallsjni")
103+
104+
add_library(${TGCALLS_LIB} SHARED
105+
tgvoip.cpp
106+
107+
"${WEBRTC_DIR}/modules/audio_device/android/audio_manager.cc"
108+
109+
"${WEBRTC_DIR}/modules/audio_device/android/build_info.cc"
110+
111+
"${WEBRTC_DIR}/modules/audio_device/android/opensles_common.cc"
112+
"${WEBRTC_DIR}/modules/audio_device/android/opensles_player.cc"
113+
"${WEBRTC_DIR}/modules/audio_device/android/opensles_recorder.cc"
114+
115+
"${WEBRTC_DIR}/sdk/android/native_api/audio_device_module/audio_device_android.cc"
116+
"${WEBRTC_DIR}/sdk/android/native_api/base/init.cc"
117+
"${WEBRTC_DIR}/sdk/android/native_api/codecs/wrapper.cc"
118+
119+
"${WEBRTC_DIR}/sdk/android/native_api/jni/jvm.cc"
120+
"${WEBRTC_DIR}/sdk/android/native_api/peerconnection/peer_connection_factory.cc"
121+
"${WEBRTC_DIR}/sdk/android/native_api/stacktrace/stacktrace.cc"
122+
"${WEBRTC_DIR}/sdk/android/native_api/video/video_source.cc"
123+
"${WEBRTC_DIR}/sdk/android/native_api/video/wrapper.cc"
124+
"${WEBRTC_DIR}/sdk/android/native_api/network_monitor/network_monitor.cc"
125+
126+
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/opensles_common.cc"
127+
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/opensles_player.cc"
128+
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/opensles_recorder.cc"
129+
"${WEBRTC_DIR}/sdk/android/src/jni/jni_generator_helper.cc"
130+
"${WEBRTC_DIR}/sdk/android/src/jni/jni_helpers.cc"
131+
"${WEBRTC_DIR}/sdk/android/src/jni/jvm.cc"
132+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/audio.cc"
133+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/logging.cc"
134+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/owned_factory_and_threads.cc"
135+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/video.cc"
136+
137+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/add_ice_candidate_observer.cc"
138+
"${WEBRTC_DIR}/sdk/android/native_api/jni/class_loader.cc"
139+
"${WEBRTC_DIR}/sdk/android/native_api/jni/java_types.cc"
140+
"${WEBRTC_DIR}/sdk/android/src/jni/egl_base_10_impl.cc"
141+
"${WEBRTC_DIR}/modules/audio_device/android/audio_record_jni.cc"
142+
"${WEBRTC_DIR}/modules/audio_device/android/audio_track_jni.cc"
143+
"${WEBRTC_DIR}/sdk/android/src/jni/android_video_track_source.cc"
144+
"${WEBRTC_DIR}/sdk/android/src/jni/android_network_monitor.cc"
145+
"${WEBRTC_DIR}/sdk/android/src/jni/java_i420_buffer.cc"
146+
"${WEBRTC_DIR}/sdk/android/src/jni/jni_common.cc"
147+
"${WEBRTC_DIR}/sdk/android/src/jni/builtin_audio_decoder_factory_factory.cc"
148+
"${WEBRTC_DIR}/sdk/android/src/jni/builtin_audio_encoder_factory_factory.cc"
149+
"${WEBRTC_DIR}/sdk/android/src/jni/android_histogram.cc"
150+
"${WEBRTC_DIR}/sdk/android/src/jni/android_metrics.cc"
151+
"${WEBRTC_DIR}/sdk/android/src/jni/h264_utils.cc"
152+
"${WEBRTC_DIR}/sdk/android/src/jni/encoded_image.cc"
153+
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/java_audio_device_module.cc"
154+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/crypto_options.cc"
155+
"${WEBRTC_DIR}/sdk/android/src/jni/nv12_buffer.cc"
156+
"${WEBRTC_DIR}/sdk/android/src/jni/nv21_buffer.cc"
157+
"${WEBRTC_DIR}/sdk/android/src/jni/video_codec_status.cc"
158+
"${WEBRTC_DIR}/sdk/android/src/jni/scoped_java_ref_counted.cc"
159+
"${WEBRTC_DIR}/sdk/android/src/jni/timestamp_aligner.cc"
160+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/audio_track.cc"
161+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/dtmf_sender.cc"
162+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/media_source.cc"
163+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/media_stream_track.cc"
164+
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/audio_device_module.cc"
165+
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/audio_record_jni.cc"
166+
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/audio_track_jni.cc"
167+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtp_parameters.cc"
168+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc"
169+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/session_description.cc"
170+
"${WEBRTC_DIR}/sdk/android/src/jni/logging/log_sink.cc"
171+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/data_channel.cc"
172+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/media_stream.cc"
173+
"${WEBRTC_DIR}/sdk/android/src/jni/native_capturer_observer.cc"
174+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtp_receiver.cc"
175+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtp_sender.cc"
176+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtp_transceiver.cc"
177+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.cc"
178+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/turn_customizer.cc"
179+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/ice_candidate.cc"
180+
"${WEBRTC_DIR}/sdk/android/src/jni/video_codec_info.cc"
181+
"${WEBRTC_DIR}/sdk/android/src/jni/video_decoder_factory_wrapper.cc"
182+
"${WEBRTC_DIR}/sdk/android/src/jni/video_decoder_fallback.cc"
183+
"${WEBRTC_DIR}/sdk/android/src/jni/video_frame.cc"
184+
"${WEBRTC_DIR}/sdk/android/src/jni/video_sink.cc"
185+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/sdp_observer.cc"
186+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/stats_observer.cc"
187+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtc_stats_collector_callback_wrapper.cc"
188+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/media_constraints.cc"
189+
"${WEBRTC_DIR}/sdk/android/src/jni/vp8_codec.cc"
190+
"${WEBRTC_DIR}/sdk/android/src/jni/vp9_codec.cc"
191+
"${WEBRTC_DIR}/sdk/android/src/jni/wrapped_native_i420_buffer.cc"
192+
"${WEBRTC_DIR}/sdk/android/src/jni/yuv_helper.cc"
193+
"${WEBRTC_DIR}/sdk/android/src/jni/video_track.cc"
194+
"${WEBRTC_DIR}/sdk/android/src/jni/video_encoder_fallback.cc"
195+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/peer_connection.cc"
196+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/peer_connection_factory.cc"
197+
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtc_certificate.cc"
198+
"${WEBRTC_DIR}/sdk/android/src/jni/video_decoder_wrapper.cc"
199+
"${WEBRTC_DIR}/sdk/android/src/jni/video_encoder_factory_wrapper.cc"
200+
"${WEBRTC_DIR}/sdk/android/src/jni/video_encoder_wrapper.cc"
201+
)
202+
target_include_directories(${TGCALLS_LIB} PRIVATE
203+
"${WEBRTC_DIR}/generated"
204+
"${THIRDPARTY_DIR}"
205+
.
206+
"${THIRDPARTY_DIR}/abseil-cpp"
207+
"${YUV_DIR}/include"
208+
"${STUB_DIR}"
209+
)
210+
set_target_properties(${TGCALLS_LIB} PROPERTIES
211+
ANDROID_ARM_MODE arm
212+
)
213+
target_compile_definitions(${TGCALLS_LIB} PUBLIC ${WEBRTC_OPTIONS})
214+
target_compile_definitions(${TGCALLS_LIB} PRIVATE
215+
TDLIB_TDAPI_CLASS_PATH="org/drinkless/tdlib/TdApi"
216+
)
217+
target_include_directories(${TGCALLS_LIB} PUBLIC
218+
"${WEBRTC_DIR}"
219+
)
220+
221+
if (${ANDROID_ABI} STREQUAL "armeabi-v7a")
222+
target_compile_definitions(${TGCALLS_LIB} PUBLIC
223+
WEBRTC_ARCH_ARM
224+
WEBRTC_ARCH_ARM_V7
225+
WEBRTC_HAS_NEON
226+
)
227+
elseif(${ANDROID_ABI} STREQUAL "arm64-v8a")
228+
target_compile_definitions(${TGCALLS_LIB} PUBLIC
229+
WEBRTC_ARCH_ARM64
230+
WEBRTC_HAS_NEON
231+
)
232+
elseif(${ANDROID_ABI} STREQUAL "x86")
233+
target_compile_definitions(${TGCALLS_LIB} PUBLIC
234+
HAVE_SSE2
235+
)
236+
elseif(${ANDROID_ABI} STREQUAL "x86_64")
237+
target_compile_definitions(${TGCALLS_LIB} PUBLIC
238+
HAVE_SSE2
239+
)
240+
endif()
241+
242+
target_link_libraries(${TGCALLS_LIB}
243+
jni-utils
244+
tgcalls
245+
)
246+
247+
target_link_libraries(${TGCALLS_LIB}
248+
log
249+
GLESv2
250+
EGL
251+
android
252+
cpufeatures
253+
)
254+
255+
set(TGCALLS_EXCLUDE_LIBS
256+
libtgvoip.a
257+
libusrsctp.a
258+
libsrtp.a
259+
libopenh264.a
260+
libabsl.a
261+
libjson11.a
262+
librnnoise.a
263+
libwebrtc.a
264+
libtgcalls.a
265+
)
266+
list(APPEND TGCALLS_EXCLUDE_LIBS
267+
libyuv.a
268+
libopus.a
269+
"${VPX_LIB_PATH}"
270+
"${FFMPEG_DIR}/lib/libavcodec.a"
271+
)
272+
Join(TGCALLS_EXCLUDE_LIBS "${TGCALLS_EXCLUDE_LIBS}" ",")
273+
target_link_options(${TGCALLS_LIB} PUBLIC
274+
-Wl,--exclude-libs,${TGCALLS_EXCLUDE_LIBS}
101275
)

‎app/jni/BuildWebRTC.cmake

-132
Original file line numberDiff line numberDiff line change
@@ -2890,135 +2890,3 @@ target_include_directories(webrtc PRIVATE
28902890
target_include_directories(webrtc PUBLIC
28912891
"${WEBRTC_DIR}"
28922892
)
2893-
2894-
add_library(webrtc_android STATIC
2895-
"${WEBRTC_DIR}/modules/audio_device/android/audio_manager.cc"
2896-
2897-
"${WEBRTC_DIR}/modules/audio_device/android/build_info.cc"
2898-
2899-
"${WEBRTC_DIR}/modules/audio_device/android/opensles_common.cc"
2900-
"${WEBRTC_DIR}/modules/audio_device/android/opensles_player.cc"
2901-
"${WEBRTC_DIR}/modules/audio_device/android/opensles_recorder.cc"
2902-
2903-
"${WEBRTC_DIR}/sdk/android/native_api/audio_device_module/audio_device_android.cc"
2904-
"${WEBRTC_DIR}/sdk/android/native_api/base/init.cc"
2905-
"${WEBRTC_DIR}/sdk/android/native_api/codecs/wrapper.cc"
2906-
2907-
"${WEBRTC_DIR}/sdk/android/native_api/jni/jvm.cc"
2908-
"${WEBRTC_DIR}/sdk/android/native_api/peerconnection/peer_connection_factory.cc"
2909-
"${WEBRTC_DIR}/sdk/android/native_api/stacktrace/stacktrace.cc"
2910-
"${WEBRTC_DIR}/sdk/android/native_api/video/video_source.cc"
2911-
"${WEBRTC_DIR}/sdk/android/native_api/video/wrapper.cc"
2912-
"${WEBRTC_DIR}/sdk/android/native_api/network_monitor/network_monitor.cc"
2913-
2914-
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/opensles_common.cc"
2915-
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/opensles_player.cc"
2916-
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/opensles_recorder.cc"
2917-
"${WEBRTC_DIR}/sdk/android/src/jni/jni_generator_helper.cc"
2918-
"${WEBRTC_DIR}/sdk/android/src/jni/jni_helpers.cc"
2919-
"${WEBRTC_DIR}/sdk/android/src/jni/jvm.cc"
2920-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/audio.cc"
2921-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/logging.cc"
2922-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/owned_factory_and_threads.cc"
2923-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/video.cc"
2924-
2925-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/add_ice_candidate_observer.cc"
2926-
"${WEBRTC_DIR}/sdk/android/native_api/jni/class_loader.cc"
2927-
"${WEBRTC_DIR}/sdk/android/native_api/jni/java_types.cc"
2928-
"${WEBRTC_DIR}/sdk/android/src/jni/egl_base_10_impl.cc"
2929-
"${WEBRTC_DIR}/modules/audio_device/android/audio_record_jni.cc"
2930-
"${WEBRTC_DIR}/modules/audio_device/android/audio_track_jni.cc"
2931-
"${WEBRTC_DIR}/sdk/android/src/jni/android_video_track_source.cc"
2932-
"${WEBRTC_DIR}/sdk/android/src/jni/android_network_monitor.cc"
2933-
"${WEBRTC_DIR}/sdk/android/src/jni/java_i420_buffer.cc"
2934-
"${WEBRTC_DIR}/sdk/android/src/jni/jni_common.cc"
2935-
"${WEBRTC_DIR}/sdk/android/src/jni/builtin_audio_decoder_factory_factory.cc"
2936-
"${WEBRTC_DIR}/sdk/android/src/jni/builtin_audio_encoder_factory_factory.cc"
2937-
"${WEBRTC_DIR}/sdk/android/src/jni/android_histogram.cc"
2938-
"${WEBRTC_DIR}/sdk/android/src/jni/android_metrics.cc"
2939-
"${WEBRTC_DIR}/sdk/android/src/jni/h264_utils.cc"
2940-
"${WEBRTC_DIR}/sdk/android/src/jni/encoded_image.cc"
2941-
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/java_audio_device_module.cc"
2942-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/crypto_options.cc"
2943-
"${WEBRTC_DIR}/sdk/android/src/jni/nv12_buffer.cc"
2944-
"${WEBRTC_DIR}/sdk/android/src/jni/nv21_buffer.cc"
2945-
"${WEBRTC_DIR}/sdk/android/src/jni/video_codec_status.cc"
2946-
"${WEBRTC_DIR}/sdk/android/src/jni/scoped_java_ref_counted.cc"
2947-
"${WEBRTC_DIR}/sdk/android/src/jni/timestamp_aligner.cc"
2948-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/audio_track.cc"
2949-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/dtmf_sender.cc"
2950-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/media_source.cc"
2951-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/media_stream_track.cc"
2952-
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/audio_device_module.cc"
2953-
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/audio_record_jni.cc"
2954-
"${WEBRTC_DIR}/sdk/android/src/jni/audio_device/audio_track_jni.cc"
2955-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtp_parameters.cc"
2956-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc"
2957-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/session_description.cc"
2958-
"${WEBRTC_DIR}/sdk/android/src/jni/logging/log_sink.cc"
2959-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/data_channel.cc"
2960-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/media_stream.cc"
2961-
"${WEBRTC_DIR}/sdk/android/src/jni/native_capturer_observer.cc"
2962-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtp_receiver.cc"
2963-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtp_sender.cc"
2964-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtp_transceiver.cc"
2965-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.cc"
2966-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/turn_customizer.cc"
2967-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/ice_candidate.cc"
2968-
"${WEBRTC_DIR}/sdk/android/src/jni/video_codec_info.cc"
2969-
"${WEBRTC_DIR}/sdk/android/src/jni/video_decoder_factory_wrapper.cc"
2970-
"${WEBRTC_DIR}/sdk/android/src/jni/video_decoder_fallback.cc"
2971-
"${WEBRTC_DIR}/sdk/android/src/jni/video_frame.cc"
2972-
"${WEBRTC_DIR}/sdk/android/src/jni/video_sink.cc"
2973-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/sdp_observer.cc"
2974-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/stats_observer.cc"
2975-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtc_stats_collector_callback_wrapper.cc"
2976-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/media_constraints.cc"
2977-
"${WEBRTC_DIR}/sdk/android/src/jni/vp8_codec.cc"
2978-
"${WEBRTC_DIR}/sdk/android/src/jni/vp9_codec.cc"
2979-
"${WEBRTC_DIR}/sdk/android/src/jni/wrapped_native_i420_buffer.cc"
2980-
"${WEBRTC_DIR}/sdk/android/src/jni/yuv_helper.cc"
2981-
"${WEBRTC_DIR}/sdk/android/src/jni/video_track.cc"
2982-
"${WEBRTC_DIR}/sdk/android/src/jni/video_encoder_fallback.cc"
2983-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/peer_connection.cc"
2984-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/peer_connection_factory.cc"
2985-
"${WEBRTC_DIR}/sdk/android/src/jni/pc/rtc_certificate.cc"
2986-
"${WEBRTC_DIR}/sdk/android/src/jni/video_decoder_wrapper.cc"
2987-
"${WEBRTC_DIR}/sdk/android/src/jni/video_encoder_factory_wrapper.cc"
2988-
"${WEBRTC_DIR}/sdk/android/src/jni/video_encoder_wrapper.cc"
2989-
)
2990-
target_include_directories(webrtc_android PRIVATE
2991-
"${WEBRTC_DIR}/generated"
2992-
.
2993-
"${THIRDPARTY_DIR}/abseil-cpp"
2994-
"${YUV_DIR}/include"
2995-
"${STUB_DIR}"
2996-
)
2997-
set_target_properties(webrtc_android PROPERTIES
2998-
ANDROID_ARM_MODE arm
2999-
)
3000-
target_compile_definitions(webrtc_android PUBLIC ${WEBRTC_OPTIONS})
3001-
target_include_directories(webrtc_android PUBLIC
3002-
"${WEBRTC_DIR}"
3003-
)
3004-
3005-
if (${ANDROID_ABI} STREQUAL "armeabi-v7a")
3006-
target_compile_definitions(webrtc_android PUBLIC
3007-
WEBRTC_ARCH_ARM
3008-
WEBRTC_ARCH_ARM_V7
3009-
WEBRTC_HAS_NEON
3010-
)
3011-
elseif(${ANDROID_ABI} STREQUAL "arm64-v8a")
3012-
target_compile_definitions(webrtc_android PUBLIC
3013-
WEBRTC_ARCH_ARM64
3014-
WEBRTC_HAS_NEON
3015-
)
3016-
elseif(${ANDROID_ABI} STREQUAL "x86")
3017-
target_compile_definitions(webrtc_android PUBLIC
3018-
HAVE_SSE2
3019-
)
3020-
elseif(${ANDROID_ABI} STREQUAL "x86_64")
3021-
target_compile_definitions(webrtc_android PUBLIC
3022-
HAVE_SSE2
3023-
)
3024-
endif()

0 commit comments

Comments
 (0)