рдЕрдВрдЧреНрд░реЗрдЬрд╝реАрдлреНрд░реЗрдВрдЪрд╕реНрдкреЗрдирд┐рд╢

Ad


рдСрдирд╡рд░реНрдХреНрд╕ рдлрд╝реЗрд╡рд┐рдХреЙрди

makepp_variables - рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдСрдирд▓рд╛рдЗрди

рдЙрдмрдВрдЯреВ рдСрдирд▓рд╛рдЗрди, рдлреЗрдбреЛрд░рд╛ рдСрдирд▓рд╛рдЗрди, рд╡рд┐рдВрдбреЛрдЬ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдпрд╛ рдореИрдХ рдУрдПрд╕ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдСрдирд╡рд░реНрдХреНрд╕ рдлреНрд░реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ makepp_variables рдЪрд▓рд╛рдПрдВ

рдпрд╣ рдХрдорд╛рдВрдб рдореЗрдХрдк_рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдорд╛рд░реЗ рдХрдИ рдореБрдлреНрдд рдСрдирд▓рд╛рдЗрди рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдЬреИрд╕реЗ рдХрд┐ рдЙрдмрдВрдЯреВ рдСрдирд▓рд╛рдЗрди, рдлреЗрдбреЛрд░рд╛ рдСрдирд▓рд╛рдЗрди, рд╡рд┐рдВрдбреЛрдЬ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдпрд╛ рдореИрдХ рдУрдПрд╕ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдирд╡рд░реНрдХреНрд╕ рдлреНрд░реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрдХреНрд░рдо:

рдирд╛рдо


рдореЗрдХрдк_рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ - рдореЗрдХрдк рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

рд╡рд░реНрдгрди


?: $*,
$+,
$/,
$<,
$?,
$@,
$^,
=,
!=,
&=,
+=,
:=,
;=,
? =, A: рдПрдЖрд░,
рдЕрд░реНрдлреНрд▓реИрдЧреНрд╕,
рдЬреИрд╕рд╛, C: рд╕реАрд╕реА,
рд╕реАрдПрдлрдПрд▓рдПрдЬреАрдПрд╕,
"рдкрд░рд┐рд╡рд░реНрддрд┐рдд_рдирд┐рд░реНрднрд░рддрд╛рдПрдВ",
рдкрд░рд┐рд╡рд░реНрддрд┐рдд_рдЗрдирдкреБрдЯ,
рджрд╣реА,
рд╕реАрдПрдХреНрд╕рдПрдХреНрд╕,
CXXрдлрд╝реНрд▓реИрдЧреНрд╕, D: "рдирд┐рд░реНрднрд░рддрд╛рдПрдВ",
"рдирд┐рд░реНрднрд░рддрд╛", F: F77,
рдПрдлрд╕реА,
"рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП", I: рдЗрдирдкреБрдЯ,
рдЖрджрд╛рдиреЛрдВ, L: рдПрд▓рдбреА,
рд▓реЗрдХреНрд╕,
рд▓рд┐рдмрдЯреВрд▓, M: рдмрдирд╛рдирд╛,
рд▓рдХреНрд╖реНрдп рдмрдирд╛рдПрдВ,
рдореЗрдХрдлреНрд▓реИрдЧ,
рдореЗрдХрдЗрдиреНрдлреЛ,
MAKEPP_DEBUG,
рдореЗрдХрдкрдлреНрд▓реИрдЧ,
_рдореЗрдХрдкрдлреНрд▓реИрдЧ,
MAKEPP_LN_CP,
"makepp_percent_subdirs",
"makepp_require_phony",
рдореЗрдХрдкреНрдк_рд╕рд┐рдЧреНрдиреЗрдЪрд░_рд╕реА_рдлреНрд▓реИрдЯ,
"рдореЗрдХрдкреНрдк_рд╕рд┐рдВрдкрд▓_рдХреЙрдиреНрдЯреЗрдиреЗрд╢рди",
MAKEPP_рд╕рдВрд╕реНрдХрд░рдг, O: "рдЖрдЙрдЯрдкреБрдЯ",
"рдЖрдЙрдЯрдкреБрдЯ", P: рдкрд░реНрд▓,
рд▓реЛрдХ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рднрд╛рдЧ, R: рдЖрд░рдПрдо,
рдЬрдбрд╝, S: рд╢рдВрдЦ,
"рдХреНрд░рдордмрджреНрдз_рдирд┐рд░реНрднрд░рддрд╛рдПрдБ",
рдХреНрд░рдордмрджреНрдз_рдЗрдирдкреБрдЯ,
"рддрдирд╛", T: рд▓рдХреНрд╖реНрдп,
рд▓рдХреНрд╖реНрдп, V: рд╡реАрдкреАрдПрдЯреАрдПрдЪ, Y: рд╡рд╛рдИрдПрд╕реАрд╕реА

рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ рдЖрдорддреМрд░ рдкрд░ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдг
рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╕рдорд╛рд╣рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП
рдХрд┐ рдпрджрд┐ рдпрд╣ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдЬрд╛рдирдХрд╛рд░реА рдХреА рджреЛ рдкреНрд░рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдЦрддрд░рд╛ рдирд╣реАрдВ рд╣реИ
рд╕рд┐рдВрдХред

рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо рдХреЗрд╕ рд╕рдВрд╡реЗрджреА рд╣реЛрддреЗ рд╣реИрдВ. рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо рдХрдИ рд╕реЗ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдкрд╛рддреНрд░, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдФрд░ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореЗрдХрдк рд╢рд╛рдпрдж рдЗрд╕реЗ рдЯрдЯреЛрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛
рдЕрд▓реНрдлрд╝рд╛рдиреНрдпреВрдореЗрд░рд┐рдХ рд╡рд░реНрдг, "_", рдФрд░ "-"ред

рдкреНрд░рддреНрдпреЗрдХ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЕрдкрдирд╛ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдПрдХ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдХрдИ рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ
рдлрд╝рд╛рдЗрд▓ (рд╢рд╛рдорд┐рд▓ рдХрдерди рджреЗрдЦреЗрдВ) рдпрд╛ "рд╡реИрд╢реНрд╡рд┐рдХ" рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ
рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдПрдХ рдорд╛рди рдЧреНрд░рд╣рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

┬╖ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ
рдпрд╣; рдиреАрдЪреЗ рджреЗрдЦреЗрдВред

┬╖ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдорд╛рди рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЗрд╕ рддрд░рд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдореЗрдХрдкреНрдк CFLAGS=-O2 my_program

рдпрджрд┐ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ CFLAGS рд╡реИрд░рд┐рдПрдмрд▓ рд╕рднреА рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╕реЗрдЯ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджреЗрддреЗ рд╣реИрдВ
рдХрд┐рд╕реА рднреА рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓ред

рдпрджрд┐ рдХрднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд░рд╛рджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬ рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред
"рдУрд╡рд░рд░рд╛рдЗрдб" рд╕рдВрд╢реЛрдзрдХ рдХрд┐рд╕реА рднреА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ
рдХреАрд╡рд░реНрдб рдХрдерди, рдХреНрд░рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдУрд╡рд░рд░рд╛рдЗрдб рд╕рдВрд╕реНрдХрд░рдг рд╣реИ
рд╣рдореЗрд╢рд╛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ. "рдУрд╡рд░рд░рд╛рдЗрдб" рд╕рдВрд╢реЛрдзрдХ рдХреЗрд╡рд▓ рдХрд┐рд╕реА рднреА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣
рдореМрдЬреВрдж рд╣реИ, рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдмрд╛рдж рдХреЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

┬╖ рдпрджрд┐ рдХреЛрдИ рд╡реЗрд░рд┐рдПрдмрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдореЗрдХрдк рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдо рддреМрд░ рдкрд░ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ
рдкрд░реНрдпрд╛рд╡рд░рдг, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ "-e" рдпрд╛ "--environment-overrides" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк

рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХрдИ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рд╛рде рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдПрдХреНрд╕ = 1
рдореЙрдбреНрдпреВрд▓:= рдП рдмреА рд╕реА рдбреА
рд╕реАрд╕реА? = рдЬреАрд╕реАрд╕реА
CFLAGS +=-рджреАрд╡рд╛рд░
VAR рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
рд╡рд░ рдкрдВрдХреНрддрд┐ 1
рд╡рд░ рдкрдВрдХреНрддрд┐ 2
рдПрдВрдбрдбреЗрдлрд╝
рдирд┐рд░реНрдпрд╛рдд рдкрде := $(рдкреАрдбрдмреНрд▓реНрдпреВрдбреА):$(рдкрде)
рд╡реИрд╢реНрд╡рд┐рдХ MYPROJECT.INFO = рд╕рднреА рдореЗрдХрдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рджреЗрдЦреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА

рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдЕрдЧреНрд░рдгреА рдФрд░ рдЕрдиреБрдЧрд╛рдореА рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рд╣рдореЗрд╢рд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд┐рднрд┐рдиреНрди рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдХреБрдЫ рднрд┐рдиреНрди рдЕрд░реНрде рд╣реЛрддреЗ рд╣реИрдВред

рд╕рд░рд▓ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ

=
рд╡реИрд░рд┐рдПрдмрд▓ = рдЯреЗрдХреНрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ
VARIABLE = рдЯреЗрдХреНрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ

рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред
рджрд╛рд╣рд┐рдиреА рдУрд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рддрдм рддрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдЬрдм рддрдХ рдХрд┐ "$(VARIABLE)" рдХрд╛ рдорд╛рди рди рд╣реЛ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╣реАрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

рдПрдХреНрд╕ = 1
рд╡рд╛рдИ = $(рдПрдХреНрд╕)
рдПрдХреНрд╕ = 2

рдлрд┐рд░ "$(Y)" рдмрд╛рдж рдореЗрдВ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ "2" рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдЧрд╛ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рдЖрдорддреМрд░ рдкрд░ "=" рдХреЗ рдмрдЬрд╛рдп ":=" (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣
рдЕрдзрд┐рдХ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рдЪрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕реЗ рд╕рдордп рднреА рдЖрддреЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдореЗрдХрдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЕрд╡рд╢реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдЬреАрдПрдирдпреВ рдореЗрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрдХ рдХреЗ рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдмреИрдХрд╡рд░реНрдб-рд╕рдВрдЧрдд, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ
рд╡рд┐рдХрд▓реНрдк: рдЖрдк рдХреЗрд╡рд▓ "=" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

:=
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп := expr
рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ := expr

рдпрд╣ "VARIABLE = expr" рдХреЗ рд╕рдорд╛рди рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рджрд╛рдИрдВ рдУрд░ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд╕рдордп рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрджрд┐

рдПрдХреНрд╕ := 1
рд╡рд╛рдИ := $(рдПрдХреНрд╕)
рдПрдХреНрд╕ := 2

рдлрд┐рд░ "$(Y)" рдмрд╛рдж рдореЗрдВ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ "1" рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣реА "$(X)" рдерд╛
рдЬрдм "$(Y)" рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

;=
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп ;= рд╡реНрдпрдп
рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ ;= expr

рдпрд╣ "VARIABLE := expr" рдХреЗ рд╕рдорд╛рди рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рджрд╛рдИрдВ рдУрд░ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рдордп рдФрд░ рдлрд┐рд░ рдпрд╛рдж рдЖрдпрд╛ред рдпрд╣ рдорд╣рдБрдЧреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ
рдЖрджреЗрд╢, рдЬреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдорд╛рди рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдХрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдЕрд╕рдВрдмрдВрдзрд┐рдд рд▓рдХреНрд╖реНрдп рдмрдирд╛рдирд╛:

VAR1 ;= $(perl рдорд╣рдВрдЧреА рдЧрдгрдирд╛)
VAR2 ;= $(рд╢реЗрд▓ рдмрд╛рд╣рд░реА рдХрдорд╛рдВрдб)

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреБрд░рд╛рдиреА рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ рдЖрдорддреМрд░ рдкрд░ рдпрд╣рд╛рдВ ":=" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреА, рдХрдо рд╕реЗ рдХрдо рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд▓реЗрдХрд┐рди рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
рдореВрд▓реНрдп рдЪрд╛рд╣рд┐рдП. рдЙрди рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ, рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ "рд╡реИрд╢реНрд╡рд┐рдХ" рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рдЖрджреЗрд╢ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЪрддреБрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдПрдХ
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рджреВрд╕рд░реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдФрд░ рдЙрд╕ рджреВрд╕рд░реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ
рдПрдХ рд▓рдХреНрд╖реНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рд╣реИ, рдФрд░ рдкрд╣рд▓рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЙрд╕ рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рд╣реИ, рдлрд┐рд░
рд▓рдХреНрд╖реНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рдЕрдиреНрдп рд╕рднреА рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдорд╛рдиреНрдп рд░рд╣реЗрдЧрд╛ред рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ рдФрд░
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

+=
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп += рд╡реНрдпрдп
VARIABLE += expr рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреА рдкрд┐рдЫрд▓реА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рд╕реЗ рдЕрд▓рдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЕрдЧрд░
рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдкрд╣рд▓реЗ ":=" рдХреЗ рд╕рд╛рде рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ рджрд╛рдИрдВ рдУрд░ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ.

&=
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп &= expr
VARIABLE &= expr рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреА рдкрд┐рдЫрд▓реА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рд╕реНрдерд╛рди рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдкрд╣рд▓реЗ ":=" рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рджрд╛рд╣рд┐рдиреА рдУрд░ рд╣реИ
рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдХрд┐ "CFLAGS", рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд╛рд╣реЗ рдЬреЛ рдХреБрдЫ рднреА рдбрд╛рд▓реЗ,
рдпреЗ рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣рдореЗрд╢рд╛ "-рд╡реЙрд▓" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ:

CFLAGS = -O2 # рд╕рдВрднрд╡рддрдГ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
CFLAGS рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ &= -рджреАрд╡рд╛рд░ # рдмрд┐рдирд╛ рд╢рд░реНрдд рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛

рдкреБрд░рд╛рдиреЗ рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдореЗрдВ рдЖрдкрдХреЛ рдЖрдо рддреМрд░ рдкрд░ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрддрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рдЗрдб рд╣реЛрддрд╛ рдерд╛
рдЕрдВрддрд╣реАрди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдХреЛ ":=" рдкрд░ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рднрд╛рд╡:

рдкрд░рд┐рд╡рд░реНрддрдиреАрдп := expr $(рдкрд░рд┐рд╡рд░реНрддрдиреАрдп)

?=
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп? = expr
VARIABLE рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ? = expr # рдмреЗрдХрд╛рд░, рд▓реЗрдХрд┐рди рдХрд╛рдиреВрдиреА

рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рд╡реЗрд░рд┐рдПрдмрд▓ рдкрд╣рд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ
рдореЗрдХрдлрд╝рд╛рдЗрд▓, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░, рдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВред рдЙрдкрд░реЛрдХреНрдд рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╣реИ
рдмрд┐рд▓реНрдХреБрд▓ рдмрд░рд╛рдмрд░

ifndef рд╡реИрд░рд┐рдПрдмрд▓
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп = рд╡реНрдпрдп
endif

!=
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп != рд╢реЗрд▓ рдХрдорд╛рдВрдб
VARIABLE != рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ

рд╢реЗрд▓ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдмрд┐рд▓рдХреБрд▓ рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ

рдЪрд░ := $(рд╢реЗрд▓ рдХрдорд╛рдВрдб)

рдмрд╣реБрдкрдВрдХреНрддрд┐ рдЪрд░

"рдкрд░рд┐рднрд╛рд╖рд┐рдд" рдХрдерди рдЙрдкрд░реЛрдХреНрдд рд╕рд░рд▓ рдХрдердиреЛрдВ рдХреЗ рдмрд╣реБрдкрдВрдХреНрддрд┐ рд╕рдорддреБрд▓реНрдп рд╣реИред
рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдмрд╛рдж рдСрдкрд░реЗрдЯрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред рдпрджрд┐ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдпрд╣ "рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ
=""ред "&=" рдФрд░ "+=" рдСрдкрд░реЗрдЯрд░ рдпрд╣рд╛рдВ рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╡реЗ рдЗрд╕реЗ рдЪрд┐рдкрдХрд╛ рджреЗрддреЗ рд╣реИрдВ
рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рдмрдЬрд╛рдп рдирдИ рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреБрд░рд╛рдирд╛ рдорд╛рдиред рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдХрдерди рдХреЗ рдмрд╛рдж рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ, рдпрд╛рдиреА рдорд╛рди рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ :=
рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рди рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐
рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рди рдХреА рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐
рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рди рдХреА рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐
рдПрдВрдбреАрдл

рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
...
рдПрдВрдбрдбреЗрдлрд╝

"рдкрд░рд┐рднрд╛рд╖рд┐рдд" рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рдХреАрд╡рд░реНрдб "рдирд┐рд░реНрдпрд╛рдд" рдпрд╛ "рд╡реИрд╢реНрд╡рд┐рдХ" рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
"рдУрд╡рд░рд░рд╛рдЗрдб"ред

рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рди рдореЗрдВ рдирдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ "рдкрд░рд┐рднрд╛рд╖рд┐рдд" рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛ рдЖрдк рд╕реАрдзреЗ рдкрд░реНрд▓ рдореЗрдВ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред ("рдПрдВрдбрд┐рдлрд╝" рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛
рдЬреАрдПрдирдпреВ рдореЗрдХ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреВрд▓рддрд╛ред рдЖрдк "рдПрдВрдбрдбреЗрдлрд╝" рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред) рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ
"рдбрд┐рдмреНрдмрд╛рдмрдВрдж рдХрдорд╛рдВрдб рдЕрдиреБрдХреНрд░рдо", рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

COMPILE_C_PROGRAM рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
@&echo "$(рдЗрдирдкреБрдЯ) рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ"
@$(рд╕реАрд╕реА) $(рд╕реАрдПрдлрдПрд▓рдПрдЬреАрдПрд╕) $(рд╕реАрдкреАрдкреАрдПрдлрдПрд▓рдЬреАрдПрд╕) $(рд╢рд╛рдорд┐рд▓) -рд╕реА $(рдЗрдирдкреБрдЯ) -рдУ $(рдЖрдЙрдЯрдкреБрдЯ)
рдПрдВрдбреАрдл

рдлрд┐рд░ рдЖрдк рдЗрд╕ рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдирд┐рдпрдореЛрдВ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:

%.рдУ:%.рд╕реА
$(рд╕рдВрдХрд▓рди_рд╕реА_рдХрд╛рд░реНрдпрдХреНрд░рдо)

$(ARCH)/%o : $(ARCH)/%c
$(рд╕рдВрдХрд▓рди_рд╕реА_рдХрд╛рд░реНрдпрдХреНрд░рдо)

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк рдЕрдХреНрд╕рд░ рдирдИ рдкрдВрдХреНрддрд┐ рдХреЗ рдмрдЬрд╛рдп рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ,
рдХреНрдпреЛрдВрдХрд┐ рд╢реЗрд▓ рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрдорд╛рдВрдб рдбрд┐рд▓реАрдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

COMPILE_C_PROGRAM = @echo "рд╕рдВрдХрд▓рди $(рдЗрдирдкреБрдЯ)"; \
$(CC) $(CFLAGS) $(CPPFLAGS) $(рд╢рд╛рдорд┐рд▓) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рд╣реЛрдЧрд╛, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдкрд░реНрд▓ рдХреЛ рдЗрд╕реЗ рд╢реЗрд▓ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ,
рдХрдорд╛рдВрдб рдХреЛ рд╕реАрдзреЗ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдпред рдЖрдкрдХреЛ рднреА рдПрдХ-рдПрдХ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛
рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рдирд┐рд░реНрдорд┐рдд, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдорд╛рдорд▓рд╛.

"рдкрд░рд┐рднрд╛рд╖рд┐рдд" рдХреЗ рднреАрддрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╛рдиреА "рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХреНрд╕: =" рдпрд╛ рдП рдкрд░
рд╡реЗрд░рд┐рдПрдмрд▓ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ": =", "рдПрдХреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ =" рдФрд░ "рдПрдХреНрд╕ + рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ" рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ
"$(рд╢реЗрд▓ рдХрдорд╛рдВрдб ...)" рдпрд╛ рдмрд┐рд▓реНрдЯрдЗрди "$(&рдХрдорд╛рдВрдб ...)" рдХреЛ рдиреНрдпреВрд▓рд╛рдЗрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд░рд┐рдХреНрдд рд╕реНрдерд╛рдиред

рдирд┐рд░реНрдпрд╛рдд рдЪрд░ рд╕реЗрд╡рд╛ рдореЗрд░реЗ рдЙрдкрдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ

VAR рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ...
рдирд┐рд░реНрдпрд╛рдд VAR = рдореВрд▓реНрдп
рдирд┐рд░реНрдпрд╛рдд VAR += рдорд╛рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ

рдкрд╣рд▓рд╛ рдлреЙрд░реНрдо рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде, рдЙрдкрдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдЪрд░ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ
рддрдм рд╡реЗрд░рд┐рдПрдмрд▓ рд╣реЛрддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рд░реВрдк, рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЪрд░ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ
рддреБрд░рдВрдд рдПрдХ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ. рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

рд╢реЗрдПрд░ рдХрд░реЗрдВ рдЪрд░ рдХреЗ рдкрд╛рд░ рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕

рд╡реИрд╢реНрд╡рд┐рдХ VAR...
рд╡реИрд╢реНрд╡рд┐рдХ VAR = рдорд╛рди
рд╡реИрд╢реНрд╡рд┐рдХ VAR &= рдорд╛рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ

рдкрд╣рд▓рд╛ рдлреЙрд░реНрдо рджрд┐рдП рдЧрдП рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рд╕рднреА рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдорд╛рди рдерд╛, рдЙрд╕ рдорд╛рди рдХреЛ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдПрдХред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐, рдЬрд┐рд╕ рд╕рдордп рдпрд╣ рдХрдерди рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдерд╛
рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп, рддреЛ рдЙрди рдореЗрдХрдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

рджреВрд╕рд░рд╛ рдлреЙрд░реНрдо, рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдПрдХ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ
рджреВрд░ред рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ ":=" рдХрд╛ рддреБрд░рдВрдд рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрдЧрд╛
рд╕реНрдерд╛рдиреАрдп рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдПред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд "=" рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрдЧрд╛
рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рдорд╛рди.

рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрдХрдк рдХрд┐рд╕реА рдореЗрдВ рднреА рдореЗрдХрдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдЖрджреЗрд╢, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рд▓рдХреНрд╖реНрдп рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд┐рдпрдо рдпрд╛ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдЗрд╕реЗ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рд░реВрдЯрдореЗрдХрдкреНрдкрдлрд╛рдЗрд▓ рдФрд░ рд╕рднреА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЕрдиреНрдп рдЬреЛ "рд▓реЛрдб-рдореЗрдХрдлрд╛рдЗрд▓" рдХреЗ рд╕рд╛рде рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рд╡реИрд╢реНрд╡рд┐рдХ GLIBLIBS ;= $(shell pkg-config --libs glib-2.0)

рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд┐рд╕реА рджрд┐рди рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП
рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╛рдо рдХреЛ рд╣рдореЗрд╢рд╛ рдХрд┐рд╕реА рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рд▓рдХреНрд╖реНрдп-рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп

рд▓рдХреНрд╖реНрдп: рдЪрд░ = рд╕реНрдЯреНрд░рд┐рдВрдЧ
рд▓рдХреНрд╖реНрдп: рдЪрд░ := рд╕реНрдЯреНрд░рд┐рдВрдЧ
рд▓рдХреНрд╖реНрдп: VARIABLE += рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ

рдЪрд░ рдХрд╛ рд▓рдХреНрд╖реНрдп-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд▓рдХреНрд╖реНрдп-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рдкреНрд░рднрд╛рд╡реА рд╣реИ рдХреЗрд╡рд▓
рдПрдХ рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬреЛ рджрд┐рдП рдЧрдП рд▓рдХреНрд╖реНрдп рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЗрд╕:

CFLAGS := -O2

my_prog: file1.o file2.o рд╡рд┐рд╢реЗрд╖_file.o

рд╡рд┐рд╢реЗрд╖_рдлрд╝рд╛рдЗрд▓.o : CFLAGS := -g

%.рдУ: %.рд╕реА
$(CC) $(CFLAGS) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рднреА ".c" рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдиреБрдХреВрд▓рди ("-O2") рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХреА рдЬрд╛рдПрдВрдЧреА рд╕рд┐рд╡рд╛рдп
"special_file.c", рдЬреЛ рдбрд┐рдмрдЧ рдореЛрдб ("-g") рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реИред рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИ
рдХреЗрд╡рд▓ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдХрд▓рди рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓рдХреНрд╖реНрдп-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗрд╡рд▓ рдирд┐рдпрдо рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ; рд╡реЗ
рдХрд┐рд╕реА рдирд┐рдпрдо рдХреЗ рд▓рдХреНрд╖реНрдп рдпрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╕рдордп рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рдирд┐рдпрдо
рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдХреНрд╖реНрдп рд╣реЛрдиреЗ рдкрд░, рд▓рдХреНрд╖реНрдп-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗрд╡рд▓ рд╕реЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
рдкреНрд░рдердо рд▓рдХреНрд╖реНрдпред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрдХрдк рдХреЗ рд▓рдХреНрд╖реНрдп-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд░ рдереЛрдбрд╝реЗ рднрд┐рдиреНрди рд╣реИрдВ
рдЬреАрдПрдирдпреВ рдореЗрдВ рдпрд╣ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рди рдХрд┐ рдЙрд╕ рдкрд░
рдЗрд╕рдХреЗ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА.

рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╡рд┐рд╕реНрддрд╛рд░ рд▓рдХреНрд╖реНрдп рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

test_*.o : CFLAGS += -DTEST

рдЬреАрдПрдирдпреВ рдореЗрдХ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП, "*" рдХреЗ рд╕реНрдерд╛рди рдкрд░ "%" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди
рдореЗрдХрдк рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдирд┐рдпрдо рдЕрдиреНрдп рдореЗрдХ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╣рдж рддрдХ
рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реАред рдЬреИрд╕рд╛ рдХрд┐ рд╕рднреА рдмрдирд╛рддрд╛ рд╣реИ, "$(CC)" рдпрд╛ "${CC}" рджреЛрдиреЛрдВ рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ
рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╕реА.рд╕реА. рдпрджрд┐ рдЖрдкрдХреЛ рд╢рд╛рдмреНрджрд┐рдХ рдбреЙрд▓рд░ рдЪрд┐рд╣реНрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдбрдмрд▓ рдбреЙрд▓рд░ рдЪрд┐рд╣реНрди ($$) рд▓рдЧрд╛рдПрдВ, рдЬреИрд╕реЗ
рдЗрд╕:

рд▓рдХреНрд╖реНрдп: dep1 dep2 dep3 dep4
рдФрд░ рдЖрд░рдПрдо-рдПрдл $ (рдЖрдЙрдЯрдкреБрдЯ)
$(рдЗрдирдкреБрдЯ) рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП; do cat $$file >> $(рдЖрдЙрдЯрдкреБрдЯ); рд╣реЛ рдЧрдпрд╛

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдХрдк рдореЗрдВ рдПрдХ "$[VARIABLE]" рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ, рдЬреЛ рдЕрдиреНрдп рдХреЗ рд╕рдорд╛рди рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рджреЛ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореЗрдХрдк рдХреБрдЫ рдФрд░ рднреА рдЯрдЯреЛрд▓ рд▓реЗред рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдирд┐рдпрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдФрд░/рдпрд╛ рд╕рд╢рд░реНрдд:

рдмреНрд░реИрдХреЗрдЯ_рдирд┐рдпрдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ =
ifdef SOME_VAR
рдмреНрд░реИрдХреЗрдЯ:
&echo рдпрд╣ рдПрдХ рдирд┐рдпрдо рд╣реИ -o $(рдЖрдЙрдЯрдкреБрдЯ)
endif
рдПрдВрдбрдбреЗрдлрд╝

$[рдмреНрд░реИрдХреЗрдЯ_рдирд┐рдпрдо]

рдЖрд░рд╕реА-рд╢реИрд▓реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдореЗрдХрдк рдЖрд░рд╕реА-рд╢реИрд▓реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рддрдерд╛рдХрдерд┐рдд рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдЧреНрд░рдгреА рдерд╛
рдЖрд░рд╕реА рд╢реИрд▓)ред рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рд░реВрдк рд╕реЗ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдореЙрдбреНрдпреВрд▓ = рдП рдмреА рд╕реА рдбреА

mylib.a : рдореЙрдбреНрдпреВрд▓_dir/$(MODULES).o $(OTHER_OBJECTS)
$(CXX) $(рдирд┐рд░реНрднрд░рддрд╛рдПрдВ) -рдУ $(рд▓рдХреНрд╖реНрдп)

MODULES рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ "module_dir/" рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпрдп ".o" рд╣реИ
рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред

рдЖрдк рд╢рдмреНрджреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдП рдореЗрдВ рдбрд╛рд▓реЗ рдмрд┐рдирд╛ рднреА рдЖрд░рд╕реА-рд╢реИрд▓реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЪрд░; рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ "$( рд╢рдмреНрдж1 рд╢рдмреНрдж2)" рд╣реИред рдХреЛрд╖реНрдардХ рдФрд░ рдХреЗ рдмреАрдЪ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ
рдкрд╣рд▓рд╛ рд╢рдмреНрджред рддреЛ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛:

mylib.a : рдореЙрдбреНрдпреВрд▓_dir/$( a b c d).o $(OTHER_OBJECTS)
$(CXX) $(рдирд┐рд░реНрднрд░рддрд╛рдПрдВ) -рдУ $(рд▓рдХреНрд╖реНрдп)

рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдЖрд░рд╕реА-рд╢реИрд▓реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рддрднреА рджреЗрдЧрд╛ рдЬрдм рдЙрд╕рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╢рдмреНрдж рд╣реЛрдВред
рдПрдХ рд╢рдмреНрдж рдореЗрдВ рдХрд╣реЗрдВ рддреЛ рдпрд╣ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдмрдирд╛рд╡рдЯ рдЬреИрд╕рд╛ рд╣реИред рдЕрдлрд╕реЛрд╕, рдЬрдм рд╡реЗрд░рд┐рдПрдмрд▓ рдЦрд╛рд▓реА рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╣реЛрддрд╛ рд╣реИ
рдЯрдХрд░рд╛рд╡ред рдкрд╛рд░рдВрдкрд░рд┐рдХ рдмрдирд╛рддрд╛ рд╣реИ рдмрд╕ рдЗрд╕реЗ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рд╕реЛрдЪрддреЗ рд╣реИрдВ
рдЗрд╕реЗ рдПрдХ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ "-I$(DIRLIST)" рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдП, рди рдХрд┐ рдПрдХ рдЕрдХреЗрд▓рд╛ "-I" рджреЗрдВред
рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдХ рд╕реВрдЪреА рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдП рдЬреЛ рдПрдХ рд╕реНрдерд╛рди рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ: "-I$( $(DIRLIST))" рдЖрдкрдХреЛ рджреЗрддрд╛ рд╣реИ
рдмрд┐рд▓реНрдХреБрд▓ рдЙрддрдиреЗ рд╣реА рд╡рд┐рдХрд▓реНрдк, рдЬрд┐рддрдиреЗ рд╕реВрдЪреА рдореЗрдВ рд╢рдмреНрдж рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдПрдХ рд╣реА рд╢рдмреНрдж рдореЗрдВ рдХрдИ рд╡реЗрд░рд┐рдПрдмрд▓ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдЬреЛ рд╢рдмреНрджреЛрдВ рдХреА рд╕рд╛рд░рдгреА рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрд░рд╕реА-рд╢реИрд▓реА
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдЙрддреНрдкрд╛рдж рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐
рддреБрдореНрд╣реЗрдВ рдЪрд╛рд╣рд┐рдП:

рдбреАрдЖрдИрдЖрд░рдПрд╕ = рдПрд╕1 рдПрд╕2
рдореЙрдбреНрдпреВрд▓ = рдП рдмреА рд╕реА
рдкреНрд░рддреНрдпрдп = .o .c
рдлрд╝рд╛рдЗрд▓реЗрдВ:= $(DIRS)/$(рдореЙрдбреНрдпреВрд▓)$(рдкреНрд░рддреНрдпрдп)

рдФрд░ FILES рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдЧреА

рдПрд╕1/рдПрдУ рдПрд╕1/рдПрд╕реА рдПрд╕1/рдмреАрдУ рдПрд╕1/рдмреАрд╕реА рдПрд╕1/рд╕реАрдУ рдПрд╕1/рд╕реАрд╕реА рдПрд╕2/рдПрдУ рдПрд╕2/рдПрд╕реА рдПрд╕2/рдмреАрдУ рдПрд╕2/рдмреАрд╕реА рдПрд╕2/рд╕реАрдУ рдПрд╕2/рд╕реАрд╕реА

рд╕рдлреЗрдж рд╕реНрдерд╛рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрд░рд╕реА-рд╢реИрд▓реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд┐рд╕реА рднреА рдЙрджреНрдзрд░рдг, рдХрд┐рд╕реА рднреА рдЧреЛрд▓, рдШреБрдВрдШрд░рд╛рд▓реЗ рдпрд╛ рд╡рд░реНрдЧ рдкрд░ рд░реБрдХрддрд╛ рд╣реИ
рдХреЛрд╖реНрдардХ, рдФрд░ ", : ; = # @" рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреАред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ
рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕реВрдЪреА. рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рджреНрд╡рд╛рд░рд╛ рд╣реЗрдбрд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛:

рдмреБрд░рд╛ := [рдП-рдЬреЗрдб]*/**/*.$( рдПрдЪрдкреАрдкреА рдПрдЪ) # [рдП-рдЬреЗрдб]*/**/*.рдПрдЪрдкреАрдкреА */**/*.рдПрдЪ
рдЕрдЪреНрдЫрд╛ := $( [рдП-рдЬреЗрдб]*/**/*.)$( рдПрдЪрдкреАрдкреА рдПрдЪ) # [рдП-рдЬреЗрдб]*/**/*.рдПрдЪрдкреАрдкреА [рдП-рдЬреЗрдб]*/**/*.рдПрдЪ

рдпрджрд┐ рдЖрд░рд╕реА-рд╢реИрд▓реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдЧреНрд░рдгреА рдпрд╛ рдЕрдиреБрдЧрд╛рдореА рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдЖрдкрдХреЗ рдореЗрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди, рддреЛ рдЖрдк рд╕реЗрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдЖрд░рд╕реА-рд╢реИрд▓реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╡реЗрд░рд┐рдПрдмрд▓ "makepp_simple_conatenation=1"ред рдЖрдк рдЗрд╕реЗ рдХрдорд╛рдВрдб рдкрд░ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд▓рд╛рдЗрди рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВред рдпрд╛ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд╕реЗрдЯ рдХрд░рдХреЗ рдкреНрд░рддрд┐-рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░
рдЖрдкрдХреА рдореЗрдХрдлрд╝рд╛рдЗрд▓. рдЖрдкрдХреЛ рдЗрд╕реЗ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдХреЗ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдЖрдк рдЗрд╕рдореЗрдВ рдлрдВрд╕ рд╕рдХрддреЗ рд╣реИрдВ
рдЕрдЬреАрдм рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдЬрд╣рд╛рдБ рдЖрд░рд╕реА-рд╢реИрд▓реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдореВрд▓реНрдпрд╛рдВрдХрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
(рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдП рдЧрдП рд╕рднреА рднрд╛рд╡ рдЖрд░рд╕реА-рд╢реИрд▓реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╕рднреА
рдмрд╛рдж рдореЗрдВ рднрд╛рд╡реЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореЗрдВ рднрд╛рд╡реЛрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд╕рдордп рд╕реЗ
рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдердиреЛрдВ рдХреЗ рдХреНрд░рдо рд╕реЗ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ
рдореЗрдХрдлрд╝рд╛рдЗрд▓, рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ "makepp_simple_conatenation" рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред) рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:

рд▓рдХреНрд╖реНрдп: makepp_simple_conatenation = 1
рдХреЛ рд▓рдХреНрд╖реНрдп:
&echo before_first$(LIST)after_last -o $(рдЖрдЙрдЯрдкреБрдЯ)

рдХреНрдпреЛрдВрдХрд┐ "$[VARIABLE]" рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди "$(VARIABLE)" рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдХреЛ rc рдореЗрдВ рдорд┐рд▓рд╛рдХрд░-
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╡рд╣ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрдЧрд╛ рдЬрд┐рд╕рдХреА рдЖрдк рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рдореЗрдВ рди рд▓рдкреЗрдЯреЗрдВ
рд╕реВрдЪреА:

рдП = рдП рдмреА
рдПрди = 1 2
рдЦрд╝рд░рд╛рдм := $(рдП)$[рдПрди]
рдЕрдЪреНрдЫрд╛ := $(рдП)$( $[рдПрди])

рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИрдВ

рдмреБрд░рд╛ := $(рдП)1 2 # рдП1 рдмреА1 2
рдЕрдЪреНрдЫрд╛ := $(рдП)$( 1 2) # рдП1 рдП2 рдмреА1 рдмреА2

рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рдВрджрд░реНрдн

рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рдВрджрд░реНрдн рдХрд╛ рд░реВрдк "$(VAR:A=B)" рд╣реИ, рдЬрд╣рд╛рдВ A рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЯрд░реНрди рд╣реИ рдФрд░ B рд╣реИ
рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЯрд░реНрдиред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рдиреНрджрд░реНрдн рдЗрд╕рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╣реИ
"рдкреИрдЯрд╕рдмрд╕реНрдЯ" рдлрд╝рдВрдХреНрд╢рдиред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

source_files = рдПрд╕реА рдмреАрд╕реА рд╕реАрд╕реА рдбреАрд╕реА
object_files = $(source_files:%c=%o)

"$(object_files)" рдХреЛ "a.o b.o c.o d.o" рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ред "%" рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ
рдХреЛрдИ рдордирдорд╛рдирд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ. рдпрджрд┐ рдП рдФрд░ рдмреА рджреЛрдиреЛрдВ "%" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛ рд╣реИ
рдкреНрд░рддреНрдпрдп, рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

object_files = $(source_files:.c=.o)
object_files = $(source_files:c=o) # рд╡рд╣реА, рдХреНрдпреЛрдВрдХрд┐ . рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рд╣реИ

рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдХреЗ in рдЪрд░

рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ) рдЖрд░рд╕реА-рд╕реНрдЯрд╛рдЗрд▓ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди ("makepp_simple_conatenation=1" рд╕реЗрдЯ рдХрд░рдХреЗ) рдФрд░ рдлрд┐рд░ рдЗрд╕ рддрд░рд╣ рдПрдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

рд╢реВрдиреНрдп =
рдЯреА = -рдУ $(рд╢реВрдиреНрдп)

рдпрд╛, рдЦрд╛рд▓реА рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд╕рд╛рде:

рдЯреА = -рдУ $()

рдЬрдм рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗрд░рд┐рдПрдмрд▓ "T" рдореЗрдВ "-o" рдХреЗ рдмрд╛рдж рдПрдХ рд╕реНрдкреЗрд╕ рд╣реЛрддрд╛ рд╣реИред

рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддрдХрдиреАрдХ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдЕрдкрдиреА рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рдкрд░реНрд▓ рдХреЛрдб рдХреЛ рдЕрдкрдиреЗ рдореЗрдВ рдбрд╛рд▓рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ
рдЗрд╕рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ("perl_begin" рдпрд╛ "sub" рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рдпрд╛ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ
рдирд┐рдпрдореЛрдВ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рд╢реЗрд▓ рдХрдерди рдореЗрдВ.

рдпреЗ рдорд╛рдорд▓реЗ рдЖрдо рддреМрд░ рдкрд░ рддрдм рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ рдЬрдм рд▓реЛрдЧ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ
рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпреВрдирд┐рдХреНрд╕ рдХрдорд╛рдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕реЗ, рдХрднреА-рдХрднреА рдХреЛрдИ рджреЗрдЦ рд▓реЗрддрд╛ рд╣реИ
рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬрд╝реЗрдВ:

ifeq ($(ARCH),weirdarch)
рдУ := /рдЖрдЙрдЯрдкреБрдЯ=
рдЕрдиреНрдп
рд╢реВрдиреНрдп:=
рдУ := -рдУ $(рд╢реВрдиреНрдп)
endif

%.рдУ:%.рд╕реА
$(рдХрдВрдкрд╛рдЗрд▓рд░) $(рдЗрдирдкреБрдЯ) $(O)$(рдЖрдЙрдЯрдкреБрдЯ)

рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдореЗрдХрдкреНрдк рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдпрд╣ рдЖрдкрдХрд╛ рд╣реИ
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдо рдЬрдЯрд┐рд▓ рд╡реИрд░рд┐рдПрдмрд▓ рд╣реИ рддреЛ рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ рдХрд╛рдлреА рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реИрдВ
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди, рдЬреИрд╕реЗ,

ifeq ($(ARCH),weirdarch)
%.рдУ:%.рд╕реА
$(WEIRD_COMPILER) $(рдЗрдирдкреБрдЯ) /рдЖрдЙрдЯрдкреБрдЯ=$(рдЖрдЙрдЯрдкреБрдЯ)
рдЕрдиреНрдп
%.рдУ:%.рд╕реА
$ (рд╕реАрд╕реА) -рд╕реА $ (рдЗрдирдкреБрдЯ) -рдУ $ (рдЖрдЙрдЯрдкреБрдЯ)
endif

рд╡реИрд░рд┐рдПрдмрд▓ рдирд╛рдореЛрдВ рдореЗрдВ рдХрднреА рднреА рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдорд╛рдиреЛрдВ рдореЗрдВред рдпрд╣ рднрд┐рдиреНрди рд╣реИ
рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рддреЗ рд╣реИрдВред

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЪрд░
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЪрд░ рд╡реЗ рдЪрд░ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕ рдирд┐рдпрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рдорд╛рди рдЧреНрд░рд╣рдг рдХрд░рддреЗ рд╣реИрдВ
рдЙрдирдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Makepp рдЕрдиреНрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ
рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рд▓рд┐рдП рдХрдо рдЧреВрдврд╝, рд▓рдВрдмреЗ рдирд╛рдо рд╣реИрдВ
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ. (рд▓реАрдЧреЗрд╕реА рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрди рдирд╛рдореЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, ...
рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрд░реНрде рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ
рдЖрдкрдХреЗ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ "target = abc", рддреЛ "$(target)" рд╣рдореЗрд╢рд╛ "abc" рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрдЧрд╛, рдФрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛
рдЕрдм $@ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред)

рдореЗрдХрдк рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╕рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЪрд░реЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

рдЙрддреНрдкрд╛рджрди
рд▓рдХреНрд╖реНрдп
$@ рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдо рдХрд╛ рд▓рдХреНрд╖реНрдп. рджрд░рдЕрд╕рд▓, рдЪреВрдВрдХрд┐ рдореЗрдХрдк рдХрдИ рд▓рдХреНрд╖реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ
рдХреЛрдИ рднреА рдирд┐рдпрдо, рдпрд╣ рд╣реИ рдкреНрд░рдердо рд▓рдХреНрд╖реНрдпред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо рдореЗрдВ

y.tab.c y.tab.h: parser.y
$(YACC) -o $(рдЖрдЙрдЯрдкреБрдЯ) $(YFLAGS) $(рдЗрдирдкреБрдЯ)

"$(рдЖрдЙрдЯрдкреБрдЯ)" рдореЗрдВ рдорд╛рди рд╣реЛрдЧрд╛ y.tab.c. рдЪреВрдБрдХрд┐ рдпреЗ рдЬрд╛рджреБрдИ рдЪрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИрдВ
рдлрд╝рдВрдХреНрд╢рдВрд╕, рдЖрдк рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ 1 рдпрд╛ рдкреАрдЫреЗ рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ
1 рд╕реЗред рддреЛ "$(рдЖрдЙрдЯрдкреБрдЯ 2)" рдпрд╛ "$(рдЖрдЙрдЯрдкреБрдЯ -1)" рдореЗрдВ рдорд╛рди рд╣реЛрдЧрд╛ рд╡рд╛рдИ.рдЯреИрдм.рдПрдЪ.

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕ рдЪрд░ рдХреЗ рддреАрдиреЛрдВ рд░реВрдкреЛрдВ рдХрд╛ рдорд╛рди рд╕рдорд╛рди рд╣реИ, рдкрд░рдВрддреБ рдЗрдирдореЗрдВ рдЕрдВрддрд░ рд╣реИ
рдмрд╣реБрд▓рдХреНрд╖реНрдп рдирд┐рдпрдореЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛. рдпрджрд┐ рдЖрдк рдкреБрд░рд╛рдиреА рд╢реИрд▓реА рдХреЗ рдЧреБрдкреНрдд рдирд╛рдо $@ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ,
рдореЗрдХрдк рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдПрдХ рдЖрдзреБрдирд┐рдХ рдирд┐рдпрдо рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкреБрд░рд╛рдиреА рд╢реИрд▓реА рдХреЗ рдирд┐рдпрдо рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реЗрдЧрд╛
рдЙрди рд╕рднреА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ:

рдП рдмреА: # рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ: рдП рдФрд░ рдмреА рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо
$@ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВ

рд╕реА рдбреА: # рддреНрд░реБрдЯрд┐: рдПрдордкреАрдкреА рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдбреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд┐рдпрд╛
$(рдЖрдЙрдЯрдкреБрдЯ) рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВ

outputs рдХреЗ
рд▓рдХреНрд╖реНрдп
рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдо рдХреЗ рд╕рднреА рд▓рдХреНрд╖реНрдп. "$(рд▓рдХреНрд╖реНрдп)" рдХреЗ рд╕рдорд╛рди, рдЬрдм рддрдХ рдХрд┐ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рди рд╣реЛрдВ
рд▓рдХреНрд╖реНрдпред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, "$(рдЖрдЙрдЯрдкреБрдЯ)" y.tab.c y.tab.h рд╣реЛрдЧрд╛ред рдЖрдк рдПрдХ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╕реВрдЪрдХрд╛рдВрдХ рд╕реВрдЪреА, рдЗрд╕рд▓рд┐рдП "$(рдЖрдЙрдЯрдкреБрдЯ 2 1)" y.tab.h y.tab.c рд╣реЛрдЧрд╛ред

рдирд┐рд░реНрднрд░рддрд╛
рдирд┐рд╡реЗрд╢
$< рдирд┐рдпрдо рдХреА рдкрд╣рд▓реА рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдирд┐рдпрдо рдореЗрдВ

%.рдУ:%.рд╕реА
$(CC) $(CFLAGS) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

"$(input)" рдХрд╛ рдирд╛рдо рд╣реЛрдЧрд╛ .c рдлрд╝рд╛рдЗрд▓, рдЪрд╛рд╣реЗ рдХреБрдЫ рднреА рд╣реЛ .h рдлрд╝рд╛рдЗрд▓реЗрдВ рдореЗрдХрдк
рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ. рдпрджрд┐ рдЖрдк рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрд╛рд╕ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╕реВрдЪрдХрд╛рдВрдХ: "$(рдЗрдирдкреБрдЯ $(INDEX))" рд╕реВрдЪрдХрд╛рдВрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред

рдирд┐рд░реНрднрд░рддрд╛
рдирд┐рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ
$^ рд▓рдХреНрд╖реНрдп рдХреА рд╕рднреА рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ, рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ .h рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ
рдХреЗ рд▓рд┐рдП makepp_scanning рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдо рдореЗрдВ

myprog.o : *.o
$(CC) $(CFLAGS) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

"$(рдЗрдирдкреБрдЯ)" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рднреА .o рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреАред рдЖрдк рдХреЗрд╡рд▓ рд╡рд╣реА рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реВрдЪреА рдкрд╛рд╕ рдХрд░рдХреЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ,
рдЖрдк рдЙрдиреНрд╣реЗрдВ "$(рдЗрдирдкреБрдЯ 2 3 4)" рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдпрд╣ рднреА рдирд╣реАрдВ рд╣реИ)
рдЖрд╢рд╛рдЬрдирдХ)ред

рдХреНрд░рдордмрджреНрдз_рдирд┐рд░реНрднрд░рддрд╛рдПрдБ
рдХреНрд░рдордмрджреНрдз_рдЗрдирдкреБрдЯ
$+ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде, рдХреНрд░рдордмрджреНрдз рдХреНрд░рдо рдореЗрдВ рд▓рдХреНрд╖реНрдп рдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБред
"$(рд╕реЙрд░реНрдЯ $(рдЗрдирдкреБрдЯ))" рдХреЗ рдмрд░рд╛рдмрд░ред

рдкрд░рд┐рд╡рд░реНрддрд┐рдд_рдирд┐рд░реНрднрд░рддрд╛рдПрдБ
рдкрд░рд┐рд╡рд░реНрддрд┐рдд_рдЗрдирдкреБрдЯ
$? рд▓рдХреНрд╖реНрдп рдХреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЬреЛ рдмрджрд▓ рдЧрдИ рд╣реИрдВ. рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдкрд╖реНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИ
рдирд┐рд░реНрднрд░рддрд╛рдПрдБ (рдЕрд░реНрдерд╛рддреН, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ), рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдЦреЛрдЬреА рдирд╣реАрдВ рдЧрдИ рд╣реИрдВ
рд╕реНрдХреИрдирд┐рдВрдЧ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ (рдЬреИрд╕реЗ .h рдлрд╝рд╛рдЗрд▓реЗрдВ)ред

рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдорд╛рдВрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

libрдорд╛рдЗрди.рдП: $(рдореЙрдбреНрдпреВрд▓): рдмрд┐рд▓реНрдб_рдЪреЗрдХ рдЗрдЧреНрдиреЛрд░_рдПрдХреНрд╢рди
$(AR) ru $@ $?

рдЕрд░реНрдерд╛рдд, ar рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдмрджрд▓ рдЧрдП рд╣реИрдВред (рдзреНрдпрд╛рди рджреЗрдВ
"ignore_action" рдЪреЗрдХ рдирд┐рдпрдо рдмрдирд╛рдПрдБред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореЗрдХрдк рдЗрд╕реЗ рдмрд╛рдзреНрдп рдХрд░реЗрдЧрд╛
рдЬрдм рднреА рдЗрд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рддрдм рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рдПрдЧреАред рдпрджрд┐ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИ, рддреЛ
рдПрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдПрдЖрд░ рдЖрд░рдпреВ рд▓рд┐рдмрдорд╛рдЗрди.рдП" рд╣реЛрдЧреА рдЬреЛ рд╕рдВрднрд╡рддрдГ рдЙрд╕рд╕реЗ рднрд┐рдиреНрди рд╣реИ
рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдЖрдкрдиреЗ рдЗрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдерд╛, рддреЛ рдмрд┐рдирд╛ "ignore_action" рдХреЗ рдореЗрдХрдк рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдореЗрдВ
рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде, рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рджреЗрдЦрдирд╛
"ignore_action" рдкрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП makepp_build_checkред)

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрднрд┐рд▓реЗрдЦ рдмрдирд╛рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЖрдкрдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛
рднрд░реЛрд╕реЗрдордВрджред рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реВрдЪреА рд╕реЗ рдореЙрдбреНрдпреВрд▓, рдореЙрдбреНрдпреВрд▓ рдЕрднреА рднреА рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд░рд╣реЗрдВрдЧреЗ рдФрд░
рдореЗрдХрдкреНрдк

рддрдирд╛
$* рдПрдХ рдкреИрдЯрд░реНрди рдирд┐рдпрдо рдореЗрдВ рд╕реНрдЯреЗрдо (рдпрд╛рдиреА, рдЬреЛ рднреА '%' рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реЛ)ред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдпрд╣
рдпрд╣ рдПрдХ рдкреИрдЯрд░реНрди рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдпрд╛рдиреА, рдпрд╣ рд╣реИ)ред
"$(рдмреЗрд╕рдирд╛рдо $(рдЗрдирдкреБрдЯ))" рдХреЗ рдмрд░рд╛рдмрд░ред

рдпрд╣ рдЕрдзрд┐рдХрддрд░ рдкрд╢реНрдЪрдЧрд╛рдореА рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдХ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ
рдпрд╣ рдмрддрд╛рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдХреИрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП .c рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХрд░реЗрдВ .o рдлрд╝рд╛рдЗрд▓ рдЬреИрд╕реА рдереА
рдЗрд╕:

.рд╕рд╣:
$(CC) $(CFLAGS) -c $*.c -o $*.o

рдпрд╣ рдирд┐рдпрдо рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдШрдЯрд┐рдпрд╛ рддрд░реАрдХрд╛ рд╣реИ. рдЬреАрдПрдирдпреВ-рдореЗрдХ рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИ
рдкреИрдЯрд░реНрди рдирд┐рдпрдо, рдЗрд╕ рдкреНрд░рдХрд╛рд░:

%.рдУ:%.рд╕реА
$(CC) $(CFLAGS) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП
"foreach" рдЦрдВрдб рд╕реЗ рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдирд╛рдоред "foreach" рдЦрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
рд▓реЗрдХрд┐рди рд╡реЗ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рд╡рд╛рд▓реЗ рдкреИрдЯрд░реНрди рдирд┐рдпрдо рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдореЗрдХрдк рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдХреЗ рд▓рд┐рдП
рдЙрджрд╛рд╣рд░рдг,

#
# рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде .c рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдВ:
#
%.рд╕реА : %.рдХреЗ
$ (рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░) $ (рдЗрдирдкреБрдЯ)> $ (рдЖрдЙрдЯрдкреБрдЯ)

#
# .c рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ .o рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ:
#
%.рдУ:%.рд╕реА
$(CC) $(CFLAGS) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

#
# .c рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрдХрд▓рди рдлрд╝реНрд▓реИрдЧ рдЬреЛ рд╡реНрдпреБрддреНрдкрдиреНрди рд╣реИрдВ
# .k рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ:
#
$(foreach:%.k=%.o): $(foreach:%.k=%c) : foreach *.k
$(CC) $(SPECIAL_K_FLAGS) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдореЗрдВ рдлрд╝реЛрд░реИрдЪ рдХреНрд▓реЙрдЬрд╝ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВред

$/ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИ, рдпрд╛ рддреЛ "/", рдпрд╛ рдореВрд▓ рд╡рд┐рдВрдбреЛрдЬрд╝ "\" рдкрд░ред рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдЖрдк рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкреЛрд░реНрдЯреЗрдмрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛. рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрдирд╛рдпрд╛ рд╣реИ:

рдореЗрд░рд╛ рдЖрдЙрдЯрдкреБрдЯ:
.$/myprog >$(рдЖрдЙрдЯрдкреБрдЯ)

рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЗрддрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдВрдбреЛрдЬрд╝ рдпреВрдирд┐рдХреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ
рд╡рд╣рд╛рдБ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕.

рд╡рд┐рдХрд▓реНрдк рдЪрд░
рдЖрдк рдЗрдиреНрд╣реЗрдВ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рд╕рднреА рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рд┐рд╡рд╛рдп рдпрджрд┐ рдЕрдиреНрдпрдерд╛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реЛ)ред
рдореЗрдХрдк рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡реЗ рд╕рднреА рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ.

MAKEPP_DEBUG
рдпрджрд┐ рдЖрдк рдореЗрдХрдк рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╕рд╣реА рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдбрд┐рдмрдЧрд┐рдВрдЧ рдорд┐рд▓рддреА рд╣реИ
рдЬрд╛рдирдХрд╛рд░реА рдпрд╣ рддрдм рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ "RULE_SOURCE" рд╣реИ, рдЬрдм рдпрд╣ рдЗрд╕рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдкреНрд░рднрд╛рд╡реА рд╣реИ
рдореЗрдХрдкрд┐рдирдлреЛ, рдПрдордкреАрдЖрдИ рдФрд░ рдиреАрдЪреЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рдирд┐рдпрдо рдорд┐рд▓рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг
рдореЗрдХрдкреНрд▓реЙрдЧ, рдПрдордкреАрдкреАрдПрд▓ред рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдпрд╣ рднреА рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдореЗрдХрдк рдХреА рдореЗрдореЛрд░реА рдЦрддреНрдо рд╣реЛ рдЧрдИ рд╣реИ рдпрд╛ рд╣реИрдВрдЧ рд╣реЛ рдЧрдпрд╛ рд╣реИ,
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдорд╛рди рдЪрд░реЛрдВ рдХрд╛ рдЕрдВрддрд╣реАрди рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ:

рдП = $рдП # рд╕реНрдердЧрд┐рдд рдореВрд▓реНрдпрд╛рдВрдХрди, рдЖрд╡рд╢реНрдпрдХрддрд╛ :=
рдмреА = $рд╕реА
рд╕реА = $рдмреА

MAKEPP_LN_CP
&ln рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдиреЛрдЯ рджреЗрдЦреЗрдВред

makepp_percent_subdirs
рд▓рдХреНрд╖реНрдп рдпрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдорд┐рд▓рд╛рди рдореЗрдВ "%" рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рди (рдЬреИрд╕реЗ 1) рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВред

makepp_require_phony
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирдХрд▓реАрдкрди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рди (рдЬреИрд╕реЗ 1) рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ (рдЕрд░реНрдерд╛рдд рдпрджрд┐ рдХреЛрдИ рдирд┐рдпрдо
рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ)ред рдпрд╣ рд╡реЗрд░рд┐рдПрдмрд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рддреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдЯреВрдЯреА рд╣реБрдИ рдирд┐рд░реНрднрд░рддрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЛ рд░реЛрдХреЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╢реНрдЪрд╡рд░реНрддреА рд╕рдВрдЧрддрддрд╛ рдЯреВрдЯ рдЬрд╛рдПрдЧреА
рдореИрд▓рд╛ рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ред

рдореЗрдХрдкреНрдк_рд╕рд┐рдЧреНрдиреЗрдЪрд░_рд╕реА_рдлреНрд▓реИрдЯ
рдпрд╣ C рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЗрд╕реЗ рдЕрдкрдиреЗ рдЗрд▓рд╛рдЬ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд╣реА рдорд╛рди (рдЬреИрд╕реЗ 1) рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
рд╕реНрд░реЛрдд рдЪрдкрдЯреЗ рд╣реИрдВ, рдпрд╛рдиреА рд╕рднреА рдирдИ рд▓рд╛рдЗрдиреЗрдВ (рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рд╣реИрдВ
рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ "#рд▓рд╛рдЗрди" рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореЗрдХрдкреНрдк_рд╕рд┐рдВрдкрд▓_рдХреЙрдиреНрдЯреЗрдиреЗрд╢рди
"рдЖрд░рд╕реА-рд╢реИрд▓реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди" рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рди (рдЬреИрд╕реЗ 1) рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред

PERL
рдЖрдк рдЗрд╕реЗ рд╕рдЯреАрдХ рдкрд░реНрд▓ рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдореЗрдХрдк рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рд╕реБрдЗрдЯ, рдФрд░ рдЗрд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВред рдпрд╣ рдЙрд╕реА рдкрд░реНрд▓ рдХреЗ рд╕рд╛рде рдЙрдк-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╣реИ
рдЬреНрдпрд╛рджрд╛рддрд░ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ, рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдФрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред

рд╡реАрдкрде
рдЗрд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдХреБрдЫ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ "vpath% рдорд╛рди" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЪрд░
Makepp рдХреБрдЫ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

AR рдЪреВрдХ: "рдПрдЖрд░"ред

рдЕрд░рдлреНрд▓реИрдЧреНрд╕
рдЪреВрдХ: "рдЖрд░рд╡реА"ред

AS рдЪреВрдХ: "рдЬреИрд╕рд╛"ред

CC рдЪреВрдХ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ "gcc", "egcc", "pgcc", "c89" рдпрд╛ "cc", рдпрд╛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд "рд╕реАрдПрд▓" рдпрд╛ "рдмреАрд╕реАрд╕реА32"ред

рд╕реАрдПрдлрдПрд▓рдЬреАрдПрд╕
рдЪреВрдХ: рдпрджрд┐ "$(CC)" рдПрдХ GNU рдХрдВрдкрд╛рдЗрд▓рд░ "-g -Wall" рд╣реИ, рдпрджрд┐ рдпрд╣ рджреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ
рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреБрдЫ рднреА рдирд╣реАрдВ, рдЕрдиреНрдпрдерд╛ "-рдЬреА"ред

рджрд╣реА
рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдХрдлрд╝рд╛рдЗрд▓ рд╕реНрдерд┐рдд рд╣реИред

рд╕реАрдПрдХреНрд╕рдПрдХреНрд╕ рдЪреВрдХ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ "g++", "c++", "pg++", "cxx", "C""C" рдпрд╛ "aCC", рдпрд╛ рдкрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛
рд╡рд┐рдВрдбреЛрдЬрд╝ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ "рд╕реАрдПрд▓" рдпрд╛ "рдмреАрд╕реАрд╕реА32"ред

CXXрдлрд╝реНрд▓реИрдЧ
рдЪреВрдХ: рдпрджрд┐ "$(CXX)" рдПрдХ GNU рдХрдВрдкрд╛рдЗрд▓рд░ "-g -Wall" рд╣реИ, рдпрджрд┐ рдпрд╣ рджреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ
рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреБрдЫ рднреА рдирд╣реАрдВ, рдЕрдиреНрдпрдерд╛ "-рдЬреА"ред

F77 рдЪреВрдХ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ "f77", "g77" рдпрд╛ "fort77" рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ред

FC рдЪреВрдХ: "$(F77)"ред

LD рдЪреВрдХ: "рдПрд▓рдбреА"ред

рд▓реЗрдХреНрд░рд╕ рдЪреВрдХ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ "рд▓реЗрдХреНрд╕" рдпрд╛ "рдлреНрд▓реЗрдХреНрд╕" рдХреЗ рдмреАрдЪ рдкрд╛рдпрд╛ рдЧрдпрд╛ред

рд▓рд┐рдмрдЯреВрд▓
рдЪреВрдХ: "рд▓рд┐рдмрдЯреВрд▓"ред

MAKE
рдЗрд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рди рд╣реИрдВ, рдЬреЛ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдпрд╛ рди рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
"-рдкрд╛рд░рдВрдкрд░рд┐рдХ-рдкреБрдирд░рд╛рд╡рд░реНрддреА-рдмрдирд╛рдПрдБ"ред Makepp рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдЬрдмрдХрд┐ рдЖрдк рдЗрд╕реЗ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рдХреЙрд▓ рдХреЛ рдПрдХ рдореЗрдВ рдмрджрд▓реЗрдВ
рдореЗрдХрдк рд╡рд┐рд╢рд┐рд╖реНрдЯ "$((MAKE))", рдЬреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рд╣рдорд╛рд░рд╛ рд╕реНрдорд╛рд░реНрдЯ рд░рд┐рдХрд░реНрд╕рди рдХрд╛рд░реНрдп рдмрд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд▓рдХреНрд╖реНрдп рдмрдирд╛рдПрдВ
рдпрд╣ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрдХрдк рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЙрд╕рд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрднреА рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм
рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдХреНрд╖реНрдп рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛.

рдЪреВрдХ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЬреЛ рднреА рд╕реНрдкрд╖реНрдЯ рд▓рдХреНрд╖реНрдп (рдпрд╛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЖрд╣реНрд╡рд╛рди)ред
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓рдХреНрд╖реНрдп рдмрдирд╛рддреЗ рд╕рдордп рдЦрд╛рд▓реА рдХрд░реЗрдВред

ifneq $(рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд┐рд╢реЗрд╖-рд▓рдХреНрд╖реНрдп, $(MAKECMDGOALS))
# рд╡рд┐рд╢реЗрд╖-рд▓рдХреНрд╖реНрдп рд╡рд░реНрддрдорд╛рди рд╕реНрдкрд╖реНрдЯ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ
рдЕрдиреНрдпрдерд╛ ifeq $(MAKECMDGOALS)
# рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ
endif

рдореЗрдХрдлреНрд▓реИрдЧреНрд╕ (рдирд┐рд░реНрдпрд╛рдд)
рд╡реЗ рдорд╛рдирдХ рд╡рд┐рдХрд▓реНрдк рдЬрд┐рдирдХреЗ рд╕рд╛рде рдореЗрдХрдк рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд┐рдирдХрд╛ рдПрдХ рдЕрдХреНрд╖рд░ рд╣реЛрддрд╛ рд╣реИ
рдлреЙрд░реНрдо рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдЧреНрд░рдгреА "-" рдХреЗ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕реНрд╡рд░реНрдЧ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ gmake рдиреЗ рдХреНрдпреЛрдВ рдЪреБрдирд╛
"-" рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП).

рдореЗрдХрдирдлреЛ
рдЪреВрдХ: "рдореЗрдХрдЗрдиреНрдлреЛ"ред

рдореЗрдХрдкрдлреНрд▓реИрдЧ (рдирд┐рд░реНрдпрд╛рдд)
рдЗрд╕реЗ MAKEFLAGS рдХреЗ рд╕рдорд╛рди рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдпрд╣ рд╡реЗрд░рд┐рдПрдмрд▓ рдореМрдЬреВрдж рд╣реЛ
рдореЗрдХрдк рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдгред

_MAKEPPFLAGS (рдирд┐рд░реНрдпрд╛рддрд┐рдд)
POSIX/gmake рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ makepp рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдХрд▓реНрдк, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде makepp
рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ред рдпреЗ рдПрдХ рдЕрд▓рдЧ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рд▓реАрдЧреЗрд╕реА рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдЯреВрдЯ рдирд╣реАрдВ рд╕рдХрддреА
MAKEFLAGS рдХреЛ рдЕрдирд╕реЗрдЯ рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рддрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рд╣реИ
"-рдкрд╛рд░рдВрдкрд░рд┐рдХ-рдкреБрдирд░рд╛рд╡рд░реНрддреА-рдмрдирд╛рдПрдБ"ред

MAKEPP_рд╕рдВрд╕реНрдХрд░рдг
рдореЗрдХрдкреНрдк рдХрд╛ рд╡рд╣ рд╕рдВрд╕реНрдХрд░рдг рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рдПрдХ рд╣реЛрдЧрд╛
рд╣рд╛рдЗрдлрд╝рди рдХреЗ рдмрд╛рдж YYMMDD рдФрд░ рдХреБрдЫ рдФрд░ рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛ред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ "ifdef" рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдореЗрдХрдк рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рдЕрдиреНрдп рдирд┐рд░реНрдорд╛рдгреЛрдВ рд╕реЗ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЪреВрдХ: рд╡рд╣реА рдорд╛рди "makepp --version" рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ

PWD "CURDIR" рдХрд╛ рдЙрдкрдирд╛рдоред

RM рдЪреВрдХ: "рдЖрд░рдПрдо-рдПрдл"ред рдпрд╣ рд▓реАрдЧреЗрд╕реА рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИред рдирдП рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдорд╛рдирддрдГ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд &rm рдХрдорд╛рдВрдб рд╕реАрдзреЗред рдпрджрд┐ рдЖрдк рдПрдХ рдирдХрд▓реА рд╕реНрд╡рдЪреНрдЫ рдирд┐рдпрдо рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рджреЗрдЦреЗрдВ
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "makeppclean -r" рдХрдорд╛рдВрдбред

рдЬрдбрд╝
рдЖрдкрдХреЗ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрде, рдпрд╛рдиреА рдЖрдЧреЗ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛
рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ "RootMakeppfile(.mk)" рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╡реЗрд░рд┐рдПрдмрд▓ рд╣реИ
рдЦрд╛рд▓реА рдХрд░реЗрдВред

рд╢реЗрд▓
рдЗрд╕ рдЪрд░ рдХрд╛ рд╕рдореНрдорд╛рди рдХреЗрд╡рд▓ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЗрд╕реЗ "рдирд┐рд░реНрдпрд╛рдд" рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ рд╢реИрд▓ рд╣реИ
рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдЪрд░рд┐рддреНрд░ (рд╕рд╛рджрд╛) рдХреЗ рд╕рд╛рде рдЧреИрд░-рдирд┐рд░реНрдорд┐рдд рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЬрд┐рдиреНрд╣реЗрдВ рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)ред рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕реНрдЯреНрд░реЙрдмреЗрд░реА рдпрд╛ рдПрдХреНрдЯрд┐рд╡рд╕реНрдЯреЗрдЯ рдкрд░реНрд▓ рдкрд░, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ
рдПрдХ рдпреВрдирд┐рдХреНрд╕-рдЬреИрд╕рд╛ рд╢реЗрд▓, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╢реЗрд▓ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ "sh" рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдпрд╛ "sh.exe" рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓рд┐рдВрдЧ рдореЗрдХрдкред

рдЪреВрдХ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ "/usr/xpg4/bin/sh" (рдЬреИрд╕реЗ рд╕реЛрд▓рд╛рд░рд┐рд╕) рдпрд╛ "/sbin/xpg4/sh" рдХреЗ рдмреАрдЪ рдкрд╛рдпрд╛ рдЧрдпрд╛
(рдЙрджрд╛. рд░рд┐рд▓рд╛рдпрдВрдЯ рдпреВрдирд┐рдХреНрд╕) рдпрд╛ "/ рдмрд┐рди / рд╢".

рд╡рд╛рдИрдПрд╕реАрд╕реА
рдЪреВрдХ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ "рдмрд╛рдЗрд╕рди -рд╡рд╛рдИ" рдпрд╛ "рдпрд╛рдХ" рдХреЗ рдмреАрдЪ рдкрд╛рдпрд╛ рдЧрдпрд╛ред

рдЪрд░ рдФрд░ рдкрд░реНрд▓
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдорд╛рди рд╕рд╛рдорд╛рдиреНрдп рдкрд░реНрд▓ рд╕реНрдХреЗрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЖрдк рдЙрди рддрдХ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рд╕рдХреЗрдВ
рдпрджрд┐ рдЖрдкрдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдХреЛрдИ рдЬрдЯрд┐рд▓ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдкрд░реНрд▓ рдХреЛрдб; makepp_extending рджреЗрдЦреЗрдВ
рдмреНрдпреЛрд░рд╛ рд╣реЗрддреБред

рдкрд░реНрд▓ рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓ рддрдХ рдкрд╣реБрдВрдЪ рдЙрдиреНрд╣реЗрдВ "рдПрдордкреАрдкреА::рдЧреНрд▓реЛрдмрд▓" рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд░рдХреЗ рд╣рд╛рд╕рд┐рд▓ рдХреА рдЬрд╛рддреА рд╣реИред
рдкреИрдХреЗрдЯред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рднреА рд╡реЗрд░рд┐рдПрдмрд▓, рдЬреЛ рдЕрднреА рддрдХ рд╡рд░реНрддрдорд╛рди рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬреЛ рдЖрдк
рдЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рддрдм рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕реЗ рдХрд┐ рдЖрдкрдиреЗ рдЕрднреА-рдЕрднреА рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реЛ
рдЗрд╕рдХреЗ рд▓рд┐рдП "рд╡реИрд╢реНрд╡рд┐рдХ" рдХрдердиред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рд╕реАрдзреА рдкрд╣реБрдБрдЪ рддреНрд░реБрдЯрд┐-рдкреНрд░рд╡рдг рд╣реИ! рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЗрди рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджрд┐рдпрд╛ рд╣реЛ
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдЕрдиреНрдп рдореЗрдХрдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХреА рдЧрдИ рдереАрдВ
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдЪрд░ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдпрд╛ рд▓рдХреНрд╖реНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реЛред рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ
рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдорд╛рди рдЬреНрдЮрд╛рдд рдХрд░реЗрдВ, рдпрд╛ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп, рдЗрд╕рдХреА рд╕рдВрдкрддреНрддрд┐ рдЫреАрди рд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИ
(рд▓рдХреНрд╖реНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, "рдУрд╡рд░рд░рд╛рдЗрдб" рд╕рдВрд╢реЛрдзрдХ рдХреЗ рдмрд░рд╛рдмрд░ред)

рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдЖрдк рдЗрди рдЪрд░реЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рднреА рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рд╡реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрдВ
"=" рдпрд╛ ";="ред рд╡рд┐рд╢реЗрд╖ рд╡реИрд░рд┐рдПрдмрд▓ рдЬреИрд╕реЗ "$(CC)" рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рди рд╣реЛрдВ
рдХреЛ рд╕реМрдВрдкрдирд╛ред рдЗрд╕рд▓рд┐рдП рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдкрдХреЛ рдЙрдирдХрд╛ рдореВрд▓реНрдп рдирд╣реАрдВ рджрд┐рдЦреЗрдЧрд╛.

рдЗрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдореЗрдХрдк рдХреЛ рд╕рд╣реА рдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рджрд┐рдпрд╛ рдЬрд╛рдПред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
"рдореЗрдХрдкрд░реНрд▓" рд╡реИрд░рд┐рдПрдВрдЯ, рдЬрд┐рд╕рдореЗрдВ рдкрд░реНрд▓ рдХреЛрдб рдорд┐рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рд╡реНрдпрд╛рдЦреНрдпрд╛:

рдореЗрдХрдкрд░рд▓ { $$current_value = '$(MAKEFILE_VAR)' }

рдпрджрд┐ рдЖрдкрдХреЛ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдкрд░реНрд▓ рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдкрд░реНрд▓ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
$makefile рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдкрд░реНрд▓ { $current_value = $makefile->expand_variable( 'MAKE_VAR' ) }

рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣рдореЗрд╢рд╛ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ $_[1]:

рдЙрдк f_f { $current_value = $_[1]->expand_variable( 'MAKE_VAR' ) }

рдХрдорд╛рдВрдб рдХреЛ рдПрдХ рдирд┐рдпрдо рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рднреАрддрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ
"$Mpp::Subs::rule->{MAKEFILE}" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп:

рдЙрдк c_cmd { $current_value = $Mpp::Subs::rule->{MAKEFILE}->expand_variable( 'MAKE_VAR' ) }

onworks.net рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдирд▓рд╛рдЗрди makepp_variables рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдлреНрд░реА рд╕рд░реНрд╡рд░ рдФрд░ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди

рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд╛рдЗрдиреЗрдХреНрд╕ рдПрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рд▓рд┐рдирдХреНрд╕ рдХрдорд╛рдВрдб

Ad