fbe35170c1ae1abec052c488cc3ed3d6e6148264
2 # Copyright (C) 2006-2014 OpenWrt.org
3 # Copyright (C) 2016 LEDE Project
5 # This is free software, licensed under the GNU General Public License v2.
6 # See /LICENSE for more information.
9 include $(TOPDIR
)/rules.mk
10 include $(INCLUDE_DIR
)/kernel.mk
11 include $(INCLUDE_DIR
)/version.mk
12 include $(INCLUDE_DIR
)/download.mk
16 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
)
17 SDK_BUILD_DIR
:=$(BUILD_DIR
)/$(SDK_NAME
)
19 STAGING_SUBDIR_HOST
:= staging_dir
/host
20 STAGING_SUBDIR_TARGET
:= staging_dir
/$(TARGET_DIR_NAME
)
21 STAGING_SUBDIR_TOOLCHAIN
:= staging_dir
/toolchain-
$(ARCH
)$(ARCH_SUFFIX
)_gcc-
$(GCCV
)_
$(LIBC
)$(if
$(CONFIG_arm
),_eabi
)
23 BUNDLER_PATH
:= $(subst $(space
),:,$(filter-out $(TOPDIR
)/%,$(subst :,$(space
),$(PATH
))))
24 BUNDLER_COMMAND
:= PATH
=$(BUNDLER_PATH
) $(XARGS
) $(SCRIPT_DIR
)/bundle-libraries.sh
$(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_HOST
)
38 $(STAGING_SUBDIR_HOST
) \
39 $(STAGING_SUBDIR_TOOLCHAIN
)
41 GIT_URL
:=$(shell git config
--get remote.
origin.url
2>/dev
/null
)
42 GIT_URL
:=$(if
$(CONFIG_BUILDBOT
),$(filter git
://% http
://% https
://%,$(GIT_URL
)),$(GIT_URL
))
43 GIT_COMMIT
:=$(shell git rev-parse HEAD
2>/dev
/null
)
44 GIT_BRANCH
:=$(filter-out master HEAD
,$(shell git rev-parse
--abbrev-ref HEAD
2>/dev
/null
))
45 GIT_TAGNAME
:=$(shell git show-ref
--tags --dereference
2>/dev
/null | sed
-ne
'/^$(GIT_COMMIT) / { s|^.*/||; s|\^.*||; p }')
47 BASE_FEED
:=$(if
$(GIT_URL
),src-git-full base
$(GIT_URL
)$(if
$(GIT_BRANCH
),;$(GIT_BRANCH
),$(if
$(GIT_TAGNAME
),;$(GIT_TAGNAME
))))
48 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'))
49 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'))
50 BASE_FEED
:=$(if
$(BASE_FEED
),$(BASE_FEED
),src-git-full base
$(PROJECT_GIT
)/openwrt
/openwrt.git
$(if
$(GIT_BRANCH
),;$(GIT_BRANCH
),$(if
$(GIT_TAGNAME
),;$(GIT_TAGNAME
))))
52 KDIR_BASE
= $(patsubst $(TOPDIR
)/%,%,$(LINUX_DIR
))
53 KDIR_ARCHES
= $(LINUX_KARCH
)
55 # arch/arm64/ includes reference files in arch/arm/, so we'll need both
56 ifeq ($(LINUX_KARCH
),arm64
)
68 kernel
/asm-offsets.s \
71 KERNEL_FILES_BASE
:= \
79 $(foreach arch
,$(KDIR_ARCHES
),$(addprefix arch
/$(arch
)/,$(KERNEL_FILES_ARCH
)))
81 KERNEL_FILES
:= $(patsubst $(TOPDIR
)/%,%,$(wildcard $(addprefix $(LINUX_DIR
)/,$(KERNEL_FILES_BASE
))))
83 # The kernel source hosts various userspace utilities sources.
84 # These are packaged separately from the kernel and kernel modules.
85 # The source has to be included here to be buildable by the SDK.
87 USERSPACE_UTILS_FILES
:= \
89 tools
/power
/cpupower \
95 USERSPACE_FILES
:= $(patsubst $(TOPDIR
)/%,%,$(wildcard $(addprefix $(LINUX_DIR
)/,$(USERSPACE_UTILS_FILES
))))
99 $(BIN_DIR
)/$(SDK_NAME
).
tar.xz
: clean
101 $(SDK_BUILD_DIR
)/dl \
102 $(SDK_BUILD_DIR
)/package \
103 $(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_TARGET
)/include \
104 $(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_TARGET
)/usr
/include
106 $(CP
) -L
$(INCLUDE_DIR
) $(SCRIPT_DIR
) $(SDK_BUILD_DIR
)/
107 $(TAR
) -cf
- -C
$(TOPDIR
) \
108 `cd $(TOPDIR); find $(KDIR_BASE)/ -name \*.ko` \
109 `cd $(TOPDIR); find $(KDIR_BASE)/firmware/ -newer $(KDIR_BASE)/firmware/Makefile \
110 -type f -name '*.bin' -or -name '*.cis' -or -name '*.csp' -or -name '*.dsp' -or -name '*.fw'` \
111 $(foreach exclude
,$(EXCLUDE_DIRS
),--exclude
="$(exclude)") \
112 $(SDK_DIRS
) $(KERNEL_FILES
) | \
113 $(TAR
) -xf
- -C
$(SDK_BUILD_DIR
)
115 $(TAR
) -cf
- -C
$(TOPDIR
) $(USERSPACE_FILES
) | \
116 $(TAR
) -xf
- -C
$(SDK_BUILD_DIR
)
118 (cd
$(SDK_BUILD_DIR
); find
$(STAGING_SUBDIR_HOST
)/bin
$(STAGING_SUBDIR_HOST
)/usr
/bin \
119 $(STAGING_SUBDIR_TOOLCHAIN
)/bin
$(STAGING_SUBDIR_TOOLCHAIN
)/*/bin
$(STAGING_SUBDIR_TOOLCHAIN
)/libexec \
121 -type f |
$(BUNDLER_COMMAND
))
125 $(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_HOST
)/bin \
126 $(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_HOST
)/usr
/bin \
127 $(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_TOOLCHAIN
)/bin \
128 $(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_TOOLCHAIN
)/*/bin \
129 $(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_TOOLCHAIN
)/libexec \
132 $(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_HOST
)/lib \
133 $(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_HOST
)/usr
/lib \
134 -type f
-name \
*.so\
*; \
135 ) | xargs
strip 2>/dev
/null
>/dev
/null
137 mkdir
-p
$(SDK_BUILD_DIR
)/target
/linux
138 $(CP
) $(GENERIC_PLATFORM_DIR
) $(PLATFORM_DIR
) $(SDK_BUILD_DIR
)/target
/linux
/
140 $(SDK_BUILD_DIR
)/target
/linux
/*/files
* \
141 $(SDK_BUILD_DIR
)/target
/linux
/*/patches
*
142 .
/convert-config.pl
$(TOPDIR
)/.config
> $(SDK_BUILD_DIR
)/Config-build.in
149 .
/files
/include/prepare.mk \
152 mkdir
-p
$(SDK_BUILD_DIR
)/package
/kernel
154 $(TOPDIR
)/package
/Makefile \
155 $(TOPDIR
)/package
/libs
/toolchain \
156 $(SDK_BUILD_DIR
)/package
/
158 $(TOPDIR
)/package
/kernel
/linux \
159 $(SDK_BUILD_DIR
)/package
/kernel
/
161 -rm -rf
$(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_HOST
)/.prereq-build
162 -rm -rf
$(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_HOST
)/doc
163 -rm -rf
$(SDK_BUILD_DIR
)/$(STAGING_SUBDIR_HOST
)/share
/doc
165 -rm -f
$(SDK_BUILD_DIR
)/feeds.conf.default
166 $(if
$(BASE_FEED
),echo
"$(BASE_FEED)" > $(SDK_BUILD_DIR
)/feeds.conf.default
)
167 if
[ -f
$(TOPDIR
)/feeds.conf
]; then \
168 cat
$(TOPDIR
)/feeds.conf
>> $(SDK_BUILD_DIR
)/feeds.conf.default
; \
170 cat
$(TOPDIR
)/feeds.conf.default
>> $(SDK_BUILD_DIR
)/feeds.conf.default
; \
172 $(SED
) 's,^# REVISION:=.*,REVISION:=$(REVISION),g' $(SDK_BUILD_DIR
)/include/version.mk
173 $(SED
) 's,^# SOURCE_DATE_EPOCH:=.*,SOURCE_DATE_EPOCH:=$(SOURCE_DATE_EPOCH),g' $(SDK_BUILD_DIR
)/include/version.mk
174 $(SED
) '/LINUX_VERMAGIC:=/ { s,unknown,$(LINUX_VERMAGIC),g }' $(SDK_BUILD_DIR
)/include/kernel.mk
175 find
$(SDK_BUILD_DIR
) -name .git |
$(XARGS
) rm -rf
176 find
$(SDK_BUILD_DIR
) -name .svn |
$(XARGS
) rm -rf
177 find
$(SDK_BUILD_DIR
) -name CVS |
$(XARGS
) rm -rf
178 -make
-C
$(SDK_BUILD_DIR
)/scripts
/config
clean
180 tar -I
'$(STAGING_DIR_HOST)/bin/xz -7e -T$(if $(filter 1,$(NPROC)),2,0)' -cf
$@
$(SDK_NAME
) \
181 --mtime
="$(shell date --date=@$(SOURCE_DATE_EPOCH))"; \
186 compile
: $(BIN_DIR
)/$(SDK_NAME
).
tar.xz
190 rm -rf
$(SDK_BUILD_DIR
) $(BIN_DIR
)/$(SDK_NAME
).
tar.xz