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.
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.
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
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
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.
The components of are simple shim-type scripts and configurations in support of the underlying autotools build tooling.
Fragments of M4 macros used by autoconf in configure.ac
via aclocal
Fragments of (GNU) Makefile for automake to include in the Makefile.am
Instances of the buildconf script which can be copied into any project.
There are other (sub-)components which have not yet landed in the previous locations. In another configuration mangement regimen they might be versioned separately.
- Experimental C++ Features
- C++ Standard Draft Sources
- ISO/IEC 14882:2020 Programming Language C++ (paywalled), 2020-12.
- ISO/IEC 14882:2017 Programming Language C++ (paywalled), 2017.
- ISO/IEC TS 21544:2018 Modules TS (paywalled), 2018-05-15.
- cplusplus/modules-ts, C++ Modules Technical Specification, current. The draft Technical Specification is found in the
src
directory and is written in LaTeX. There is aMakefile
that can be used to compile the sources, or you can use thelatexmk
program e.g.latexmk -pdf
ts will generate a PDF. - n4720 Working Draft, Extensions to C++ for Modules, Gabriel Dos Rios (Microsoft), final draft, 2018-01-29.
- P0804R0 Impact of the Modules TS on the C++ Tools Ecosystem, 2017-10-15.
- C++ Modules for GCC, GCC Wiki, updated continuously since 2018.
- C++ Modules for CLang, CLang Wiki, viewed
- Using C++ in Visual Studio 2017, In Their Blog, 2017-05-04.
Please refer to the contribution instructions for information about how to get involved. We welcome issues, questions. Pull Requests are welcome.
- Wendell Baker [email protected]
- The Tunitas Team at Yahoo.
You may contact us at least at [email protected]
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.
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.