path := base name := kernel suffix := gz version_base = $(word 1,$(subst ., ,$(kernel_version))).$(word 2,$(subst ., ,$(kernel_version)))$(if $(filter 3.%, $(kernel_version)),,.$(word 3,$(subst ., ,$(kernel_version)))) #version_base = $(word 1,$(subst ., ,$(kernel_version))).$(word 2,$(subst ., ,$(kernel_version))).$(word 3,$(subst ., ,$(kernel_version))) modul_version = $(shell { test -x src/linux/.config && svn info src/linux/.config 2>/dev/null || svn info src/.config 2>/dev/null; } | grep Rev: | sed "s/.*: //") kernel_version = $(shell readlink src/linux | sed "s/.*-\|\///g") ifeq ($(kernel_version),) kernel_version = $(shell GET "http://www.kernel.org" | egrep "http://[^\"]+2.6.[0-9]+(.[0-9]+)?.tar.bz2" | head -n 1 | sed "s/.*linux-\([0-9.]*\)\..*/\\1/") endif version := $(kernel_version).$(modul_version) deps := gcc mercurial patch libncurses5-dev git include ../Makefile.default include ../Makefile.tools all: $(name).$(suffix) clean: _clean rm -rf lib rm -f include rm -rf src/linux-$(kernel_version) rm -f $(name).$(suffix) $(name).$(suffix): src/linux/arch/x86/boot/bzImage lib include cp -up src/linux/arch/x86/boot/bzImage $(modulname) ln -fs $(modulname) $@ src/linux/arch/x86/boot/bzImage: src/linux echo "$(indent)Build Kernel..." $(MAKE) -C src/linux touch src/linux-$(kernel_version) -r src/linux/.config lib: src/linux echo "$(indent)Build Kernel Modules..." rm -rf lib $(MAKE) -C src/linux modules INSTALL_MOD_PATH=$$(pwd) $(MAKE) -C src/linux modules_install touch src/linux-$(kernel_version) -r src/linux/.config include: src/linux $(MAKE) -C src/linux headers_install ln -fs src/linux/usr/include include touch src/linux-$(kernel_version) -r src/linux/.config src/linux: src/linux-$(kernel_version) src/linux-$(kernel_version)/.config ln -fs linux-$(kernel_version) $@ src/linux-$(kernel_version): src/linux-$(kernel_version).tar.bz2 src/bootsplash-$(version_base).patch src/aufs-$(version_base) rm -rf $@ cd src; tar xf linux-$(kernel_version).tar.bz2 cd $@; patch -p1 -i ../bootsplash-$(version_base).patch cd $@; patch -p1 -i ../aufs-$(version_base)/aufs2-kbuild.patch cd $@; patch -p1 -i ../aufs-$(version_base)/aufs2-base.patch cp -r src/aufs-$(version_base)/{Documentation,fs,include} src/linux-$(kernel_version) src/linux-$(kernel_version)/.config: src/.config cp src/.config-$(kernel_version) $@ 2>/dev/null || ( cp src/.config $@; cd $(@D); yes "" | $(MAKE) oldconfig ) sed "s/CONFIG_LOCALVERSION=\".*\"/CONFIG_LOCALVERSION=\".$(modul_version)\"/" -i $@ src/linux-%.tar.bz2: wget "http://www.kernel.org/pub/linux/kernel/v2.6/$(@F)" -O $@ src/linux-3.0.tar.bz2: src/linux-2.6.39.tar.bz2 cd src; tar xf linux-2.6.39.tar.bz2 cd src/linux-2.6.39; patch -p1 -i ../linux-3.0.patch mv src/linux-2.6.39 src/linux-3.0 cd src; tar cjf $(@F) linux-3.0 rm -r src/linux-3.0 src/bootsplash-$(version_base).patch: wget "http://x-softsi.com.br$$(GET "http://x-softsi.com.br/site/?p=26" | egrep "bootsplash-[0-9.]+-$(version_base).patch" | sed "s/.*\"\([^\"]\+$(version_base).patch\)\".*/\\1/")" -O $@ src/aufs-$(version_base): rm -rf $@ git clone http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git $@ # cd $@; git checkout origin/aufs2-$(word 3,$(subst ., ,$(kernel_version))) cd $@; git checkout origin/aufs2.1 cd $@; patch -p1 -i ../aufs.patch