kagera/rules/openwrt.mk

150 lines
6.2 KiB
Makefile

#
# Copyright(C) 2010-2013, Asio Software Technologies
#
# This is free software, licensed under the GNU General Public License v2.
# See COPYING in the top level directory for more information.
#
FORCE+=kernel_menuconfig openwrt_menuconfig
kernel_menuconfig: openwrt/prepare
@cd $(TOPDIR)/temp/build/$(TARGET_ARCH); $(MAKE) kernel_menuconfig
openwrt_menuconfig: openwrt/prepare
@cd $(TOPDIR)/temp/build/$(TARGET_ARCH); $(MAKE) menuconfig
openwrt/feeds: openwrt/fetch
@if [ ! -d $(TOPDIR)/temp/build/$(TARGET_ARCH)/feeds ]; then \
if [ "$(CONFIG_PACKAGES_ESSENTIAL_REPO_GIT)" == "y" ]; then \
if [ "$(PACKAGES_ESSENTIAL_REPO_GIT_URL)" == "" ]; then \
echo "Invalid essential packages GIT address. Please check your configuration..."; \
exit 1; \
fi; \
FEED="src-git packages $(PACKAGES_ESSENTIAL_REPO_GIT_URL)"; \
if [ "$(PACKAGES_ESSENTIAL_REPO_GIT_BRANCH)" != "master" ]; then \
FEED="$$FEED;$(PACKAGES_ESSENTIAL_REPO_GIT_BRANCH)"; \
fi; \
elif [ "$(CONFIG_PACKAGES_ESSENTIAL_REPO_SVN)" == "y" ]; then \
if [ "$(PACKAGES_ESSENTIAL_REPO_SVN_URL)" == "" ]; then \
echo "Invalid essential packages SVN address. Please check your configuration..."; \
exit 1; \
fi; \
FEED="src-svn packages $(PACKAGES_ESSENTIAL_REPO_SVN_URL)"; \
if [ "$(PACKAGES_ESSENTIAL_REPO_SVN_REV)" != "0" ]; then \
FEED="$$FEED@$(PACKAGES_ESSENTIAL_REPO_SVN_REV)"; \
fi; \
else \
echo "Unsupported repository type used for essential packages. Please check your configuration..."; \
exit 1; \
fi; \
echo "$$FEED" > $(TOPDIR)/temp/build/$(TARGET_ARCH)/feeds.conf; \
if [ "$(CONFIG_PACKAGES_EXTRA_REPO)" == "y" ]; then \
if [ "$(CONFIG_PACKAGES_EXTRA_REPO_GIT)" == "y" ]; then \
if [ "$(PACKAGES_EXTRA_REPO_GIT_URL)" == "" ]; then \
echo "Invalid extra packages GIT address. Please check your configuration..."; \
exit 1; \
fi; \
FEED="src-git extra $(PACKAGES_EXTRA_REPO_GIT_URL)"; \
if [ "$(PACKAGES_EXTRA_REPO_GIT_BRANCH)" != "master" ]; then \
FEED="$$FEED;$(PACKAGES_EXTRA_REPO_GIT_BRANCH)"; \
fi; \
elif [ "$(CONFIG_PACKAGES_EXTRA_REPO_SVN)" == "y" ]; then \
if [ "$(PACKAGES_EXTRA_REPO_SVN_URL)" == "" ]; then \
echo "Invalid essential packages SVN address. Please check your configuration..."; \
exit 1; \
fi; \
FEED="src-svn extra $(PACKAGES_EXTRA_REPO_SVN_URL)"; \
if [ "$(PACKAGES_EXTRA_REPO_SVN_REV)" != "0" ]; then \
FEED="$$FEED@$(PACKAGES_EXTRA_REPO_SVN_REV)"; \
fi; \
else \
echo "Unsupported repository type used for extra packages. Please check your configuration..."; \
exit 1; \
fi; \
echo "$$FEED" >> $(TOPDIR)/temp/build/$(TARGET_ARCH)/feeds.conf; \
fi; \
fi
openwrt/fetch: kagera/prepare
@if [ ! -d $(TOPDIR)/temp/build/$(TARGET_ARCH) ]; then \
if [ "$(CONFIG_OPENWRT_REPO_GIT)" == "y" ]; then \
if [ "$(OPENWRT_REPO_GIT_URL)" == "" ]; then \
echo "Invalid OpenWrt GIT address. Please check your configuration..."; \
exit 1; \
fi; \
git clone --depth 1 $(OPENWRT_REPO_GIT_URL) $(TOPDIR)/temp/build/$(TARGET_ARCH); \
if [ "$(OPENWRT_REPO_GIT_BRANCH)" != "master" ]; then \
cd $(TOPDIR)/temp/build/$(TARGET_ARCH); \
git checkout $(OPENWRT_REPO_GIT_BRANCH); \
fi; \
elif [ "$(CONFIG_OPENWRT_REPO_SVN)" == "y" ]; then \
if [ "$(OPENWRT_REPO_SVN_URL)" == "" ]; then \
echo "Invalid OpenWrt SVN address. Please check your configuration..."; \
exit 1; \
fi; \
if [ $(OPENWRT_REPO_SVN_REV) == "0" ]; then \
svn checkout $(OPENWRT_REPO_SVN_URL) $(TOPDIR)/temp/build/$(TARGET_ARCH); \
else \
svn checkout $(OPENWRT_REPO_SVN_URL) $(TOPDIR)/temp/build/$(TARGET_ARCH) -r $(OPENWRT_REPO_SVN_REV); \
fi; \
else \
echo "Unsupported repository type used for OpenWrt source code. Please check your configuration..."; \
exit 1; \
fi; \
cd $(TOPDIR); \
rm -f $(TOPDIR)/temp/build/$(TARGET_ARCH)/feeds.conf.default; \
fi
openwrt/prepare: openwrt/feeds
@rm -rf $(TOPDIR)/temp/build/$(TARGET_ARCH)/dl
@ln -sf $(TOPDIR)/temp/download $(TOPDIR)/temp/build/$(TARGET_ARCH)/dl
@cp -afr $(TOPDIR)/packages/* $(TOPDIR)/temp/build/$(TARGET_ARCH)/package/
@cp -afr $(TOPDIR)/tools/* $(TOPDIR)/temp/build/$(TARGET_ARCH)/tools/
@if [ "$(CONFIG_KAGERA_APPLY_PATCHES)" == "y" ]; then \
if [ ! -f $(TOPDIR)/temp/.$(TARGET_ARCH).patched ]; then \
PATCHES=`find $(TOPDIR)/patches/ -name "*.diff" -o -name "*.patch" | sort -n`; \
if [ -n "$$PATCHES" ]; then \
for PATCH in $$PATCHES; do \
for PREFIX in {0..4}; do \
if patch -d "$(TOPDIR)/temp/build/$(TARGET_ARCH)" --dry-run -p$$PREFIX -i "$$PATCH" --silent > /dev/null; then \
patch -d "$(TOPDIR)/temp/build/$(TARGET_ARCH)" -p$$PREFIX -i "$$PATCH" --silent; \
break; \
elif [ "$$PREFIX" -ge 4 ]; then \
echo "Patch $$PATCH does not fit..."; \
exit 2; \
fi; \
done; \
done; \
fi; \
if [ "$(CONFIG_KAGERA_DISABLE_ARCH_PATCHES)" != "y" ]; then \
PATCHES=`find $(TOPDIR)/targets/$(TARGET_ARCH)/patches/ -name "*.diff" -o -name "*.patch" | sort -n`; \
if [ -n "$$PATCHES" ]; then \
for PATCH in $$PATCHES; do \
for PREFIX in {0..4}; do \
if patch -d "$(TOPDIR)/temp/build/$(TARGET_ARCH)" --dry-run -p$$PREFIX -i "$$PATCH" --silent > /dev/null; then \
patch -d "$(TOPDIR)/temp/build/$(TARGET_ARCH)" -p$$PREFIX -i "$$PATCH" --silent; \
break; \
elif [ "$$PREFIX" -ge 4 ]; then \
echo "Patch $$PATCH does not fit..."; \
exit 2; \
fi; \
done; \
done; \
fi; \
fi; \
touch $(TOPDIR)/temp/.$(TARGET_ARCH).patched; \
fi; \
fi
$(VSED) $(TOPDIR)/temp/build/$(TARGET_ARCH)/package/base-files/files/etc/banner
$(VSED) $(TOPDIR)/temp/build/$(TARGET_ARCH)/package/base-files/files/etc/version
$(VSED) $(TOPDIR)/temp/build/$(TARGET_ARCH)/package/system/opkg/files/opkg.conf
@if [ ! -d $(TOPDIR)/temp/build/$(TARGET_ARCH)/feeds ]; then \
cd $(TOPDIR)/temp/build/$(TARGET_ARCH); \
./scripts/feeds update -a; \
./scripts/feeds install -a; \
fi
@if [ ! -f $(TOPDIR)/temp/.$(TARGET_ARCH).config ]; then \
cp -af $(TOPDIR)/targets/$(TARGET_ARCH)/profiles/$(TARGET_BOARD)/config $(TOPDIR)/temp/build/$(TARGET_ARCH)/.config; \
touch $(TOPDIR)/temp/.$(TARGET_ARCH).config; \
fi