Skip to content
Snippets Groups Projects
Commit 0fd92dd6 authored by Matthias Schiffer's avatar Matthias Schiffer
Browse files

Use target-specific openwrt directories with symlinks

This allows us to use separate .config files per target. Also, don't use
OpenWRT's feeds script anymore, but symlink the feeds ourselves.
parent 635192e3
No related branches found
No related tags found
No related merge requests found
...@@ -7,6 +7,7 @@ export LC_ALL LANG ...@@ -7,6 +7,7 @@ export LC_ALL LANG
empty:= empty:=
space:= $(empty) $(empty) space:= $(empty) $(empty)
GLUONMAKE_EARLY = $(SUBMAKE) -C $(GLUON_ORIGOPENWRTDIR) -f $(GLUONDIR)/Makefile GLUON_TOOLS=0
GLUONMAKE = $(SUBMAKE) -C $(GLUON_OPENWRTDIR) -f $(GLUONDIR)/Makefile GLUONMAKE = $(SUBMAKE) -C $(GLUON_OPENWRTDIR) -f $(GLUONDIR)/Makefile
ifneq ($(OPENWRT_BUILD),1) ifneq ($(OPENWRT_BUILD),1)
...@@ -15,7 +16,7 @@ GLUONDIR:=${CURDIR} ...@@ -15,7 +16,7 @@ GLUONDIR:=${CURDIR}
include $(GLUONDIR)/include/gluon.mk include $(GLUONDIR)/include/gluon.mk
TOPDIR:=$(GLUON_OPENWRTDIR) TOPDIR:=$(GLUON_ORIGOPENWRTDIR)
export TOPDIR export TOPDIR
...@@ -61,40 +62,46 @@ endef ...@@ -61,40 +62,46 @@ endef
include $(GLUONDIR)/targets/targets.mk include $(GLUONDIR)/targets/targets.mk
CheckExternal := test -d $(GLUON_OPENWRTDIR) || (echo 'You don'"'"'t seem to have obtained the external repositories needed by Gluon; please call `make update` first!'; false)
gluon-tools: FORCE CheckExternal := test -d $(GLUON_ORIGOPENWRTDIR) || (echo 'You don'"'"'t seem to have obtained the external repositories needed by Gluon; please call `make update` first!'; false)
+@$(SUBMAKE) -C $(TOPDIR) prepare-tmpinfo OPENWRT_BUILD=0 V=s$(OPENWRT_VERBOSE)
+@$(GLUONMAKE) gluon-tools GLUON_TOOLS=0
all: gluon-tools
prepare-target: FORCE
@$(CheckExternal)
+@$(GLUONMAKE_EARLY) prepare-target
all: prepare-target
+@$(GLUONMAKE) prepare +@$(GLUONMAKE) prepare
+@$(GLUONMAKE) images +@$(GLUONMAKE) images
download prepare images: gluon-tools prepare: prepare-target
+@$(GLUONMAKE) $@ +@$(GLUONMAKE) $@
tools/% toolchain/% package/% target/%: gluon-tools clean dirclean download images: FORCE
@$(CheckExternal)
+@$(GLUONMAKE_EARLY) maybe-prepare-target
+@$(GLUONMAKE) $@ +@$(GLUONMAKE) $@
manifest: gluon-tools toolchain/% package/% target/%: FORCE
[ -n "$(GLUON_BRANCH)" ] || (echo 'Please set GLUON_BRANCH to create a manifest.'; false) @$(CheckExternal)
+@$(GLUONMAKE_EARLY) maybe-prepare-target
+@$(GLUONMAKE) $@ +@$(GLUONMAKE) $@
dirclean: clean manifest: FORCE
[ -n "$(GLUON_BRANCH)" ] || (echo 'Please set GLUON_BRANCH to create a manifest.'; false)
@$(CheckExternal) @$(CheckExternal)
+@$(SUBMAKE) -C $(TOPDIR) -r dirclean +@$(GLUONMAKE_EARLY) maybe-prepare-target
+@$(GLUONMAKE) $@
cleanall: clean cleanall: clean
@$(CheckExternal) ;
+@$(SUBMAKE) -C $(TOPDIR) -r clean
clean:
@$(CheckExternal)
+@$(GLUONMAKE) clean
else else
TOPDIR=${CURDIR}
export TOPDIR
include rules.mk include rules.mk
include $(GLUONDIR)/include/gluon.mk include $(GLUONDIR)/include/gluon.mk
...@@ -135,6 +142,7 @@ include $(GLUONDIR)/targets/targets.mk ...@@ -135,6 +142,7 @@ include $(GLUONDIR)/targets/targets.mk
BOARD := $(GLUON_TARGET_$(GLUON_TARGET)_BOARD) BOARD := $(GLUON_TARGET_$(GLUON_TARGET)_BOARD)
override SUBTARGET := $(GLUON_TARGET_$(GLUON_TARGET)_SUBTARGET) override SUBTARGET := $(GLUON_TARGET_$(GLUON_TARGET)_SUBTARGET)
target_prepared_stamp := $(BOARD_BUILDDIR)/target-prepared
gluon_prepared_stamp := $(BOARD_BUILDDIR)/prepared gluon_prepared_stamp := $(BOARD_BUILDDIR)/prepared
...@@ -143,6 +151,38 @@ include $(INCLUDE_DIR)/target.mk ...@@ -143,6 +151,38 @@ include $(INCLUDE_DIR)/target.mk
gluon-tools: $(STAGING_DIR_HOST)/bin/stat gluon-tools: $(STAGING_DIR_HOST)/bin/stat
feeds: FORCE
rm -rf $(TOPDIR)/package/feeds
mkdir $(TOPDIR)/package/feeds
[ ! -f $(GLUON_SITEDIR)/modules ] || . $(GLUON_SITEDIR)/modules && for feed in $$GLUON_SITE_FEEDS; do ln -s ../../../packages/$$feed $(TOPDIR)/package/feeds/$$feed; done
. $(GLUONDIR)/modules && for feed in $$GLUON_FEEDS; do ln -s ../../../packages/$$feed $(TOPDIR)/package/feeds/$$feed; done
+$(NO_TRACE_MAKE) -C $(TOPDIR) prepare-tmpinfo OPENWRT_BUILD=0
config: FORCE
( \
cat $(GLUONDIR)/include/config $(GLUONDIR)/targets/$(GLUON_TARGET)/config; \
echo '$(patsubst %,CONFIG_PACKAGE_%=m,$(sort $(filter-out -%,$(GLUON_DEFAULT_PACKAGES) $(GLUON_SITE_PACKAGES) $(PROFILE_PACKAGES))))' \
| sed -e 's/ /\n/g'; \
) > .config
+$(NO_TRACE_MAKE) defconfig OPENWRT_BUILD=0
prepare-target: FORCE
mkdir -p $(GLUON_OPENWRTDIR)
for dir in build_dir dl staging_dir tmp; do \
mkdir -p $(GLUON_ORIGOPENWRTDIR)/$$dir; \
done
for link in build_dir Config.in dl include Makefile package rules.mk scripts staging_dir target tmp toolchain tools; do \
ln -sf $(GLUON_ORIGOPENWRTDIR)/$$link $(GLUON_OPENWRTDIR); \
done
+$(GLUONMAKE_EARLY) feeds
+$(GLUONMAKE_EARLY) gluon-tools
+$(GLUONMAKE) config
touch $(target_prepared_stamp)
$(target_prepared_stamp):
+$(GLUONMAKE_EARLY) prepare-target
maybe-prepare-target: $(target_prepared_stamp)
$(BUILD_DIR)/.prepared: Makefile $(BUILD_DIR)/.prepared: Makefile
@mkdir -p $$(dirname $@) @mkdir -p $$(dirname $@)
...@@ -151,42 +191,19 @@ $(BUILD_DIR)/.prepared: Makefile ...@@ -151,42 +191,19 @@ $(BUILD_DIR)/.prepared: Makefile
$(toolchain/stamp-install): $(tools/stamp-install) $(toolchain/stamp-install): $(tools/stamp-install)
$(package/stamp-compile): $(package/stamp-cleanup) $(package/stamp-compile): $(package/stamp-cleanup)
clean: FORCE
rm -rf $(GLUON_BUILDDIR)
refresh_feeds: FORCE clean: FORCE
export MAKEFLAGS=V=s$(OPENWRT_VERBOSE); \ +$(SUBMAKE) clean
export SCAN_COOKIE=; \
scripts/feeds uninstall -a; \
scripts/feeds update -a; \
scripts/feeds install -a
dirclean: FORCE
+$(SUBMAKE) dirclean
rm -rf $(GLUON_BUILDDIR)
export GLUON_GENERATE := $(GLUONDIR)/scripts/generate.sh export GLUON_GENERATE := $(GLUONDIR)/scripts/generate.sh
export GLUON_CONFIGURE := $(GLUONDIR)/scripts/configure.pl export GLUON_CONFIGURE := $(GLUONDIR)/scripts/configure.pl
feeds: FORCE download: FORCE
( \
[ ! -f $(GLUON_SITEDIR)/modules ] || . $(GLUON_SITEDIR)/modules && for feed in $$GLUON_SITE_FEEDS; do echo src-link $$feed ../../packages/$$feed; done; \
. $(GLUONDIR)/modules && for feed in $$GLUON_FEEDS; do echo src-link $$feed ../../packages/$$feed; done; \
) > feeds.conf
+$(GLUONMAKE) refresh_feeds V=s$(OPENWRT_VERBOSE)
+$(NO_TRACE_MAKE) -C $(TOPDIR) prepare-tmpinfo OPENWRT_BUILD=0
config: FORCE
rm .config
( \
cat $(GLUONDIR)/include/config $(GLUONDIR)/targets/$(GLUON_TARGET)/config; \
echo '$(patsubst %,CONFIG_PACKAGE_%=m,$(sort $(filter-out -%,$(GLUON_DEFAULT_PACKAGES) $(GLUON_SITE_PACKAGES) $(PROFILE_PACKAGES))))' \
| sed -e 's/ /\n/g'; \
) > .config
+$(NO_TRACE_MAKE) defconfig OPENWRT_BUILD=0
.config:
+$(GLUONMAKE) config
download: .config FORCE
+$(SUBMAKE) tools/download +$(SUBMAKE) tools/download
+$(SUBMAKE) toolchain/download +$(SUBMAKE) toolchain/download
+$(SUBMAKE) package/download +$(SUBMAKE) package/download
...@@ -217,7 +234,6 @@ prepare: FORCE ...@@ -217,7 +234,6 @@ prepare: FORCE
mkdir -p $(GLUON_IMAGEDIR) $(BOARD_BUILDDIR) mkdir -p $(GLUON_IMAGEDIR) $(BOARD_BUILDDIR)
echo 'src packages file:../openwrt/bin/$(BOARD)/packages' > $(BOARD_BUILDDIR)/opkg.conf echo 'src packages file:../openwrt/bin/$(BOARD)/packages' > $(BOARD_BUILDDIR)/opkg.conf
+$(GLUONMAKE) feeds
+$(GLUONMAKE) config +$(GLUONMAKE) config
+$(GLUONMAKE) toolchain +$(GLUONMAKE) toolchain
+$(GLUONMAKE) kernel +$(GLUONMAKE) kernel
......
ifneq ($(__gluon_inc),1) ifneq ($(__gluon_inc),1)
__gluon_inc=1 __gluon_inc=1
GLUON_OPENWRTDIR := $(GLUONDIR)/openwrt GLUON_ORIGOPENWRTDIR := $(GLUONDIR)/openwrt
GLUON_SITEDIR := $(GLUONDIR)/site GLUON_SITEDIR := $(GLUONDIR)/site
GLUON_IMAGEDIR ?= $(GLUONDIR)/images GLUON_IMAGEDIR ?= $(GLUONDIR)/images
GLUON_BUILDDIR ?= $(GLUONDIR)/build GLUON_BUILDDIR ?= $(GLUONDIR)/build
GLUON_OPENWRTDIR = $(GLUON_BUILDDIR)/$(GLUON_TARGET)/openwrt
BOARD_BUILDDIR = $(GLUON_BUILDDIR)/$(BOARD)$(if $(SUBTARGET),-$(SUBTARGET)) BOARD_BUILDDIR = $(GLUON_BUILDDIR)/$(BOARD)$(if $(SUBTARGET),-$(SUBTARGET))
BOARD_KDIR = $(BOARD_BUILDDIR)/kernel BOARD_KDIR = $(BOARD_BUILDDIR)/kernel
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment