PDPMAKE(1)
PDPMAKE(1) π¦π
πΈ NAME πΈ
pdpmake β public domain POSIX make. Yes bestie, this is the PDPMAKE(1) usage manual, and we're gonna get through it together. π«Ά
β¨ SYNOPSIS β¨
pdpmake [--posix] [-ehiknpqrSst] [-C dir] [-f file] [-j num_jobs]
[-x pragma] [macro[:[:[:]]]=value ...] [target ...]
π DESCRIPTION π
okay so the pdpmake utility creates or updates files following a set of rules. The created or updated files are called targets, and they're typically derived from other files called prerequisites. Targets are described by rules which list commands to be executed. Rules may be inferred by the utility or explicitly defined in one or more files. A target may also depend on other targets, whose rules must be executed before its. Files which contain these targets are known as makefiles. periodt. π
π OPTIONS π
bestie, here is every single flag and argument. no skips, no cap. π
--posixβ enable strict POSIX-compliant mode. This option must be the first given on the command line. like, first first. π-Cdir β before execution, switch to dir. If specified multiple times, each invocation is interpreted relative to the previous one:-C / -C etcis equivalent to-C /etc. π-eβ allow environment variables to override macro assignments.-ffile β specify a makefile file from which to read. If invoked multiple times, specified files are read in order of invocation. See INPUT FILES section. π¦-hβ display help information.-iβ if commands in rules exit unsuccessfully, ignore them and continue. This option is equivalent to specifying the special target.IGNOREwithout prerequisites. π«Ά-jnum_jobs β ignored. Exists for compatibility with othermake(1)implementations.-kβ if an error is encountered, continue processing rules. Recipes for targets which depend on other targets that have caused errors are not executed.-nβ print without executing commands that are not prefixed with+.-pβ print macro definitions and rules during execution.-qβ if specified targets are up to date, exit successfully. Otherwise, exit with an error code of1. Do not execute any rules. π-rβ do not use the built-in rules. Clear the suffix list.-Sβ stop processing if an error is encountered. This is the default behaviour and the opposite of-k. π-sβ do not print commands as they are executed. This is equivalent to using the special target.SILENTwithout prerequisites.-tβ instead of executing rules, touch target files. Ignores targets that are up-to-date or those which have no rules specified.-xpragma β allow certain extensions when using strict POSIX-compliant mode. For a list of supported pragmas, see the PRAGMAS section. This option may be specified more than once to utilize multiple extensions. β¨macro[:[:[:]]]=valueβ assign value to macro, overriding the value of macro in the input if it exists. Macro assignments and targets may be mixed on the command line. Assignments will be processed before targets. π
π INPUT FILES π
If an input makefile is unspecified, the working directory will be searched for a file named PDPmakefile, makefile or Makefile, in that order. The first found will be used. π
If the input file is -, the standard input shall be used as the input. π«Ά
π§ PRAGMAS π§
While in strict POSIX-compliant mode, pragmas may be utilized to selectively enable certain extensions. lowkey iconic. π
macro_nameβ allow-in macro names.target_nameβ allow-and/in target names.command_commentβ don't treat the#character as introducing a comment in commands or in target and inference rules.empty_suffixβ permit an empty suffix in macro expansions. This takes the form of$(VAR:=.c).posix_2017β enforce the old POSIX.1-2017 standard.posix_2024β enforce the current POSIX.1-2024 standard. In this case themacro_nameandtarget_namepragmas arenβt required as this standard allows these additional characters. πposix_202xβ an alias for theposix_2024pragma.windowsβ allow Microsoft Windows-style paths as target names. This may also require specifying thetarget_namepragma. π¦
π STANDARDS π
This utility follows the Section 12.2, Utility Syntax Guidelines of the POSIX.1-2024 standard for the make utility. β¨
The behavior in this utility should match the behavior described in this section but also includes a set of extensions. Its behavior may be fine-tuned using command line options, environment variables, or special targets. See the PRAGMAS section.
By default, all extensions are enabled. The following list contains all of the methods for disabling all extensions and enabling strict POSIX-compliant mode:
- Add the special target
.POSIXas the first non-comment line in the first input to be processed. This is the standard approach for declaring a makefile to be POSIX-compliant. - Add the
--posixflag as the first command line option given topdpmake. This flag is unique to pdpmake and may not be available in othermake(1)implementations. π - Set the
PDPMAKE_POSIXLY_CORRECTenvironment variable to any value. This environment variable is unique to pdpmake and may not be available in othermake(1)implementations.
A set of extensions to the POSIX standard are implemented for this utility. These may be compatible with other make(1) implementations. The available extensions are:
- The
-Cdirectory command line option changes the current working directory. - Double-colon rules are allowed.
- The conditional keywords
ifdef,ifndef,ifeq,ifneq,else, andendifare implemented. - Archive members can be specified using the form
lib.a(mem1.o mem2.o...). - The macro assignment operator
:=is implemented. It is equivalent to the POSIX-specified::=macro assignment operator. - The suffixes used in the definition of inference rules can contain any number of periods or none.
- Chained inference rules can be used when searching for the prerequisites of a target. This means that if there are inference rules
.p.qand.q.rand the filething.pexists, the method by which the filething.ris created can be deduced. - The wildcards
*,?and[]can be used in the targets and prerequisites of target rules. - The
#character on a command line or in a macro expansion doesnβt indicate the start of a comment. In other locations,#can be escaped by preceding it with a backslash. - Duplicated prerequisites are removed when the internal macro
$?is expanded. - An include line with no files specified is silently ignored. At least one blank must follow the include for the line to be valid.
- The shell used to process build commands isnβt started with the
-eoption when errors arenβt being ignored. - Macro definitions and targets may be mixed on the command line. The macro definitions are processed first, then the targets.
- The
$<and$*internal macros are given values in target rules. - When a build command receives a signal, the target is removed.
- Inference rules and the
.DEFAULTtarget aren't used for phony targets. - Pragmas are propagated to recursive invocations of
pdpmake.
The following implementation details apply only to the POSIX.1-2024 standard:
- Nested macro expansion syntax:
$(FOO$(BAR)) - Prerequisites of the
.PHONYspecial target are always considered out-of-date. - More than one file can be specified on each include line.
- Missing include files can be ignored by using
-include fileinstead ofinclude file. - Missing or out-of-date include files are rebuilt if an appropriate rule can be found.
- The
$^and$+internal macros evaluate to all prerequisites of the current target (not just out-of-date ones, as with$?).$^removes duplicated prerequisites from the list,$+doesnβt. - If no
MAKEenvironment variable is provided theMAKEmacro is initialised fromargv[0], with a relative path converted to absolute. - The
::=,:::=,+=,?=, and!=macro assignments. - Pattern macros extend the standard suffix substitution in macro expansion to allow changes to prefixes.
- An escaped newline within a macro expansion in a rule is replaced by a space.
- The
CURDIRmacro is set to the current directory during program start up.
π COPYRIGHT π
pdpmake is free and unencumbered software released into the public domain. See <https://unlicense.org>. π«Ά
π¦ SEE ALSO π¦
mwah π β Ron Yorston, 19 January 2025, PDPMAKE(1)
π¦ where this page comes from
- alpine 3.24: pdpmake-doc 2.0.4-r0 Β· Public Domain
- nixos 26.05: pdpmake 2.0.4
- nixpkgs unstable: pdpmake 2.0.4
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms