| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | /*Language: MakefileAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>Contributors: Joël Porquet <joel@porquet.org>Website: https://www.gnu.org/software/make/manual/html_node/Introduction.htmlCategory: common*/function makefile(hljs) {  /* Variables: simple (eg $(var)) and special (eg $@) */  const VARIABLE = {    className: 'variable',    variants: [      {        begin: '\\$\\(' + hljs.UNDERSCORE_IDENT_RE + '\\)',        contains: [ hljs.BACKSLASH_ESCAPE ]      },      {        begin: /\$[@%<?\^\+\*]/      }    ]  };  /* Quoted string with variables inside */  const QUOTE_STRING = {    className: 'string',    begin: /"/,    end: /"/,    contains: [      hljs.BACKSLASH_ESCAPE,      VARIABLE    ]  };  /* Function: $(func arg,...) */  const FUNC = {    className: 'variable',    begin: /\$\([\w-]+\s/,    end: /\)/,    keywords: {      built_in:        'subst patsubst strip findstring filter filter-out sort ' +        'word wordlist firstword lastword dir notdir suffix basename ' +        'addsuffix addprefix join wildcard realpath abspath error warning ' +        'shell origin flavor foreach if or and call eval file value'    },    contains: [ VARIABLE ]  };  /* Variable assignment */  const ASSIGNMENT = {    begin: '^' + hljs.UNDERSCORE_IDENT_RE + '\\s*(?=[:+?]?=)'  };  /* Meta targets (.PHONY) */  const META = {    className: 'meta',    begin: /^\.PHONY:/,    end: /$/,    keywords: {      $pattern: /[\.\w]+/,      'meta-keyword': '.PHONY'    }  };  /* Targets */  const TARGET = {    className: 'section',    begin: /^[^\s]+:/,    end: /$/,    contains: [ VARIABLE ]  };  return {    name: 'Makefile',    aliases: [      'mk',      'mak',      'make',    ],    keywords: {      $pattern: /[\w-]+/,      keyword: 'define endef undefine ifdef ifndef ifeq ifneq else endif ' +      'include -include sinclude override export unexport private vpath'    },    contains: [      hljs.HASH_COMMENT_MODE,      VARIABLE,      QUOTE_STRING,      FUNC,      ASSIGNMENT,      META,      TARGET    ]  };}module.exports = makefile;
 |