Build experiments

This commit is contained in:
Isaac 2025-05-29 16:06:51 +08:00
parent 2e53aa417f
commit 92065b2861
3 changed files with 186 additions and 111 deletions

View File

@ -1779,13 +1779,12 @@ ios_application(
":UrlTypesInfoPlist",
],
deps = [
"//submodules/Display",
"//submodules/TelegramCore",
"//submodules/FFMpegBinding",
#"//submodules/Display",
#"//submodules/TelegramCore",
#"//submodules/FFMpegBinding",
"//third-party/webrtc",
"//submodules/AsyncDisplayKit",
"//submodules/ObjCRuntimeUtils",
#"//submodules/AsyncDisplayKit",
#"//submodules/ObjCRuntimeUtils",
],
)

View File

@ -212,7 +212,7 @@ for name, module in sorted(modules.items()):
if cxxopts:
combined_lines.append(" .unsafeFlags([")
for flag in cxxopts:
if flag.startswith("-std="):
if flag.startswith("-std=") and False:
if flag != "-std=c++17":
print("{}: Unsupported C++ standard: {}".format(name, flag))
sys.exit(1)
@ -267,8 +267,8 @@ for name, module in sorted(modules.items()):
print("Unknown module type: {}".format(module["type"]))
sys.exit(1)
combined_lines.append(" ],")
combined_lines.append(" cxxLanguageStandard: .cxx17")
combined_lines.append(" ]")
#combined_lines.append(" cxxLanguageStandard: .cxx17")
combined_lines.append(")")
combined_lines.append("")

View File

@ -380,6 +380,10 @@ absl_sources = [ "dependencies/third_party/abseil-cpp/" + x for x in [
"absl/strings/internal/damerau_levenshtein_distance.h",
]]
webrtc_objcpp_sources = [
"rtc_base/system/cocoa_threading.mm",
]
webrtc_sources = [
"rtc_base/socket_address.h",
"rtc_base/arraysize.h",
@ -1432,7 +1436,6 @@ webrtc_sources = [
"stats/rtc_stats_report.cc",
"stats/rtc_stats.cc",
"stats/rtcstats_objects.cc",
"rtc_base/system/cocoa_threading.mm",
"rtc_base/mac_ifaddrs_converter.cc",
"rtc_base/checks.h",
"rtc_base/thread.h",
@ -2883,135 +2886,44 @@ ios_objc_sources = [
"objc/components/video_codec/RTCVideoDecoderFactoryH264.m",
]
ios_sources = [
"objc/native/api/audio_device_module.h",
"objc/native/src/audio/audio_session_observer.h",
"objc/native/src/audio/helpers.h",
ios_objcpp_sources = [
"objc/native/src/audio/helpers.mm",
"objc/native/src/objc_frame_buffer.h",
"objc/native/src/objc_frame_buffer.mm",
"objc/native/src/objc_video_decoder_factory.h",
"objc/native/src/objc_video_decoder_factory.mm",
"objc/native/src/objc_video_encoder_factory.h",
"objc/native/src/objc_video_encoder_factory.mm",
"objc/native/src/objc_video_frame.h",
"objc/native/src/objc_video_frame.mm",
"objc/native/src/objc_video_renderer.h",
"objc/native/src/objc_video_renderer.mm",
"objc/native/src/objc_video_track_source.h",
"objc/native/src/objc_video_track_source.mm",
"objc/api/video_codec/RTCVideoDecoderVP8.h",
"objc/api/video_codec/RTCVideoDecoderVP8.mm",
"objc/api/video_codec/RTCVideoEncoderVP8.h",
"objc/api/video_codec/RTCVideoEncoderVP8.mm",
"objc/api/video_codec/RTCVideoDecoderVP9.h",
"objc/api/video_codec/RTCVideoDecoderVP9.mm",
"objc/api/video_codec/RTCVideoEncoderVP9.h",
"objc/api/video_codec/RTCVideoEncoderVP9.mm",
"objc/base/RTCCodecSpecificInfo.h",
"objc/base/RTCI420Buffer.h",
"objc/base/RTCLogging.h",
"objc/base/RTCLogging.mm",
"objc/base/RTCMacros.h",
"objc/base/RTCMutableI420Buffer.h",
"objc/base/RTCMutableYUVPlanarBuffer.h",
"objc/base/RTCVideoDecoder.h",
"objc/base/RTCVideoDecoderFactory.h",
"objc/base/RTCVideoEncoder.h",
"objc/base/RTCVideoEncoderFactory.h",
"objc/base/RTCVideoFrame.h",
"objc/base/RTCVideoFrame.mm",
"objc/base/RTCVideoFrameBuffer.h",
"objc/base/RTCVideoRenderer.h",
"objc/base/RTCYUVPlanarBuffer.h",
"objc/api/peerconnection/RTCVideoSource+Private.h",
"objc/api/peerconnection/RTCVideoSource.h",
"objc/api/peerconnection/RTCVideoSource.mm",
"objc/api/video_frame_buffer/RTCNativeI420Buffer+Private.h",
"objc/api/video_frame_buffer/RTCNativeI420Buffer.h",
"objc/api/video_frame_buffer/RTCNativeI420Buffer.mm",
"objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h",
"objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.mm",
"objc/components/video_frame_buffer/RTCCVPixelBuffer.h",
"objc/components/video_frame_buffer/RTCCVPixelBuffer.mm",
"objc/components/video_codec/RTCCodecSpecificInfoH264+Private.h",
"objc/components/video_codec/RTCCodecSpecificInfoH264.h",
"objc/components/video_codec/RTCCodecSpecificInfoH264.mm",
"objc/components/video_codec/RTCH264ProfileLevelId.h",
"objc/components/video_codec/RTCH264ProfileLevelId.mm",
"objc/components/video_codec/RTCVideoDecoderH264.h",
"objc/components/video_codec/RTCVideoDecoderH264.mm",
"objc/components/video_codec/RTCVideoEncoderH264.h",
"objc/components/video_codec/RTCVideoEncoderH264.mm",
"objc/api/video_codec/RTCVideoCodecConstants.h",
"objc/api/video_codec/RTCVideoCodecConstants.mm",
"objc/components/video_codec/helpers.cc",
"objc/components/video_codec/helpers.h",
"objc/components/video_codec/nalu_rewriter.cc",
"objc/components/video_codec/nalu_rewriter.h",
"objc/helpers/RTCDispatcher+Private.h",
"objc/helpers/AVCaptureSession+DevicePosition.h",
"objc/helpers/AVCaptureSession+DevicePosition.mm",
"objc/helpers/NSString+StdString.h",
"objc/helpers/scoped_cftyperef.h",
"objc/api/peerconnection/RTCMediaSource+Private.h",
"objc/api/peerconnection/RTCMediaSource.h",
"objc/api/peerconnection/RTCMediaSource.mm",
"objc/api/video_codec/RTCWrappedNativeVideoDecoder.h",
"objc/api/video_codec/RTCWrappedNativeVideoDecoder.mm",
"objc/api/video_codec/RTCWrappedNativeVideoEncoder.h",
"objc/api/video_codec/RTCWrappedNativeVideoEncoder.mm",
"objc/native/api/video_capturer.h",
"objc/native/api/video_capturer.mm",
"objc/native/api/video_decoder_factory.h",
"objc/native/api/video_decoder_factory.mm",
"objc/native/api/video_encoder_factory.h",
"objc/native/api/video_encoder_factory.mm",
"objc/native/api/video_frame.h",
"objc/native/api/video_frame.mm",
"objc/native/api/video_frame_buffer.h",
"objc/native/api/video_frame_buffer.mm",
"objc/native/api/video_renderer.h",
"objc/native/api/video_renderer.mm",
"objc/components/renderer/metal/RTCMTLNV12Renderer.h",
"objc/components/renderer/metal/RTCMTLNV12Renderer.mm",
"objc/components/renderer/metal/RTCMTLRGBRenderer.h",
"objc/components/renderer/metal/RTCMTLRGBRenderer.mm",
"objc/components/renderer/metal/RTCMTLI420Renderer.h",
"objc/components/renderer/metal/RTCMTLI420Renderer.mm",
"objc/components/renderer/metal/RTCMTLRenderer+Private.h",
"objc/components/renderer/metal/RTCMTLRenderer.h",
"objc/components/renderer/metal/RTCMTLRenderer.mm",
"objc/components/video_codec/UIDevice+H264Profile.mm",
"objc/components/video_codec/UIDevice+H264Profile.h",
"objc/api/peerconnection/RTCAudioSource+Private.h",
"objc/api/peerconnection/RTCAudioTrack+Private.h",
"objc/api/peerconnection/RTCCertificate.h",
"objc/api/peerconnection/RTCConfiguration+Private.h",
"objc/api/peerconnection/RTCCryptoOptions.h",
"objc/api/peerconnection/RTCDataChannel+Private.h",
"objc/api/peerconnection/RTCDtmfSender+Private.h",
"objc/api/peerconnection/RTCEncodedImage+Private.h",
"objc/api/peerconnection/RTCIceCandidate+Private.h",
"objc/api/peerconnection/RTCIceServer+Private.h",
"objc/api/peerconnection/RTCLegacyStatsReport+Private.h",
"objc/api/peerconnection/RTCMediaStream+Private.h",
"objc/api/peerconnection/RTCPeerConnection+Private.h",
"objc/api/peerconnection/RTCPeerConnectionFactory+Native.h",
"objc/api/peerconnection/RTCRtcpParameters+Private.h",
"objc/api/peerconnection/RTCRtpCodecParameters+Private.h",
"objc/api/peerconnection/RTCRtpEncodingParameters+Private.h",
"objc/api/peerconnection/RTCRtpHeaderExtension+Private.h",
"objc/api/peerconnection/RTCRtpParameters+Private.h",
"objc/api/peerconnection/RTCRtpReceiver+Private.h",
"objc/api/peerconnection/RTCRtpSender+Private.h",
"objc/api/peerconnection/RTCRtpTransceiver+Private.h",
"objc/api/peerconnection/RTCSessionDescription+Private.h",
"objc/api/peerconnection/RTCStatisticsReport+Private.h",
"objc/api/peerconnection/RTCVideoCodecInfo+Private.h",
"objc/api/peerconnection/RTCVideoEncoderSettings+Private.h",
"objc/api/RTCVideoRendererAdapter+Private.h",
"objc/api/peerconnection/RTCVideoTrack+Private.h",
"objc/helpers/UIDevice+RTCDevice.mm",
"objc/api/peerconnection/RTCEncodedImage+Private.mm",
"objc/api/peerconnection/RTCPeerConnection+DataChannel.mm",
@ -3044,6 +2956,103 @@ ios_sources = [
"objc/api/RTCVideoRendererAdapter.mm",
"objc/api/peerconnection/RTCRtpHeaderExtension.mm",
"objc/api/peerconnection/RTCRtcpParameters.mm",
"objc/api/peerconnection/RTCRtpCodecCapability.mm",
"objc/native/api/network_monitor_factory.mm",
"objc/native/src/objc_network_monitor.mm",
"objc/components/network/RTCNetworkMonitor.mm",
"objc/api/peerconnection/RTCIceCandidateErrorEvent.mm",
"objc/native/api/ssl_certificate_verifier.mm",
"objc/native/api/audio_device_module.h",
"objc/native/src/audio/audio_session_observer.h",
"objc/native/src/audio/helpers.h",
"objc/native/src/objc_frame_buffer.h",
"objc/native/src/objc_video_decoder_factory.h",
"objc/native/src/objc_video_encoder_factory.h",
"objc/native/src/objc_video_frame.h",
"objc/native/src/objc_video_renderer.h",
"objc/native/src/objc_video_track_source.h",
"objc/api/video_codec/RTCVideoDecoderVP8.h",
"objc/api/video_codec/RTCVideoEncoderVP8.h",
"objc/api/video_codec/RTCVideoDecoderVP9.h",
"objc/api/video_codec/RTCVideoEncoderVP9.h",
"objc/base/RTCCodecSpecificInfo.h",
"objc/base/RTCI420Buffer.h",
"objc/base/RTCLogging.h",
"objc/base/RTCMacros.h",
"objc/base/RTCMutableI420Buffer.h",
"objc/base/RTCMutableYUVPlanarBuffer.h",
"objc/base/RTCVideoDecoder.h",
"objc/base/RTCVideoDecoderFactory.h",
"objc/base/RTCVideoEncoder.h",
"objc/base/RTCVideoEncoderFactory.h",
"objc/base/RTCVideoFrame.h",
"objc/base/RTCVideoFrameBuffer.h",
"objc/base/RTCVideoRenderer.h",
"objc/base/RTCYUVPlanarBuffer.h",
"objc/api/peerconnection/RTCVideoSource+Private.h",
"objc/api/peerconnection/RTCVideoSource.h",
"objc/api/video_frame_buffer/RTCNativeI420Buffer+Private.h",
"objc/api/video_frame_buffer/RTCNativeI420Buffer.h",
"objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h",
"objc/components/video_frame_buffer/RTCCVPixelBuffer.h",
"objc/components/video_codec/RTCCodecSpecificInfoH264+Private.h",
"objc/components/video_codec/RTCCodecSpecificInfoH264.h",
"objc/components/video_codec/RTCH264ProfileLevelId.h",
"objc/components/video_codec/RTCVideoDecoderH264.h",
"objc/components/video_codec/RTCVideoEncoderH264.h",
"objc/api/video_codec/RTCVideoCodecConstants.h",
"objc/components/video_codec/helpers.cc",
"objc/components/video_codec/helpers.h",
"objc/components/video_codec/nalu_rewriter.cc",
"objc/components/video_codec/nalu_rewriter.h",
"objc/helpers/RTCDispatcher+Private.h",
"objc/helpers/AVCaptureSession+DevicePosition.h",
"objc/helpers/NSString+StdString.h",
"objc/helpers/scoped_cftyperef.h",
"objc/api/peerconnection/RTCMediaSource+Private.h",
"objc/api/peerconnection/RTCMediaSource.h",
"objc/api/video_codec/RTCWrappedNativeVideoDecoder.h",
"objc/api/video_codec/RTCWrappedNativeVideoEncoder.h",
"objc/native/api/video_capturer.h",
"objc/native/api/video_decoder_factory.h",
"objc/native/api/video_encoder_factory.h",
"objc/native/api/video_frame.h",
"objc/native/api/video_frame_buffer.h",
"objc/native/api/video_renderer.h",
"objc/components/renderer/metal/RTCMTLNV12Renderer.h",
"objc/components/renderer/metal/RTCMTLRGBRenderer.h",
"objc/components/renderer/metal/RTCMTLI420Renderer.h",
"objc/components/renderer/metal/RTCMTLRenderer+Private.h",
"objc/components/renderer/metal/RTCMTLRenderer.h",
"objc/components/video_codec/UIDevice+H264Profile.h",
"objc/api/peerconnection/RTCAudioSource+Private.h",
"objc/api/peerconnection/RTCAudioTrack+Private.h",
"objc/api/peerconnection/RTCCertificate.h",
"objc/api/peerconnection/RTCConfiguration+Private.h",
"objc/api/peerconnection/RTCCryptoOptions.h",
"objc/api/peerconnection/RTCDataChannel+Private.h",
"objc/api/peerconnection/RTCDtmfSender+Private.h",
"objc/api/peerconnection/RTCEncodedImage+Private.h",
"objc/api/peerconnection/RTCIceCandidate+Private.h",
"objc/api/peerconnection/RTCIceServer+Private.h",
"objc/api/peerconnection/RTCLegacyStatsReport+Private.h",
"objc/api/peerconnection/RTCMediaStream+Private.h",
"objc/api/peerconnection/RTCPeerConnection+Private.h",
"objc/api/peerconnection/RTCPeerConnectionFactory+Native.h",
"objc/api/peerconnection/RTCRtcpParameters+Private.h",
"objc/api/peerconnection/RTCRtpCodecParameters+Private.h",
"objc/api/peerconnection/RTCRtpEncodingParameters+Private.h",
"objc/api/peerconnection/RTCRtpHeaderExtension+Private.h",
"objc/api/peerconnection/RTCRtpParameters+Private.h",
"objc/api/peerconnection/RTCRtpReceiver+Private.h",
"objc/api/peerconnection/RTCRtpSender+Private.h",
"objc/api/peerconnection/RTCRtpTransceiver+Private.h",
"objc/api/peerconnection/RTCSessionDescription+Private.h",
"objc/api/peerconnection/RTCStatisticsReport+Private.h",
"objc/api/peerconnection/RTCVideoCodecInfo+Private.h",
"objc/api/peerconnection/RTCVideoEncoderSettings+Private.h",
"objc/api/RTCVideoRendererAdapter+Private.h",
"objc/api/peerconnection/RTCVideoTrack+Private.h",
"media_constraints.cc",
"media_constraints.h",
"objc/helpers/UIDevice+RTCDevice.h",
@ -3084,20 +3093,14 @@ ios_sources = [
"objc/api/peerconnection/RTCConfiguration+Native.h",
"objc/api/peerconnection/RTCPeerConnectionFactoryOptions.h",
"objc/api/peerconnection/RTCRtpCodecCapability.h",
"objc/api/peerconnection/RTCRtpCodecCapability.mm",
"objc/api/peerconnection/RTCRtpCodecCapability+Private.h",
"objc/native/api/network_monitor_factory.h",
"objc/native/api/network_monitor_factory.mm",
"objc/native/src/objc_network_monitor.h",
"objc/native/src/objc_network_monitor.mm",
"objc/components/network/RTCNetworkMonitor.h",
"objc/components/network/RTCNetworkMonitor+Private.h",
"objc/components/network/RTCNetworkMonitor.mm",
"objc/native/src/network_monitor_observer.h",
"objc/api/peerconnection/RTCIceCandidateErrorEvent.h",
"objc/api/peerconnection/RTCIceCandidateErrorEvent+Private.h",
"objc/api/peerconnection/RTCIceCandidateErrorEvent.mm",
"objc/native/api/ssl_certificate_verifier.mm",
"objc/native/api/ssl_certificate_verifier.h",
"objc/base/RTCSSLCertificateVerifier.h",
"objc/native/api/objc_audio_device_module.h",
@ -3449,7 +3452,6 @@ cc_library(
],
copts = [
"-Ithird-party/webrtc/additional-files",
#"-Ithird-party/webrtc/dependencies/third_party/usrsctp/usrsctplib/usrsctplib",
"-Ithird-party/webrtc/dependencies/third_party/libsrtp/crypto/include",
"-Ithird-party/webrtc/dependencies/third_party/libsrtp/include",
"-DOPENSSL",
@ -3488,13 +3490,17 @@ fft4g_sources = [
"fft4g/fft4g.cc",
]
raw_combined_sources = webrtc_sources
raw_combined_sources = webrtc_sources + webrtc_objcpp_sources
combined_sources = [
webrtc_source_dir + "/" + path for path in raw_combined_sources
] + arch_specific_sources + [
webrtc_source_dir + "/" + "sdk/" + path for path in ios_sources + ios_objc_sources
webrtc_source_dir + "/" + "sdk/" + path for path in ios_objcpp_sources
] + absl_sources + fft4g_sources + rnnoise_sources + pffft_sources + crc32c_sources + dcsctp_sources
combined_objc_sources = [
webrtc_source_dir + "/sdk/" + path for path in ios_objc_sources
]
genrule(
name = "generate_field_trials_header",
srcs = [
@ -3565,6 +3571,75 @@ cc_library(
],
)
objc_library(
name = "webrtc_objc",
enable_modules = True,
module_name = "webrtc_objc",
srcs = combined_objc_sources,
copts = [
"-Wno-all",
"-Ithird-party/webrtc/" + webrtc_source_dir + "/",
"-Ithird-party/webrtc/dependencies",
"-Ithird-party/webrtc/dependencies/third_party/abseil-cpp",
"-Ithird-party/webrtc/dependencies/third_party/crc32c/src/include",
"-Ithird-party/webrtc/dependencies/third_party/libsrtp/include",
"-Ithird-party/webrtc/dependencies/third_party/libsrtp/crypto/include",
"-Ithird-party/webrtc/dependencies/third_party/opus/src/include",
"-Ithird-party/libyuv",
"-Ithird-party/libyuv/third_party/libyuv/include",
"-Ithird-party/webrtc/" + webrtc_source_dir + "/" + "testing/gtest/include",
"-Ithird-party/webrtc/" + webrtc_source_dir + "/" + "sdk/objc",
"-Ithird-party/webrtc/" + webrtc_source_dir + "/" + "sdk/objc/base",
"-Ithird-party/webrtc/additional-files",
"-Ithird-party/webrtc/opus_headers",
"-DBSD=1",
"-DUSE_KISS_FFT",
"-DHAVE_PTHREAD",
"-DWEBRTC_APM_DEBUG_DUMP=0",
"-DWEBRTC_USE_BUILTIN_ISAC_FLOAT",
"-DWEBRTC_OPUS_VARIABLE_COMPLEXITY=0",
"-DHAVE_NETINET_IN_H",
"-DSCTP_SIMPLE_ALLOCATOR",
"-DSCTP_PROCESS_LEVEL_LOCKS",
"-D__Userspace__",
"-D__Userspace_os_Darwin",
"-DPACKAGE_VERSION='\"\"'",
"-DHAVE_SCTP",
"-DWEBRTC_HAVE_DCSCTP",
"-DWEBRTC_HAVE_SCTP",
"-DNO_MAIN_THREAD_WRAPPING",
"-DRTC_DISABLE_TRACE_EVENTS",
"-DRTC_DISABLE_METRICS",
] + arch_specific_cflags + optimization_flags,
deps = [
"//third-party/boringssl:crypto",
"//third-party/boringssl:ssl",
"//third-party/opus:opus",
":libsrtp",
"//third-party/libyuv:libyuv",
"//third-party/libvpx:vpx",
"//submodules/ffmpeg:ffmpeg",
"//third-party/openh264:openh264",
":field_trials_header",
":opus_headers",
],
sdk_frameworks = [
"AVFoundation",
"AudioToolbox",
"VideoToolbox",
"UIKit",
"CoreMedia",
"CoreVideo",
"CoreGraphics",
"QuartzCore",
],
weak_sdk_frameworks = [
"Network",
"Metal",
],
visibility = ["//visibility:public"],
)
objc_library(
name = "webrtc",
enable_modules = True,
@ -3619,6 +3694,7 @@ objc_library(
"//third-party/openh264:openh264",
":field_trials_header",
":opus_headers",
":webrtc_objc",
],
sdk_frameworks = [
"AVFoundation",