{"id":13803726,"url":"https://github.com/redthing1/wox","last_synced_at":"2026-02-27T10:30:18.613Z","repository":{"id":166237465,"uuid":"641697997","full_name":"redthing1/wox","owner":"redthing1","description":"a highly flexible recipe build system/modern make replacement","archived":false,"fork":false,"pushed_at":"2023-05-18T00:52:55.000Z","size":275,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-31T07:29:01.380Z","etag":null,"topics":["build","build-system","d","dlang","make","recipe"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/redthing1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-05-17T01:39:04.000Z","updated_at":"2023-10-06T20:45:37.000Z","dependencies_parsed_at":"2024-01-03T01:30:19.199Z","dependency_job_id":null,"html_url":"https://github.com/redthing1/wox","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redthing1%2Fwox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redthing1%2Fwox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redthing1%2Fwox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redthing1%2Fwox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redthing1","download_url":"https://codeload.github.com/redthing1/wox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239869218,"owners_count":19710485,"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","build-system","d","dlang","make","recipe"],"created_at":"2024-08-04T01:00:37.282Z","updated_at":"2026-02-27T10:30:17.616Z","avatar_url":"https://github.com/redthing1.png","language":"C","funding_links":[],"categories":["Build Tools"],"sub_categories":["Bare metal / kernel development"],"readme":"\n# wox\n\n**wox** is a highly flexible recipe build system, inspired by [make](https://www.gnu.org/software/make/manual/make.html). wox is also based on learning from other build systems inspired by make such as [knit](https://github.com/zyedidia/knit).\n\nwox is designed to provide all the power and flexibility of arbitrary recipe-based builds, while at the same time addressing make's shortcomings.\n\n## features\n\n+ build scripts are written in [wren](https://wren.io/), and declaratively export a set of recipes\n+ recipes with multiple outputs are supported\n+ better change detection with virtual targets\n+ detect changes in recipe steps when cache is enabled (`-k`)\n+ multithreaded recipe building by default\n\n## see a real example\n\n```wren\nimport \"wox\" for W, R\n\nvar TARGET = \"./hello\"\n\nvar cc = W.cliopt(\"-cc\", \"gcc\")\nvar cflags = [\"-Wall\", \"-std=c11\"]\n\nvar srcs = W.glob(\"./*.c\")\nvar objs = W.exts_replace(srcs, \".c\", \".o\")\nvar src_obj_pairs = W.zip(srcs, objs)\n\nvar obj_recipes = src_obj_pairs.map { |x|\n    return W.recipe(x[1], [x[0]], [x[1]], \n        [ R.c(\"%(cc) %(W.join(cflags)) -c %(x[0]) -o %(x[1])\") ]\n    )\n}.toList\n\nvar main_recipe = W.recipe(\"main\", objs, [TARGET], \n    [ R.c(\"%(cc) %(W.join(cflags)) %(W.join(objs)) -o %(TARGET)\") ]\n)\nvar clean_recipe = W.virtual_recipe(\"clean\", [],\n    [ R.c(\"rm -f %(W.join(objs)) %(TARGET)\") ]\n)\nvar all_recipe = W.meta_recipe(\"all\", [main_recipe])\n\nvar BUILD_RECIPES = obj_recipes + [main_recipe, clean_recipe, all_recipe]\n\nclass Build {\n    static recipes { BUILD_RECIPES }\n    static default_recipe { \"all\" }\n}\n```\n\n## build\n\nthe recommended way to build is with [redbuild](https://github.com/redthing1/redbuild2).\n\n```sh\nredbuild build\n```\n\nalternatively, build using the D toolchain:\n```sh\ncd src\ndub build -b release\n```\n\n## usage\n\ngenerally, wox can be called similarly to make:\n\n```sh\nwox [options] [targets...]\n```\n\nadditionally, to list targets:\n```sh\nwox -l\n```\n\nto build as a dry run:\n```sh\nwox -n\n```\n\n## faq\n\n### can't find a way to build footprint `somefile.ext:V`\n\nwox expects you to refer to local paths with `./somefile.ext` to be explicit about the fact that they are paths and not virtual recipe names. the `:V` indicates that wox is treating that name as a virtual target, and it should instead infer `:F` for a local file if it begins with `./`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredthing1%2Fwox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredthing1%2Fwox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredthing1%2Fwox/lists"}