Blame view

kernel/linux-imx6_3.14.28/scripts/Makefile.headersinst 4.72 KB
6b13f685e   김민수   BSP 최초 추가
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
  # ==========================================================================
  # Installing headers
  #
  # header-y  - list files to be installed. They are preprocessed
  #             to remove __KERNEL__ section of the file
  # genhdr-y  - Same as header-y but in a generated/ directory
  #
  # ==========================================================================
  
  # generated header directory
  gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj)))
  
  kbuild-file := $(srctree)/$(obj)/Kbuild
  include $(kbuild-file)
  
  # called may set destination dir (when installing to asm/)
  _dst := $(if $(destination-y),$(destination-y),$(if $(dst),$(dst),$(obj)))
  
  old-kbuild-file := $(srctree)/$(subst uapi/,,$(obj))/Kbuild
  ifneq ($(wildcard $(old-kbuild-file)),)
  include $(old-kbuild-file)
  endif
  
  include scripts/Kbuild.include
  
  installdir    := $(INSTALL_HDR_PATH)/$(subst uapi/,,$(_dst))
  
  header-y      := $(sort $(header-y))
  subdirs       := $(patsubst %/,%,$(filter %/, $(header-y)))
  header-y      := $(filter-out %/, $(header-y))
  
  # files used to track state of install/check
  install-file  := $(installdir)/.install
  check-file    := $(installdir)/.check
  
  # generic-y list all files an architecture uses from asm-generic
  # Use this to build a list of headers which require a wrapper
  wrapper-files := $(filter $(header-y), $(generic-y))
  
  srcdir        := $(srctree)/$(obj)
  gendir        := $(objtree)/$(gen)
  
  oldsrcdir     := $(srctree)/$(subst /uapi,,$(obj))
  
  # all headers files for this dir
  header-y      := $(filter-out $(generic-y), $(header-y))
  all-files     := $(header-y) $(genhdr-y) $(wrapper-files)
  output-files  := $(addprefix $(installdir)/, $(all-files))
  
  input-files1  := $(foreach hdr, $(header-y), \
  		   $(if $(wildcard $(srcdir)/$(hdr)), \
  			$(wildcard $(srcdir)/$(hdr))) \
  		   )
  input-files1-name := $(notdir $(input-files1))
  input-files2  := $(foreach hdr, $(header-y), \
  		   $(if  $(wildcard $(srcdir)/$(hdr)),, \
  			$(if $(wildcard $(oldsrcdir)/$(hdr)), \
  				$(wildcard $(oldsrcdir)/$(hdr)), \
  				$(error Missing UAPI file $(srcdir)/$(hdr))) \
  		   ))
  input-files2-name := $(notdir $(input-files2))
  input-files3  := $(foreach hdr, $(genhdr-y), \
  		   $(if	$(wildcard $(gendir)/$(hdr)), \
  			$(wildcard $(gendir)/$(hdr)), \
  			$(error Missing generated UAPI file $(gendir)/$(hdr)) \
  		   ))
  input-files3-name := $(notdir $(input-files3))
  
  # Work out what needs to be removed
  oldheaders    := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h))
  unwanted      := $(filter-out $(all-files),$(oldheaders))
  
  # Prefix unwanted with full paths to $(INSTALL_HDR_PATH)
  unwanted-file := $(addprefix $(installdir)/, $(unwanted))
  
  printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@))
  
  quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
                              file$(if $(word 2, $(all-files)),s))
        cmd_install = \
          $(CONFIG_SHELL) $< $(installdir) $(srcdir) $(input-files1-name); \
          $(CONFIG_SHELL) $< $(installdir) $(oldsrcdir) $(input-files2-name); \
          $(CONFIG_SHELL) $< $(installdir) $(gendir) $(input-files3-name); \
          for F in $(wrapper-files); do                                   \
                  echo "\#include <asm-generic/$$F>" > $(installdir)/$$F;    \
          done;                                                           \
          touch $@
  
  quiet_cmd_remove = REMOVE  $(unwanted)
        cmd_remove = rm -f $(unwanted-file)
  
  quiet_cmd_check = CHECK   $(printdir) ($(words $(all-files)) files)
  # Headers list can be pretty long, xargs helps to avoid
  # the "Argument list too long" error.
        cmd_check = for f in $(all-files); do                          \
                    echo "$(installdir)/$${f}"; done                      \
                    | xargs                                            \
                    $(PERL) $< $(INSTALL_HDR_PATH)/include $(SRCARCH); \
  	          touch $@
  
  PHONY += __headersinst __headerscheck
  
  ifndef HDRCHECK
  # Rules for installing headers
  __headersinst: $(subdirs) $(install-file)
  	@:
  
  targets += $(install-file)
  $(install-file): scripts/headers_install.sh $(input-files1) $(input-files2) $(input-files3) FORCE
  	$(if $(unwanted),$(call cmd,remove),)
  	$(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
  	$(call if_changed,install)
  
  else
  __headerscheck: $(subdirs) $(check-file)
  	@:
  
  targets += $(check-file)
  $(check-file): scripts/headers_check.pl $(output-files) FORCE
  	$(call if_changed,check)
  
  endif
  
  # Recursion
  hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
  .PHONY: $(subdirs)
  $(subdirs):
  	$(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@
  
  targets := $(wildcard $(sort $(targets)))
  cmd_files := $(wildcard \
               $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
  
  ifneq ($(cmd_files),)
  	include $(cmd_files)
  endif
  
  .PHONY: $(PHONY)
  PHONY += FORCE
  FORCE: ;