set(quiche_SRCS
  overrides/quiche_platform_impl/quiche_command_line_flags_impl.h
  overrides/quiche_platform_impl/quiche_command_line_flags_impl.cc
  overrides/quiche_platform_impl/quiche_containers_impl.h
  overrides/quiche_platform_impl/quiche_export_impl.h
  overrides/quiche_platform_impl/quiche_logging_impl.h
  overrides/quiche_platform_impl/quiche_system_event_loop_impl.h

  src/quiche/binary_http/binary_http_message.cc
  src/quiche/binary_http/binary_http_message.h
  src/quiche/common/capsule.h
  src/quiche/common/capsule.cc
  src/quiche/common/bug_utils.h
  src/quiche/common/bug_utils.cc
  src/quiche/common/http/http_header_block.cc
  src/quiche/common/http/http_header_storage.cc
  src/quiche/common/internet_checksum.h
  src/quiche/common/internet_checksum.cc
  src/quiche/common/lifetime_tracking.h
  src/quiche/common/masque/connect_ip_datagram_payload.cc
  src/quiche/common/masque/connect_udp_datagram_payload.cc
  src/quiche/common/platform/api/quiche_bug_tracker.h
  src/quiche/common/platform/api/quiche_client_stats.h
  src/quiche/common/platform/api/quiche_containers.h
  src/quiche/common/platform/api/quiche_export.h
  src/quiche/common/platform/api/quiche_flag_utils.h
  src/quiche/common/platform/api/quiche_flags.h
  src/quiche/common/platform/api/quiche_googleurl.h
  src/quiche/common/platform/api/quiche_header_policy.h
  src/quiche/common/platform/api/quiche_hostname_utils.cc
  src/quiche/common/platform/api/quiche_hostname_utils.h
  src/quiche/common/platform/api/quiche_iovec.h
  src/quiche/common/platform/api/quiche_logging.h
  src/quiche/common/platform/api/quiche_lower_case_string.h
  src/quiche/common/platform/api/quiche_reference_counted.h
  src/quiche/common/platform/api/quiche_server_stats.h
  src/quiche/common/platform/api/quiche_stack_trace.h
  src/quiche/common/platform/api/quiche_testvalue.h
  src/quiche/common/platform/api/quiche_thread.h
  src/quiche/common/platform/api/quiche_time_utils.h
  src/quiche/common/platform/api/quiche_url_utils.h
  src/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc
  src/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.h
  src/quiche/common/platform/default/quiche_platform_impl/quiche_iovec_impl.h
  src/quiche/common/platform/default/quiche_platform_impl/quiche_googleurl_impl.h
  # src/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.cc
  # src/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h
  #src/quiche/common/platform/default/quiche_platform_impl/quiche_default_proof_providers_impl.h
  #src/quiche/common/platform/default/quiche_platform_impl/quiche_default_proof_providers_impl.cc
  src/quiche/common/platform/default/quiche_platform_impl/quiche_lower_case_string_impl.h
  src/quiche/common/platform/default/quiche_platform_impl/quiche_bug_tracker_impl.h
  src/quiche/common/platform/default/quiche_platform_impl/quiche_reference_counted_impl.h
  src/quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.h
  src/quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.cc
  src/quiche/common/platform/default/quiche_platform_impl/quiche_time_utils_impl.h
  src/quiche/common/platform/default/quiche_platform_impl/quiche_time_utils_impl.cc
  src/quiche/common/print_elements.h
  src/quiche/common/quiche_buffer_allocator.cc
  src/quiche/common/quiche_buffer_allocator.h
  src/quiche/common/quiche_circular_deque.h
  src/quiche/common/quiche_crypto_logging.cc
  src/quiche/common/quiche_crypto_logging.h
  src/quiche/common/quiche_data_reader.cc
  src/quiche/common/quiche_data_reader.h
  src/quiche/common/quiche_data_writer.cc
  src/quiche/common/quiche_data_writer.h
  src/quiche/common/quiche_endian.h
  src/quiche/common/quiche_feature_flags_list.h
  src/quiche/common/quiche_intrusive_list.h
  src/quiche/common/quiche_ip_address.cc
  src/quiche/common/quiche_ip_address.h
  src/quiche/common/quiche_ip_address_family.cc
  src/quiche/common/quiche_ip_address_family.h
  src/quiche/common/quiche_linked_hash_map.h
  src/quiche/common/quiche_mem_slice.cc
  src/quiche/common/quiche_mem_slice.h
  src/quiche/common/quiche_mem_slice_storage.cc
  src/quiche/common/quiche_mem_slice_storage.h
  src/quiche/common/quiche_random.cc
  src/quiche/common/quiche_random.h
  src/quiche/common/quiche_socket_address.cc
  src/quiche/common/quiche_socket_address.h
  src/quiche/common/quiche_simple_arena.cc
  src/quiche/common/quiche_status_utils.h
  src/quiche/common/quiche_stream.h
  src/quiche/common/quiche_weak_ptr.h
  src/quiche/common/quiche_text_utils.cc
  src/quiche/common/quiche_text_utils.h
  src/quiche/common/simple_buffer_allocator.cc
  src/quiche/common/simple_buffer_allocator.h
  src/quiche/common/structured_headers.cc
  src/quiche/common/structured_headers.h
  src/quiche/common/vectorized_io_utils.cc
  src/quiche/common/vectorized_io_utils.h
  src/quiche/common/wire_serialization.h
  src/quiche/http2/adapter/chunked_buffer.h
  src/quiche/http2/adapter/chunked_buffer.cc
  src/quiche/http2/adapter/data_source.h
  src/quiche/http2/adapter/event_forwarder.cc
  src/quiche/http2/adapter/event_forwarder.h
  src/quiche/http2/adapter/header_validator.cc
  src/quiche/http2/adapter/header_validator.h
  src/quiche/http2/adapter/http2_adapter.h
  src/quiche/http2/adapter/http2_protocol.cc
  src/quiche/http2/adapter/http2_protocol.h
  src/quiche/http2/adapter/http2_session.h
  src/quiche/http2/adapter/http2_util.cc
  src/quiche/http2/adapter/http2_util.h
  src/quiche/http2/adapter/http2_visitor_interface.h
  src/quiche/http2/adapter/noop_header_validator.cc
  src/quiche/http2/adapter/noop_header_validator.h
  src/quiche/http2/adapter/oghttp2_adapter.cc
  src/quiche/http2/adapter/oghttp2_adapter.h
  src/quiche/http2/adapter/oghttp2_session.cc
  src/quiche/http2/adapter/oghttp2_session.h
  src/quiche/http2/adapter/oghttp2_util.cc
  src/quiche/http2/adapter/oghttp2_util.h
  src/quiche/http2/adapter/window_manager.cc
  src/quiche/http2/adapter/window_manager.h
  src/quiche/http2/core/array_output_buffer.cc
  src/quiche/http2/core/array_output_buffer.h
  src/quiche/http2/core/header_byte_listener_interface.h
  src/quiche/http2/core/http2_constants.cc
  src/quiche/http2/core/http2_constants.h
  src/quiche/http2/core/http2_frame_decoder_adapter.cc
  src/quiche/http2/core/http2_frame_decoder_adapter.h
  src/quiche/http2/core/http2_header_block_hpack_listener.h
  src/quiche/http2/core/http2_structures.cc
  src/quiche/http2/core/http2_structures.h
  src/quiche/http2/core/http2_trace_logging.cc
  src/quiche/http2/core/http2_trace_logging.h
  src/quiche/http2/core/no_op_headers_handler.h
  src/quiche/http2/core/priority_write_scheduler.h
  src/quiche/http2/core/recording_headers_handler.cc
  src/quiche/http2/core/recording_headers_handler.h
  src/quiche/http2/core/spdy_alt_svc_wire_format.cc
  src/quiche/http2/core/spdy_alt_svc_wire_format.h
  src/quiche/http2/core/spdy_bitmasks.h
  src/quiche/http2/core/spdy_frame_builder.cc
  src/quiche/http2/core/spdy_frame_builder.h
  src/quiche/http2/core/spdy_framer.cc
  src/quiche/http2/core/spdy_framer.h
  src/quiche/http2/core/spdy_headers_handler_interface.h
  src/quiche/http2/core/spdy_no_op_visitor.cc
  src/quiche/http2/core/spdy_no_op_visitor.h
  src/quiche/http2/core/spdy_protocol.cc
  src/quiche/http2/core/spdy_protocol.h
  src/quiche/http2/core/zero_copy_output_buffer.h
  src/quiche/http2/decoder/decode_buffer.cc
  src/quiche/http2/decoder/decode_buffer.h
  src/quiche/http2/decoder/decode_http2_structures.cc
  src/quiche/http2/decoder/decode_http2_structures.h
  src/quiche/http2/decoder/decode_status.cc
  src/quiche/http2/decoder/decode_status.h
  src/quiche/http2/decoder/frame_decoder_state.cc
  src/quiche/http2/decoder/frame_decoder_state.h
  src/quiche/http2/decoder/http2_frame_decoder.cc
  src/quiche/http2/decoder/http2_frame_decoder.h
  src/quiche/http2/decoder/http2_frame_decoder_listener.cc
  src/quiche/http2/decoder/http2_frame_decoder_listener.h
  src/quiche/http2/decoder/http2_structure_decoder.cc
  src/quiche/http2/decoder/http2_structure_decoder.h
  src/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/continuation_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/continuation_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/data_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/data_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/goaway_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/goaway_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/headers_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/headers_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/ping_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/ping_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/priority_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/priority_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/settings_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/settings_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/unknown_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/unknown_payload_decoder.h
  src/quiche/http2/decoder/payload_decoders/window_update_payload_decoder.cc
  src/quiche/http2/decoder/payload_decoders/window_update_payload_decoder.h
  src/quiche/http2/hpack/decoder/hpack_block_decoder.cc
  src/quiche/http2/hpack/decoder/hpack_block_decoder.h
  src/quiche/http2/hpack/decoder/hpack_decoder.cc
  src/quiche/http2/hpack/decoder/hpack_decoder.h
  src/quiche/http2/hpack/decoder/hpack_decoder_listener.cc
  src/quiche/http2/hpack/decoder/hpack_decoder_listener.h
  src/quiche/http2/hpack/decoder/hpack_decoder_state.cc
  src/quiche/http2/hpack/decoder/hpack_decoder_state.h
  src/quiche/http2/hpack/decoder/hpack_decoder_string_buffer.cc
  src/quiche/http2/hpack/decoder/hpack_decoder_string_buffer.h
  src/quiche/http2/hpack/decoder/hpack_decoder_tables.cc
  src/quiche/http2/hpack/decoder/hpack_decoder_tables.h
  src/quiche/http2/hpack/decoder/hpack_decoding_error.cc
  src/quiche/http2/hpack/decoder/hpack_decoding_error.h
  src/quiche/http2/hpack/decoder/hpack_entry_decoder.cc
  src/quiche/http2/hpack/decoder/hpack_entry_decoder.h
  src/quiche/http2/hpack/decoder/hpack_entry_decoder_listener.cc
  src/quiche/http2/hpack/decoder/hpack_entry_decoder_listener.h
  src/quiche/http2/hpack/decoder/hpack_entry_type_decoder.cc
  src/quiche/http2/hpack/decoder/hpack_entry_type_decoder.h
  src/quiche/http2/hpack/decoder/hpack_string_decoder.cc
  src/quiche/http2/hpack/decoder/hpack_string_decoder.h
  src/quiche/http2/hpack/decoder/hpack_string_decoder_listener.cc
  src/quiche/http2/hpack/decoder/hpack_string_decoder_listener.h
  src/quiche/http2/hpack/decoder/hpack_whole_entry_buffer.cc
  src/quiche/http2/hpack/decoder/hpack_whole_entry_buffer.h
  src/quiche/http2/hpack/decoder/hpack_whole_entry_listener.cc
  src/quiche/http2/hpack/decoder/hpack_whole_entry_listener.h
  src/quiche/http2/hpack/hpack_constants.cc
  src/quiche/http2/hpack/hpack_constants.h
  src/quiche/http2/hpack/hpack_decoder_adapter.cc
  src/quiche/http2/hpack/hpack_decoder_adapter.h
  src/quiche/http2/hpack/hpack_encoder.cc
  src/quiche/http2/hpack/hpack_encoder.h
  src/quiche/http2/hpack/hpack_entry.cc
  src/quiche/http2/hpack/hpack_entry.h
  src/quiche/http2/hpack/hpack_header_table.cc
  src/quiche/http2/hpack/hpack_header_table.h
  src/quiche/http2/hpack/hpack_output_stream.cc
  src/quiche/http2/hpack/hpack_output_stream.h
  src/quiche/http2/hpack/hpack_static_table.cc
  src/quiche/http2/hpack/hpack_static_table.h
  src/quiche/http2/hpack/hpack_static_table_entries.inc
  src/quiche/http2/hpack/http2_hpack_constants.cc
  src/quiche/http2/hpack/http2_hpack_constants.h
  src/quiche/http2/hpack/huffman/hpack_huffman_decoder.cc
  src/quiche/http2/hpack/huffman/hpack_huffman_decoder.h
  src/quiche/http2/hpack/huffman/hpack_huffman_encoder.cc
  src/quiche/http2/hpack/huffman/hpack_huffman_encoder.h
  src/quiche/http2/hpack/huffman/huffman_spec_tables.cc
  src/quiche/http2/hpack/huffman/huffman_spec_tables.h
  src/quiche/http2/hpack/varint/hpack_varint_decoder.cc
  src/quiche/http2/hpack/varint/hpack_varint_decoder.h
  src/quiche/http2/hpack/varint/hpack_varint_encoder.cc
  src/quiche/http2/hpack/varint/hpack_varint_encoder.h
  src/quiche/oblivious_http/buffers/oblivious_http_request.cc
  src/quiche/oblivious_http/buffers/oblivious_http_request.h
  src/quiche/oblivious_http/buffers/oblivious_http_response.cc
  src/quiche/oblivious_http/buffers/oblivious_http_response.h
  src/quiche/oblivious_http/common/oblivious_http_header_key_config.cc
  src/quiche/oblivious_http/common/oblivious_http_header_key_config.h
  src/quiche/oblivious_http/oblivious_http_client.cc
  src/quiche/oblivious_http/oblivious_http_client.h
  src/quiche/oblivious_http/oblivious_http_gateway.cc
  src/quiche/oblivious_http/oblivious_http_gateway.h
  )

set(quiche_quic_SOURCES
  src/quiche/quic/core/congestion_control/bandwidth_sampler.cc
  src/quiche/quic/core/congestion_control/bandwidth_sampler.h
  src/quiche/quic/core/congestion_control/bbr2_drain.cc
  src/quiche/quic/core/congestion_control/bbr2_drain.h
  src/quiche/quic/core/congestion_control/bbr2_misc.cc
  src/quiche/quic/core/congestion_control/bbr2_misc.h
  src/quiche/quic/core/congestion_control/bbr2_probe_bw.cc
  src/quiche/quic/core/congestion_control/bbr2_probe_bw.h
  src/quiche/quic/core/congestion_control/bbr2_probe_rtt.cc
  src/quiche/quic/core/congestion_control/bbr2_probe_rtt.h
  src/quiche/quic/core/congestion_control/bbr2_sender.cc
  src/quiche/quic/core/congestion_control/bbr2_sender.h
  src/quiche/quic/core/congestion_control/bbr2_startup.cc
  src/quiche/quic/core/congestion_control/bbr2_startup.h
  src/quiche/quic/core/congestion_control/bbr_sender.cc
  src/quiche/quic/core/congestion_control/bbr_sender.h
  src/quiche/quic/core/congestion_control/cubic_bytes.cc
  src/quiche/quic/core/congestion_control/cubic_bytes.h
  src/quiche/quic/core/congestion_control/general_loss_algorithm.cc
  src/quiche/quic/core/congestion_control/general_loss_algorithm.h
  src/quiche/quic/core/congestion_control/hybrid_slow_start.cc
  src/quiche/quic/core/congestion_control/hybrid_slow_start.h
  src/quiche/quic/core/congestion_control/loss_detection_interface.h
  src/quiche/quic/core/congestion_control/pacing_sender.cc
  src/quiche/quic/core/congestion_control/pacing_sender.h
  src/quiche/quic/core/congestion_control/prague_sender.cc
  src/quiche/quic/core/congestion_control/prague_sender.h
  src/quiche/quic/core/congestion_control/prr_sender.cc
  src/quiche/quic/core/congestion_control/prr_sender.h
  src/quiche/quic/core/congestion_control/rtt_stats.cc
  src/quiche/quic/core/congestion_control/rtt_stats.h
  src/quiche/quic/core/congestion_control/send_algorithm_interface.cc
  src/quiche/quic/core/congestion_control/send_algorithm_interface.h
  src/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.cc
  src/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h
  src/quiche/quic/core/congestion_control/uber_loss_algorithm.cc
  src/quiche/quic/core/congestion_control/uber_loss_algorithm.h
  src/quiche/quic/core/congestion_control/windowed_filter.h
  src/quiche/quic/core/connection_id_generator.h
  src/quiche/quic/core/crypto/aead_base_decrypter.cc
  src/quiche/quic/core/crypto/aead_base_decrypter.h
  src/quiche/quic/core/crypto/aead_base_encrypter.cc
  src/quiche/quic/core/crypto/aead_base_encrypter.h
  src/quiche/quic/core/crypto/aes_128_gcm_12_decrypter.cc
  src/quiche/quic/core/crypto/aes_128_gcm_12_decrypter.h
  src/quiche/quic/core/crypto/aes_128_gcm_12_encrypter.cc
  src/quiche/quic/core/crypto/aes_128_gcm_12_encrypter.h
  src/quiche/quic/core/crypto/aes_128_gcm_decrypter.cc
  src/quiche/quic/core/crypto/aes_128_gcm_decrypter.h
  src/quiche/quic/core/crypto/aes_128_gcm_encrypter.cc
  src/quiche/quic/core/crypto/aes_128_gcm_encrypter.h
  src/quiche/quic/core/crypto/aes_256_gcm_decrypter.cc
  src/quiche/quic/core/crypto/aes_256_gcm_decrypter.h
  src/quiche/quic/core/crypto/aes_256_gcm_encrypter.cc
  src/quiche/quic/core/crypto/aes_256_gcm_encrypter.h
  src/quiche/quic/core/crypto/aes_base_decrypter.cc
  src/quiche/quic/core/crypto/aes_base_decrypter.h
  src/quiche/quic/core/crypto/aes_base_encrypter.cc
  src/quiche/quic/core/crypto/aes_base_encrypter.h
  src/quiche/quic/core/crypto/boring_utils.h
  src/quiche/quic/core/crypto/cert_compressor.cc
  src/quiche/quic/core/crypto/cert_compressor.h
  src/quiche/quic/core/crypto/certificate_util.cc
  src/quiche/quic/core/crypto/certificate_util.h
  src/quiche/quic/core/crypto/certificate_view.cc
  src/quiche/quic/core/crypto/certificate_view.h
  src/quiche/quic/core/crypto/chacha20_poly1305_decrypter.cc
  src/quiche/quic/core/crypto/chacha20_poly1305_decrypter.h
  src/quiche/quic/core/crypto/chacha20_poly1305_encrypter.cc
  src/quiche/quic/core/crypto/chacha20_poly1305_encrypter.h
  src/quiche/quic/core/crypto/chacha20_poly1305_tls_decrypter.cc
  src/quiche/quic/core/crypto/chacha20_poly1305_tls_decrypter.h
  src/quiche/quic/core/crypto/chacha20_poly1305_tls_encrypter.cc
  src/quiche/quic/core/crypto/chacha20_poly1305_tls_encrypter.h
  src/quiche/quic/core/crypto/chacha_base_decrypter.cc
  src/quiche/quic/core/crypto/chacha_base_decrypter.h
  src/quiche/quic/core/crypto/chacha_base_encrypter.cc
  src/quiche/quic/core/crypto/chacha_base_encrypter.h
  src/quiche/quic/core/crypto/channel_id.cc
  src/quiche/quic/core/crypto/channel_id.h
  src/quiche/quic/core/crypto/client_proof_source.cc
  src/quiche/quic/core/crypto/client_proof_source.h
  src/quiche/quic/core/crypto/crypto_framer.cc
  src/quiche/quic/core/crypto/crypto_framer.h
  src/quiche/quic/core/crypto/crypto_handshake.cc
  src/quiche/quic/core/crypto/crypto_handshake.h
  src/quiche/quic/core/crypto/crypto_handshake_message.cc
  src/quiche/quic/core/crypto/crypto_handshake_message.h
  src/quiche/quic/core/crypto/crypto_message_parser.h
  src/quiche/quic/core/crypto/crypto_protocol.h
  src/quiche/quic/core/crypto/crypto_secret_boxer.cc
  src/quiche/quic/core/crypto/crypto_secret_boxer.h
  src/quiche/quic/core/crypto/crypto_utils.cc
  src/quiche/quic/core/crypto/crypto_utils.h
  src/quiche/quic/core/crypto/curve25519_key_exchange.cc
  src/quiche/quic/core/crypto/curve25519_key_exchange.h
  src/quiche/quic/core/crypto/key_exchange.cc
  src/quiche/quic/core/crypto/key_exchange.h
  src/quiche/quic/core/crypto/null_decrypter.cc
  src/quiche/quic/core/crypto/null_decrypter.h
  src/quiche/quic/core/crypto/null_encrypter.cc
  src/quiche/quic/core/crypto/null_encrypter.h
  src/quiche/quic/core/crypto/p256_key_exchange.cc
  src/quiche/quic/core/crypto/p256_key_exchange.h
  src/quiche/quic/core/crypto/proof_source.cc
  src/quiche/quic/core/crypto/proof_source.h
  src/quiche/quic/core/crypto/proof_source_x509.cc
  src/quiche/quic/core/crypto/proof_source_x509.h
  src/quiche/quic/core/crypto/proof_verifier.h
  src/quiche/quic/core/crypto/quic_client_session_cache.cc
  src/quiche/quic/core/crypto/quic_client_session_cache.h
  src/quiche/quic/core/crypto/quic_compressed_certs_cache.cc
  src/quiche/quic/core/crypto/quic_compressed_certs_cache.h
  src/quiche/quic/core/crypto/quic_crypter.cc
  src/quiche/quic/core/crypto/quic_crypter.h
  src/quiche/quic/core/crypto/quic_crypto_client_config.cc
  src/quiche/quic/core/crypto/quic_crypto_client_config.h
  src/quiche/quic/core/crypto/quic_crypto_proof.cc
  src/quiche/quic/core/crypto/quic_crypto_proof.h
  src/quiche/quic/core/crypto/quic_crypto_server_config.cc
  src/quiche/quic/core/crypto/quic_crypto_server_config.h
  src/quiche/quic/core/crypto/quic_decrypter.cc
  src/quiche/quic/core/crypto/quic_decrypter.h
  src/quiche/quic/core/crypto/quic_encrypter.cc
  src/quiche/quic/core/crypto/quic_encrypter.h
  src/quiche/quic/core/crypto/quic_hkdf.cc
  src/quiche/quic/core/crypto/quic_hkdf.h
  src/quiche/quic/core/crypto/tls_client_connection.cc
  src/quiche/quic/core/crypto/tls_client_connection.h
  src/quiche/quic/core/crypto/tls_connection.cc
  src/quiche/quic/core/crypto/tls_connection.h
  src/quiche/quic/core/crypto/tls_server_connection.cc
  src/quiche/quic/core/crypto/tls_server_connection.h
  src/quiche/quic/core/crypto/transport_parameters.cc
  src/quiche/quic/core/crypto/transport_parameters.h
  src/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.cc
  src/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.h
  src/quiche/quic/core/deterministic_connection_id_generator.cc
  src/quiche/quic/core/deterministic_connection_id_generator.h
  src/quiche/quic/core/frames/quic_ack_frame.cc
  src/quiche/quic/core/frames/quic_ack_frame.h
  src/quiche/quic/core/frames/quic_ack_frequency_frame.cc
  src/quiche/quic/core/frames/quic_ack_frequency_frame.h
  src/quiche/quic/core/frames/quic_blocked_frame.cc
  src/quiche/quic/core/frames/quic_blocked_frame.h
  src/quiche/quic/core/frames/quic_connection_close_frame.cc
  src/quiche/quic/core/frames/quic_connection_close_frame.h
  src/quiche/quic/core/frames/quic_crypto_frame.cc
  src/quiche/quic/core/frames/quic_crypto_frame.h
  src/quiche/quic/core/frames/quic_datagram_frame.cc
  src/quiche/quic/core/frames/quic_datagram_frame.h
  src/quiche/quic/core/frames/quic_frame.cc
  src/quiche/quic/core/frames/quic_frame.h
  src/quiche/quic/core/frames/quic_goaway_frame.cc
  src/quiche/quic/core/frames/quic_goaway_frame.h
  src/quiche/quic/core/frames/quic_handshake_done_frame.cc
  src/quiche/quic/core/frames/quic_handshake_done_frame.h
  src/quiche/quic/core/frames/quic_immediate_ack_frame.cc
  src/quiche/quic/core/frames/quic_immediate_ack_frame.h
  src/quiche/quic/core/frames/quic_inlined_frame.h
  src/quiche/quic/core/frames/quic_max_streams_frame.cc
  src/quiche/quic/core/frames/quic_max_streams_frame.h
  src/quiche/quic/core/frames/quic_mtu_discovery_frame.h
  src/quiche/quic/core/frames/quic_new_connection_id_frame.cc
  src/quiche/quic/core/frames/quic_new_connection_id_frame.h
  src/quiche/quic/core/frames/quic_new_token_frame.cc
  src/quiche/quic/core/frames/quic_new_token_frame.h
  src/quiche/quic/core/frames/quic_padding_frame.cc
  src/quiche/quic/core/frames/quic_padding_frame.h
  src/quiche/quic/core/frames/quic_path_challenge_frame.cc
  src/quiche/quic/core/frames/quic_path_challenge_frame.h
  src/quiche/quic/core/frames/quic_path_response_frame.cc
  src/quiche/quic/core/frames/quic_path_response_frame.h
  src/quiche/quic/core/frames/quic_ping_frame.cc
  src/quiche/quic/core/frames/quic_ping_frame.h
  src/quiche/quic/core/frames/quic_reset_stream_at_frame.h
  src/quiche/quic/core/frames/quic_reset_stream_at_frame.cc
  src/quiche/quic/core/frames/quic_retire_connection_id_frame.cc
  src/quiche/quic/core/frames/quic_retire_connection_id_frame.h
  src/quiche/quic/core/frames/quic_rst_stream_frame.cc
  src/quiche/quic/core/frames/quic_rst_stream_frame.h
  src/quiche/quic/core/frames/quic_stop_sending_frame.cc
  src/quiche/quic/core/frames/quic_stop_sending_frame.h
  src/quiche/quic/core/frames/quic_stop_waiting_frame.cc
  src/quiche/quic/core/frames/quic_stop_waiting_frame.h
  src/quiche/quic/core/frames/quic_stream_frame.cc
  src/quiche/quic/core/frames/quic_stream_frame.h
  src/quiche/quic/core/frames/quic_streams_blocked_frame.cc
  src/quiche/quic/core/frames/quic_streams_blocked_frame.h
  src/quiche/quic/core/frames/quic_window_update_frame.cc
  src/quiche/quic/core/frames/quic_window_update_frame.h
  src/quiche/quic/core/handshaker_delegate_interface.h
  src/quiche/quic/core/http/http_constants.cc
  src/quiche/quic/core/http/http_constants.h
  src/quiche/quic/core/http/http_decoder.cc
  src/quiche/quic/core/http/http_decoder.h
  src/quiche/quic/core/http/http_encoder.cc
  src/quiche/quic/core/http/http_encoder.h
  src/quiche/quic/core/http/metadata_decoder.cc
  src/quiche/quic/core/http/metadata_decoder.h
  src/quiche/quic/core/http/quic_connection_migration_manager.cc
  src/quiche/quic/core/http/quic_connection_migration_manager.h
  src/quiche/quic/core/http/http_frames.h
  src/quiche/quic/core/http/quic_header_list.cc
  src/quiche/quic/core/http/quic_header_list.h
  src/quiche/quic/core/http/quic_headers_stream.cc
  src/quiche/quic/core/http/quic_headers_stream.h
  src/quiche/quic/core/http/quic_receive_control_stream.cc
  src/quiche/quic/core/http/quic_receive_control_stream.h
  src/quiche/quic/core/http/quic_send_control_stream.cc
  src/quiche/quic/core/http/quic_send_control_stream.h
  src/quiche/quic/core/http/quic_server_initiated_spdy_stream.cc
  src/quiche/quic/core/http/quic_server_initiated_spdy_stream.h
  src/quiche/quic/core/http/quic_server_session_base.cc
  src/quiche/quic/core/http/quic_server_session_base.h
  src/quiche/quic/core/http/quic_spdy_client_session.cc
  src/quiche/quic/core/http/quic_spdy_client_session.h
  src/quiche/quic/core/http/quic_spdy_client_session_base.cc
  src/quiche/quic/core/http/quic_spdy_client_session_base.h
  src/quiche/quic/core/http/quic_spdy_client_session_with_migration.cc
  src/quiche/quic/core/http/quic_spdy_client_session_with_migration.h
  src/quiche/quic/core/http/quic_spdy_client_stream.cc
  src/quiche/quic/core/http/quic_spdy_client_stream.h
  src/quiche/quic/core/http/quic_spdy_server_stream_base.cc
  src/quiche/quic/core/http/quic_spdy_server_stream_base.h
  src/quiche/quic/core/http/quic_spdy_session.cc
  src/quiche/quic/core/http/quic_spdy_session.h
  src/quiche/quic/core/http/quic_spdy_stream.cc
  src/quiche/quic/core/http/quic_spdy_stream.h
  src/quiche/quic/core/http/quic_spdy_stream_body_manager.cc
  src/quiche/quic/core/http/quic_spdy_stream_body_manager.h
  src/quiche/quic/core/http/spdy_utils.cc
  src/quiche/quic/core/http/spdy_utils.h
  src/quiche/quic/core/http/web_transport_http3.cc
  src/quiche/quic/core/http/web_transport_http3.h
  src/quiche/quic/core/http/web_transport_stream_adapter.cc
  src/quiche/quic/core/http/web_transport_stream_adapter.h
  src/quiche/quic/core/legacy_quic_stream_id_manager.cc
  src/quiche/quic/core/legacy_quic_stream_id_manager.h
  src/quiche/quic/core/packet_number_indexed_queue.h
  src/quiche/quic/core/proto/cached_network_parameters_proto.h
  src/quiche/quic/core/proto/crypto_server_config_proto.h
  src/quiche/quic/core/proto/source_address_token_proto.h
  src/quiche/quic/core/qpack/new_qpack_blocking_manager.cc
  src/quiche/quic/core/qpack/new_qpack_blocking_manager.h
  src/quiche/quic/core/qpack/qpack_blocking_manager_shim.h
  src/quiche/quic/core/qpack/qpack_decoded_headers_accumulator.cc
  src/quiche/quic/core/qpack/qpack_decoded_headers_accumulator.h
  src/quiche/quic/core/qpack/qpack_decoder.cc
  src/quiche/quic/core/qpack/qpack_decoder.h
  src/quiche/quic/core/qpack/qpack_decoder_stream_receiver.cc
  src/quiche/quic/core/qpack/qpack_decoder_stream_receiver.h
  src/quiche/quic/core/qpack/qpack_decoder_stream_sender.cc
  src/quiche/quic/core/qpack/qpack_decoder_stream_sender.h
  src/quiche/quic/core/qpack/qpack_encoder.cc
  src/quiche/quic/core/qpack/qpack_encoder.h
  src/quiche/quic/core/qpack/qpack_encoder_stream_receiver.cc
  src/quiche/quic/core/qpack/qpack_encoder_stream_receiver.h
  src/quiche/quic/core/qpack/qpack_encoder_stream_sender.cc
  src/quiche/quic/core/qpack/qpack_encoder_stream_sender.h
  src/quiche/quic/core/qpack/qpack_header_table.cc
  src/quiche/quic/core/qpack/qpack_header_table.h
  src/quiche/quic/core/qpack/qpack_index_conversions.cc
  src/quiche/quic/core/qpack/qpack_index_conversions.h
  src/quiche/quic/core/qpack/qpack_instruction_decoder.cc
  src/quiche/quic/core/qpack/qpack_instruction_decoder.h
  src/quiche/quic/core/qpack/qpack_instruction_encoder.cc
  src/quiche/quic/core/qpack/qpack_instruction_encoder.h
  src/quiche/quic/core/qpack/qpack_instructions.cc
  src/quiche/quic/core/qpack/qpack_instructions.h
  src/quiche/quic/core/qpack/qpack_progressive_decoder.cc
  src/quiche/quic/core/qpack/qpack_progressive_decoder.h
  src/quiche/quic/core/qpack/qpack_receive_stream.cc
  src/quiche/quic/core/qpack/qpack_receive_stream.h
  src/quiche/quic/core/qpack/qpack_required_insert_count.cc
  src/quiche/quic/core/qpack/qpack_required_insert_count.h
  src/quiche/quic/core/qpack/qpack_send_stream.cc
  src/quiche/quic/core/qpack/qpack_send_stream.h
  src/quiche/quic/core/qpack/qpack_static_table.cc
  src/quiche/quic/core/qpack/qpack_static_table.h
  src/quiche/quic/core/qpack/qpack_stream_receiver.h
  src/quiche/quic/core/qpack/qpack_stream_sender_delegate.h
  src/quiche/quic/core/qpack/value_splitting_header_list.cc
  src/quiche/quic/core/qpack/value_splitting_header_list.h
  src/quiche/quic/core/quic_ack_listener_interface.cc
  src/quiche/quic/core/quic_ack_listener_interface.h
  src/quiche/quic/core/quic_alarm.cc
  src/quiche/quic/core/quic_alarm.h
  src/quiche/quic/core/quic_alarm_factory.h
  src/quiche/quic/core/quic_arena_scoped_ptr.h
  src/quiche/quic/core/quic_bandwidth.cc
  src/quiche/quic/core/quic_bandwidth.h
  src/quiche/quic/core/quic_blocked_writer_interface.h
  src/quiche/quic/core/quic_blocked_writer_list.h
  src/quiche/quic/core/quic_blocked_writer_list.cc
  src/quiche/quic/core/quic_buffered_packet_store.cc
  src/quiche/quic/core/quic_buffered_packet_store.h
  src/quiche/quic/core/quic_chaos_protector.cc
  src/quiche/quic/core/quic_chaos_protector.h
  src/quiche/quic/core/quic_clock.h
  src/quiche/quic/core/quic_coalesced_packet.cc
  src/quiche/quic/core/quic_coalesced_packet.h
  src/quiche/quic/core/quic_config.cc
  src/quiche/quic/core/quic_config.h
  src/quiche/quic/core/quic_connection.cc
  src/quiche/quic/core/quic_connection.h
  src/quiche/quic/core/quic_connection_alarms.h
  src/quiche/quic/core/quic_connection_alarms.cc
  src/quiche/quic/core/quic_connection_context.cc
  src/quiche/quic/core/quic_connection_context.h
  src/quiche/quic/core/quic_connection_id.cc
  src/quiche/quic/core/quic_connection_id.h
  src/quiche/quic/core/quic_connection_id_manager.cc
  src/quiche/quic/core/quic_connection_id_manager.h
  src/quiche/quic/core/quic_connection_stats.cc
  src/quiche/quic/core/quic_connection_stats.h
  src/quiche/quic/core/quic_constants.cc
  src/quiche/quic/core/quic_constants.h
  src/quiche/quic/core/quic_control_frame_manager.cc
  src/quiche/quic/core/quic_control_frame_manager.h
  src/quiche/quic/core/quic_crypto_client_handshaker.cc
  src/quiche/quic/core/quic_crypto_client_handshaker.h
  src/quiche/quic/core/quic_crypto_client_stream.cc
  src/quiche/quic/core/quic_crypto_client_stream.h
  src/quiche/quic/core/quic_crypto_handshaker.cc
  src/quiche/quic/core/quic_crypto_handshaker.h
  src/quiche/quic/core/quic_crypto_server_stream.cc
  src/quiche/quic/core/quic_crypto_server_stream.h
  src/quiche/quic/core/quic_crypto_server_stream_base.cc
  src/quiche/quic/core/quic_crypto_server_stream_base.h
  src/quiche/quic/core/quic_crypto_stream.cc
  src/quiche/quic/core/quic_crypto_stream.h
  src/quiche/quic/core/quic_data_reader.cc
  src/quiche/quic/core/quic_data_reader.h
  src/quiche/quic/core/quic_data_writer.cc
  src/quiche/quic/core/quic_data_writer.h
  src/quiche/quic/core/quic_datagram_queue.cc
  src/quiche/quic/core/quic_datagram_queue.h
  src/quiche/quic/core/quic_default_clock.cc
  src/quiche/quic/core/quic_default_clock.h
  src/quiche/quic/core/quic_dispatcher.cc
  src/quiche/quic/core/quic_dispatcher.h
  src/quiche/quic/core/quic_dispatcher_stats.cc
  src/quiche/quic/core/quic_dispatcher_stats.h
  src/quiche/quic/core/quic_error_codes.cc
  src/quiche/quic/core/quic_error_codes.h
  src/quiche/quic/core/quic_flow_controller.cc
  src/quiche/quic/core/quic_flow_controller.h
  src/quiche/quic/core/quic_force_blockable_packet_writer.cc
  src/quiche/quic/core/quic_force_blockable_packet_writer.h
  src/quiche/quic/core/quic_framer.cc
  src/quiche/quic/core/quic_framer.h
  src/quiche/quic/core/quic_generic_session.cc
  src/quiche/quic/core/quic_generic_session.h
  src/quiche/quic/core/quic_idle_network_detector.cc
  src/quiche/quic/core/quic_idle_network_detector.h
  src/quiche/quic/core/quic_interval.h
  src/quiche/quic/core/quic_interval_deque.h
  src/quiche/quic/core/quic_interval_set.h
  src/quiche/quic/core/quic_lru_cache.h
  src/quiche/quic/core/quic_mtu_discovery.cc
  src/quiche/quic/core/quic_mtu_discovery.h
  src/quiche/quic/core/quic_network_blackhole_detector.cc
  src/quiche/quic/core/quic_network_blackhole_detector.h
  src/quiche/quic/core/quic_one_block_arena.h
  src/quiche/quic/core/quic_packet_creator.cc
  src/quiche/quic/core/quic_packet_creator.h
  src/quiche/quic/core/quic_packet_number.cc
  src/quiche/quic/core/quic_packet_number.h
  src/quiche/quic/core/quic_packet_writer.h
  src/quiche/quic/core/quic_packets.cc
  src/quiche/quic/core/quic_packets.h
  src/quiche/quic/core/quic_path_validator.cc
  src/quiche/quic/core/quic_path_validator.h
  src/quiche/quic/core/quic_ping_manager.cc
  src/quiche/quic/core/quic_ping_manager.h
  src/quiche/quic/core/quic_queue_alarm_factory.cc
  src/quiche/quic/core/quic_queue_alarm_factory.h
  src/quiche/quic/core/quic_received_packet_manager.cc
  src/quiche/quic/core/quic_received_packet_manager.h
  src/quiche/quic/core/quic_sent_packet_manager.cc
  src/quiche/quic/core/quic_sent_packet_manager.h
  src/quiche/quic/core/quic_server_id.cc
  src/quiche/quic/core/quic_server_id.h
  src/quiche/quic/core/quic_session.cc
  src/quiche/quic/core/quic_session.h
  src/quiche/quic/core/quic_socket_address_coder.cc
  src/quiche/quic/core/quic_socket_address_coder.h
  src/quiche/quic/core/quic_stream.cc
  src/quiche/quic/core/quic_stream.h
  src/quiche/quic/core/quic_stream_frame_data_producer.h
  src/quiche/quic/core/quic_stream_id_manager.cc
  src/quiche/quic/core/quic_stream_id_manager.h
  src/quiche/quic/core/quic_stream_priority.cc
  src/quiche/quic/core/quic_stream_priority.h
  src/quiche/quic/core/quic_stream_send_buffer.cc
  src/quiche/quic/core/quic_stream_send_buffer.h
  src/quiche/quic/core/quic_stream_send_buffer_base.cc
  src/quiche/quic/core/quic_stream_send_buffer_base.h
  src/quiche/quic/core/quic_stream_send_buffer_inling.cc
  src/quiche/quic/core/quic_stream_send_buffer_inling.h
  src/quiche/quic/core/quic_stream_sequencer.cc
  src/quiche/quic/core/quic_stream_sequencer.h
  src/quiche/quic/core/quic_stream_sequencer_buffer.cc
  src/quiche/quic/core/quic_stream_sequencer_buffer.h
  src/quiche/quic/core/quic_sustained_bandwidth_recorder.cc
  src/quiche/quic/core/quic_sustained_bandwidth_recorder.h
  src/quiche/quic/core/quic_tag.cc
  src/quiche/quic/core/quic_tag.h
  src/quiche/quic/core/quic_time.cc
  src/quiche/quic/core/quic_time.h
  src/quiche/quic/core/quic_time_accumulator.h
  src/quiche/quic/core/quic_time_wait_list_manager.cc
  src/quiche/quic/core/quic_time_wait_list_manager.h
  src/quiche/quic/core/quic_transmission_info.cc
  src/quiche/quic/core/quic_transmission_info.h
  src/quiche/quic/core/quic_types.cc
  src/quiche/quic/core/quic_types.h
  src/quiche/quic/core/quic_unacked_packet_map.cc
  src/quiche/quic/core/quic_unacked_packet_map.h
  src/quiche/quic/core/quic_utils.cc
  src/quiche/quic/core/quic_utils.h
  src/quiche/quic/core/quic_version_manager.cc
  src/quiche/quic/core/quic_version_manager.h
  src/quiche/quic/core/quic_versions.cc
  src/quiche/quic/core/quic_versions.h
  src/quiche/quic/core/quic_write_blocked_list.cc
  src/quiche/quic/core/quic_write_blocked_list.h
  src/quiche/quic/core/session_notifier_interface.h
  src/quiche/quic/core/stream_delegate_interface.h
  src/quiche/quic/core/tls_chlo_extractor.cc
  src/quiche/quic/core/tls_chlo_extractor.h
  src/quiche/quic/core/tls_client_handshaker.cc
  src/quiche/quic/core/tls_client_handshaker.h
  src/quiche/quic/core/tls_handshaker.cc
  src/quiche/quic/core/tls_handshaker.h
  src/quiche/quic/core/tls_server_handshaker.cc
  src/quiche/quic/core/tls_server_handshaker.h
  src/quiche/quic/core/uber_quic_stream_id_manager.cc
  src/quiche/quic/core/uber_quic_stream_id_manager.h
  src/quiche/quic/core/uber_received_packet_manager.cc
  src/quiche/quic/core/uber_received_packet_manager.h
  src/quiche/quic/core/web_transport_stats.cc
  src/quiche/quic/core/web_transport_stats.h
  src/quiche/quic/core/web_transport_write_blocked_list.cc
  src/quiche/quic/core/web_transport_write_blocked_list.h
  src/quiche/quic/core/web_transport_interface.h
  src/quiche/quic/platform/api/quic_bug_tracker.h
  src/quiche/quic/platform/api/quic_client_stats.h
  src/quiche/quic/platform/api/quic_export.h
  src/quiche/quic/platform/api/quic_exported_stats.h
  src/quiche/quic/platform/api/quic_flag_utils.h
  src/quiche/quic/platform/api/quic_flags.h
  src/quiche/quic/platform/api/quic_hostname_utils.h
  src/quiche/quic/platform/api/quic_logging.h
  src/quiche/quic/platform/api/quic_mutex.h
  src/quiche/quic/platform/api/quic_server_stats.h
  src/quiche/quic/platform/api/quic_stack_trace.h
  src/quiche/quic/platform/api/quic_testvalue.h
  src/quiche/quic/platform/api/quic_thread.h
  src/quiche/web_transport/complete_buffer_visitor.cc
  src/quiche/web_transport/complete_buffer_visitor.h
  src/quiche/web_transport/encapsulated/encapsulated_web_transport.cc
  src/quiche/web_transport/encapsulated/encapsulated_web_transport.h
  src/quiche/web_transport/web_transport.h
  src/quiche/web_transport/web_transport_headers.cc
  src/quiche/web_transport/web_transport_headers.h
  src/quiche/web_transport/web_transport_priority_scheduler.cc
  src/quiche/web_transport/web_transport_priority_scheduler.h
  )

set(quiche_nghttp2_SOURCES
  src/quiche/http2/adapter/nghttp2.h
  src/quiche/http2/adapter/nghttp2_adapter.cc
  src/quiche/http2/adapter/nghttp2_adapter.h
  src/quiche/http2/adapter/nghttp2_callbacks.cc
  src/quiche/http2/adapter/nghttp2_callbacks.h
  src/quiche/http2/adapter/nghttp2_data_provider.cc
  src/quiche/http2/adapter/nghttp2_data_provider.h
  src/quiche/http2/adapter/nghttp2_session.cc
  src/quiche/http2/adapter/nghttp2_session.h
  src/quiche/http2/adapter/nghttp2_util.cc
  src/quiche/http2/adapter/nghttp2_util.h
  )
if (NOT USE_NGHTTP2)
  set(quiche_nghttp2_SOURCES)
endif()

set(quiche_protos
  src/quiche/quic/core/proto/cached_network_parameters.proto
  src/quiche/quic/core/proto/crypto_server_config.proto
  src/quiche/quic/core/proto/source_address_token.proto
  )

set(PROTOBUF_IMPORT_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src)
protobuf_generate_cpp(quiche_protos_SRCS quiche_protos_HDRS ${quiche_protos})

add_library(quiche STATIC
  ${quiche_SRCS}
  ${quiche_nghttp2_SOURCES}
  )

if (USE_LTO_CMAKE)
  set_property(TARGET quiche
    PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
endif()

target_include_directories(quiche PUBLIC
  ${CMAKE_CURRENT_SOURCE_DIR}/overrides
  ${CMAKE_CURRENT_BINARY_DIR}/src
  ${CMAKE_CURRENT_BINARY_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}/..
  ${CMAKE_CURRENT_SOURCE_DIR}/../../src
  ${CMAKE_CURRENT_SOURCE_DIR}/../../
  src/quiche/common/platform/default
  src
  )

target_link_libraries(quiche PUBLIC
  crypto
  ssl
  url
  asio
  absl::container_common
  absl::btree
  absl::flat_hash_map
  absl::flat_hash_set
  absl::inlined_vector
  absl::node_hash_map
  absl::hash
  absl::memory
  absl::int128
  absl::status
  absl::statusor
  absl::strings
  absl::str_format
  absl::time
  absl::optional
  absl::span

  absl::synchronization
  absl::stacktrace
  absl::symbolize
  absl::flags
  absl::flags_parse
  absl::flags_marshalling
  )

if (USE_NGHTTP2)
  target_include_directories(quiche PUBLIC ${NGHTTP2_INCLUDE_DIRS})
  target_link_directories(quiche PUBLIC ${NGHTTP2_LIBRARY_DIRS})
  target_link_libraries(quiche PUBLIC ${NGHTTP2_LIBRARIES})
endif()

if (USE_HTTP3)
  target_sources(quiche PRIVATE
    ${quiche_quic_SOURCES} #require zlib and protobuf
    ${quiche_protos_SRCS}
  )
  target_link_libraries(quiche PUBLIC
    libprotobuf-lite
    ${ZLIB_LIBRARIES}
  )
endif()

if (COMPILER_CLANG)
  set_target_properties(quiche PROPERTIES
    COMPILE_FLAGS "-Wno-missing-prototypes -Wno-implicit-fallthrough -Wno-format-nonliteral")
elseif (COMPILER_GCC)
  set_target_properties(quiche PROPERTIES
    COMPILE_FLAGS "-Wno-missing-declarations -Wno-implicit-fallthrough -Wno-format-nonliteral -Wno-ignored-qualifiers -Wno-unused-variable -Wno-deprecated-copy -Wno-unused-but-set-variable -Wno-strict-overflow")
elseif (COMPILER_MSVC)
  set_target_properties(quiche PROPERTIES
    COMPILE_FLAGS "/wd4267 /wd4244 /wd4068 /wd4305 /wd4309 /wd4334 /DQUIC_FRAME_DEBUG=0")
endif()

if (USE_BALSA_HTTP_PARSER)
  add_library(balsa STATIC
    src/quiche/balsa/balsa_enums.h
    src/quiche/balsa/balsa_frame.h
    src/quiche/balsa/balsa_headers.h
    src/quiche/balsa/balsa_headers_sequence.h
    src/quiche/balsa/balsa_visitor_interface.h
    src/quiche/balsa/framer_interface.h
    src/quiche/balsa/header_api.h
    src/quiche/balsa/header_properties.h
    src/quiche/balsa/http_validation_policy.h
    src/quiche/balsa/noop_balsa_visitor.h
    src/quiche/balsa/simple_buffer.h
    src/quiche/balsa/standard_header_map.h
    src/quiche/balsa/balsa_enums.cc
    src/quiche/balsa/balsa_frame.cc
    src/quiche/balsa/balsa_headers.cc
    src/quiche/balsa/balsa_headers_sequence.cc
    src/quiche/balsa/header_properties.cc
    src/quiche/balsa/simple_buffer.cc
    src/quiche/balsa/standard_header_map.cc
    )

  if (USE_LTO_CMAKE)
    set_property(TARGET balsa
      PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
  endif()

  target_include_directories(balsa PUBLIC
    src
    )

  target_link_libraries(balsa PUBLIC
    quiche
    absl::flat_hash_map
    absl::flat_hash_set
    absl::memory
    absl::strings)
endif()

