1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
| /*
| 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;
|
|