You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.1 KiB
92 lines
2.1 KiB
/* |
|
Language: Makefile |
|
Author: Ivan Sagalaev <maniac@softwaremaniacs.org> |
|
Contributors: Joël Porquet <joel@porquet.org> |
|
Website: https://www.gnu.org/software/make/manual/html_node/Introduction.html |
|
Category: 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;
|
|
|