Есть такой известный проект sqlite. Так вот, пишут его как обычный сишный проект, разделённый на десятки-сотни модулей. Но эти же ребята придумали у себя такую хрень как SQLite Amalgamation, примерно то, что вынесено в заголовке. Цель понятна - оптимизация. Так вот, интересует как они это делают? Очевидно же не вручную. Наверняка есть какие-то программы/скрипты. Хорошо, если бы они оказались универсальными и применимыми для любого проекта.
Получается некоторая lto выполняемая ещё до стадии компиляции. Своего рода альтернатива: можно сравнить что лучше и выбрать. Кроме этого, такой механизм может оказаться единственно применимым: у меня, например, gcc при попытке использовать lto падает.