{"id":43063851,"url":"https://github.com/m-grant-prg/acmbuild","last_synced_at":"2026-01-31T12:21:36.510Z","repository":{"id":58366368,"uuid":"127525418","full_name":"m-grant-prg/acmbuild","owner":"m-grant-prg","description":"AutoTools Bootstrap Script.","archived":false,"fork":false,"pushed_at":"2026-01-11T15:28:44.000Z","size":289,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"tip","last_synced_at":"2026-01-11T18:38:42.682Z","etag":null,"topics":["autoconf","automake","autotools","bash","libtool"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m-grant-prg.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-03-31T11:16:43.000Z","updated_at":"2026-01-11T15:27:42.000Z","dependencies_parsed_at":"2024-03-19T11:47:28.385Z","dependency_job_id":"c8dc6c62-69d7-4793-b20d-46ec298d7db6","html_url":"https://github.com/m-grant-prg/acmbuild","commit_stats":null,"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"purl":"pkg:github/m-grant-prg/acmbuild","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-grant-prg%2Facmbuild","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-grant-prg%2Facmbuild/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-grant-prg%2Facmbuild/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-grant-prg%2Facmbuild/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m-grant-prg","download_url":"https://codeload.github.com/m-grant-prg/acmbuild/tar.gz/refs/heads/tip","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-grant-prg%2Facmbuild/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28942299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T12:10:04.904Z","status":"ssl_error","status_checked_at":"2026-01-31T12:09:58.894Z","response_time":128,"last_error":"SSL_read: 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","bash","libtool"],"created_at":"2026-01-31T12:21:35.760Z","updated_at":"2026-01-31T12:21:36.504Z","avatar_url":"https://github.com/m-grant-prg.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"-----------------------------------\nAutoConf and AutoMake Build Scripts\n===================================\n\nAuthor - Copyright (C) 2014-2021, 2023, 2025 Mark Grant\n\n--------\nContents\n========\n\n1 ... Project Description\n\n2 ... AutoTools (configure and make) Installation\n\n3 ... Installation of Distro-Native Packages\n\n4 ... Utility Scripts\n\n\n\n-------------------------\n1 ... Project Description\n=========================\n\nThis project produces a helper script for AutoTools projects. It has two main\ngoals; to reduce repetitive typing of some AutoTools commands, and, to afford a\nmore standard interface for the programmer across AutoTools projects.\n\n\nDesign\n------\nAt the command line level the script offers it's own options and provides that\nall other arguments are passed unparsed and untouched straight to the configure\ncommand line. For example:-\n\n\tacmbuild --config .. sysconfdir=/etc -- --prefix=/usr\n\nIn this case --config is an acmbuild option to configure the project, .. is the\nbase directory and everything else is passed untouched to configure, invoking:-\n\n\t../configure sysconfdir=/etc --prefix=/usr\n\nthereby obviously supporting environment variable setting and option passing for\nconfigure.\n\nThe acmbuild options come in two flavours; action options and enabling options.\n\nb, c, C, D, g, K, m and T are action options. -b, for instance will run make,\nwhereas -D will run make dist.\n\nThe rest, (apart from help and version), are enabling options. Invariably these\nare implemented merely by passing an enable argument to configure. For example\n\n\tacmbuild --config --debug ..\n\nwill run\n\n\tconfigure --enable-debug=yes\n\nThat is all. For it to be meaningful the developer must process this argument\nin configure. The script does not know if the option is sensible, or indeed, if\nit is supported by configure, so, in the above example, if the developer had not\nwritten code in configure to process this argument, configure will issue a\nwarning and then just ignore the option.\n\nAs an example of the simplification this script affords, the following acmbuild\ncommand\n\n\tacmbuild -cb .\n\nwill run\n\n\tautoreconf -if .\n\t./configure (plus options)\n\tmake (plus options)\n\n\nImplementation\n--------------\nThe project functionality is implemented as two scripts; acmbuild and\nbootstrap.sh. acmbuild does nothing more than invoke bootstrap.sh with the same\narguments. This means that all the functionality is in bootstrap.sh. On project\ninstall both scripts are installed but only acmbuild is installed in the PATH.\nSo all usage is via acmbuild. The reason for this is that it enables a secondary\nusage of bootstrap.sh. bootstrap.sh can be copied and pasted into the\nproject-root of all AutoTools project to provide a simplified and standardised\nbuild bootstrap as is generally recommended. This eliminates any possible\nconfusion as to which version of bootstrap.sh is being used whilst also\nobviating any dependency on this project.\n\n\nCommand Line Syntax\n-------------------\n\tacmbuild -b [-c [-a] [-A] [{--CC=COMPILER|-s}] [-d] [-H] [-m] [-t] [-v]]\n\t\t[-g] [-K] [-pX] [PATH_TO_PROJECT_ROOT] [-- PASS_THRU_OPTIONS ...]\n\tacmbuild -c [-a] [-A] [{--CC=COMPILER|-s}] [-d] [-H] [-m] [-pX] [-t] [-v]\n\t\t[PATH_TO_PROJECT_ROOT] [-- PASS_THRU_OPTIONS ...]\n\tacmbuild -c {-i|-S} [--CC=COMPILER] [-pX] [-v] [PATH_TO_PROJECT_ROOT]\n\t\t[-- PASS_THRU_OPTIONS ...]\n\tacmbuild {-C|-D|-T} [-c] [-g] [-pX] [PATH_TO_PROJECT_ROOT]\n\t\t[-- PASS_THRU_OPTIONS ...]\n\tacmbuild -g [-b]\n\t\t[-c [-a] [-A] [{--CC=COMPILER|-s}] [-d] [-H] [-m] [-t] [-v]]\n\t\t[-K] [-pX] [PATH_TO_PROJECT_ROOT] [-- PASS_THRU_OPTIONS ...]\n\tacmbuild {-h|-V}\n\tacmbuild -K [-b]\n\t\t[-c [-a] [-A] [{--CC=COMPILER|-s}] [-d] [-H] [-m] [-t] [-v]]\n\t\t[-g] [-pX] [PATH_TO_PROJECT_ROOT] [-- PASS_THRU_OPTIONS ...]\n\n\tacmbuild [OPTIONS] [PATH_TO_PROJECT_ROOT] [-- PASS_THRU_OPTIONS ...]\n\n\nOptions\n-------\nThe script offers the following options:-\n\n\t-a, --at-only\n\t\tduring  testing  and  for  an AutoTools-only install, some build\n\t\tchanges are required. e.g. You may reference  an  external  Java\n\t\tjar  in  datadir but in AT builds and installations this may ex‐\n\t\tpand to /usr/local/share... So a substitution  is  required  for\n\t\tthis scenario.\n\n\t-A, --analyzer\n\t\tenable compiler analyzer output.\n\n\t-b, --build\n\t\tmake the project.\n\n\t-c, --config\n\t\tconfigure the project.\n\n\t-C, --distcheck\n\t\tperform a normal make distcheck.\n\n\t--CC compiler\n\t\tSpecify a compiler to use. Functionally equivalent to:-\n\t\tbootstrap.sh -c . -- CC=compiler\n\t\tMore ephemerally, as a one-off you can use:-\n\t\tmake CC=compiler\n\n\t-d, --debug\n\t\tbuild with appropriate debug flags.\n\n\t-D, --dist\n\t\tperform a make dist.\n\n\t-g, --gnulib\n\t\trun  gnulib-tool --update. Checks for the existence of the cache\n\t\tfile proj-root/m4/gnulib-cache.m4. If it does not exist the  up‐\n\t\tdate is not run.\n\n\t-h, --help\n\t\tprints usage information.\n\n\t-H, --header-check\n\t\tshow include stack depth\n\n\t-i, --iwyu\n\t\tRun clang's include-what-you-use to analyse header file usage.\n\t\tinclude-what-you-use  invokes the clang compiler, so this option\n\t\tautomatically sets clang as the compiler and requires  that  op‐\n\t\ttion c is specified.\n\n\t-K, --check\n\t\trun make check\n\n\t-m, --config-menu\n\t\tinvoke menu of configurable options. The only thing fixed is the\n\t\tscript name, configurable-options.sh in the project root  direc‐\n\t\ttory. Usually this would be expected to have a dialog interface.\n\n\t-p[X], --parallel-jobs[=X]\n\t\tif  X  is specified then make runs with X parallel jobs. If X is\n\t\tnot specified then make will run with the same number of jobs as\n\t\tprocessors.  If  this option is not specified then make runs se‐\n\t\tquentially.\n\n\t-s, --sparse\n\t\tpass --enable-sparse=yes to configure.\n\n\t-S, --scan-build\n\t\tRun clang's scan-build static analyser.\n\n\t-t, --testing-hacks\n\t\tsome build changes may be required for testing purposes.  e.g. A\n\t\tscript  may  invoke a project jar file which when installed will\n\t\tbe somewhere under datadir, but during  testing  it  is  in  the\n\t\tproject tree.\n\n\t-T, --source-tarball\n\t\tperform a make srctarball to build a source tarball.\n\n\t-v, --verbose\n\t\temit extra information\n\n\t-V, --version\n\t\tprints version information\n\n\t[PATH_TO_PROJECT_ROOT] The absolute or relative path to the project root\n\t\tdirectory (containing configure)\n\n\t-- PASS_THRU_OPTIONS The -- stops processing command line arguments and\n\t\tinstead passes subsequent arguments on, as-is, to AutoTools\n\nN.B.\n----\nAt a source modification / development level, this project expects to reside in\na git environment. This manifests itself in 2 places:-\n1) ... .gitignore files are included in the source.\n2) ... The make target, 'srctarball', relies on the command 'git archive' so it\nwill fail if git is not installed or it is not in a git repository.\n\n\n-------------------------------------------------\n2 ... AutoTools (configure and make) Installation\n=================================================\n\na) ... Download either the source or distribution tarball (the .tar.gz file)\n\tfrom:-\n\nhttps://github.com/m-grant-prg/acmbuild/releases\n\nb) ... Extract the tarball preserving the directory structure.\n\nc) ... cd to the directory created.\n\nd) ... If you downloaded the source tarball type 'autoreconf -if'\n\ne) ... Type './configure'\n\nf) ... As root or sudo, type 'make install clean'\n\n(Quote marks are for textual clarity only).\n\n\nTo uninstall the package:\n\n1 ... cd to the directory created in the above install process.\n\n2 ... As root or sudo, type 'make uninstall clean'\n\n\n--------------------------------------------\n3 ... Installation of Distro-Native Packages\n============================================\nInstallation packages native to different distributions are available, please\nrefer to the relevant installation section on the wiki at:-\n\nhttps://github.com/m-grant-prg/acmbuild/wiki\n\n\n---------------------\n4 ... Utility Scripts\n=====================\nIn the project root directory there is 1 helper script; bootstrap.sh.\n\nbootstrap.sh\n------------\nThis misleadingly named script bootstraps the project build and provides other\nuseful features. The main script options are probably b, c, C, D and T.\n\nIn AutoTools it is usually advisable to perform parallel builds. This means you\nbuild somewhere other than the project root. This is because building creates\nfiles and they would confuse the project root downwards. I always create a build\ndirectory straight off the project root, cd to there and do all build and git\nwork from there, (.gitignore is already set to ignore such a directory). Further\ninformation on VPATH (parallel) builds can be found at:-\n\nhttps://www.gnu.org/software/automake/manual/html_node/VPATH-Builds.html\n\nAssuming you adopt the preceding paragraph then a typical invocation of the\nscript would be:-\n\n../bootstrap.sh --config --build ..\n\nThe last '..' points the way to project root.\n\nFor the full list of arguments to bootstrap.sh please look at the acmbuild\noptions section above.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-grant-prg%2Facmbuild","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm-grant-prg%2Facmbuild","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-grant-prg%2Facmbuild/lists"}