Initial Kbuild / Kconfig commit
[akaros.git] / Makefile-KB
1 VERSION = 2
2 PATCHLEVEL = 6
3 SUBLEVEL = 38
4 EXTRAVERSION =
5 NAME = Sheep on Meth
6
7 # To put more focus on warnings, be less verbose as default
8 # Use 'make V=1' to see the full commands
9
10 ifeq ("$(origin V)", "command line")
11   KBUILD_VERBOSE = $(V)
12 endif
13 ifndef KBUILD_VERBOSE
14   KBUILD_VERBOSE = 0
15 endif
16
17 srctree         := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
18 objtree         := $(CURDIR)
19
20 export srctree objtree
21
22 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
23           else if [ -x /bin/bash ]; then echo /bin/bash; \
24           else echo sh; fi ; fi)
25
26 HOSTCC       = gcc
27 HOSTCXX      = g++
28 HOSTCFLAGS   = -Wall -Wno-char-subscripts -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
29 HOSTCXXFLAGS = -O2
30
31 export CONFIG_SHELL HOSTCC HOSTCXX HOSTCFLAGS HOSTCXXFLAGS
32
33 # Beautify output
34 # ---------------------------------------------------------------------------
35 #
36 # Normally, we echo the whole command before executing it. By making
37 # that echo $($(quiet)$(cmd)), we now have the possibility to set
38 # $(quiet) to choose other forms of output instead, e.g.
39 #
40 #         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
41 #         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
42 #
43 # If $(quiet) is empty, the whole command will be printed.
44 # If it is set to "quiet_", only the short version will be printed. 
45 # If it is set to "silent_", nothing will be printed at all, since
46 # the variable $(silent_cmd_cc_o_c) doesn't exist.
47 #
48 # A simple variant is to prefix commands with $(Q) - that's useful
49 # for commands that shall be hidden in non-verbose mode.
50 #
51 #       $(Q)ln $@ :<
52 #
53 # If KBUILD_VERBOSE equals 0 then the above command will be hidden.
54 # If KBUILD_VERBOSE equals 1 then the above command is displayed.
55
56 ifeq ($(KBUILD_VERBOSE),1)
57   quiet =
58   Q =
59 else
60   quiet=quiet_
61   Q = @
62 endif
63 export quiet Q KBUILD_VERBOSE
64
65 # We need some generic definitions (do not try to remake the file).
66 include $(srctree)/scripts/Kbuild.include
67
68 # Basic helpers built in scripts/
69 PHONY += scripts_basic
70 scripts_basic:
71         $(Q)$(MAKE) $(build)=scripts/basic
72         $(Q)rm -f .tmp_quiet_recordmcount
73
74 config: scripts_basic FORCE
75         $(Q)$(MAKE) $(build)=scripts/kconfig $@
76
77 %config: scripts_basic FORCE
78         $(Q)$(MAKE) $(build)=scripts/kconfig $@
79
80 # mrproper - Delete all generated files, including .config
81 #
82 mrproper-dirs      := $(addprefix _mrproper_,scripts)
83
84 PHONY += $(mrproper-dirs) mrproper
85 $(mrproper-dirs):
86         $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
87
88 mrproper: $(mrproper-dirs)
89
90 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir
91 # Usage:
92 # $(Q)$(MAKE) $(clean)=dir
93 clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
94
95 PHONY += FORCE
96 FORCE:
97
98 # Declare the contents of the .PHONY variable as phony.  We keep that
99 # information in a variable so we can use it in if_changed and friends.
100 .PHONY: $(PHONY)