Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


packed structure fixes for gcc weirdness
[palacios.git] / scripts / Makefile.modpost
1 # ===========================================================================
2 # Module versions
3 # ===========================================================================
4 #
5 # Stage one of module building created the following:
6 # a) The individual .o files used for the module
7 # b) A <module>.o file which is the .o files above linked together
8 # c) A <module>.mod file in $(MODVERDIR)/, listing the name of the
9 #    the preliminary <module>.o file, plus all .o files
10
11 # Stage 2 is handled by this file and does the following
12 # 1) Find all modules from the files listed in $(MODVERDIR)/
13 # 2) modpost is then used to
14 # 3)  create one <module>.mod.c file pr. module
15 # 4)  create one Module.symvers file with CRC for all exported symbols
16 # 5) compile all <module>.mod.c files
17 # 6) final link of the module to a <module.ko> file
18
19 # Step 3 is used to place certain information in the module's ELF
20 # section, including information such as:
21 #   Version magic (see include/vermagic.h for full details)
22 #     - Kernel release
23 #     - SMP is CONFIG_SMP
24 #     - PREEMPT is CONFIG_PREEMPT
25 #     - GCC Version
26 #   Module info
27 #     - Module version (MODULE_VERSION)
28 #     - Module alias'es (MODULE_ALIAS)
29 #     - Module license (MODULE_LICENSE)
30 #     - See include/linux/module.h for more details
31
32 # Step 4 is solely used to allow module versioning in external modules,
33 # where the CRC of each module is retrieved from the Module.symers file.
34
35 PHONY := _modpost
36 _modpost: __modpost
37
38 include .config
39 include scripts/Kbuild.include
40 include scripts/Makefile.lib
41
42 kernelsymfile := $(objtree)/Module.symvers
43 modulesymfile := $(KBUILD_EXTMOD)/Modules.symvers
44
45 # Step 1), find all modules listed in $(MODVERDIR)/
46 __modules := $(sort $(shell grep -h '\.ko' /dev/null $(wildcard $(MODVERDIR)/*.mod)))
47 modules   := $(patsubst %.o,%.ko, $(wildcard $(__modules:.ko=.o)))
48
49 _modpost: $(modules)
50
51
52 # Step 2), invoke modpost
53 #  Includes step 3,4
54 quiet_cmd_modpost = MODPOST
55       cmd_modpost = scripts/mod/modpost            \
56         $(if $(CONFIG_MODVERSIONS),-m)             \
57         $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a,)  \
58         $(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \
59         $(if $(KBUILD_EXTMOD),-I $(modulesymfile)) \
60         $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \
61         $(filter-out FORCE,$^)
62
63 PHONY += __modpost
64 __modpost: $(wildcard vmlinux) $(modules:.ko=.o) FORCE
65         @#$(call cmd,modpost)
66
67 # Declare generated files as targets for modpost
68 $(symverfile):         __modpost ;
69 $(modules:.ko=.mod.c): __modpost ;
70
71
72 # Step 5), compile all *.mod.c files
73
74 # modname is set to make c_flags define KBUILD_MODNAME
75 modname = $(*F)
76
77 quiet_cmd_cc_o_c = CC      $@
78       cmd_cc_o_c = $(CC) $(c_flags) $(CFLAGS_MODULE)    \
79                    -c -o $@ $<
80
81 $(modules:.ko=.mod.o): %.mod.o: %.mod.c FORCE
82         $(call if_changed_dep,cc_o_c)
83
84 targets += $(modules:.ko=.mod.o)
85
86 # Step 6), final link of the modules
87 quiet_cmd_ld_ko_o = LD [M]  $@
88       cmd_ld_ko_o = $(LD) $(LDFLAGS) $(LDFLAGS_MODULE) -o $@            \
89                           $(filter-out FORCE,$^)
90
91 $(modules): %.ko :%.o %.mod.o FORCE
92         $(call if_changed,ld_ko_o)
93
94 targets += $(modules)
95
96
97 # Add FORCE to the prequisites of a target to force it to be always rebuilt.
98 # ---------------------------------------------------------------------------
99
100 PHONY += FORCE
101
102 FORCE:
103
104 # Read all saved command lines and dependencies for the $(targets) we
105 # may be building above, using $(if_changed{,_dep}). As an
106 # optimization, we don't need to read them if the target does not
107 # exist, we will rebuild anyway in that case.
108
109 targets := $(wildcard $(sort $(targets)))
110 cmd_files := $(wildcard $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
111
112 ifneq ($(cmd_files),)
113   include $(cmd_files)
114 endif
115
116
117 # Declare the contents of the .PHONY variable as phony.  We keep that
118 # information in a variable se we can use it in if_changed and friends.
119
120 .PHONY: $(PHONY)