summaryrefslogtreecommitdiffstats
path: root/include/scan.mk
blob: 288a10050bef7f5c0f076da9043ed1313cc470b0 (plain)
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
include $(TOPDIR)/include/verbose.mk
TMP_DIR:=$(TOPDIR)/tmp

all: $(TMP_DIR)/.$(SCAN_TARGET)

include $(TOPDIR)/include/host.mk

SCAN_TARGET ?= packageinfo
SCAN_NAME ?= package
SCAN_DIR ?= package
TARGET_STAMP:=$(TMP_DIR)/info/.files-$(SCAN_TARGET).stamp
FILELIST:=$(TMP_DIR)/info/.files-$(SCAN_TARGET)-$(SCAN_COOKIE)

ifeq ($(IS_TTY),1)
  define progress
	printf "\033[M\r$(1)" >&2;
  endef
else
  define progress
	:;
  endef
endif

define PackageDir
  $(TMP_DIR)/.$(SCAN_TARGET): $(TMP_DIR)/info/.$(SCAN_TARGET)-$(1)
  $(TMP_DIR)/info/.$(SCAN_TARGET)-$(1): $(SCAN_DIR)/$(2)/Makefile $(SCAN_STAMP) $(foreach DEP,$(DEPS_$(SCAN_DIR)/$(1)/Makefile) $(SCAN_DEPS),$(wildcard $(if $(filter /%,$(DEP)),$(DEP),$(SCAN_DIR)/$(1)/$(DEP))))
	{ \
		$$(call progress,Collecting $(SCAN_NAME) info: $(SCAN_DIR)/$(2)) \
		echo Source-Makefile: $(SCAN_DIR)/$(2)/Makefile; \
		$(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) 2>/dev/null || { $$(call progress,ERROR: please fix $(SCAN_DIR)/$(2)/Makefile\n) rm -f $$@; }; \
		echo; \
	} > $$@ || true
endef

$(FILELIST):
	rm -f $(TMP_DIR)/info/.files-$(SCAN_TARGET)-*
	$(call FIND_L, $(SCAN_DIR)) $(SCAN_EXTRA) -mindepth 1 $(if $(SCAN_DEPTH),-maxdepth $(SCAN_DEPTH)) -name Makefile | xargs grep -HE 'call (Build/DefaultTargets|Build(Package|Target)|.+Package)' | sed -e 's#^$(SCAN_DIR)/##' -e 's#/Makefile:.*##' | uniq > $@

$(TMP_DIR)/info/.files-$(SCAN_TARGET).mk: $(FILELIST)
	( \
		cat $< | awk '{print "$(SCAN_DIR)/" $$0 "/Makefile" }' | xargs grep -HE '^ *SCAN_DEPS *= *' | awk -F: '{ gsub(/^.*DEPS *= */, "", $$2); print "DEPS_" $$1 "=" $$2 }'; \
		awk -v deps="$$DEPS" '{ \
			info=$$0; \
			gsub(/\//, "_", info); \
			print "$$(eval $$(call PackageDir," info "," $$0 "))"; \
		} ' < $<; \
		true; \
	) > $@

-include $(TMP_DIR)/info/.files-$(SCAN_TARGET).mk

$(TARGET_STAMP)::
	+( \
		$(NO_TRACE_MAKE) $(FILELIST); \
		MD5SUM=$$(cat $(FILELIST) | (md5sum || md5) 2>/dev/null | awk '{print $$1}'); \
		[ -f "$@.$$MD5SUM" ] || { \
			rm -f $@.*; \
			touch $@.$$MD5SUM; \
			touch $@; \
		} \
	)

$(TMP_DIR)/.$(SCAN_TARGET): $(TARGET_STAMP) $(SCAN_STAMP)
	$(call progress,Collecting $(SCAN_NAME) info: merging...)
	-cat $(FILELIST) | awk '{gsub(/\//, "_", $$0);print "$(TMP_DIR)/info/.$(SCAN_TARGET)-" $$0}' | xargs cat > $@ 2>/dev/null
	$(call progress,Collecting $(SCAN_NAME) info: done)
	echo

FORCE:
.PHONY: FORCE
.NOTPARALLEL:
ard PrintScreen KC_SCROLLLOCK KC_SLCK 47 Keyboard Scroll Lock KC_PAUSE KC_PAUS 48 Keyboard Pause KC_INSERT KC_INS 49 Keyboard Insert KC_HOME 4A Keyboard Home KC_PGUP 4B Keyboard PageUp KC_DELETE KC_DEL 4C Keyboard Delete Forward KC_END 4D Keyboard End KC_PGDOWN KC_PGDN 4E Keyboard PageDown KC_RIGHT KC_RGHT 4F Keyboard RightArrow KC_LEFT 50 Keyboard LeftArrow KC_DOWN 51 Keyboard DownArrow KC_UP 52 Keyboard UpArrow KC_NUMLOCK KC_NLCK 53 Keypad Num Lock and Clear KC_KP_SLASH KC_PSLS 54 Keypad / KC_KP_ASTERISK KC_PAST 55 Keypad * KC_KP_MINUS KC_PMNS 56 Keypad - KC_KP_PLUS KC_PPLS 57 Keypad + KC_KP_ENTER KC_PENT 58 Keypad ENTER KC_KP_1 KC_P1 59 Keypad 1 and End KC_KP_2 KC_P2 5A Keypad 2 and Down Arrow KC_KP_3 KC_P3 5B Keypad 3 and PageDn KC_KP_4 KC_P4 5C Keypad 4 and Left Arrow KC_KP_5 KC_P5 5D Keypad 5 KC_KP_6 KC_P6 5E Keypad 6 and Right Arrow KC_KP_7 KC_P7 5F Keypad 7 and Home KC_KP_8 KC_P8 60 Keypad 8 and Up Arrow KC_KP_9 KC_P9 61 Keypad 9 and PageUp KC_KP_0 KC_P0 62 Keypad 0 and Insert KC_KP_DOT KC_PDOT 63 Keypad . and Delete KC_NONUS_BSLASH KC_NUBS 64 Keyboard Non-US \ and | KC_APPLICATION KC_APP 65 Keyboard Application KC_POWER 66 Keyboard Power KC_KP_EQUAL KC_PEQL 67 Keypad = KC_F13 68 Keyboard F13 KC_F14 69 Keyboard F14 KC_F15 6A Keyboard F15 KC_F16 6B Keyboard F16 KC_F17 6C Keyboard F17 KC_F18 6D Keyboard F18 KC_F19 6E Keyboard F19 KC_F20 6F Keyboard F20 KC_F21 70 Keyboard F21 KC_F22 71 Keyboard F22 KC_F23 72 Keyboard F23 KC_F24 73 Keyboard F24 KC_EXECUTE 74 Keyboard Execute KC_HELP 75 Keyboard Help KC_MENU 76 Keyboard Menu KC_SELECT 77 Keyboard Select KC_STOP 78 Keyboard Stop KC_AGAIN 79 Keyboard Again KC_UNDO 7A Keyboard Undo KC_CUT 7B Keyboard Cut KC_COPY 7C Keyboard Copy KC_PASTE 7D Keyboard Paste KC_FIND 7E Keyboard Find KC__MUTE 7F Keyboard Mute KC__VOLUP 80 Keyboard Volume Up KC__VOLDOWN 81 Keyboard Volume Down KC_LOCKING_CAPS 82 Keyboard Locking Caps Lock KC_LOCKING_NUM 83 Keyboard Locking Num Lock KC_LOCKING_SCROLL 84 Keyboard Locking Scroll Lock KC_KP_COMMA KC_PCMM 85 Keypad Comma KC_KP_EQUAL_AS400 86 Keypad Equal Sign KC_INT1 KC_RO 87 Keyboard International115 KC_INT2 KC_KANA 88 Keyboard International216 KC_INT3 KC_JYEN 89 Keyboard International317 KC_INT4 KC_HENK 8A Keyboard International418 KC_INT5 KC_MHEN 8B Keyboard International519 KC_INT6 8C Keyboard International620 KC_INT7 8D Keyboard International721 KC_INT8 8E Keyboard International822 KC_INT9 8F Keyboard International922 KC_LANG1 90 Keyboard LANG125 KC_LANG2 91 Keyboard LANG226 KC_LANG3 92 Keyboard LANG330 KC_LANG4 93 Keyboard LANG431 KC_LANG5 94 Keyboard LANG532 KC_LANG6 95 Keyboard LANG68 KC_LANG7 96 Keyboard LANG78 KC_LANG8 97 Keyboard LANG88 KC_LANG9 98 Keyboard LANG98 KC_ALT_ERASE 99 Keyboard Alternate Erase KC_SYSREQ 9A Keyboard SysReq/Attention KC_CANCEL 9B Keyboard Cancel KC_CLEAR 9C Keyboard Clear KC_PRIOR 9D Keyboard Prior KC_RETURN 9E Keyboard Return KC_SEPARATOR 9F Keyboard Separator KC_OUT A0 Keyboard Out KC_OPER A1 Keyboard Oper KC_CLEAR_AGAIN A2 Keyboard Clear/Again KC_CRSEL A3 Keyboard CrSel/Props KC_EXSEL A4 Keyboard ExSel /* Modifiers */ KC_LCTRL KC_LCTL E0 Keyboard LeftControl KC_LSHIFT KC_LSFT E1 Keyboard LeftShift KC_LALT E2 Keyboard LeftAlt KC_LGUI E3 Keyboard Left GUI(Windows/Apple/Meta key) KC_RCTRL KC_RCTL E4 Keyboard RightControl KC_RSHIFT KC_RSFT E5 Keyboard RightShift KC_RALT E6 Keyboard RightAlt KC_RGUI E7 Keyboard Right GUI(Windows/Apple/Meta key) /* * Virtual keycodes */ /* System Control */ KC_SYSTEM_POWER KC_PWR System Power Down KC_SYSTEM_SLEEP KC_SLEP System Sleep KC_SYSTEM_WAKE KC_WAKE System Wake /* Consumer Page */ KC_AUDIO_MUTE KC_MUTE KC_AUDIO_VOL_UP KC_VOLU KC_AUDIO_VOL_DOWN KC_VOLD KC_MEDIA_NEXT_TRACK KC_MNXT KC_MEDIA_PREV_TRACK KC_MPRV KC_MEDIA_STOP KC_MSTP KC_MEDIA_PLAY_PAUSE KC_MPLY KC_MEDIA_SELECT KC_MSEL KC_MAIL KC_MAIL KC_CALCULATOR KC_CALC KC_MY_COMPUTER KC_MYCM KC_WWW_SEARCH KC_WSCH KC_WWW_HOME KC_WHOM KC_WWW_BACK KC_WBAK KC_WWW_FORWARD KC_WFWD KC_WWW_STOP KC_WSTP KC_WWW_REFRESH KC_WREF KC_WWW_FAVORITES KC_WFAV /* Mousekey */ KC_MS_UP KC_MS_U Mouse Cursor Up KC_MS_DOWN KC_MS_D Mouse Cursor Down KC_MS_LEFT KC_MS_L Mouse Cursor Left KC_MS_RIGHT KC_MS_R Mouse Cursor Right KC_MS_BTN1 KC_BTN1 Mouse Button 1 KC_MS_BTN2 KC_BTN2 Mouse Button 2 KC_MS_BTN3 KC_BTN3 Mouse Button 3 KC_MS_BTN4 KC_BTN4 Mouse Button 4 KC_MS_BTN5 KC_BTN5 Mouse Button 5 KC_MS_WH_UP KC_WH_U Mouse Wheel Up KC_MS_WH_DOWN KC_WH_D Mouse Wheel Down KC_MS_WH_LEFT KC_WH_L Mouse Wheel Left KC_MS_WH_RIGHT KC_WH_R Mouse Wheel Right KC_MS_ACCEL0 KC_ACL0 Mouse Acceleration 0 KC_MS_ACCEL1 KC_ACL1 Mouse Acceleration 1 KC_MS_ACCEL2 KC_ACL2 Mouse Acceleration 2 /* Fn key */ KC_FN0 KC_FN1 KC_FN2 KC_FN3 KC_FN4 KC_FN5 KC_FN6 KC_FN7 KC_FN8 KC_FN9 KC_FN10 KC_FN11 KC_FN12 KC_FN13 KC_FN14 KC_FN15 KC_FN16 KC_FN17 KC_FN18 KC_FN19 KC_FN20 KC_FN21 KC_FN22 KC_FN23 KC_FN24 KC_FN25 KC_FN26 KC_FN27 KC_FN28 KC_FN29 KC_FN30 KC_FN31