Blame view

scripts/Makefile.autoconf 4.5 KB
51148790f   Masahiro Yamada   kconfig: switch t...
1
2
3
4
5
6
7
8
  # This helper makefile is used for creating
  #  - symbolic links (arch/$ARCH/include/asm/arch
  #  - include/autoconf.mk, {spl,tpl}/include/autoconf.mk
  #  - include/config.h
  #
  # When our migration to Kconfig is done
  # (= When we move all CONFIGs from header files to Kconfig)
  # this makefile can be deleted.
f32c86493   Tom Rini   scripts/Makefile*...
9
10
11
  #
  # SPDX-License-Identifier:	GPL-2.0
  #
51148790f   Masahiro Yamada   kconfig: switch t...
12

e02ee2548   Masahiro Yamada   kconfig: switch t...
13
14
15
16
17
18
19
20
21
22
23
  __all: include/autoconf.mk include/autoconf.mk.dep
  
  ifeq ($(shell grep -q '^CONFIG_SPL=y' include/config/auto.conf 2>/dev/null && echo y),y)
  __all: spl/include/autoconf.mk
  endif
  
  ifeq ($(shell grep -q '^CONFIG_TPL=y' include/config/auto.conf 2>/dev/null && echo y),y)
  __all: tpl/include/autoconf.mk
  endif
  
  include include/config/auto.conf
51148790f   Masahiro Yamada   kconfig: switch t...
24
25
26
27
28
29
30
31
32
33
34
35
  
  include scripts/Kbuild.include
  
  # Need to define CC and CPP again here in case the top Makefile did not
  # include config.mk.  Some architectures expect CROSS_COMPILE to be defined
  # in arch/$(ARCH)/config.mk
  CC		= $(CROSS_COMPILE)gcc
  CPP		= $(CC) -E
  
  include config.mk
  
  UBOOTINCLUDE    := \
51148790f   Masahiro Yamada   kconfig: switch t...
36
37
38
39
40
41
42
43
44
45
46
47
48
  		-Iinclude \
  		$(if $(KBUILD_SRC), -I$(srctree)/include) \
  		-I$(srctree)/arch/$(ARCH)/include \
  		-include $(srctree)/include/linux/kconfig.h
  
  c_flags := $(KBUILD_CFLAGS) $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) \
  					$(UBOOTINCLUDE) $(NOSTDINC_FLAGS)
  
  quiet_cmd_autoconf_dep = GEN     $@
        cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M -MP $(c_flags) \
  	-MQ include/config/auto.conf $(srctree)/include/common.h > $@ || {	\
  		rm $@; false;							\
  	}
1406992f4   Masahiro Yamada   kbuild: make depe...
49
  include/autoconf.mk.dep: include/config.h FORCE
51148790f   Masahiro Yamada   kconfig: switch t...
50
51
52
53
54
55
56
57
58
59
60
  	$(call cmd,autoconf_dep)
  
  # We are migrating from board headers to Kconfig little by little.
  # In the interim, we use both of
  #  - include/config/auto.conf (generated by Kconfig)
  #  - include/autoconf.mk      (used in the U-Boot conventional configuration)
  # The following rule creates autoconf.mk
  # include/config/auto.conf is grepped in order to avoid duplication of the
  # same CONFIG macros
  quiet_cmd_autoconf = GEN     $@
        cmd_autoconf = \
e19b0fb48   Masahiro Yamada   kbuild: generate ...
61
  		sed -n -f $(srctree)/tools/scripts/define2mk.sed $< |			\
51148790f   Masahiro Yamada   kconfig: switch t...
62
  		while read line; do							\
7740f653e   Joe Hershberger   moveconfig: Ignor...
63
64
  			if [ -n "${KCONFIG_IGNORE_DUPLICATES}" ] ||			\
  			   ! grep -q "$${line%=*}=" include/config/auto.conf; then	\
51148790f   Masahiro Yamada   kconfig: switch t...
65
66
  				echo "$$line";						\
  			fi								\
e19b0fb48   Masahiro Yamada   kbuild: generate ...
67
68
69
70
71
72
73
74
75
  		done > $@
  
  quiet_cmd_u_boot_cfg = CFG     $@
        cmd_u_boot_cfg = \
  	$(CPP) $(c_flags) $2 -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && { \
  		grep 'define CONFIG_' $@.tmp > $@;			\
  		rm $@.tmp;						\
  	} || {								\
  		rm $@.tmp; false;					\
51148790f   Masahiro Yamada   kconfig: switch t...
76
  	}
e19b0fb48   Masahiro Yamada   kbuild: generate ...
77
78
79
80
81
82
83
84
85
86
87
88
  u-boot.cfg: include/config.h FORCE
  	$(call cmd,u_boot_cfg)
  
  spl/u-boot.cfg: include/config.h FORCE
  	$(Q)mkdir -p $(dir $@)
  	$(call cmd,u_boot_cfg,-DCONFIG_SPL_BUILD)
  
  tpl/u-boot.cfg: include/config.h FORCE
  	$(Q)mkdir -p $(dir $@)
  	$(call cmd,u_boot_cfg,-DCONFIG_SPL_BUILD -DCONFIG_TPL_BUILD)
  
  include/autoconf.mk: u-boot.cfg
51148790f   Masahiro Yamada   kconfig: switch t...
89
  	$(call cmd,autoconf)
e19b0fb48   Masahiro Yamada   kbuild: generate ...
90
  spl/include/autoconf.mk: spl/u-boot.cfg
e02ee2548   Masahiro Yamada   kconfig: switch t...
91
  	$(Q)mkdir -p $(dir $@)
e19b0fb48   Masahiro Yamada   kbuild: generate ...
92
  	$(call cmd,autoconf)
e02ee2548   Masahiro Yamada   kconfig: switch t...
93

e19b0fb48   Masahiro Yamada   kbuild: generate ...
94
  tpl/include/autoconf.mk: tpl/u-boot.cfg
e02ee2548   Masahiro Yamada   kconfig: switch t...
95
  	$(Q)mkdir -p $(dir $@)
e19b0fb48   Masahiro Yamada   kbuild: generate ...
96
  	$(call cmd,autoconf)
e02ee2548   Masahiro Yamada   kconfig: switch t...
97

51148790f   Masahiro Yamada   kconfig: switch t...
98
99
100
101
102
103
104
105
106
  # include/config.h
  # Prior to Kconfig, it was generated by mkconfig. Now it is created here.
  define filechk_config_h
  	(echo "/* Automatically generated - do not edit */";		\
  	for i in $$(echo $(CONFIG_SYS_EXTRA_OPTIONS) | sed 's/,/ /g'); do \
  		echo \#define CONFIG_$$i				\
  		| sed '/=/ {s/=/	/;q; } ; { s/$$/	1/; }'; \
  	done;								\
  	echo \#define CONFIG_BOARDDIR board/$(if $(VENDOR),$(VENDOR)/)$(BOARD);\
51148790f   Masahiro Yamada   kconfig: switch t...
107
  	echo \#include \<config_defaults.h\>;				\
e02ee2548   Masahiro Yamada   kconfig: switch t...
108
  	echo \#include \<config_uncmd_spl.h\>;				\
51148790f   Masahiro Yamada   kconfig: switch t...
109
110
  	echo \#include \<configs/$(CONFIG_SYS_CONFIG_NAME).h\>;		\
  	echo \#include \<asm/config.h\>;				\
4ac96345b   Patrick Delaunay   kbuild: add inclu...
111
  	echo \#include \<linux/kconfig.h\>;				\
e02ee2548   Masahiro Yamada   kconfig: switch t...
112
  	echo \#include \<config_fallbacks.h\>;)
51148790f   Masahiro Yamada   kconfig: switch t...
113
114
115
116
117
118
  endef
  
  include/config.h: scripts/Makefile.autoconf create_symlink FORCE
  	$(call filechk,config_h)
  
  # symbolic links
0e7368c6c   Masahiro Yamada   kbuild: prepare f...
119
120
121
  # If arch/$(ARCH)/mach-$(SOC)/include/mach exists,
  # make a symbolic link to that directory.
  # Otherwise, create a symbolic link to arch/$(ARCH)/include/asm/arch-$(SOC).
51148790f   Masahiro Yamada   kconfig: switch t...
122
123
  PHONY += create_symlink
  create_symlink:
a350c6a60   Masahiro Yamada   kbuild: create sy...
124
  ifdef CONFIG_CREATE_ARCH_SYMLINK
51148790f   Masahiro Yamada   kconfig: switch t...
125
126
  ifneq ($(KBUILD_SRC),)
  	$(Q)mkdir -p include/asm
0e7368c6c   Masahiro Yamada   kbuild: prepare f...
127
128
129
130
131
132
  	$(Q)if [ -d $(KBUILD_SRC)/arch/$(ARCH)/mach-$(SOC)/include/mach ]; then	\
  		dest=arch/$(ARCH)/mach-$(SOC)/include/mach;			\
  	else									\
  		dest=arch/$(ARCH)/include/asm/arch-$(if $(SOC),$(SOC),$(CPU));	\
  	fi;									\
  	ln -fsn $(KBUILD_SRC)/$$dest include/asm/arch
ffe29ebc0   Masahiro Yamada   kbuild: sync top ...
133
  else
0e7368c6c   Masahiro Yamada   kbuild: prepare f...
134
135
136
137
138
139
  	$(Q)if [ -d arch/$(ARCH)/mach-$(SOC)/include/mach ]; then	\
  		dest=../../mach-$(SOC)/include/mach;			\
  	else								\
  		dest=arch-$(if $(SOC),$(SOC),$(CPU));			\
  	fi;								\
  	ln -fsn $$dest arch/$(ARCH)/include/asm/arch
51148790f   Masahiro Yamada   kconfig: switch t...
140
  endif
a350c6a60   Masahiro Yamada   kbuild: create sy...
141
  endif
51148790f   Masahiro Yamada   kconfig: switch t...
142
143
144
145
146
  
  PHONY += FORCE
  FORCE:
  
  .PHONY: $(PHONY)