{"id":41863070,"url":"https://github.com/revl/autoforge","last_synced_at":"2026-01-25T11:33:45.649Z","repository":{"id":57602139,"uuid":"85447935","full_name":"revl/autoforge","owner":"revl","description":"Meta build system  for GNU Autotools (Autoconf, Automake, Libtool), inter-project dependency manager","archived":false,"fork":false,"pushed_at":"2020-05-10T03:39:52.000Z","size":239,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-06-20T14:26:58.012Z","etag":null,"topics":["autoconf","automake","autotools","gnu-autotools","libtool","meta-makefile"],"latest_commit_sha":null,"homepage":"","language":"Go","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/revl.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}},"created_at":"2017-03-19T03:20:59.000Z","updated_at":"2020-05-10T03:39:54.000Z","dependencies_parsed_at":"2022-09-26T20:00:51.685Z","dependency_job_id":null,"html_url":"https://github.com/revl/autoforge","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/revl/autoforge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revl%2Fautoforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revl%2Fautoforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revl%2Fautoforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revl%2Fautoforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/revl","download_url":"https://codeload.github.com/revl/autoforge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revl%2Fautoforge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28752668,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T10:25:12.305Z","status":"ssl_error","status_checked_at":"2026-01-25T10:25:11.933Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["autoconf","automake","autotools","gnu-autotools","libtool","meta-makefile"],"created_at":"2026-01-25T11:33:45.582Z","updated_at":"2026-01-25T11:33:45.638Z","avatar_url":"https://github.com/revl.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"----\n\n_This project is experimental, unfinished, and all but abandoned._\n\n----\n\n# autoforge\n\nThis utility is an attempt to implement a higher level build system on\ntop of GNU Autotools. Autoforge generates autoconf scripts and automake\nsource files from whole project templates. It also tracks inter-project\ndependencies and creates a meta-Makefile to build the projects in the\ncorrect order.\n\n## Packages\n\nAn Autoforge package is a directory containing C/C++ source files and a\npackage definition file, whose name must consist of the package\ndirectory name and the extension `.yaml`.\n\nAmong other parameters, the package definition file specifies a template\nthat the package uses, which, in turn, determines the type of binary\nthat the package produces.\n\nBecause project templates encapsulate a great deal of complexity that\ncomes with using Autotools, the structure of the package definition file\nis quite simple, which makes starting a new project a breeze.\n\n## Project templates\n\nProject templates contain autoconf and automake source files required\nfor building the project. Autoforge provides several generic templates.\nAdditional templates can be created ad hoc.\n\n## Project definition files\n\nBy imposing certain restrictions on the project structure, Autoforge\nkeeps the differences between the projects generated from the same\ntemplate to a minimum. For a new project, its package definition file\nmust specify just a few crucial parameters, such as the name of the\nproject, the type of the license it uses, etc. A separate section\nbelow describes the full list of parameters that can appear in a\npackage definition file.\n\n## Package search path\n\nThe `AUTOFORGE_PKG_PATH` environment variable defines a colon-separated\nlist of directories that contain packages.  Autoforge searches for\npackage definition files in subdirectories of the `AUTOFORGE_PKG_PATH`\ndirectories. Subdirectories without such files are ignored.\n\n## Build directories\n\nAutoforge requires that the packages are built in a dedicated directory\nseparate from the source tree. A new build directory must be initialized\nfirst by running `autoforge -init`. Certain build configuration\nparameters can be specified only during the initialization.\n\nThe purpose of each build directory is defined by the combination of\nlibraries and applications being built.\n\n## Autoforge commands\n\n### Get information on the available packages\n\nThe `-query` switch shows the list of all packages found on the search\npaths along with package descriptions and other essential information.\n\nTo suppress this detailed output and limit the list to just package\nnames, use the `-brief` option.\n\n### Initialize the build directory\n\nTo initialize the build directory, use the `-init` switch. The following\noptions define the initialization parameters:\n\n- `-installdir`\n\n  Set the target directory for `make install`.\n\n- `-docdir`\n\n  Set the installation directory for documentation.\n\n- `-pkgpath`\n\n  The list of directories where to search for packages. This parameter\n  overrides the value of the `$AUTOFORGE_PKG_PATH` environment variable.\n\n- `-workspacedir`\n\n  Set the build directory, which is the current working directory\n  by default.\n\n### Prepare packages for building and generate the meta-Makefile\n\nUsing Autoforge is an iterative process. Aside from a very limited\nnumber of configuration parameters specified during the initialization,\nthe build directory can be repurposed at any time by choosing a\ndifferent range of packages to build.\n\nAfter the build directory has been initialized, Autotools source files\nmust be generated for one or more packages, which must be specified on\nthe command line as a list of individual packages or a range of packages,\nsee below. This is the default mode of operation for Autoforge; it is\nactivated when no other mode is triggered by a command line switch (e.g.\n`-init`).\n\nThe package range is a selection of packages in the following format:\n`[base_pkg]:[dep_pkg]`, where `base_pkg` is a base package and `dep_pkg`\nis a package that requires it. When specified like that, the selection\nincludes the dependency chain of packages from `base_pkg` to `dep_pkg`.\nBoth base and dependent packages can be omitted, in which case all base\npackages or all dependent packages, respectively, will be included in\nthe selection.\n\n## Appendix. The list of package definition file parameters\n\nHere is the full list of variables that can appear in a package\ndefinition file:\n\n- `name`\n\n  The name of the package. This name does not have to match the name\n  of the directory that contains the package.\n\n- `template`\n\n  The name of the package template. At the moment, either `library` or\n  `application`.\n\n- `version`\n\n  Package version for use by Automake.\n\n- `license`\n\n  Either a short name of the license (\"MIT\", \"LGPL\", \"GPL\", \"Apache\",\n  \"Apache v2.0\", etc.) or the full text of the license.\n\n- `version_info`\n\n  API/ABI revision for use by Libtool.\n\n- `requires`\n\n  The list of libraries that the package requires.\n\n- `headers`\n\n  For a library, the list of C/C++ headers exported by the library.\n\n- `sources`\n\n  The list of C/C++ sources containing the implementation.\n\n- `configure`\n\n  A snippet to be embedded in the `configure.in` file. Can be a mix of\n  Bourne shell code and Autoconf macros.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frevl%2Fautoforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frevl%2Fautoforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frevl%2Fautoforge/lists"}