{"id":28710788,"url":"https://github.com/arm-software/bob-build","last_synced_at":"2025-06-14T21:08:15.450Z","repository":{"id":33703704,"uuid":"152604614","full_name":"ARM-software/bob-build","owner":"ARM-software","description":"Meta-build system using Blueprint and ninja","archived":false,"fork":false,"pushed_at":"2025-06-11T13:42:06.000Z","size":3428,"stargazers_count":33,"open_issues_count":0,"forks_count":17,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-06-11T14:51:54.877Z","etag":null,"topics":["build-system","build-tool","build-tool-android","build-tool-linux","ninja-build"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ARM-software.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-10-11T14:24:53.000Z","updated_at":"2025-06-11T13:42:12.000Z","dependencies_parsed_at":"2023-02-16T09:16:26.224Z","dependency_job_id":"9c869b29-27a8-40ff-87b3-0daecbc66284","html_url":"https://github.com/ARM-software/bob-build","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ARM-software/bob-build","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2Fbob-build","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2Fbob-build/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2Fbob-build/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2Fbob-build/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ARM-software","download_url":"https://codeload.github.com/ARM-software/bob-build/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2Fbob-build/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259884525,"owners_count":22926446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["build-system","build-tool","build-tool-android","build-tool-linux","ninja-build"],"created_at":"2025-06-14T21:08:14.614Z","updated_at":"2025-06-14T21:08:15.442Z","avatar_url":"https://github.com/ARM-software.png","language":"Go","readme":"# ⚠ Deprecation Notice ⚠\n\n_Bob will be deprecated_ when [Android moves to Bazel][aosp-bazel].\n\nWe recommend that new projects use [Bazel][bazel] instead.\n\nWe will be introducing stricter build rules in Bob to improve Bazel alignment.\n\nThis may cause existing builds to break.\n\n[aosp-bazel]: https://developers.googleblog.com/2020/11/welcome-android-open-source-project.html\n[bazel]: https://bazel.build/\n\n# Bob Build System\n\n[![CI](https://github.com/ARM-software/bob-build/workflows/CI/badge.svg)](https://github.com/ARM-software/bob-build/actions)\n\n## Introduction\n\nBob is a declarative build system intended to build C/C++ software for\nboth Linux and Android.\n\nBob has a configuration system that works in a similar way to the\n[Linux Kernel](https://www.kernel.org)'s\n[Kconfig](https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt).\n\nBuild definitions use a JSON-like syntax to describe the modules to\nbuild.\n\nBob uses Google's [Blueprint](https://github.com/google/blueprint) to\ndo the heavy lifting. As such it has similarities with\n[Soong](https://android.googlesource.com/platform/build/soong).\n\n## Requirements\n\nTo use Bob you will need:\n\n- golang (\u003e=1.18)\n- ninja-build (\u003e=1.8)\n- python3 (\u003e=3.6)\n- python3-ply\n\n## License\n\nThe software is provided under the Apache 2.0 license. Contributions\nto this project are accepted under the same license.\n\n## Usage\n\n### Setting up a project\n\nRefer to the [documentation](docs/project_setup.md) for instructions\non how to setup a project to use Bob.\n\n### Config file format\n\nThe config file format is simplified Kconfig, with `bool`, `int` and\n`string` types.\n\n```\nconfig USE_LOCALES\n    bool \"Use Locales\"\n    default y\n\nconfig DEFAULT_LOCALE\n    string \"Default Locale\"\n    depends on USE_LOCALES\n    default \"sv_SE\"\n```\n\nFor more information see the [documentation](docs/config_system.md).\n\n### Build file format\n\nThe build files are very simple. There are no conditional or control\nflow statements.\n\n```\nbob_defaults {\n    name: \"common_libs\",\n    ldlibs: [\"-lncurses\"],\n}\n\nbob_binary {\n    name: \"less\",\n    defaults: [\"common_libs\"],\n    srcs: [\"src/less.c\"],\n\n    // use_locales is a feature. When enabled in the configuration\n    // src/locales.c will be compiled and linked.\n    use_locales: {\n        srcs: [\"src/locales.c\"],\n        cflags: [\"-DDEFAULT_LOCALE={{.default_locale}}\"],\n    }\n}\n```\n\nFor more information see the [documentation](docs/build_defs.md).\n\n## Development\n\n### Directory structure\n\n`blueprint` - this is a git submodule containing the required version of Blueprint\n\n`config_system` - contains the Python-based configuration system\n\n`docs` - project documentation\n\n`example` - example files for project setup\n\n`scripts` - miscellaneous scripts\n\n`tests` - contains build tests\n\n#### Go code directories\n\n`cmd` - contains the Go code for command line tools\n\n`core` - contains the core Go code\n\n`internal` - contains Go packages for internal use\n\n`plugins` - contains plugins for Soong\n\n### Developing for Bob\n\nTo load Bob code in a Go-aware IDE, create a workspace directory\noutside the Bob tree and run:\n\n```bash\napt-get install bindfs\nexport GOPATH=\u003cworkspace\u003e\nbob/scripts/setup_workspace_for_bob.bash\n```\n\n## Bazel\n\nBob has the minimal support for building with Bazel via Gazelle.\n\nTo build Bob:\n\n```sh\nbazelisk build //...\n```\n\nTo run the Go unit tests:\n\n```sh\nbazelisk test //...\n```\n\nTo update build files:\n\n```sh\nbazelisk run //:gazelle\n```\n\nTo update `deps.bzl`:\n\n```sh\nbazelisk run //:gazelle-update-repos\n```\n\n### Generating Coverage\n\nGenerate the LCOV files:\n\n```sh\nbazelisk coverage --instrument_test_targets --@io_bazel_rules_go//go/config:cover_format=lcov --combined_report=lcov //...\n```\n\nGenerate a html report:\n\n```sh\ngenhtml --output genhtml \"$(bazelisk info output_path)/_coverage/_coverage_report.dat\"\n```\n\n## Documentation\n\nDetailed [documentation](docs/index.md) is in the docs directory of\nthe repository.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farm-software%2Fbob-build","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farm-software%2Fbob-build","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farm-software%2Fbob-build/lists"}