All Projects → michaelforney → Samurai

michaelforney / Samurai

Licence: other
ninja-compatible build tool written in C

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Samurai

SimpleBuildInterface
A simple build interface for Unity CLI. Support all platforms without executeMethod option.
Stars: ✭ 23 (-94.1%)
Mutual labels:  build
Ant
Apache Ant is a Java-based build tool.
Stars: ✭ 296 (-24.1%)
Mutual labels:  build
Platform Espressif32
Espressif 32: development platform for PlatformIO
Stars: ✭ 333 (-14.62%)
Mutual labels:  build
Unity Builder
Build Unity projects for different platforms
Stars: ✭ 258 (-33.85%)
Mutual labels:  build
Bazel
a fast, scalable, multi-language and extensible build system
Stars: ✭ 17,790 (+4461.54%)
Mutual labels:  build
U3d
U3d is a cross-platform set of tools to interact with Unity3D from command line.
Stars: ✭ 309 (-20.77%)
Mutual labels:  build
mean-stack-angular-8-blog-cms
MEAN Stack (Angular 8) Tutorial: Build a Simple Blog CMS Example
Stars: ✭ 19 (-95.13%)
Mutual labels:  build
Appify
Create a macOS Application from an executable (like a Go binary)
Stars: ✭ 372 (-4.62%)
Mutual labels:  build
Baur
baur manages builds and artifacts in mono repositories
Stars: ✭ 285 (-26.92%)
Mutual labels:  build
Node Build Monitor
A Build Monitor written in Node.js, which supports several build services and can be easily extended.
Stars: ✭ 336 (-13.85%)
Mutual labels:  build
Bazel Remote
A remote cache for Bazel
Stars: ✭ 260 (-33.33%)
Mutual labels:  build
Oryx
Build your repo automatically.
Stars: ✭ 283 (-27.44%)
Mutual labels:  build
Packr
The simple and easy way to embed static files into Go binaries.
Stars: ✭ 3,332 (+754.36%)
Mutual labels:  build
build-time-tracker
Gradle plugin that prints the time taken by the tasks in a build
Stars: ✭ 27 (-93.08%)
Mutual labels:  build
Angular Bazel Example
MOVED to the bazel nodejs monorepo 👉
Stars: ✭ 354 (-9.23%)
Mutual labels:  build
gradle-upgrade-interactive
CLI to interactively upgrade gradle dependencies, inspired by yarn.
Stars: ✭ 44 (-88.72%)
Mutual labels:  build
Psdeploy
Simple PowerShell based deployments
Stars: ✭ 302 (-22.56%)
Mutual labels:  build
Fury
A new build tool for JVM languages
Stars: ✭ 384 (-1.54%)
Mutual labels:  build
Unity Actions
Github actions for testing and building Unity projects
Stars: ✭ 358 (-8.21%)
Mutual labels:  build
Tensorflow Windows Wheel
Tensorflow prebuilt binary for Windows
Stars: ✭ 3,428 (+778.97%)
Mutual labels:  build

samurai

builds.sr.ht status GitHub build status

samurai is a ninja-compatible build tool written in C99 with a focus on simplicity, speed, and portability.

Status

samurai implements the ninja build language through version 1.9.0 except for MSVC dependency handling (deps = msvc). It uses the same format for .ninja_log and .ninja_deps as ninja, currently version 5 and 4 respectively.

It is feature-complete and supports most of the same options as ninja.

Requirements

samurai requires various POSIX.1-2008 interfaces.

Differences from ninja

samurai tries to match ninja behavior as much as possible, but there are several cases where it is slightly different:

  • samurai uses the variable lookup order documented in the ninja manual, while ninja has a quirk (ninja-build/ninja#1516) that if the build edge has no variable bindings, the variable is looked up in file scope before the rule-level variables.
  • samurai schedules jobs using a stack, so the last scheduled job is the first to execute, while ninja schedules jobs based on the pointer value of the edge structure (they are stored in a std::set<Edge*>), so the first to execute depends on the address returned by malloc. This may result in build failures due to insufficiently specified dependencies in the project's build system.
  • samurai does not post-process the job output in any way, so if it includes escape sequences they will be preserved, while ninja strips escape sequences if standard output is not a terminal. Some build systems, like meson, force color output from gcc by default using -fdiagnostics-color=always, so if you plan to save the output to a log, you should pass -Db_colorout=auto to meson.
  • samurai follows the POSIX Utility Syntax Guidelines, in particular guideline 9, so it requires that any command-line options precede the operands. It does not do GNU-style argument permutation.
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].