GithubHelp home page GithubHelp logo

isabella232 / bob-build Goto Github PK

View Code? Open in Web Editor NEW

This project forked from arm-software/bob-build

0.0 0.0 0.0 1.59 MB

Meta-build system using Blueprint and ninja

License: Apache License 2.0

Shell 8.49% C++ 0.72% Python 31.50% C 1.40% Go 57.69% Makefile 0.21%

bob-build's Introduction

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)
  • python3
  • python3-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.

bob-build's People

Contributors

a-khabarov avatar auselen avatar birunts avatar brandonthomasjonesarm avatar chrisdiamand avatar dliviu avatar francois-berder avatar gelldur avatar jbauman42 avatar kilroyd avatar lukokr-aarch64 avatar m-atanassov avatar mattyclarkson avatar micprz avatar sampercival avatar silverclaw avatar teekay-1984 avatar

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.