Skip to content

yahoo/tunitas-temerarious-flagship

Repository files navigation

Temerarious Flagship

This is The Tunitas Build System. This is an autotools-based build system.

What's with the name? See the definition.

Current work with modern-generation tooling, e.g. circa Fedora 36+ and GCC 12+, is occurring around the v2-themed feature branches.

Table of Contents

Background

Most (almost all) projects in the Tunitas family use the Scalable Original Location Disaggregation (S.C.O.L.D.) compiler to manage the C++ declarations and definitions as "header files" in the form of modules. Yes, we know. This system has something of the flavor of the upcoming C++20 Modules TS but works with the existing include-by-cut&-paste of the old school C Preprocessor based compiler implementations. Elsewhere, we use C++ 23 to the fullest extent of the language standard, as it is rendered by GCC 7, GCC 8, GCC 9, GCC 10, GCC 11, GCC 12, and GCC 13 including any other available extensions towards C++2c & C++23 when and as such are available, e.g. concepts, filesystem, network, ranges. When modules really "arrive with stability" they will be adopted with support herein.

Installation

There is no automated installation for this project. The installation recipe is in the packaging which will install the build system into /opt/tunitas.

Other packages, may reference this development tree directly. Examples may be found in ./maintenance/nearby in the other Tunitas family of packages. This is shown in the next section.

If available, you can install from your organization's DNF repository with the following recipe:

sudo dnf install temerarious-flagship

Usage

For this project and for any project in the Tunitas system, the following recipe or something rhyming with this, is expected to work.

./buildconf &&
./configure &&
make &&
make check &&
make install &&
echo OK DONE

This is a standard autotools build recipe where buildconf is done once, configure is done rarely and make is done frequently. The buildconf script is always a stock-standard boilerplate script which generates the configure. Most of the siblingAll of the Tunitas projects are able to build when configured to use the development tree or the installation tree in /opt/tunitas.

To point the other project's build tree at this copy of temerarious-flagship, the following recipe would be used:

with_temerarious_flagship=/build/tunitas/temerarious-flagship ./buildconf &&
./configure --with-temerarious-flagship=/build/tunitas/temerarious-flagship &&
make &&
echo OK DONE

The Maintenance Recipe

For many projects the ./maintenance directory contains artifices for the project maintainer. They are developer-centric and idiosyncratic.

./maintenance/nearby runs the generic build recipe with dynamic configurations to opportunistically acquire and configure to build any nearby projects.

Components

The components of are simple shim-type scripts and configurations in support of the underlying autotools build tooling.

ac the autoconf area

Fragments of M4 macros used by autoconf in configure.ac via aclocal

am the automake area

Fragments of (GNU) Makefile for automake to include in the Makefile.am

bc templates of buildconf

Instances of the buildconf script which can be copied into any project.

addenda is more

There are other (sub-)components which have not yet landed in the previous locations. In another configuration mangement regimen they might be versioned separately.

References

Selected Commentary

  • P0804R0 Impact of the Modules TS on the C++ Tools Ecosystem, 2017-10-15.

Implementations

Contribute

Please refer to the contribution instructions for information about how to get involved. We welcome issues, questions. Pull Requests are welcome.

Maintainers

You may contact us at least at tunitas@yahooinc.com

License

This project is licensed under the terms of the Apache 2.0 open source license. Please refer to LICENSE file at the top of this repository for the full terms.

Definitions

temerarious: marked by temerity; rashness, recklessness, boldness, or presumptuousness. flagship, the most important one out of a related group. mnemonic: extending the autotools with yet more macros is blank. mnemonic: the build system of any software distribution is the blank of the operation.