2 # Copyright (C) 2007 Alex Smith
3 # 2008 Tomas 'ZeXx86' Jedrzejek (zexx86@zexos.org)
4 # 2009 Tomas 'ZeXx86' Jedrzejek (zexx86@zexos.org)
5 # 2010 Tomas 'ZeXx86' Jedrzejek (zexx86@zexos.org)
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of version 2 of the GNU General Public License
9 # as published by the Free Software Foundation.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License along
17 # with this program; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 # This piece of code was borrowed from Exclaim
21 # Thanks for Alex Smith
33 obj
:= $(shell pwd
)/build
/$(ARCH
)
40 # When ARCH is not defined, lets detect architecture
42 ARCH
:= $(shell uname
-m | sed
-e s
/i
.86/i386
/ -e s
/x86_64
/i386
/)
45 KERNELVERSION
= $(ZEXOS_VERSION
).
$(ZEXOS_PATCHLEVEL
).
$(ZEXOS_SUBLEVEL
)$(ZEXOS_EXTRAVERSION
)
48 ifeq ($(strip $(wildcard .config
)),)
51 @printf
"Please run make menuconfig, xconfig, gconfig or config first.\n"
55 include $(src
)/.config
57 all: prepare
$(obj
)/config.h
$(obj
)/build.h compilation drivers
62 include utils
/kconfig
/Makefile
68 $(Q
)if
[ ! -d
"$(obj)" ]; then mkdir
-p
$(obj
); fi
69 $(Q
)if
[ -e
"$(src)/arch/main" ]; then
rm $(src
)/arch
/main
; fi
70 $(Q
)ln
-s
$(src
)/arch
/$(ARCH
) $(src
)/arch
/main
71 $(Q
)if
[ -e
"$(src)/build/main" ]; then
rm $(src
)/build
/main
; fi
72 $(Q
)ln
-s
$(src
)/build
/$(ARCH
) $(src
)/build
/main
73 $(Q
)if
[ -e
"$(src)/include/arch" ]; then
rm $(src
)/include/arch
; fi
74 $(Q
)ln
-s
$(src
)/arch
/$(ARCH
)/include $(src
)/include/arch
76 $(obj
)/config.h
: .config
77 $(Q
)make
--no-print-directory silentoldconfig
78 @printf
" CP $(subst $(shell pwd)/,,$(obj)/config.h)\n"
79 $(Q
)cp
$(src
)/.tmpconfig.h
$(obj
)/config.h
81 # This is generated to build.h header file, which is needed to compilation
82 $(obj
)/build.h
: Makefile
83 @printf
" GEN $(subst $(shell pwd)/,,$(obj)/build.h)\n"
84 $(Q
)printf
"#define ZEXOS_MAJOR \"$(ZEXOS_VERSION)\"\n" > $(obj
)/build.h
85 $(Q
)printf
"#define ZEXOS_MINOR \"$(ZEXOS_PATCHLEVEL)\"\n" >> $(obj
)/build.h
86 $(Q
)printf
"#define ZEXOS_REVISION \"$(ZEXOS_SUBLEVEL)\"\n" >> $(obj
)/build.h
87 $(Q
)printf
"#define ZEXOS_EXTRAVER \"$(ZEXOS_EXTRAVERSION)\"\n" >> $(obj
)/build.h
88 $(Q
)printf
"#define ZEXOS_VERSION \"$(ZEXOS_KERNELVERSION)$(CONFIG_LOCALVERSION)\"\n" >> $(obj
)/build.h
89 $(Q
)printf
"#define ZEXOS_CODENAME \"$(ZEXOS_CODENAME)\"\n" >> $(obj
)/build.h
90 $(Q
)printf
"#define ZEXOS_DATE \"`LANG= date \"+%Y-%m-%d %H:%m:%S\"`\"\n" >> $(obj
)/build.h
91 $(Q
)printf
"\n" >> $(obj
)/build.h
92 $(Q
)printf
"#define ZEXOS_COMPILER \"$(shell LANG= $(CC) --version | head -n1)\"\n" >> $(obj
)/build.h
93 $(Q
)printf
"#define ZEXOS_COMPILE_BY \"$(shell PATH=$$PATH:/usr/ucb whoami)\"\n" >> $(obj
)/build.h
94 $(Q
)printf
"#define ZEXOS_COMPILE_HOST \"$(shell hostname)\"\n" >> $(obj
)/build.h
95 $(Q
)printf
"#define ZEXOS_COMPILE_DOMAIN \"$(shell test `uname -s` = "Linux
" && dnsdomainname || domainname)\"\n" >> $(obj
)/build.h
96 $(Q
)printf
"\n" >> $(obj
)/build.h
97 $(Q
)printf
"#define ZEXOS_ARCH \"$(ARCH)\"\n" >> $(obj
)/build.h
98 $(Q
)printf
"#define ARCH_$(ARCH)\n" >> $(obj
)/build.h
101 $(Q
)make
-C arch
/main