1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*
- 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;
|