2006-06-27 08:35:46 +08:00
#
2014-10-17 00:28:12 +08:00
# Copyright (C) 2006-2014 OpenWrt.org
2016-04-18 18:28:16 +08:00
# Copyright (C) 2016 LEDE Project
2006-06-27 08:35:46 +08:00
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
2005-04-11 04:28:17 +08:00
i n c l u d e $( TOPDIR ) / r u l e s . m k
2006-06-21 11:17:13 +08:00
i n c l u d e $( INCLUDE_DIR ) / k e r n e l . m k
2006-10-14 22:16:26 +08:00
i n c l u d e $( INCLUDE_DIR ) / h o s t . m k
2015-01-08 19:02:00 +08:00
i n c l u d e $( INCLUDE_DIR ) / v e r s i o n . m k
2005-04-11 04:28:17 +08:00
2008-08-17 19:14:13 +08:00
o v e r r i d e MAKEFLAGS =
2016-05-26 22:22:09 +08:00
SDK_NAME := $( VERSION_DIST_SANITIZED) -sdk-$( if $( CONFIG_VERSION_FILENAMES) ,$( VERSION_NUMBER) -) $( BOARD) $( if $( SUBTARGET) ,-$( SUBTARGET) ) $( if $( GCCV) ,_gcc-$( GCCV) ) $( DIR_SUFFIX) .$( HOST_OS) -$( HOST_ARCH)
2005-04-21 01:01:30 +08:00
SDK_BUILD_DIR := $( BUILD_DIR) /$( SDK_NAME)
2014-03-13 22:13:57 +08:00
2014-03-13 22:14:00 +08:00
STAGING_SUBDIR_HOST := staging_dir/host
2017-01-24 22:29:20 +08:00
STAGING_SUBDIR_TARGET := staging_dir/$( TARGET_DIR_NAME)
2014-03-13 22:14:00 +08:00
STAGING_SUBDIR_TOOLCHAIN := staging_dir/toolchain-$( ARCH) $( ARCH_SUFFIX) _gcc-$( GCCV) _$( LIBC) -$( LIBCV) $( if $( CONFIG_arm) ,_eabi)
2014-03-13 22:13:57 +08:00
2016-04-18 18:28:16 +08:00
EXCLUDE_DIRS := */ccache/* \
2009-08-09 19:11:11 +08:00
*/stamp \
*/stampfiles \
*/man \
2014-03-10 19:12:37 +08:00
*/info \
2014-03-13 22:13:57 +08:00
*/root-* \
initial \
*.install.clean \
*.install.flags \
*.install \
2017-01-14 01:00:18 +08:00
*/doc \
*/share/locale
2014-03-10 19:12:37 +08:00
SDK_DIRS = \
2014-03-13 22:14:00 +08:00
$( STAGING_SUBDIR_HOST) \
$( STAGING_SUBDIR_TOOLCHAIN)
2005-04-11 04:28:17 +08:00
2017-01-20 16:51:38 +08:00
GIT_URL := $( filter git://% http://% https://%,$( shell git config --get remote.origin.url 2>/dev/null) )
2017-02-20 03:45:11 +08:00
GIT_COMMIT := $( shell git rev-parse HEAD 2>/dev/null)
GIT_BRANCH := $( filter-out master HEAD,$( shell git rev-parse --abbrev-ref HEAD 2>/dev/null) )
GIT_TAGNAME := $( shell git show-ref --tags --dereference 2>/dev/null | sed -ne '/^$(GIT_COMMIT) / { s|^.*/||; s|\^.*||; p }' )
2017-01-20 16:51:38 +08:00
2017-02-20 03:45:11 +08:00
BASE_FEED := $( if $( GIT_URL) ,src-git base $( GIT_URL) $( if $( GIT_BRANCH) ,; $( GIT_BRANCH) ,$( if $( GIT_TAGNAME) ,; $( GIT_TAGNAME) ) ) )
2014-10-17 00:28:12 +08:00
BASE_FEED := $( if $( BASE_FEED) ,$( BASE_FEED) ,$( shell cd $( TOPDIR) ; LC_ALL = C git svn info 2>/dev/null | sed -ne 's/^URL: /src-gitsvn base /p' ) )
BASE_FEED := $( if $( BASE_FEED) ,$( BASE_FEED) ,$( shell cd $( TOPDIR) ; LC_ALL = C svn info 2>/dev/null | sed -ne 's/^URL: /src-svn base /p' ) )
2017-02-20 03:45:11 +08:00
BASE_FEED := $( if $( BASE_FEED) ,$( BASE_FEED) ,src-git base https://git.lede-project.org/source.git$( if $( GIT_BRANCH) ,; $( GIT_BRANCH) ,$( if $( GIT_TAGNAME) ,; $( GIT_TAGNAME) ) ) )
2008-09-25 01:11:41 +08:00
2014-03-10 19:12:37 +08:00
KDIR_BASE = $( patsubst $( TOPDIR) /%,%,$( LINUX_DIR) )
KERNEL_FILES_ARCH = \
Makefile* \
module.lds \
Kbuild.platforms \
*/Platform \
include \
2014-12-12 01:03:04 +08:00
*/include \
2014-03-10 19:12:37 +08:00
scripts \
kernel/asm-offsets.s
KERNEL_FILES_BASE := \
.config \
Makefile \
scripts \
include \
Module.symvers \
2016-01-12 07:11:09 +08:00
modules.builtin \
2014-03-10 19:12:37 +08:00
$( addprefix arch/$( LINUX_KARCH) /,$( KERNEL_FILES_ARCH) )
KERNEL_FILES := $( patsubst $( TOPDIR) /%,%,$( wildcard $( addprefix $( LINUX_DIR) /,$( KERNEL_FILES_BASE) ) ) )
2005-04-11 04:28:17 +08:00
all : compile
2016-10-11 19:51:44 +08:00
$(BIN_DIR)/$(SDK_NAME).tar.xz : clean
2006-06-21 11:17:13 +08:00
mkdir -p $( SDK_BUILD_DIR) /dl $( SDK_BUILD_DIR) /package
2016-11-30 17:00:41 +08:00
$( CP) -L $( INCLUDE_DIR) $( SCRIPT_DIR) $( SDK_BUILD_DIR) /
2011-09-13 15:39:14 +08:00
$( TAR) -cf - -C $( TOPDIR) \
2016-01-09 07:18:14 +08:00
` cd $( TOPDIR) ; find $( KDIR_BASE) -name \* .ko` \
2016-04-21 22:34:39 +08:00
` cd $( TOPDIR) ; find $( KDIR_BASE) /firmware/ -newer $( KDIR_BASE) /firmware/Makefile \
-type f -name '*.bin' -or -name '*.cis' -or -name '*.csp' -or -name '*.dsp' -or -name '*.fw' ` \
2011-09-13 15:39:14 +08:00
$( foreach exclude,$( EXCLUDE_DIRS) ,--exclude= " $( exclude) " ) \
2014-03-10 19:12:37 +08:00
$( SDK_DIRS) $( KERNEL_FILES) | \
2006-10-14 22:16:26 +08:00
$( TAR) -xf - -C $( SDK_BUILD_DIR)
2014-03-13 22:14:00 +08:00
2017-01-10 18:37:47 +08:00
( cd $( SDK_BUILD_DIR) ; find $( STAGING_SUBDIR_HOST) /bin $( STAGING_SUBDIR_HOST) /usr/bin \
$( STAGING_SUBDIR_TOOLCHAIN) /bin $( STAGING_SUBDIR_TOOLCHAIN) /*/bin $( STAGING_SUBDIR_TOOLCHAIN) /libexec \
-type f | $( XARGS) $( SCRIPT_DIR) /bundle-libraries.sh $( SDK_BUILD_DIR) /$( STAGING_SUBDIR_HOST) )
2014-03-13 22:14:00 +08:00
@-( \
find \
$( SDK_BUILD_DIR) /$( STAGING_SUBDIR_HOST) /bin \
$( SDK_BUILD_DIR) /$( STAGING_SUBDIR_HOST) /usr/bin \
$( SDK_BUILD_DIR) /$( STAGING_SUBDIR_TOOLCHAIN) /bin \
$( SDK_BUILD_DIR) /$( STAGING_SUBDIR_TOOLCHAIN) /*/bin \
$( SDK_BUILD_DIR) /$( STAGING_SUBDIR_TOOLCHAIN) /libexec \
-type f; \
find \
$( SDK_BUILD_DIR) /$( STAGING_SUBDIR_HOST) /lib \
$( SDK_BUILD_DIR) /$( STAGING_SUBDIR_HOST) /usr/lib \
2017-01-18 10:15:31 +08:00
-type f -name \* .so\* ; \
2014-03-13 22:14:00 +08:00
) | xargs strip 2>/dev/null >/dev/null
2007-12-14 08:33:25 +08:00
mkdir -p $( SDK_BUILD_DIR) /target/linux
$( CP) $( GENERIC_PLATFORM_DIR) $( PLATFORM_DIR) $( SDK_BUILD_DIR) /target/linux/
rm -rf \
2014-03-10 19:12:41 +08:00
$( SDK_BUILD_DIR) /target/linux/*/files* \
$( SDK_BUILD_DIR) /target/linux/*/patches*
2014-03-11 02:58:49 +08:00
./convert-config.pl $( TOPDIR) /.config > $( SDK_BUILD_DIR) /Config-build.in
2012-01-28 11:30:30 +08:00
$( CP) -L \
2008-08-22 12:20:40 +08:00
$( TOPDIR) /LICENSE \
2007-12-14 08:33:25 +08:00
$( TOPDIR) /rules.mk \
2008-08-22 12:20:40 +08:00
./files/Config.in \
2007-12-14 08:33:25 +08:00
./files/Makefile \
2015-02-09 06:54:27 +08:00
./files/include/prepare.mk \
2007-12-14 08:33:25 +08:00
./files/README.SDK \
$( SDK_BUILD_DIR) /
$( CP) \
$( TOPDIR) /package/Makefile \
2016-08-01 17:54:25 +08:00
$( TOPDIR) /package/libs/toolchain \
$( TOPDIR) /package/kernel/linux \
2007-12-14 08:33:25 +08:00
$( SDK_BUILD_DIR) /package/
2014-10-17 00:28:12 +08:00
2017-01-24 22:29:20 +08:00
-rm -rf \
$( SDK_BUILD_DIR) /$( STAGING_SUBDIR_HOST) /ccache \
$( SDK_BUILD_DIR) /$( STAGING_SUBDIR_TARGET) /ccache \
$( SDK_BUILD_DIR) /$( STAGING_SUBDIR_TOOLCHAIN) /ccache
2014-10-17 00:28:12 +08:00
-rm -f $( SDK_BUILD_DIR) /feeds.conf.default
$( if $( BASE_FEED) ,echo " $( BASE_FEED) " > $( SDK_BUILD_DIR) /feeds.conf.default)
if [ -f $( TOPDIR) /feeds.conf ] ; then \
cat $( TOPDIR) /feeds.conf >> $( SDK_BUILD_DIR) /feeds.conf.default; \
else \
cat $( TOPDIR) /feeds.conf.default >> $( SDK_BUILD_DIR) /feeds.conf.default; \
fi
2012-04-13 18:47:45 +08:00
$( SED) 's,^# REVISION:=.*,REVISION:=$(REVISION),g' $( SDK_BUILD_DIR) /include/version.mk
2016-10-21 18:21:40 +08:00
$( SED) 's,^# SOURCE_DATE_EPOCH:=.*,SOURCE_DATE_EPOCH:=$(SOURCE_DATE_EPOCH),g' $( SDK_BUILD_DIR) /include/version.mk
2014-09-17 18:25:47 +08:00
$( SED) '/LINUX_VERMAGIC:=/ { s,unknown,$(LINUX_VERMAGIC),g }' $( SDK_BUILD_DIR) /include/kernel.mk
2007-12-14 08:33:25 +08:00
find $( SDK_BUILD_DIR) -name .git | $( XARGS) rm -rf
2007-04-29 09:30:48 +08:00
find $( SDK_BUILD_DIR) -name .svn | $( XARGS) rm -rf
find $( SDK_BUILD_DIR) -name CVS | $( XARGS) rm -rf
2017-02-13 18:45:43 +08:00
-make -C $( SDK_BUILD_DIR) /scripts/config clean
2005-04-11 04:28:17 +08:00
( cd $( BUILD_DIR) ; \
2016-10-11 19:51:44 +08:00
tar -I 'xz -7e' -cf $@ $( SDK_NAME) ; \
2005-04-21 01:01:30 +08:00
)
2006-07-22 01:00:14 +08:00
download :
2005-04-11 04:28:17 +08:00
prepare :
2016-10-11 19:51:44 +08:00
compile : $( BIN_DIR ) /$( SDK_NAME ) .tar .xz
2007-01-15 07:37:40 +08:00
install : compile
2005-04-11 04:28:17 +08:00
clean :
2016-10-11 19:51:44 +08:00
rm -rf $( SDK_BUILD_DIR) $( BIN_DIR) /$( SDK_NAME) .tar.xz