рдПрдХ Red Hat рдХрд░реНрдордЪрд╛рд░реАрд▓реЗ рд▓рдХреНрд╖реНрдп рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╕реНрддреБрдд рдЧрд░реЗред GNU Make 4.2 рдХреЛ рд░рд┐рд▓реАрдЬ

рд░рд┐рдЪрд░реНрдб WM рдЬреЛрдиреНрд╕, рд▓реЗрдЦрдХ libguestfsRed Hat рдорд╛ рдХрд╛рдо рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рдкрд░рд┐рдЪрдп рдирдпрд╛рдБ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рдХреНрд╖реНрдпрд╣рд░реВрд▓рд┐рдкрд┐рдХреЛ рд╕рдордЧреНрд░ рд╕рд░рд▓рддрд╛ рд░ рд╕рдордЭрджрд╛рд░реА рдХрд╛рдпрдо рд░рд╛рдЦреНрджреИ рдореЗрдХрдХреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдорд╛ рд░рд╣реЗрдХрд╛ рдХрдордЬреЛрд░реА рд░ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрд▓рд╛рдИ рд╣рдЯрд╛рдЙрдиреЗ рдЙрджреНрджреЗрд╢реНрдпрд▓реЗред рдореЗрдХ рдпреБрдЯрд┐рд▓рд┐рдЯреА 1976 рдорд╛ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рд░ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдирдЧрд░реА рдпреА рдХрдордЬреЛрд░реАрд╣рд░реВрд▓рд╛рдИ рд╣рдЯрд╛рдЙрди рдзреЗрд░реИ рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рд▓рдХреНрд╖реНрдпрд╣рд░реВ рдЫрдиреНред
рд▓рдХреНрд╖реНрдп рд╕реНрд░реЛрдд рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддрд░рд┐рдд GPLv2+ рдЕрдиреНрддрд░реНрдЧрдд рдЗрдЬрд╛рдЬрддрдкрддреНрд░ рдкреНрд░рд╛рдкреНрддред

рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди:

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

    рдПрдХ Red Hat рдХрд░реНрдордЪрд╛рд░реАрд▓реЗ рд▓рдХреНрд╖реНрдп рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╕реНрддреБрдд рдЧрд░реЗред GNU Make 4.2 рдХреЛ рд░рд┐рд▓реАрдЬ

  • рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╡рд▓ рдПрдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдкреНрд░рджрд╛рди рдЧрд░реНрди рд╕рдорд╕реНрдпрд╛ред

    рдПрдХ Red Hat рдХрд░реНрдордЪрд╛рд░реАрд▓реЗ рд▓рдХреНрд╖реНрдп рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╕реНрддреБрдд рдЧрд░реЗред GNU Make 4.2 рдХреЛ рд░рд┐рд▓реАрдЬ

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

    рдПрдХ Red Hat рдХрд░реНрдордЪрд╛рд░реАрд▓реЗ рд▓рдХреНрд╖реНрдп рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╕реНрддреБрдд рдЧрд░реЗред GNU Make 4.2 рдХреЛ рд░рд┐рд▓реАрдЬ

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

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

    рдерд┐рдпреЛ:
    рд▓рдХреНрд╖реНрдп: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    рдпреЛ рднрдпреЛ:
    "target": "foo.o", "bar.o" {
    %CC %CFLAGS %< -o %@
    }

рд▓рдХреНрд╖реНрдпрдХрд╛ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ:

  • рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ рдирд╛рдо рд░ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд░реНрдерди:

    рд▓рдХреНрд╖реНрдп рд╕рдмреИ = : "рд▓рдХреНрд╖реНрдп"

    рд▓рдХреНрд╖реНрдп рд▓рд┐рдЩреНрдХ =
    "рд▓рдХреНрд╖реНрдп" : "foo.o", "bar.o" { ... }

    рд▓рдХреНрд╖реНрдп рд╕рдВрдХрд▓рди (рдирд╛рдо) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • рджреБрдИ рд▓рдиреНрдЪ рдореЛрдбрд╣рд░реВ: рдлрд╛рдЗрд▓рдирд╛рдорд╣рд░реВрд╕рдБрдЧ рдмрд┐рд▓реНрдб рд▓рдХреНрд╖реНрдпрд╣рд░реВ рдорд┐рд▓рд╛рдЙрди рдореЛрдб рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдлрд╛рдЗрд▓ "foo.o" рд▓рдХреНрд╖реНрдп "%name.o"рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ), рд░ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрдХрд▓рди рдореЛрдб:

    рд▓рдХреНрд╖реНрдп рд╕рдмреИ =: рд▓рд┐рдЩреНрдХ

    рд▓рдХреНрд╖реНрдп рд▓рд┐рдЩреНрдХ =
    "рд▓рдХреНрд╖реНрдп" : "foo.o", рдХрдореНрдкрд╛рдЗрд▓ ("рдкрдЯреНрдЯреА") { ... }

    рд▓рдХреНрд╖реНрдп рд╕рдВрдХрд▓рди (рдирд╛рдо) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

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

    "рд▓рдХреНрд╖реНрдп" : "foo.o", "bar.o" { ... }

    *рдлрд╛рдЗрд▓("рд▓рдХреНрд╖реНрдп"): *рдлрд╛рдЗрд▓("foo.o"), *рдлрд╛рдЗрд▓("bar.o") { ... }

  • рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд░рдгрдиреАрддрд┐рд╣рд░реВрдХреЛ рдордирдорд╛рдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рд╕рдХреНрдЫред "*рдлрд╛рдЗрд▓" рдЭрдгреНрдбрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ (@{...} рд▓реЗ рдЖрдЙрдЯрдкреБрдЯрдХреЛ рджрдордирд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫ, рд░ "рдмрд╛рд╣рд┐рд░ 99" рдкреБрди: рдирд┐рд░реНрдорд╛рдгрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫ):

    рд░рдгрдиреАрддрд┐ *рдлрд╛рдЗрд▓ (рдлрд╛рдЗрд▓ рдирд╛рдо) = @{
    рдкрд░реАрдХреНрд╖рдг -f % рдлрд╛рдЗрд▓рдирд╛рдо || рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреБрд╣реЛрд╕реН 99
    f рдХрд╛ рд▓рд╛рдЧрд┐% рдорд╛

    рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди