{"id":17720235,"url":"https://github.com/gregschmit/omake","last_synced_at":"2025-04-26T13:59:55.942Z","repository":{"id":58192653,"uuid":"530416955","full_name":"gregschmit/omake","owner":"gregschmit","description":"An extra implementation of make.","archived":false,"fork":false,"pushed_at":"2024-04-03T23:26:38.000Z","size":183,"stargazers_count":18,"open_issues_count":13,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-26T10:05:34.044Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gregschmit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-08-29T22:39:45.000Z","updated_at":"2024-10-30T20:31:43.000Z","dependencies_parsed_at":"2024-10-25T19:16:38.738Z","dependency_job_id":"90746ed4-9a4b-426a-8dd6-63fb1b1625ae","html_url":"https://github.com/gregschmit/omake","commit_stats":{"total_commits":66,"total_committers":4,"mean_commits":16.5,"dds":0.06060606060606055,"last_synced_commit":"e41c85de00194e5efcfc03c4d00100488cb3fcbe"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregschmit%2Fomake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregschmit%2Fomake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregschmit%2Fomake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregschmit%2Fomake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gregschmit","download_url":"https://codeload.github.com/gregschmit/omake/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250976008,"owners_count":21516873,"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":[],"created_at":"2024-10-25T15:26:33.985Z","updated_at":"2025-04-26T13:59:55.913Z","avatar_url":"https://github.com/gregschmit.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Oxidized Make (omake)\n\nThis is a Rust implementation of `make`, striving to be simple, portable, and fast.\n\nTo avoid clashing with your system's `make`, this project is built as `omake` by default, but if\nthis project is ever used as the default implementation of `make` in a system, then it should be\nnamed `make` (to follow the same convention as `bmake` and `gmake`).\n\nI decided to try to re-write `make` in Rust both as a way to learn Rust and also because I found the\nexisting `make` implementations' source code very convoluted.\n\nhttps://xkcd.com/2314/\n\n## Installation\n\nYou can install with Cargo: `cargo install omake`. In the future, I may consider packaging this\nproject for other repos such as Homebrew or the AUR.\n\n## Project Goals\n\nThis project is in its infancy, so I may find out later that some or all of the project goals are\nimpossible to achieve. Regardless, in order of importance, here are the project goals:\n\n1. Portable makefiles and makefiles generated by tools like CMake should behave correctly.\n2. Support as many commonly-used BSD and GNU `make` extensions as possible.\n3. Be capable of building the Linux kernel.\n4. Be really fast.\n5. If we decide to implement new extensions, they should be opt-in to retain backwards\n   compatibility. We should avoid this unless there are serious performance improvements.\n6. Possibly the hardest: don't turn into a backwards-incompatible competing standard\n   (https://xkcd.com/927/). As uninspired as it may seem, I just want an implementation of `make`\n   that works on Linux and FreeBSD (and macOS); that's it.\n\n1.0 release will probably happen when this project can build the Linux kernel.\n\nNote that due to implementation details (and especially during the initial development phase this\nproject is in), it's possible certain features are inadvertently added. Users should probably not\nrely on those and they may even qualify as bugs. I hope to get everything ironed out before the 1.0\nrelease to avoid (as stated in Goal #6) building an incompatible competing standard. There are\nalready other build systems, I don't actually want to make another one.\n\nWorking list of things that I plan on leaving out of this implementation intentionally:\n1. Remaking makefiles from RCS/SCCS. I see no need to support this.\n\n## Testing Methodology\n\nWe have unit tests where they are feasible.\n\nThere is also a system test suite in the `tests` directory. In this context, \"system\" tests are\ndirectories which contain a makefile, a `mod.rs` file, and any other files needed by the makefile.\nThe `mod.rs` invokes a `system_test_cases!` macro, which executes this project's resulting binary\nagainst that directory's makefile given the arguments provided and checks STDOUT/STDERR against the\nexpected STDOUT/STDERR provided to the macro, and also checks the directory against the expected\nfiles and content provided to the macro.\n\nAt some point, I should probably also copy over the GNU make test suite and try to get this project\nto pass the entire test suite.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregschmit%2Fomake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgregschmit%2Fomake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregschmit%2Fomake/lists"}