ctags-lang-make − Random notes about tagging Make source code with Universal Ctags
ctags ...
−−languages=+Make ...
ctags ... −−language−force=Make ...
ctags ... −−map−Make=+([Mm]akefile)
−−map−Make=+(GNUmakefile) ...
ctags ... −−map−Make=+.mak
−−map−Make=+.mk ...
This parser extracts macro and target definitions. It also extracts included files as references.
"input.mak"
−include base.mak
SRC = hello.c
all: hello
hello: hello.o
hello.o: hello.c
$(CC) −c $(CFLAGS) $(CPPFLAGS) $<
"output.tags" with "−−options=NONE −−extras=+r −−fields=+KlrE −o − input.mak"
SRC input.mak
/ˆSRC = hello.c$/;" macro language:Make roles:def
all input.mak /ˆall: hello$/;" target
language:Make roles:def
base.mak input.mak /ˆ−include base.mak$/;"
makefile language:Make roles:optional extras:reference
hello input.mak /ˆhello: hello.o$/;" target
language:Make roles:def
hello.o input.mak /ˆhello.o: hello.c$/;" target
language:Make roles:def
With −D option in a C compiler like gcc, a programmer can define a macro outside C source files. The options appears on a Makefile frequently. For an example:
CPPFLAGS = −DDEBUG
The Make parser has heuristics [DINMAKE] for extracting the macros defined with the option. With enabling CppDef extra, you can turn on the heuristics.
"input.mak"
−include base.mak
CFLAGS =
−g −O2
CPPFLAGS = −DOUTPUT=stdout
SRC = hello.c
all: hello
hello: hello.o
hello.o: hello.c
$(CC) −c $(CFLAGS) $(CPPFLAGS) $<
"output.tags" with "−−options=NONE −−extras−Make=+{CppDef} −−fields=+KlE −o − input.mak"
CFLAGS
input.mak /ˆCFLAGS = −g −O2$/;" macro
language:Make
CPPFLAGS input.mak /ˆCPPFLAGS =
−DOUTPUT=stdout$/;" macro language:Make
OUTPUT input.mak /ˆCPPFLAGS =
−DOUTPUT=stdout$/;" macro language:CPreProcessor
extras:CppDef
SRC input.mak /ˆSRC = hello.c$/;" macro
language:Make
all input.mak /ˆall: hello$/;" target
language:Make
hello input.mak /ˆhello: hello.o$/;" target
language:Make
hello.o input.mak /ˆhello.o: hello.c$/;" target
language:Make
|
• |
New extra CppDef [DINMAKE] |
ctags(1)
[DINMAKE]
CONFIG_X86_X32_ABI is not
visible (defined in Makefile, not C or Kconfig)
<https://github.com/bootlin/elixir/issues/221>
( <https://github.com/bootlin/elixir/issues/221> )