All Projects → ARM-software → bob-build

ARM-software / bob-build

Licence: Apache-2.0 License
Meta-build system using Blueprint and ninja

Programming Languages

go
31211 projects - #10 most used programming language
python
139335 projects - #7 most used programming language
shell
77523 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to bob-build

jagen
A software engineer's workspace manager and build systems wrapper
Stars: ✭ 32 (+33.33%)
Mutual labels:  build-tool, build-system, ninja-build
ycm
Extra CMake Modules for YARP and friends
Stars: ✭ 42 (+75%)
Mutual labels:  build-tool, build-system
Fortran-Tools
Fortran compilers, preprocessors, static analyzers, transpilers, IDEs, build systems, etc.
Stars: ✭ 31 (+29.17%)
Mutual labels:  build-tool, build-system
b2
B2 makes it easy to build C++ projects, everywhere.
Stars: ✭ 38 (+58.33%)
Mutual labels:  build-tool, build-system
Build Harness
🤖Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more
Stars: ✭ 236 (+883.33%)
Mutual labels:  build-tool, build-system
craftr
The core framework for the Craftr build system.
Stars: ✭ 1 (-95.83%)
Mutual labels:  build-tool, build-system
blight
A framework for instrumenting build tools
Stars: ✭ 57 (+137.5%)
Mutual labels:  build-tool, build-system
Reggae
Build system in D, Python, Ruby, Javascript or Lua
Stars: ✭ 141 (+487.5%)
Mutual labels:  build-tool, build-system
make
The Ultimate Makefile to compile all your C, C++, Assembly and Fortran projects
Stars: ✭ 41 (+70.83%)
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 (-29.17%)
Mutual labels:  build-tool, build-system
alfred
(v0.2) Even Batman needs a little help. Task runner. Automator. Build system.
Stars: ✭ 62 (+158.33%)
Mutual labels:  build-tool, build-system
brujeria
Black Magic to hook into setuptools and distutils for Extensions
Stars: ✭ 17 (-29.17%)
Mutual labels:  build-system, ninja-build
Build
B2 makes it easy to build C++ projects, everywhere.
Stars: ✭ 182 (+658.33%)
Mutual labels:  build-tool, build-system
automeka
Implicit and module-aware build system for future C++
Stars: ✭ 20 (-16.67%)
Mutual labels:  build-tool, build-system
Bear
Bear is a tool that generates a compilation database for clang tooling.
Stars: ✭ 2,345 (+9670.83%)
Mutual labels:  build-tool, build-system
elite
Fegeya Elitebuild, small, powerful build system. Written in Rust.
Stars: ✭ 24 (+0%)
Mutual labels:  build-tool, build-system
Arduino Cmake Ng
CMake-Based framework for Arduino platforms
Stars: ✭ 123 (+412.5%)
Mutual labels:  build-tool, build-system
Style Dictionary
A build system for creating cross-platform styles.
Stars: ✭ 2,097 (+8637.5%)
Mutual labels:  build-tool, build-system
systemjs-tools
(dev)tools for working with SystemJS
Stars: ✭ 41 (+70.83%)
Mutual labels:  build-tool, build-system
build
Build system scripts based on GENie (https://github.com/bkaradzic/genie) project generator
Stars: ✭ 30 (+25%)
Mutual labels:  build-tool, build-system

Bob Build System

CI

Introduction

Bob is a declarative build system intended to build C/C++ software for both Linux and Android.

Bob has a configuration system that works in a similar way to the Linux Kernel's Kconfig.

Build definitions use a JSON-like syntax to describe the modules to build.

Bob uses Google's Blueprint to do the heavy lifting. As such it has similarities with Soong.

Requirements

To use Bob you will need:

  • golang (>=1.10)
  • ninja-build (>=1.8)
  • python
  • python-ply

License

The software is provided under the Apache 2.0 license. Contributions to this project are accepted under the same license.

Usage

Setting up a project

Refer to the documentation for instructions on how to setup a project to use Bob.

Config file format

The config file format is simplified Kconfig, with bool, int and string types.

config USE_LOCALES
    bool "Use Locales"
    default y

config DEFAULT_LOCALE
    string "Default Locale"
    depends on USE_LOCALES
    default "sv_SE"

For more information see the documentation.

Build file format

The build files are very simple. There are no conditional or control flow statements.

bob_defaults {
    name: "common_libs",
    ldlibs: ["-lncurses"],
}

bob_binary {
    name: "less",
    defaults: ["common_libs"],
    srcs: ["src/less.c"],

    // use_locales is a feature. When enabled in the configuration
    // src/locales.c will be compiled and linked.
    use_locales: {
        srcs: ["src/locales.c"],
        cflags: ["-DDEFAULT_LOCALE={{.default_locale}}"],
    }
}

For more information see the documentation.

Development

Directory structure

blueprint - this is a git submodule containing the required version of Blueprint

config_system - contains the Python-based configuration system

docs - project documentation

example - example files for project setup

scripts - miscellaneous scripts

tests - contains build tests

Go code directories

cmd - contains the Go code for command line tools

core - contains the core Go code

internal - contains Go packages for internal use

plugins - contains plugins for Soong

Developing for Bob

To load Bob code in a Go-aware IDE, create a workspace directory outside the Bob tree and run:

apt-get install bindfs
export GOPATH=<workspace>
bob/scripts/setup_workspace_for_bob.bash

Documentation

Detailed documentation is in the docs directory of the repository.

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].