5 ARCH
:= $(shell uname
-m | sed
-e s
/i
.86/i386
/ -e s
/sun4u
/sparc64
/)
8 # For SMP kernels, set this. We don't want to have this in the config file
9 # because it makes re-config very ugly and too many fundamental files depend
12 # For UP operations COMMENT THIS OUT, simply setting SMP = 0 won't work
16 .EXPORT_ALL_VARIABLES
:
18 CONFIG_SHELL
:= $(shell if
[ -x
"$$BASH" ]; then echo
$$BASH; \
19 else if
[ -x
/bin
/bash
]; then echo
/bin
/bash
; \
20 else echo sh
; fi
; fi
)
21 TOPDIR
:= $(shell if
[ "$$PWD" != "" ]; then echo
$$PWD; else pwd
; fi
)
23 HPATH
= $(TOPDIR
)/include
24 FINDHPATH
= $(HPATH
)/asm
$(HPATH
)/linux
$(HPATH
)/scsi
$(HPATH
)/net
27 HOSTCFLAGS
=-O2
-fomit-frame-pointer
31 AS
=$(CROSS_COMPILE
)as
32 LD
=$(CROSS_COMPILE
)ld
33 CC
=$(CROSS_COMPILE
)gcc
-D__KERNEL__
-I
$(HPATH
)
35 AR
=$(CROSS_COMPILE
)ar
36 NM
=$(CROSS_COMPILE
)nm
37 STRIP
=$(CROSS_COMPILE
)strip
39 GENKSYMS
=/sbin
/genksyms
44 # Make "config" the default target if there is no configuration file or
45 # "depend" the target if there is no top-level dependency information.
47 ifeq (.config
,$(wildcard .config
))
49 ifeq (.depend
,$(wildcard .depend
))
51 do-it-all
: Version vmlinux
53 CONFIGURATION
= depend
57 CONFIGURATION
= config
62 # ROOT_DEV specifies the default root-device when making the image.
63 # This can be either FLOPPY, CURRENT, /dev/xxxx or empty, in which case
64 # the default of FLOPPY is used by 'build'.
70 # INSTALL_PATH specifies where to place the updated kernel and system map
71 # images. Uncomment if you want to place them anywhere other than root.
76 # If you want to preset the SVGA mode, uncomment the next line and
77 # set SVGA_MODE to whatever number you want.
78 # Set it to -DSVGA_MODE=NORMAL_VGA if you just want the EGA/VGA mode.
79 # The number is the same as you would ordinarily press at bootup.
82 SVGA_MODE
= -DSVGA_MODE
=NORMAL_VGA
88 CFLAGS
= -Wall
-Wstrict-prototypes
-O2
-fomit-frame-pointer
91 CFLAGS
:= $(CFLAGS
) -x c
++
100 # if you want the ram-disk device, define this to be the
104 #RAMDISK = -DRAMDISK=512
106 # Include the make variables (CC, etc...)
109 CORE_FILES
=kernel
/kernel.o mm
/mm.o fs
/fs.o ipc
/ipc.o
110 FILESYSTEMS
=fs
/filesystems.a
111 NETWORKS
=net
/network.a
112 DRIVERS
=drivers
/block
/block.a \
113 drivers
/char
/char.a \
115 LIBS
=$(TOPDIR
)/lib
/lib.a
116 SUBDIRS
=kernel drivers mm fs net ipc lib
118 ifeq ($(CONFIG_ISDN
),y
)
119 DRIVERS
:= $(DRIVERS
) drivers
/isdn
/isdn.a
122 DRIVERS
:= $(DRIVERS
) drivers
/net
/net.a
124 ifeq ($(CONFIG_SCSI
),y
)
125 DRIVERS
:= $(DRIVERS
) drivers
/scsi
/scsi.a
128 ifneq ($(CONFIG_CD_NO_IDESCSI
)$(CONFIG_BLK_DEV_IDECD
)$(CONFIG_BLK_DEV_SR
),)
129 DRIVERS
:= $(DRIVERS
) drivers
/cdrom
/cdrom.a
132 ifeq ($(CONFIG_SOUND
),y
)
133 DRIVERS
:= $(DRIVERS
) drivers
/sound
/sound.a
137 DRIVERS
:= $(DRIVERS
) drivers
/pci
/pci.a
141 DRIVERS
:= $(DRIVERS
) drivers
/sbus
/sbus.a
145 DRIVERS
:= $(DRIVERS
) drivers
/macintosh
/macintosh.a
149 DRIVERS
:= $(DRIVERS
) drivers
/pnp
/pnp.a
152 ifeq ($(CONFIG_PARIDE
),y
)
153 DRIVERS
:= $(DRIVERS
) drivers
/block
/paride
/paride.a
156 ifdef CONFIG_HAMRADIO
157 DRIVERS
:= $(DRIVERS
) drivers
/net
/hamradio
/hamradio.a
160 include arch
/$(ARCH
)/Makefile
165 $(CC
) -D__ASSEMBLY__
$(AFLAGS
) -traditional
-E
-o
$*.s
$<
167 $(CC
) -D__ASSEMBLY__
$(AFLAGS
) -traditional
-c
-o
$*.o
$<
172 $(CC
) -D__ASSEMBLY__
-traditional
-E
-o
$*.s
$<
174 $(CC
) -D__ASSEMBLY__
-traditional
-c
-o
$*.o
$<
179 @
rm -f
include/linux
/compile.h
182 @
$(MAKE
) -C arch
/$(ARCH
)/boot
184 vmlinux
: $(CONFIGURATION
) init
/main.o init
/version.o linuxsubdirs
185 $(LD
) $(LINKFLAGS
) $(HEAD
) init
/main.o init
/version.o \
192 $(NM
) vmlinux | grep
-v
'\(compiled\)\|\(\.o$$\)\|\( [aU] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' |
sort > System.map
196 ( cd
include ; ln
-sf asm-
$(ARCH
) asm
)
197 @if
[ ! -d modules
]; then \
200 @if
[ ! -d
include/linux
/modules
]; then \
201 mkdir
include/linux
/modules
; \
204 oldconfig
: symlinks scripts
/split-include
205 $(CONFIG_SHELL
) scripts
/Configure
-d arch
/$(ARCH
)/config.in
206 if
[ -r
include/linux
/autoconf.h
]; then \
207 scripts
/split-include
include/linux
/autoconf.h
include/config
; \
210 xconfig
: symlinks scripts
/split-include
211 $(MAKE
) -C scripts kconfig.tk
212 wish
-f scripts
/kconfig.tk
213 if
[ -r
include/linux
/autoconf.h
]; then \
214 scripts
/split-include
include/linux
/autoconf.h
include/config
; \
217 menuconfig
: include/linux
/version.h symlinks scripts
/split-include
218 $(MAKE
) -C scripts
/lxdialog
all
219 $(CONFIG_SHELL
) scripts
/Menuconfig arch
/$(ARCH
)/config.in
220 if
[ -r
include/linux
/autoconf.h
]; then \
221 scripts
/split-include
include/linux
/autoconf.h
include/config
; \
224 config
: symlinks scripts
/split-include
225 $(CONFIG_SHELL
) scripts
/Configure arch
/$(ARCH
)/config.in
226 if
[ -r
include/linux
/autoconf.h
]; then \
227 scripts
/split-include
include/linux
/autoconf.h
include/config
; \
231 set
-e
; for i in
$(SUBDIRS
); do
$(MAKE
) -C
$$i; done
233 $(TOPDIR
)/include/linux
/version.h
: include/linux
/version.h
234 $(TOPDIR
)/include/linux
/compile.h
: include/linux
/compile.h
237 @if
[ ! -f .version
]; then \
240 expr
0`cat .version` + 1 > .version
; \
243 include/linux
/compile.h
: $(CONFIGURATION
) include/linux
/version.h newversion
244 @echo
-n \
#define UTS_VERSION \"\#`cat .version` > .ver
245 @if
[ -n
"$(SMP)" ] ; then echo
-n
" SMP" >> .ver
; fi
246 @if
[ -f .name
]; then echo
-n \
-`cat .name` >> .ver
; fi
247 @echo
' '`date`'"' >> .ver
248 @echo \
#define LINUX_COMPILE_TIME \"`date +%T`\" >> .ver
249 @echo \
#define LINUX_COMPILE_BY \"`whoami`\" >> .ver
250 @echo \
#define LINUX_COMPILE_HOST \"`hostname`\" >> .ver
251 @if
[ -x
/bin
/dnsdomainname
]; then \
252 echo \
#define LINUX_COMPILE_DOMAIN \"`dnsdomainname`\"; \
253 elif
[ -x
/bin
/domainname
]; then \
254 echo \
#define LINUX_COMPILE_DOMAIN \"`domainname`\"; \
256 echo \
#define LINUX_COMPILE_DOMAIN ; \
258 @echo \
#define LINUX_COMPILER \"`$(CC) -v 2>&1 | tail -1`\" >> .ver
261 include/linux
/version.h
: .
/Makefile
262 @echo \
#define UTS_RELEASE \"$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)\" > .ver
263 @echo \
#define LINUX_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)` >> .ver
264 @echo
'#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))' >>.ver
267 init
/version.o
: init
/version.c
include/linux
/compile.h
268 $(CC
) $(CFLAGS
) -DUTS_MACHINE
='"$(ARCH)"' -c
-o init
/version.o init
/version.c
270 init
/main.o
: init
/main.c
271 $(CC
) $(CFLAGS
) $(PROFILING
) -c
-o
$*.o
$<
274 $(MAKE
) linuxsubdirs SUBDIRS
=fs
277 $(MAKE
) linuxsubdirs SUBDIRS
=lib
280 $(MAKE
) linuxsubdirs SUBDIRS
=mm
283 $(MAKE
) linuxsubdirs SUBDIRS
=ipc
286 $(MAKE
) linuxsubdirs SUBDIRS
=kernel
289 $(MAKE
) linuxsubdirs SUBDIRS
=drivers
292 $(MAKE
) linuxsubdirs SUBDIRS
=net
296 ifdef CONFIG_MODVERSIONS
297 MODFLAGS
+= -DMODVERSIONS
-include $(HPATH
)/linux
/modversions.h
300 modules
: include/linux
/version.h
302 for i in
$(SUBDIRS
); \
303 do
$(MAKE
) -C
$$i CFLAGS
="$(CFLAGS) $(MODFLAGS)" MAKING_MODULES
=1 modules
; \
308 MODLIB
=/lib
/modules
/$(VERSION
).
$(PATCHLEVEL
).
$(SUBLEVEL
); \
311 inst_mod
() { These
="`cat $$1`"; MODULES
="$$MODULES $$These"; \
312 mkdir
-p
$$MODLIB/$$2; cp
-p
$$These $$MODLIB/$$2; \
313 echo Installing modules under
$$MODLIB/$$2; \
316 if
[ -f BLOCK_MODULES
]; then inst_mod BLOCK_MODULES block
; fi
; \
317 if
[ -f NET_MODULES
]; then inst_mod NET_MODULES net
; fi
; \
318 if
[ -f IPV4_MODULES
]; then inst_mod IPV4_MODULES ipv4
; fi
; \
319 if
[ -f IPV6_MODULES
]; then inst_mod IPV6_MODULES ipv6
; fi
; \
320 if
[ -f SCSI_MODULES
]; then inst_mod SCSI_MODULES scsi
; fi
; \
321 if
[ -f FS_MODULES
]; then inst_mod FS_MODULES fs
; fi
; \
322 if
[ -f NLS_MODULES
]; then inst_mod NLS_MODULES fs
; fi
; \
323 if
[ -f CDROM_MODULES
]; then inst_mod CDROM_MODULES cdrom
; fi
; \
324 if
[ -f HAM_MODULES
]; then inst_mod HAM_MODULES net
; fi
; \
327 echo
$$MODULES | tr
' ' '\n' |
sort | comm
-23 .allmods
- > .misc
; \
328 if
[ -s .misc
]; then inst_mod .misc misc
; fi
; \
329 rm -f .misc .allmods
; \
332 # modules disabled....
335 modules modules_install
: dummy
337 @echo
"The present kernel configuration has modules disabled."
338 @echo
"Type 'make config' and enable loadable module support."
339 @echo
"Then build a kernel with module support enabled."
345 rm -f kernel
/ksyms.lst
include/linux
/compile.h
346 rm -f core
`find . -name '*.[oas]' ! -regex '.*lxdialog/.*' -print`
347 rm -f core
`find . -type f -name 'core' -print`
348 rm -f core
`find . -name '.*.flags' -print`
349 rm -f vmlinux System.map
351 rm -f drivers
/char
/consolemap_deftbl.c drivers
/char
/conmakehash
352 rm -f drivers
/sound
/bin2hex drivers
/sound
/hex2hex
353 if
[ -d modules
]; then \
354 rm -f core
`find modules/ -type f -print`; \
359 rm -f
include/linux
/autoconf.h
include/linux
/version.h
360 rm -f drivers
/net
/hamradio
/soundmodem
/sm_tbl_
{afsk1200
,afsk2666
,fsk9600
}.h
361 rm -f drivers
/net
/hamradio
/soundmodem
/sm_tbl_
{hapn4800
,psk4800
}.h
362 rm -f drivers
/net
/hamradio
/soundmodem
/sm_tbl_
{afsk2400_7
,afsk2400_8
}.h
363 rm -f drivers
/net
/hamradio
/soundmodem
/gentbl
364 rm -f drivers
/char
/hfmodem
/gentbl drivers
/char
/hfmodem
/tables.h
365 rm -f drivers
/sound
/*_boot.h drivers
/sound
/.
*.boot
366 rm -f .version .config
* config.in config.old
367 rm -f scripts
/tkparse scripts
/kconfig.tk scripts
/kconfig.tmp
368 rm -f scripts
/lxdialog
/*.o scripts
/lxdialog
/lxdialog
369 rm -f .menuconfig.log
371 rm -rf
include/config
372 rm -f .depend
`find . -name .depend -print`
373 rm -f core
`find . -size 0 -print`
374 rm -f .hdepend scripts
/mkdep scripts
/split-include
375 rm -f
$(TOPDIR
)/include/linux
/modversions.h
376 rm -rf
$(TOPDIR
)/include/linux
/modules
380 rm -f core
`find . \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
381 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
382 -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -print` TAGS
385 cd ..
&& tar cf
- linux
/ | gzip
-9 > backup.gz
389 find .
-type f
-print |
sort | xargs sum
> .SUMS
391 dep-files
: scripts
/mkdep archdep
include/linux
/version.h
392 scripts
/mkdep init
/*.c
> .depend
393 scripts
/mkdep
`find $(FINDHPATH) -follow -name \*.h ! -name modversions.h -print` > .hdepend
394 set
-e
; for i in
$(SUBDIRS
); do
$(MAKE
) -C
$$i fastdep
; done
398 ifdef CONFIG_MODVERSIONS
399 MODVERFILE
:= $(TOPDIR
)/include/linux
/modversions.h
402 depend dep
: dep-files
$(MODVERFILE
)
405 perl
-w scripts
/checkconfig.pl
`find * -name '*.[hcS]' -print | sort`
410 @echo
"You have a bad or nonexistent" .
$(CONFIGURATION
) ": running 'make" $(CONFIGURATION
)"'"
412 $(MAKE
) $(CONFIGURATION
)
414 @echo
"Successful. Try re-making (ignore the error that follows)"
418 #dummy: ..$(CONFIGURATION)
430 # This generates dependencies for the .h files.
433 scripts
/mkdep
: scripts
/mkdep.c
434 $(HOSTCC
) $(HOSTCFLAGS
) -o scripts
/mkdep scripts
/mkdep.c
436 scripts
/split-include
: scripts
/split-include.c
437 $(HOSTCC
) $(HOSTCFLAGS
) -o scripts
/split-include scripts
/split-include.c