Blame view

scripts/Makefile.autoconf 4.5 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  # SPDX-License-Identifier: GPL-2.0
51148790f   Masahiro Yamada   kconfig: switch t...
2
3
4
5
6
7
8
9
  # 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.
e02ee2548   Masahiro Yamada   kconfig: switch t...
10
11
12
13
14
15
16
17
18
19
20
  __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...
21
22
23
24
25
26
27
28
29
30
31
32
  
  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...
33
34
35
36
37
38
39
40
41
42
43
44
45
  		-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...
46
  include/autoconf.mk.dep: include/config.h FORCE
51148790f   Masahiro Yamada   kconfig: switch t...
47
48
49
50
51
52
53
54
55
56
57
  	$(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 ...
58
  		sed -n -f $(srctree)/tools/scripts/define2mk.sed $< |			\
51148790f   Masahiro Yamada   kconfig: switch t...
59
  		while read line; do							\
7740f653e   Joe Hershberger   moveconfig: Ignor...
60
61
  			if [ -n "${KCONFIG_IGNORE_DUPLICATES}" ] ||			\
  			   ! grep -q "$${line%=*}=" include/config/auto.conf; then	\
51148790f   Masahiro Yamada   kconfig: switch t...
62
63
  				echo "$$line";						\
  			fi								\
e19b0fb48   Masahiro Yamada   kbuild: generate ...
64
65
66
67
68
69
70
71
72
  		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...
73
  	}
e19b0fb48   Masahiro Yamada   kbuild: generate ...
74
75
76
77
78
79
80
81
82
83
84
85
  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...
86
  	$(call cmd,autoconf)
e19b0fb48   Masahiro Yamada   kbuild: generate ...
87
  spl/include/autoconf.mk: spl/u-boot.cfg
e02ee2548   Masahiro Yamada   kconfig: switch t...
88
  	$(Q)mkdir -p $(dir $@)
e19b0fb48   Masahiro Yamada   kbuild: generate ...
89
  	$(call cmd,autoconf)
e02ee2548   Masahiro Yamada   kconfig: switch t...
90

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

51148790f   Masahiro Yamada   kconfig: switch t...
95
96
97
98
99
100
101
102
103
  # 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...
104
  	echo \#include \<config_defaults.h\>;				\
e02ee2548   Masahiro Yamada   kconfig: switch t...
105
  	echo \#include \<config_uncmd_spl.h\>;				\
51148790f   Masahiro Yamada   kconfig: switch t...
106
107
  	echo \#include \<configs/$(CONFIG_SYS_CONFIG_NAME).h\>;		\
  	echo \#include \<asm/config.h\>;				\
4ac96345b   Patrick Delaunay   kbuild: add inclu...
108
  	echo \#include \<linux/kconfig.h\>;				\
e02ee2548   Masahiro Yamada   kconfig: switch t...
109
  	echo \#include \<config_fallbacks.h\>;)
51148790f   Masahiro Yamada   kconfig: switch t...
110
111
112
113
114
115
  endef
  
  include/config.h: scripts/Makefile.autoconf create_symlink FORCE
  	$(call filechk,config_h)
  
  # symbolic links
0e7368c6c   Masahiro Yamada   kbuild: prepare f...
116
117
118
  # 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...
119
120
  PHONY += create_symlink
  create_symlink:
a350c6a60   Masahiro Yamada   kbuild: create sy...
121
  ifdef CONFIG_CREATE_ARCH_SYMLINK
51148790f   Masahiro Yamada   kconfig: switch t...
122
123
  ifneq ($(KBUILD_SRC),)
  	$(Q)mkdir -p include/asm
0e7368c6c   Masahiro Yamada   kbuild: prepare f...
124
125
126
127
128
129
  	$(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 ...
130
  else
0e7368c6c   Masahiro Yamada   kbuild: prepare f...
131
132
133
134
135
136
  	$(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...
137
  endif
a350c6a60   Masahiro Yamada   kbuild: create sy...
138
  endif
51148790f   Masahiro Yamada   kconfig: switch t...
139
140
141
142
143
  
  PHONY += FORCE
  FORCE:
  
  .PHONY: $(PHONY)