| # Copyright (c) 2025 Project CHIP Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| import("//build_overrides/build.gni") |
| import("//build_overrides/chip.gni") |
| |
| import("${chip_root}/build/chip/tools.gni") |
| |
| import("${build_root}/config/linux/pkg_config.gni") |
| |
| assert(chip_build_tools) |
| |
| config("config") { |
| cflags = [ "-Wno-shadow" ] |
| |
| if (is_clang) { |
| # libdatachannel has a lot of these like: |
| # ...... libdatachannel/repo/include/rtc/h265nalunit.hpp:40:60: error: implicit conversion loses integer precision: 'int' |
| # to 'uint8_t' (aka 'unsigned char') [-Werror,-Wimplicit-int-conversion] |
| # 40 | uint8_t nuhLayerId() const { return ((_first & 0x1) << 5) | ((_second & 0b1111'1000) >> 3); } |
| cflags += [ "-Wno-implicit-int-conversion" ] |
| } |
| |
| include_dirs = [ |
| "include", |
| "include/clusters/chime", |
| "include/clusters/webrtc-provider", |
| "include/clusters/camera-avstream-mgmt", |
| "include/clusters/camera-avsettingsuserlevel-mgmt", |
| "include/clusters/push-av-stream-transport", |
| "include/clusters/zone-mgmt", |
| "include/media-controller", |
| "include/transport", |
| "include/uploader", |
| "include/pushav-transport", |
| "${chip_root}/examples/camera-app/camera-common/include", |
| "${chip_root}/examples/camera-app/camera-common/include/media-controller", |
| "${chip_root}/examples/camera-app/camera-common/include/camera-avstream-controller", |
| "${chip_root}/examples/camera-app/camera-common/include/webrtc-provider-controller", |
| "${chip_root}/examples/camera-app/camera-common/include/transport", |
| "${chip_root}/third_party/libdatachannel/repo/include", |
| ] |
| } |
| |
| pkg_config("ffmpeg") { |
| packages = [ |
| "libavformat", |
| "libavcodec", |
| "libavutil", |
| ] |
| } |
| |
| pkg_config("gstreamer") { |
| packages = [ |
| "gstreamer-1.0", |
| "gstreamer-app-1.0", |
| "gobject-2.0", |
| ] |
| } |
| |
| executable("chip-camera-app") { |
| configs += [ ":config" ] |
| |
| configs += [ ":gstreamer" ] |
| |
| configs += [ ":ffmpeg" ] |
| libs = [ "curl" ] |
| |
| sources = [ |
| "${chip_root}/examples/camera-app/linux/include/media-controller/default-media-controller.h", |
| "${chip_root}/examples/camera-app/linux/include/pushav-prerollbuffer.h", |
| "${chip_root}/examples/camera-app/linux/src/CameraAppCommandDelegate.cpp", |
| "${chip_root}/examples/camera-app/linux/src/camera-device.cpp", |
| "${chip_root}/examples/camera-app/linux/src/clusters/camera-avsettingsuserlevel-mgmt/camera-avsettingsuserlevel-manager.cpp", |
| "${chip_root}/examples/camera-app/linux/src/clusters/camera-avstream-mgmt/camera-av-stream-manager.cpp", |
| "${chip_root}/examples/camera-app/linux/src/clusters/chime/chime-manager.cpp", |
| "${chip_root}/examples/camera-app/linux/src/clusters/push-av-stream-transport/push-av-stream-manager.cpp", |
| "${chip_root}/examples/camera-app/linux/src/clusters/webrtc-provider/webrtc-provider-manager.cpp", |
| "${chip_root}/examples/camera-app/linux/src/clusters/zone-mgmt/zone-manager.cpp", |
| "${chip_root}/examples/camera-app/linux/src/media-controller/default-media-controller.cpp", |
| "${chip_root}/examples/camera-app/linux/src/pushav-clip-recorder.cpp", |
| "${chip_root}/examples/camera-app/linux/src/pushav-prerollbuffer.cpp", |
| "${chip_root}/examples/camera-app/linux/src/pushav-transport/pushav-transport.cpp", |
| "${chip_root}/examples/camera-app/linux/src/uploader/pushav-uploader.cpp", |
| "${chip_root}/examples/camera-app/linux/src/webrtc-libdatachannel.cpp", |
| "${chip_root}/examples/camera-app/linux/src/webrtc-transport.cpp", |
| "include/CHIPProjectAppConfig.h", |
| "main.cpp", |
| ] |
| |
| deps = [ |
| "${chip_root}/examples/camera-app/camera-common", |
| "${chip_root}/examples/camera-app/camera-common:camera-lib", |
| "${chip_root}/examples/platform/linux:app-main", |
| "${chip_root}/src/lib", |
| "${chip_root}/third_party/libdatachannel:libdatachannel", |
| ] |
| |
| output_dir = root_out_dir |
| } |
| |
| group("linux") { |
| deps = [ ":chip-camera-app" ] |
| } |
| |
| group("default") { |
| deps = [ ":chip-camera-app" ] |
| } |