All Projects → automeka → automeka

automeka / automeka

Licence: Unlicense License
Implicit and module-aware build system for future C++

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to automeka

Build
B2 makes it easy to build C++ projects, everywhere.
Stars: ✭ 182 (+810%)
Mutual labels:  build-tool, build-system
blight
A framework for instrumenting build tools
Stars: ✭ 57 (+185%)
Mutual labels:  build-tool, build-system
Build Harness
🤖Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more
Stars: ✭ 236 (+1080%)
Mutual labels:  build-tool, build-system
Style Dictionary
A build system for creating cross-platform styles.
Stars: ✭ 2,097 (+10385%)
Mutual labels:  build-tool, build-system
systemjs-tools
(dev)tools for working with SystemJS
Stars: ✭ 41 (+105%)
Mutual labels:  build-tool, build-system
Reggae
Build system in D, Python, Ruby, Javascript or Lua
Stars: ✭ 141 (+605%)
Mutual labels:  build-tool, build-system
Fortran-Tools
Fortran compilers, preprocessors, static analyzers, transpilers, IDEs, build systems, etc.
Stars: ✭ 31 (+55%)
Mutual labels:  build-tool, build-system
Please
High-performance extensible build system for reproducible multi-language builds.
Stars: ✭ 1,856 (+9180%)
Mutual labels:  build-tool, build-system
b2
B2 makes it easy to build C++ projects, everywhere.
Stars: ✭ 38 (+90%)
Mutual labels:  build-tool, build-system
elite
Fegeya Elitebuild, small, powerful build system. Written in Rust.
Stars: ✭ 24 (+20%)
Mutual labels:  build-tool, build-system
rote
Automate everything.
Stars: ✭ 66 (+230%)
Mutual labels:  build-tool, build-system
assemble-core
The core assemble application with no presets or defaults. All configuration is left to the implementor.
Stars: ✭ 17 (-15%)
Mutual labels:  build-tool, build-system
Arduino Cmake Ng
CMake-Based framework for Arduino platforms
Stars: ✭ 123 (+515%)
Mutual labels:  build-tool, build-system
Bear
Bear is a tool that generates a compilation database for clang tooling.
Stars: ✭ 2,345 (+11625%)
Mutual labels:  build-tool, build-system
Mmake
Mmake is a small program which wraps make to provide additional functionality, such as user-friendly help output, remote includes, and eventually more. It otherwise acts as a pass-through to standard make.
Stars: ✭ 1,593 (+7865%)
Mutual labels:  build-tool, build-system
craftr
The core framework for the Craftr build system.
Stars: ✭ 1 (-95%)
Mutual labels:  build-tool, build-system
Mill
Your shiny new Java/Scala build tool!
Stars: ✭ 1,667 (+8235%)
Mutual labels:  build-tool, build-system
Blade Build
Blade is a powerful build system from Tencent, supports many mainstream programming languages, such as C/C++, java, scala, python, protobuf...
Stars: ✭ 1,722 (+8510%)
Mutual labels:  build-tool, build-system
ycm
Extra CMake Modules for YARP and friends
Stars: ✭ 42 (+110%)
Mutual labels:  build-tool, build-system
make
The Ultimate Makefile to compile all your C, C++, Assembly and Fortran projects
Stars: ✭ 41 (+105%)
Mutual labels:  build-tool, build-system

Automkea C++1z automated make

Build Status Github Release Unlicense Gitter Chat

USAGE

Automeka automatically finds and builds your projects without any configuration. Automeka assumes that the source tree represents the logical structure of projects.

Automeka exclusively uses Clang for compilation for now, as it requires the not-yet-standardized C++ modules.

  1. Any folder containing a src or an include folder is considered as a module named after the folder.
  2. Regarding include paths, include folder is assumed to contain the public interface of the module. The src folder is assumed to contain the private interface of the module. [1]
  3. Each source file found in the src folder of a module is compiled into an object.
  4. Each object is then scanned for a main function. A library is created for each module, with all the objects that do not contain a main function.
  5. For each object with a main function, an executable is created and linked against all the module's libraries it depends on. [2]
[1]Each module should provide a module.modulemap file in its include folder, describing the module's headers and libraries to link against.
[2]Libraries to link against are described in the module's module.modulemap file. See http://clang.llvm.org/docs/Modules.html for more information.

BUILD

Automeka currently uses Ninja for resolving build order and executing tasks. The goal is not to rely on some external make program, and this should be internalized.

Ninja is also required for bootstraping Automeka, when no precursor is available.

# bootstrap automeka
ninja

# rebuild automeka with itself and C++ modules enabled
./build/automeka

LICENSE

This is free and unencumbered software released into the public domain.

See accompanying file UNLICENSE or copy at http://unlicense.org/UNLICENSE

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].