<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Conan on jdcsen</title><link>https://jdcsen.com/tags/conan/</link><description>Recent content in Conan on jdcsen</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 01 Jan 1970 00:33:42 +0000</lastBuildDate><atom:link href="https://jdcsen.com/tags/conan/index.xml" rel="self" type="application/rss+xml"/><item><title>One Build for Cloud and Device: Consolidating a 500k-Line C++ Engine</title><link>https://jdcsen.com/projects/build-system-consolidation/</link><pubDate>Thu, 01 Jan 1970 00:33:42 +0000</pubDate><guid>https://jdcsen.com/projects/build-system-consolidation/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;The legacy ASR engine, roughly 500k lines of C++, was built by its owners with GCC and plain CMake for the cloud. The on-device team consumed it as a library across about 7 ARM toolchains from the Android NDK plus 4 x86 gcc/clang variants, through a Conan-based build layer.&lt;/li&gt;&#10;&lt;li&gt;Before: on-device releases were hand-curated snapshots of the upstream engine, maintained in forks of every ASR package and re-merged periodically. Each release took days at minimum and often weeks, as toolchain-specific breakage surfaced and needed patches.&lt;/li&gt;&#10;&lt;li&gt;Fix: point all engine code at a single virtual build-system package. In the cloud dependency universe it resolves to bare CMake; in the device universe it resolves to the Conan layer, which drives the same CMake underneath. About 40 packages converted; one source tree builds for all 12 toolchains.&lt;/li&gt;&#10;&lt;li&gt;Kept it that way with a pre-merge analyzer that compiles every pull request against the device toolchains before it can land, so device compatibility is checked at merge time rather than discovered at release time.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item></channel></rss>