{"id":22728495,"url":"https://github.com/6arms1leg/templake","last_synced_at":"2026-01-31T15:01:26.652Z","repository":{"id":253685475,"uuid":"552445710","full_name":"6arms1leg/templake","owner":"6arms1leg","description":"Simple set of Makefiles that form a GNU Make build process template to support software development, deployment and continuous integration, tailored to the C programming language in a GNU/Linux environment","archived":false,"fork":false,"pushed_at":"2025-02-16T23:23:05.000Z","size":67,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-04T20:24:39.273Z","etag":null,"topics":["build","build-process","embedded","embedded-systems","framework","make","makefile","template"],"latest_commit_sha":null,"homepage":"","language":"Makefile","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/6arms1leg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2022-10-16T16:02:48.000Z","updated_at":"2025-03-02T14:48:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"13e1977a-021a-4c8d-b7a2-d4108f130bf5","html_url":"https://github.com/6arms1leg/templake","commit_stats":null,"previous_names":["6arms1leg/templake"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/6arms1leg/templake","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/6arms1leg%2Ftemplake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/6arms1leg%2Ftemplake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/6arms1leg%2Ftemplake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/6arms1leg%2Ftemplake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/6arms1leg","download_url":"https://codeload.github.com/6arms1leg/templake/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/6arms1leg%2Ftemplake/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28946051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T14:26:55.697Z","status":"ssl_error","status_checked_at":"2026-01-31T14:26:52.545Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-process","embedded","embedded-systems","framework","make","makefile","template"],"created_at":"2024-12-10T17:16:21.328Z","updated_at":"2026-01-31T15:01:26.637Z","avatar_url":"https://github.com/6arms1leg.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nKeywords:\nmake, makefile, build, build-process, embedded, embedded-systems, template,\nframework\n--\u003e\n\n# Templake - Simple template for GNU Make\n\nThis set of Makefiles provide a (almost) simple\n\n*GNU Make build process template*\n\nto support software development, deployment and continuous integration,\ntailored to the C programming language in a GNU/Linux environment.\n\n## Requirements specification\n\nThe following loosely lists requirements, constraints, features and goals.\n\n* GNU Make build process template that supports software development,\n  deployment and continuous integration in a GNU/Linux environment\n* Make targets to build, test, check and document software\n* Configurable build/test/check/documentation tool chain\n* Comfortable software module selection via include and exclude file/directory\n  lists with support for extra header directory path inclusion\n* Configurable build artifact paths\n* Complex builds are managed via variation points provided as variables to the\n  Make command\n* Sanity check of variation points provided as variables to the Make command\n* Correct dependency graph handling for incremental builds\n* Well-formatted and informational help screen\n* Executable using an example \"dummy\" implementation/header C (and assembly)\n  file tree in the code base\n* Generate checksums for each final build artifact file\n* Logging of each Make target console output\n* Cleanup functionality\n* Support of \"ToDo\" notes (find and count)\n* Support for generating checksums for each code base file\n\n\u003c!-- Separator --\u003e\n\n* Template design\n* (Very) Suitable for embedded systems\n* Tailored to the C (and assembly) programming language\n* Interfaces with the code base by only depending on standard/core GNU/Linux\n  tools, normally shipped with each GNU/Linux distribution\n* Every build target (and every shell pipeline command) returns a non-zero exit\n  code on failure for use in continuous integration systems\n\n\u003c!-- Separator --\u003e\n\n* Quality model\n    * \"Simple\" (low complexity, essential features only)\n    * Modular\n    * Re-usable\n    * Portable (between GNU/Linux distributions and toolchains)\n    * Scalable from simple and small to complex and large projects with\n      multiple build targets for different SW/HW configurations\n    * Extensible (in features and also to other programming languages)\n    * SCM via Git with [Semantic Versioning](https://semver.org)\n* Well documented (from requirements over key features to usage), using\n  Markdown\n\n## How to deploy\n\nDue to the individual setups and configurations of different code bases, this\nproject cannot be simply pulled in as a Git submodule but must be \"dropped\"\n(i.e. copied and pasted) into each project’s code base and then customized.\nTo use this template, only the main Makefile (`Makefile`) and the sub-Makefiles\n(`make/*.mk`; included by the main Makefile) must be copied to the project for\nwhich the build process is being developed.\nThen, each Make target and the respective variables must be adapted to the\nindividual build process needs of the project.  \nThe required modifications are either obvious or explained within the Makefiles\ncomments and can be generally summarized as:\n\n* Multi-line deletions of helper shell commands to demonstrate the template\n  functionality with the provided example \"dummy\" code base (indicated by\n  explicit comments within the Makefile)\n* Multi-line deletions of unwanted Make targets and features\n* Replacement of provided example \"dummy\" tool chain commands with real ones\n* Replacement of provided example \"dummy\" code base file/directory paths with\n  real ones\n\nThis project comes with a fully executable build process for the provided\nexample \"dummy\" code base.\nThe easiest way to get acquainted with the build process template is to\nactually run it:\n\n```sh\n$ make # Or `make help`\n```\n\nThis lists available Make targets and build type variation points (that might\nbe required by some targets).  \nThis then \"makes\" a target:\n\n```sh\n$ make TARGET\n```\n\nSome targets may require a build type variation point:\n\n```sh\n$ make TARGET t=BUILD_TYPE\n```\n\n### Help message\n\nTo add a Make target to the help screen (shown with `make help`), a description\nis simply appended (`+=`) to the already existing `HELP` variable.\nThe first word should be the Make target name itself, directly followed by a\ntilde (`~`).\nAfter the tilde a brief desription can be given but words must be separated by\nan underscore (`_`) instead of a space.  \nExample:\n\n```make\n# Cleanup all\nHELP += clean-all~Clean_up_all_targets\n.PHONY: clean-all\nclean-all:\n# [...]\n```\n\n### \"ToDo\" notes (inline comments)\n\nSometimes it can be useful to add \"ToDo\" comments in the code base to revisit\nthem later and contiue focusing on the current task.\nHowever, such comments should not find their way into the release branch, let\nalone be deployed/shipped.  \nTo mitigate that risk the Make template provides a `find-todo` target that\nfinds and counts all \"ToDo\" comments with a configurable marker (default is\n`TODO:`).\nThe count report supports the identification of the effort/progress to resolve\nall \"ToDo\" comments.\nIf any \"ToDo\" comments are present in the code base, the Make target returns\nwith a non-zero exit code to promote its usage in continuous integration\nsystems.\n\n## Architecture\n\nThe main Makefile (`Makefile`) includes sub-Makefiles from a sub-directory\n(`make/*.mk`).\nThe sub-Makefiles are divided into typical build process and continuous\nintegration pipeline \"stages\", coarsely guiding the development workflow of\n\"build -\u003e test -\u003e check -\u003e document\".\n\n## Coding standard - style conventions\n\nThe style is only loosely defined:\n\nNew added code should use the same style (i.e. \"look similar\") as the already\nexisting code base.\n\n## Workflow\n\nThis project uses a simple topic branch Git workflow.\nThe only permanently existing branches are \"develop\" (development status;\nunstable) and \"master\" (release status; stable).\nNew development efforts are done in separate topic branches, which are then\nmerged into develop once ready.\nFor releases, the \"develop\" branch is then merged into \"master\".\nFast-forward merges are preferred, if possible.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F6arms1leg%2Ftemplake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F6arms1leg%2Ftemplake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F6arms1leg%2Ftemplake/lists"}