Roll build/ 371ecb089..f2bcd9276 (34 commits) https://chromium.googlesource.com/chromium/src/build/+log/371ecb089d96..f2bcd9276005 $ git log 371ecb089..f2bcd9276 --date=short --no-merges --format='%ad %ae %s' 2025-11-26 wnwen android: Update docs to use ChromePublic/Trichrome 2025-11-26 zijiehe [fuchsia] Move permission control to web_engine_config 2025-11-26 tikuta build: Do not include buildtools directory in clang modules build 2025-11-25 chromium-internal-autoroll Roll Fuchsia Internal Images from 30.20251118.102.1 to 30.20251125.103.1 2025-11-25 msta Write a script to analyze the amount of time spent #including each file. 2025-11-25 ajgo Delayload iphlpapi & dhcpcsvc 2025-11-25 justincohen ios: Enforce EarlyMallocZoneRegistration load order in Chrome 2025-11-21 gulfem [build] Balanced partitioning for section ordering 2025-11-21 agrieve Revert "build: Speed up JUnit test listing" 2025-11-21 victorvianna [build] Remove use_cxx17 support 2025-11-21 victorvianna [build] Allow other repos to control use_cxx23 with build_overrides 2025-11-21 pkaplan wrap the privileged helper executable identifier string in quotes 2025-11-21 jmarc Enable checking system_headers for windows compile. 2025-11-21 zequanwu Reland "Roll clang+rust llvmorg-22-init-12326-g8a5f1533-2 : llvmorg-22-init-14273-gea10026b-1 / ab925646fae038b02bd462cd328ae9eef1639236-1 : 11339a0ef5ed586bb7ea4f85a9b7287880caac3a-1" 2025-11-21 luci-bisection Revert "Roll clang+rust llvmorg-22-init-12326-g8a5f1533-2 : llvmorg-22-init-14273-gea10026b-1 / ab925646fae038b02bd462cd328ae9eef1639236-1 : 11339a0ef5ed586bb7ea4f85a9b7287880caac3a-1" 2025-11-20 ukai mitigate codesearch-gen-chromium-fuchsia 2025-11-20 msta Write a script to generate a database of performance metrics. 2025-11-20 wnwen build: Speed up JUnit test listing 2025-11-20 ollel Disable sanitizer in gn instead of passing around an ignorelist 2025-11-20 thestig Include <features.h> directly in build_config.h on Linux 2025-11-20 agrieve Android: Suppress androidx roll tracereferences failure 2025-11-20 wnwen android: Use merged manifest for lint targets 2025-11-19 msta Fix some minor issues with the run_action benchmark. 2025-11-19 victorvianna Add autoconf to install-build-deps.py 2025-11-19 drubery Fix line-ending in build/config/fuchsia/gn_configs.gni 2025-11-19 beainsa [TDR] Remove TODOs linked to issue 40616187. 2025-11-19 wnwen build: Move Android lint target from bundle to apk 2025-11-19 zbikowski Remove old-style Android ARM64 PGO profile roller artifacts 2025-11-18 jwata build: forward configs to compiled_action_foreach 2025-11-18 jmarc Fix the hardcoded -MMD compile command on Mac. 2025-11-18 msta Add a tool to benchmark the speed of building a specific file locally. 2025-11-18 zijiehe [fuchsia] Update default Fuchsia target API level to 29 2025-11-18 chromium-internal-autoroll Roll Fuchsia Internal Images from 30.20251110.103.1 to 30.20251118.102.1 2025-11-18 agrieve Android: Change default target_cpu from "arm" to "arm64" Created with: roll-dep build R=jophba@chromium.org Change-Id: If7c213b47a3fb61b3eaee1f8f568db6f5ac0379d Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/7206857 Reviewed-by: Jordan Bayles <jophba@chromium.org> Commit-Queue: Jordan Bayles <jophba@chromium.org>
The Open Screen Library implements the Open Screen Protocol, Multicast DNS and DNS-SD, and the Chromecast protocols (discovery, application control, and media streaming).
The library consists of feature modules that share a common platform API that must be implemented and linked by the embedding application.
The major feature modules in the library can be used independently and have their own documentation:
Library dependencies are managed using gclient, from the depot_tools repo.
To get gclient, run the following command in your terminal:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
Then add the depot_tools folder to your PATH environment variable.
Note that openscreen does not use other features of depot_tools like repo or drover. However, some git-cl functions do work, like git cl try, git cl format, git cl lint, and git cl upload.
From the parent directory of where you want the openscreen checkout (e.g., ~/my_project_dir), check out openscreen with the following command:
fetch openscreen
This command will create an openscreen/ subdirectory, downloads the source code, all third-party dependencies, and the toolchain needed to build things; and at their appropriate revisions.
To update your local checkout from the openscreen reference repository, just run
cd ~/my_project_dir/openscreen git pull gclient sync
This will rebase any local commits on the remote top-of-tree, and update any dependencies that have changed.
The following are the main tools are required for development/builds.
gn (installed into buildtools/)clang-format (installed into buildtools/)ninjaclanglibstdc++ (Linux only)gcc (Linux only, optional)NOTE: some executables, like the standalone cast_sender and cast_receiver binaries (see the Cast Streaming README.md), have additional dependencies not listed here.
Ensure that libstdc++ 8 is installed, as clang depends on the system instance of it. On Debian flavors, you can run:
sudo apt-get install libstdc++-8-dev libstdc++6-8-dbg
Setting the gn argument is_clang=false on Linux enables building using gcc instead.
mkdir out/debug-gcc gn gen out/debug-gcc --args="is_clang=false"
Note that g++ version 9 or newer must be installed. On Debian flavors you can run:
sudo apt-get install gcc-9
You can install the XCode command-line tools only or the full version of XCode.
xcode-select --install
Setting the gn argument is_debug=true enables debug build.
gn gen out/debug --args="is_debug=true"
Running gn args opens an editor that allows to create a list of arguments passed to every invocation of gn gen. gn args --list will list all of the possible arguments you can set.
gn args out/debug
We use the Open Screen Protocol demo application as an example, however, the instructions are essentially the same for all executable targets.
mkdir out/debug gn gen out/debug # Creates the build directory and necessary ninja files ninja -C out/debug osp_demo # Builds the executable with ninja ./out/debug/osp_demo # Runs the executable
The -C argument to ninja works just like it does for GNU Make: it specifies the working directory for the build. So the same could be done as follows:
./gn gen out/debug cd out/debug ninja osp_demo ./osp_demo
After editing a file, only ninja needs to be rerun, not gn. If you have edited a BUILD.gn file, ninja will re-run gn for you.
We recommend using autoninja instead of ninja, which takes the same command-line arguments but automatically parallelizes the build for your system, depending on number of processor cores, amount of RAM, etc.
Also, while specifying build targets is possible while using ninja, typically for development it is sufficient to just build everything, especially since the Open Screen repository is still quite small. That makes the invocation to the build system simplify to:
autoninja -C out/debug
For details on running osp_demo, see its README.md.
Running ninja -C out/debug gn_all will build all non-test targets in the repository.
gn ls --type=executable out/debug will list all of the executable targets that can be built.
If you want to customize the build further, you can run gn args out/debug to pull up an editor for build flags. gn args --list out/debug prints all of the build flags available.
ninja -C out/debug openscreen_unittests ./out/debug/openscreen_unittests
Open Screen library code should follow the Open Screen Library Style Guide.
This library uses Chromium Gerrit for patch management and code review (for better or worse). You will need to register for an account at chromium-review.googlesource.com to upload patches for review.
The following sections contain some tips about dealing with Gerrit for code reviews, specifically when pushing patches for review, getting patches reviewed, and committing patches.
The git cl tool handles details of interacting with Gerrit (the Chromium code review tool) and is recommended for pushing patches for review. Once you have committed changes locally, simply run:
git cl format
git cl upload
The first command will will auto-format the code changes using clang-format. Then, the second command runs the PRESUBMIT.py script to check style and, if it passes, a newcode review will be posted on chromium-review.googlesource.com.
If you make additional commits to your local branch, then running git cl upload again in the same branch will merge those commits into the ongoing review as a new patchset.
It's simplest to create a local git branch for each patch you want reviewed separately. git cl keeps track of review status separately for each local branch.
If conflicting commits have been landed in the repository for a patch in review, Gerrit will flag the patch as having a merge conflict. In that case, use the instructions above to rebase your commits on top-of-tree and upload a new patchset with the merge conflicts resolved.
Clicking the CQ DRY RUN button (also, confusingly, labeled COMMIT QUEUE +1) will run the current patchset through all LUCI builders and report the results. It is always a good idea get a green tryjob on a patch before sending it for review to avoid extra back-and-forth.
You can also run git cl try from the commandline to submit a tryjob.
Send your patch to one or more committers in the COMMITTERS file for code review. All patches must receive at least one LGTM by a committer before it can be submitted.
After your patch has received one or more LGTM commit it by clicking the SUBMIT button (or, confusingly, COMMIT QUEUE +2) in Gerrit. This will run your patch through the builders again before committing to the main openscreen repository.