Coder Social home page Coder Social logo

tunitas-temerarious-flagship's Introduction

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 [email protected]

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.

tunitas-temerarious-flagship's People

Contributors

wcbaker avatar

Stargazers

Devspace avatar Gábor Mihálcz avatar

Watchers

James Cloos avatar  avatar  avatar ElAnanyPwn avatar

Forkers

blockspacer

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.