@@ -1309,6 +1309,22 @@ $(OBJDIR)/%.sym: $(OBJDIR)/%.elf $(COMMON_DEPS)
13091309 @$(MKDIR ) $(dir $@ )
13101310 $(NM ) --size-sort --demangle --reverse-sort --line-numbers $< > $@
13111311
1312+ # #######################################################################
1313+ # Ctags
1314+
1315+ # Assume ctags is on path unless has been specified
1316+ ifndef CTAGS_EXEC
1317+ CTAGS_EXEC = ctags
1318+ endif
1319+
1320+ # Default to 'tags' unless user has specified a tags file
1321+ ifndef TAGS_FILE
1322+ TAGS_FILE = tags
1323+ endif
1324+
1325+ # ctags command: append, flags unsort (as will be sorted after) and specify filename
1326+ CTAGS_CMD = $(CTAGS_EXEC ) $(CTAGS_OPTS ) -auf
1327+
13121328# #######################################################################
13131329# Avrdude
13141330
@@ -1564,6 +1580,23 @@ generate_assembly: $(OBJDIR)/$(TARGET).s
15641580generated_assembly : generate_assembly
15651581 @$(ECHO ) " \" generated_assembly\" target is deprecated. Use \" generate_assembly\" target instead\n\n"
15661582
1583+ .PHONY : tags
1584+ tags :
1585+ ifneq ($(words $(wildcard $(TAGS_FILE ) ) ) , 0)
1586+ rm -f $(TAGS_FILE)
1587+ endif
1588+ @$(ECHO) "Generating tags for local sources (INO an PDE files as C++): "
1589+ $(CTAGS_CMD) $(TAGS_FILE) --langmap=c++:.ino --langmap=c++:.pde $(LOCAL_SRCS)
1590+ ifneq ($(words $(ARDUINO_LIBS ) ) , 0)
1591+ @$(ECHO) "Generating tags for project libraries: "
1592+ $(CTAGS_CMD) $(TAGS_FILE) $(foreach lib, $(ARDUINO_LIBS),$(USER_LIB_PATH)/$(lib)/*)
1593+ endif
1594+ @$(ECHO) "Generating tags for Arduino core: "
1595+ $(CTAGS_CMD) $(TAGS_FILE) $(ARDUINO_CORE_PATH)/*
1596+ @$(ECHO) "Sorting..\n"
1597+ @sort $(TAGS_FILE) -o $(TAGS_FILE)
1598+ @$(ECHO) "Tag file generation complete, output: $(TAGS_FILE)\n"
1599+
15671600help_vars :
15681601 @$(CAT ) $(ARDMK_DIR ) /arduino-mk-vars.md
15691602
@@ -1595,6 +1628,7 @@ help:
15951628 generated assembly of the main sketch.\n\
15961629 make burn_bootloader - burn bootloader and fuses\n\
15971630 make set_fuses - set fuses without burning bootloader\n\
1631+ make tags - generate tags file including project libs and Arduino core\n\
15981632 make help_vars - print all variables that can be overridden\n\
15991633 make help - show this help\n\
16001634"
0 commit comments