@ -76,6 +76,10 @@ fs-subtypes-$(CONFIG_TARGET_ROOTFS_TARGZ) += targz
TARGET_FILESYSTEMS := $( fs-types-y)
FS_64K := $( filter-out jffs2-%,$( TARGET_FILESYSTEMS) ) jffs2-64k
FS_128K := $( filter-out jffs2-%,$( TARGET_FILESYSTEMS) ) jffs2-128k
FS_256K := $( filter-out jffs2-%,$( TARGET_FILESYSTEMS) ) jffs2-256k
d e f i n e a d d _ j f f s 2 _ m a r k
echo -ne '\xde\xad\xc0\xde' >> $( 1)
e n d e f
@ -84,6 +88,23 @@ define toupper
$(shell echo $(1) | tr '[ : lower :]' '[:upper :]')
e n d e f
d e f i n e s p l i t _ a r g s
$( foreach data , \
$( subst | ,$( space) ,\
$( subst $( space) ,^,$( 1) ) ) , \
$( call $( 2) ,$( strip $( subst ^,$( space) ,$( data) ) ) ) )
e n d e f
d e f i n e b u i l d _ c m d
$( if $ ( Build /$ ( word 1,$ ( 1) ) ) ,,$ ( error Missing Build /$ ( word 1,$ ( 1) ) ) )
$( call Build /$ ( word 1,$ ( 1) ) ,$ ( wordlist 2,$ ( words $ ( 1) ) ,$ ( 1) ) )
e n d e f
d e f i n e c o n c a t _ c m d
$( call split_args ,$ ( 1) ,build_cmd )
e n d e f
# pad to 4k, 8k, 16k, 64k, 128k, 256k and add jffs2 end-of-filesystem mark
d e f i n e p r e p a r e _ g e n e r i c _ s q u a s h f s
$( STAGING_DIR_HOST) /bin/padjffs2 $( 1) 4 8 16 64 128 256
@ -247,6 +268,130 @@ define BuildImage/mkfs
.PHONY: mkfs-$( 1)
mkfs-$( 1) : mkfs_prepare
$( Image/mkfs/$( 1) )
$( KDIR) /root.$( 1) : mkfs-$( 1)
e n d e f
# Build commands that can be called from Device/* templates
d e f i n e B u i l d / u I m a g e
mkimage -A $( LINUX_KARCH) \
-O linux -T kernel \
-C $( 1) -a $( KERNEL_LOADADDR) -e $( if $( KERNEL_ENTRY) ,$( KERNEL_ENTRY) ,$( KERNEL_LOADADDR) ) \
-n '$(call toupper,$(LINUX_KARCH)) OpenWrt Linux-$(LINUX_VERSION)' -d $@ $@ .new
@mv $@ .new $@
e n d e f
d e f i n e B u i l d / l z m a
$( STAGING_DIR_HOST) /bin/lzma e $@ -lc1 -lp2 -pb2 $( 1) $@ .new
@mv $@ .new $@
e n d e f
d e f i n e B u i l d / k e r n e l - b i n
rm -f $@
cp $^ $@
e n d e f
d e f i n e B u i l d / p a t c h - c m d l i n e
$( STAGING_DIR_HOST) /bin/patch-cmdline $@ '$(CMDLINE)'
e n d e f
d e f i n e B u i l d / a p p e n d - k e r n e l
dd if = $( word 1,$^) $( if $( 1) ,bs= $( 1) conv = sync) >> $@
e n d e f
d e f i n e B u i l d / a p p e n d - r o o t f s
dd if = $( word 2,$^) $( if $( 1) ,bs= $( 1) conv = sync) >> $@
e n d e f
d e f i n e B u i l d / p a d - r o o t f s
$( call prepare_generic_squashfs,$@ )
e n d e f
d e f i n e B u i l d / c h e c k - s i z e
@[ $$ ( ( $( subst k,* 1024,$( subst m, * 1024k,$( 1) ) ) ) ) -gt " $$ (stat -c%s $@ ) " ] || { \
echo " WARNING: Image file $@ is too big " ; \
rm -f $@ ; \
}
e n d e f
d e f i n e D e v i c e / I n i t
PROFILES := $( PROFILE)
KERNEL:=
KERNEL_INITRAMFS = $$ ( KERNEL)
KERNEL_SIZE:=
CMDLINE:=
IMAGE_PREFIX := $( BIN_DIR) /$( IMG_PREFIX) -$( 1)
IMAGE_NAME = $$ ( IMAGE_PREFIX) -$$ ( 1) -$$ ( 2)
KERNEL_PREFIX = $$ ( if $$ ( KERNEL_INSTALL) ,$$ ( IMAGE_PREFIX) ,$( KDIR) /$( 1) )
KERNEL_INITRAMFS_PREFIX = $$ ( IMAGE_PREFIX) -initramfs
KERNEL_SUFFIX := -kernel.bin
KERNEL_IMAGE = $$ ( KERNEL_PREFIX) $$ ( KERNEL_SUFFIX)
KERNEL_INSTALL :=
KERNEL_SIZE :=
FILESYSTEMS := $( TARGET_FILESYSTEMS)
BIN_KERNEL_IMAGE = $$ ( patsubst $$ ( KERNEL_PREFIX) %,$$ ( IMAGE_PREFIX) %,$$ ( KERNEL_IMAGE) )
e n d e f
d e f i n e D e v i c e / C h e c k
_TARGET = $$ ( if $$ ( filter $( PROFILE) ,$$ ( PROFILES) ) ,install,install-disabled)
e n d e f
d e f i n e D e v i c e / B u i l d / i n i t r a m f s
$$ ( _TARGET) : $$ ( KERNEL_INITRAMFS_PREFIX) $$ ( KERNEL_SUFFIX)
$$ ( KERNEL_INITRAMFS_PREFIX) $$ ( KERNEL_SUFFIX) : $$ ( KERNEL_PREFIX) -initramfs$$ ( KERNEL_SUFFIX)
cp $$ ^ $$ @
$$ ( KERNEL_PREFIX) -initramfs$$ ( KERNEL_SUFFIX) : $( KDIR) /vmlinux-initramfs
@rm -f $$ @
$$ ( call concat_cmd,$$ ( KERNEL_INITRAMFS) )
e n d e f
d e f i n e D e v i c e / B u i l d / c h e c k _ s i z e
@[ $$ ( ( $( subst k,* 1024,$( subst m, * 1024k,$( 1) ) ) ) ) -gt " $$ (stat -c%s $@ ) " ] || { \
echo " WARNING: Image file $@ is too big " ; \
rm -f $@ ; \
}
e n d e f
d e f i n e D e v i c e / B u i l d / k e r n e l
$$ ( _TARGET) : $$ ( if $$ ( KERNEL_INSTALL) ,$$ ( BIN_KERNEL_IMAGE) )
$$ ( BIN_KERNEL_IMAGE) : $$ ( KERNEL_IMAGE)
cp $$ ^ $$ @
$$ ( KERNEL_IMAGE) : $( KDIR) /vmlinux
@rm -f $$ @
$$ ( call concat_cmd,$$ ( KERNEL) )
$$ ( if $$ ( KERNEL_SIZE) ,$$ ( call Device/Build/check_size,$$ ( KERNEL_SIZE) ) )
e n d e f
d e f i n e D e v i c e / B u i l d / i m a g e
$$ ( _TARGET) : $( call IMAGE_NAME,$( 1) ,$( 2) )
$( call IMAGE_NAME,$( 1) ,$( 2) ) : $$ ( KERNEL_IMAGE) $( KDIR) /root.$( 1)
@rm -f $$ @
[ -f $$ ( word 1,$$ ^) -a -f $$ ( word 2,$$ ^) ]
$$ ( call concat_cmd,$( if $( IMAGE/$( 2) /$( 1) ) ,$( IMAGE/$( 2) /$( 1) ) ,$( IMAGE/$( 2) ) ) )
e n d e f
d e f i n e D e v i c e / B u i l d
$( if $( CONFIG_TARGET_ROOTFS_INITRAMFS) ,$( call Device/Build/initramfs,$( 1) ) )
$( call Device/Build/kernel,$( 1) )
$$ ( eval $$ ( foreach image,$$ ( IMAGES) , \
$$ ( foreach fs,$$ ( filter $( TARGET_FILESYSTEMS) ,$$ ( FILESYSTEMS) ) , \
$$ ( call Device/Build/image,$$ ( fs) ,$$ ( image) ) ) ) )
e n d e f
d e f i n e D e v i c e
$( call Device/Init,$( 1) )
$( call Device/Default,$( 1) )
$( call Device/Check,$( 1) )
$( call Device/$( 1) ,$( 1) )
$( call Device/Build,$( 1) )
e n d e f
@ -278,6 +423,7 @@ define BuildImage
$( if $( CONFIG_TARGET_ROOTFS_INITRAMFS) ,$( call Image/BuildKernel/Initramfs) )
$( call Image/InstallKernel)
$( foreach device,$( TARGET_DEVICES) ,$( call Device,$( device) ) )
$( foreach fs,$( TARGET_FILESYSTEMS) $( fs-subtypes-y) ,$( call BuildImage/mkfs,$( fs) ) )
install: kernel_prepare