2013-02-17 15:30:59 +00:00
all :
LC_ALL := C
LANG := C
export LC_ALL LANG
2013-02-17 20:29:20 +00:00
empty :=
space := $( empty) $( empty)
2013-02-17 15:30:59 +00:00
GLUONMAKE = $( SUBMAKE) -C $( GLUON_OPENWRTDIR) -f $( GLUONDIR) /Makefile
i f n e q ( $( OPENWRT_BUILD ) , 1 )
2013-02-11 22:06:19 +00:00
GLUONDIR := ${ CURDIR }
2013-02-11 03:52:16 +00:00
2013-04-04 19:00:15 +00:00
i n c l u d e $( GLUONDIR ) / i n c l u d e / g l u o n . m k
2013-02-11 03:52:16 +00:00
2013-02-17 15:30:59 +00:00
TOPDIR := $( GLUON_OPENWRTDIR)
export TOPDIR
2013-12-28 13:54:49 +00:00
update : FORCE
$( GLUONDIR) /scripts/update.sh $( GLUONDIR)
2013-12-28 20:35:16 +00:00
$( GLUONDIR) /scripts/patch.sh $( GLUONDIR)
2013-12-28 13:54:49 +00:00
2013-12-28 14:11:59 +00:00
patch : FORCE
$( GLUONDIR) /scripts/patch.sh $( GLUONDIR)
unpatch : FORCE
$( GLUONDIR) /scripts/unpatch.sh $( GLUONDIR)
2013-12-28 14:31:11 +00:00
update-patches : FORCE
2013-12-28 21:13:18 +00:00
$( GLUONDIR) /scripts/update.sh $( GLUONDIR)
2013-12-28 14:31:11 +00:00
$( GLUONDIR) /scripts/update-patches.sh $( GLUONDIR)
$( GLUONDIR) /scripts/patch.sh $( GLUONDIR)
2013-12-28 13:54:49 +00:00
- i n c l u d e $( TOPDIR ) / i n c l u d e / h o s t . m k
2013-02-17 15:30:59 +00:00
_SINGLE = export MAKEFLAGS = $( space) ;
o v e r r i d e OPENWRT_BUILD = 1
GREP_OPTIONS =
2013-12-28 21:13:18 +00:00
export OPENWRT_BUILD GREP_OPTIONS
2013-02-17 23:39:44 +00:00
2013-12-28 13:54:49 +00:00
- i n c l u d e $( TOPDIR ) / i n c l u d e / d e b u g . m k
- i n c l u d e $( TOPDIR ) / i n c l u d e / d e p e n d s . m k
2013-04-04 19:00:15 +00:00
i n c l u d e $( GLUONDIR ) / i n c l u d e / t o p l e v e l . m k
2013-02-17 15:30:59 +00:00
2013-03-07 20:50:15 +00:00
d e f i n e G l u o n P r o f i l e
image/$(1) : FORCE
+@$$ ( GLUONMAKE) $$ @
e n d e f
2014-02-05 21:12:50 +00:00
d e f i n e G l u o n M o d e l
e n d e f
2013-04-04 19:00:15 +00:00
i n c l u d e $( GLUONDIR ) / i n c l u d e / p r o f i l e s . m k
2013-03-07 20:50:15 +00:00
2013-12-28 21:13:18 +00:00
CheckExternal := test -d $( GLUON_OPENWRTDIR) || ( echo 'You don' "'" 't seem to have optained the external repositories needed by Gluon; please call `make update` first!' ; false )
2013-02-17 15:30:59 +00:00
all : FORCE
2014-01-11 11:01:19 +00:00
@$( CheckExternal)
2013-02-17 15:30:59 +00:00
+@$( GLUONMAKE) prepare
+@$( GLUONMAKE) images
2013-04-04 23:21:27 +00:00
download prepare images : FORCE
2014-01-11 11:01:19 +00:00
@$( CheckExternal)
2013-04-04 23:21:27 +00:00
+@$( GLUONMAKE) $@
2013-02-17 15:30:59 +00:00
2014-02-06 12:20:34 +00:00
manifest : FORCE
@$( CheckExternal)
[ -n " $( BRANCH) " ] || ( echo 'Please set BRANCH to create a manifest.' ; false )
+@$( GLUONMAKE) $@
2013-04-04 23:21:27 +00:00
dirclean : clean
2014-01-11 11:01:19 +00:00
@$( CheckExternal)
2013-04-04 23:21:27 +00:00
+@$( SUBMAKE) -C $( TOPDIR) -r dirclean
2013-02-17 15:30:59 +00:00
2013-04-04 23:21:27 +00:00
cleanall : clean
2014-01-11 11:01:19 +00:00
@$( CheckExternal)
2013-04-04 23:21:27 +00:00
+@$( SUBMAKE) -C $( TOPDIR) -r clean
2013-02-17 15:30:59 +00:00
2013-04-04 23:21:27 +00:00
clean :
2014-01-11 11:01:19 +00:00
@$( CheckExternal)
2013-04-04 23:21:27 +00:00
+@$( GLUONMAKE) clean
2013-02-17 15:30:59 +00:00
e l s e
2013-02-11 22:06:19 +00:00
2013-04-04 19:00:15 +00:00
i n c l u d e $( GLUONDIR ) / i n c l u d e / g l u o n . m k
2013-02-11 03:52:16 +00:00
2013-02-17 15:30:59 +00:00
i n c l u d e $( TOPDIR ) / i n c l u d e / h o s t . m k
i n c l u d e r u l e s . m k
i n c l u d e $( INCLUDE_DIR ) / d e p e n d s . m k
i n c l u d e $( INCLUDE_DIR ) / s u b d i r . m k
2013-02-17 23:39:44 +00:00
2013-02-17 15:30:59 +00:00
i n c l u d e p a c k a g e / M a k e f i l e
i n c l u d e t o o l s / M a k e f i l e
i n c l u d e t o o l c h a i n / M a k e f i l e
2013-02-11 22:06:19 +00:00
2013-02-17 15:30:59 +00:00
BOARD := ar71xx
2013-10-08 01:57:08 +00:00
override SUBTARGET : = generic
2013-02-17 15:30:59 +00:00
PROFILES :=
PROFILE_PACKAGES :=
gluon_prepared_stamp := $( GLUON_BUILDDIR) /$( BOARD) /prepared
2013-02-12 06:14:18 +00:00
2013-04-05 20:53:09 +00:00
2013-10-08 01:57:08 +00:00
d e f i n e P r o f i l e
$( eval $( call Profile/Default) )
$( eval $( call Profile/$( 1) ) )
$( 1) _PACKAGES := $( PACKAGES)
e n d e f
2013-02-12 06:14:18 +00:00
d e f i n e G l u o n P r o f i l e
2013-02-17 15:30:59 +00:00
image/$(1) : $( gluon_prepared_stamp )
2013-09-24 17:23:09 +00:00
+$( GLUONMAKE) image PROFILE = " $( 1) " V = s$( OPENWRT_VERBOSE)
2013-02-12 06:14:18 +00:00
2014-01-10 09:53:54 +00:00
CheckSite := ( perl $( GLUON_SITEDIR) /site.conf 2>& 1) > /dev/null || ( echo 'Your site configuration did not pass validation; please verify yourself with `perl site.conf` and fix the problems.' ; false )
2013-02-12 06:14:18 +00:00
PROFILES += $( 1)
2013-10-08 01:57:08 +00:00
PROFILE_PACKAGES += $( filter-out -%,$( $( 1) _PACKAGES) $( 2) $( GLUON_$( 1) _SITE_PACKAGES) )
2013-04-05 20:53:09 +00:00
GLUON_$(1)_DEFAULT_PACKAGES := $( 2)
2014-02-05 21:12:50 +00:00
GLUON_$(1)_MODELS :=
e n d e f
d e f i n e G l u o n M o d e l
GLUON_$(1)_MODELS += $( 2)
GLUON_$(1)_MODEL_$(2) := $( 3)
2013-02-12 06:14:18 +00:00
e n d e f
2013-10-08 01:57:08 +00:00
i n c l u d e $( INCLUDE_DIR ) / t a r g e t . m k
2013-04-04 19:00:15 +00:00
i n c l u d e $( GLUONDIR ) / i n c l u d e / p r o f i l e s . m k
2013-02-17 15:30:59 +00:00
2013-04-05 20:53:09 +00:00
2013-02-17 15:30:59 +00:00
$(BUILD_DIR)/.prepared : Makefile
@mkdir -p $$ ( dirname $@ )
@touch $@
$(toolchain/stamp-install) : $( tools /stamp -install )
2013-02-17 23:39:44 +00:00
$(package/stamp-compile) : $( package /stamp -cleanup )
2013-02-17 15:30:59 +00:00
2013-04-04 23:21:27 +00:00
clean : FORCE
rm -rf $( GLUON_BUILDDIR)
2013-04-05 01:24:55 +00:00
refresh_feeds : FORCE
2014-01-02 14:16:32 +00:00
export MAKEFLAGS = V = s$( OPENWRT_VERBOSE) ; \
export SCAN_COOKIE = ; \
scripts/feeds uninstall -a; \
scripts/feeds update -a; \
scripts/feeds install -a
2013-04-05 20:53:09 +00:00
2013-09-28 16:39:32 +00:00
export GLUON_GENERATE := $( GLUONDIR) /scripts/generate.sh
2013-09-30 17:04:35 +00:00
export GLUON_CONFIGURE := $( GLUONDIR) /scripts/configure.pl
2013-09-28 16:39:32 +00:00
2013-02-17 15:30:59 +00:00
feeds : FORCE
2014-01-20 20:01:55 +00:00
( \
[ ! -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
2013-09-24 17:23:09 +00:00
+$( GLUONMAKE) refresh_feeds V = s$( OPENWRT_VERBOSE)
2013-02-17 15:30:59 +00:00
config : FORCE
2013-10-08 18:01:25 +00:00
echo \
'CONFIG_TARGET_$(BOARD)=y' \
'CONFIG_TARGET_ROOTFS_JFFS2=n' \
2014-02-05 21:56:17 +00:00
'CONFIG_BUSYBOX_CONFIG_SHA512SUM=y' \
2014-01-15 19:10:21 +00:00
'CONFIG_ATH_USER_REGD=y' \
2013-10-08 18:01:25 +00:00
'$(patsubst %,CONFIG_PACKAGE_%=m,$(sort $(GLUON_DEFAULT_PACKAGES) $(GLUON_SITE_PACKAGES) $(PROFILE_PACKAGES)))' \
| sed -e 's/ /\n/g' > .config
2013-09-24 17:23:09 +00:00
$( _SINGLE) $( SUBMAKE) defconfig OPENWRT_BUILD =
2013-02-17 15:30:59 +00:00
2013-04-04 23:21:27 +00:00
.config :
2013-09-24 17:23:09 +00:00
+$( GLUONMAKE) config
2013-04-04 23:21:27 +00:00
download : .config FORCE
2013-09-24 17:23:09 +00:00
+$( SUBMAKE) tools/download
+$( SUBMAKE) toolchain/download
+$( SUBMAKE) package/download
+$( SUBMAKE) target/download
2013-04-04 23:21:27 +00:00
2013-02-17 15:30:59 +00:00
toolchain : $( toolchain /stamp -install ) $( tools /stamp -install )
2013-02-17 23:39:44 +00:00
2013-04-06 20:23:33 +00:00
i n c l u d e $( INCLUDE_DIR ) / k e r n e l . m k
2013-02-17 23:39:44 +00:00
kernel : FORCE
2013-09-24 17:23:09 +00:00
+$( NO_TRACE_MAKE) -C $( TOPDIR) /target/linux/$( BOARD) -f $( GLUONDIR) /include/Makefile.target $( LINUX_DIR) /.image TARGET_BUILD = 1
+$( NO_TRACE_MAKE) -C $( TOPDIR) /target/linux/$( BOARD) -f $( GLUONDIR) /include/Makefile.target $( LINUX_DIR) /.modules TARGET_BUILD = 1
2013-02-17 23:39:44 +00:00
2013-02-17 15:30:59 +00:00
packages : $( package /stamp -compile )
2013-02-17 23:39:44 +00:00
$( _SINGLE) $( SUBMAKE) -r package/index
prepare-image : FORCE
rm -rf $( BOARD_KDIR)
mkdir -p $( BOARD_KDIR)
cp $( KERNEL_BUILD_DIR) /vmlinux $( KERNEL_BUILD_DIR) /vmlinux.elf $( BOARD_KDIR) /
2013-09-24 17:23:09 +00:00
+$( SUBMAKE) -C $( TOPDIR) /target/linux/$( BOARD) /image -f $( GLUONDIR) /include/Makefile.image prepare KDIR = " $( BOARD_KDIR) "
2013-02-17 15:30:59 +00:00
prepare : FORCE
2014-01-11 11:01:19 +00:00
@$( CheckSite)
2013-02-13 08:58:25 +00:00
mkdir -p $( GLUON_IMAGEDIR) $( GLUON_BUILDDIR) /$( BOARD)
echo 'src packages file:../openwrt/bin/$(BOARD)/packages' > $( GLUON_BUILDDIR) /$( BOARD) /opkg.conf
2013-02-11 22:06:19 +00:00
2013-09-24 17:23:09 +00:00
+$( GLUONMAKE) feeds
+$( GLUONMAKE) config
+$( GLUONMAKE) toolchain
+$( GLUONMAKE) kernel
+$( GLUONMAKE) packages
+$( GLUONMAKE) prepare-image
2013-02-12 01:03:37 +00:00
2014-01-20 01:19:59 +00:00
echo " $( GLUON_RELEASE) " > $( gluon_prepared_stamp)
2013-02-12 01:03:37 +00:00
2013-02-17 15:58:07 +00:00
$(gluon_prepared_stamp) :
2013-09-24 17:23:09 +00:00
+$( GLUONMAKE) prepare
2013-02-11 22:06:19 +00:00
2013-04-05 20:53:09 +00:00
i n c l u d e $( INCLUDE_DIR ) / p a c k a g e - i p k g . m k
# override variables from rules.mk
PACKAGE_DIR = $( GLUON_OPENWRTDIR) /bin/$( BOARD) /packages
PROFILE_BUILDDIR = $( BOARD_BUILDDIR) /$( PROFILE)
PROFILE_KDIR = $( PROFILE_BUILDDIR) /kernel
2014-02-05 21:12:50 +00:00
BIN_DIR = $( PROFILE_BUILDDIR) /images
2013-04-05 20:53:09 +00:00
TMP_DIR = $( PROFILE_BUILDDIR) /tmp
TARGET_DIR = $( PROFILE_BUILDDIR) /root
2014-02-11 00:25:10 +00:00
IMAGE_PREFIX = gluon-$( GLUON_SITE_CODE) -$$ ( cat $( gluon_prepared_stamp) )
2014-02-05 21:12:50 +00:00
2013-04-05 20:53:09 +00:00
OPKG := \
IPKG_TMP = " $( TMP_DIR) /ipkgtmp " \
IPKG_INSTROOT = " $( TARGET_DIR) " \
IPKG_CONF_DIR = " $( TMP_DIR) " \
IPKG_OFFLINE_ROOT = " $( TARGET_DIR) " \
$( STAGING_DIR_HOST) /bin/opkg \
-f $( BOARD_BUILDDIR) /opkg.conf \
--force-depends \
--force-overwrite \
--force-postinstall \
--cache $( TMP_DIR) /dl \
--offline-root $( TARGET_DIR) \
--add-dest root:/ \
--add-arch all:100 \
--add-arch $( ARCH_PACKAGES) :200
EnableInitscript = ! grep -q '\#!/bin/sh /etc/rc.common' $( 1) || bash ./etc/rc.common $( 1) enable
2013-09-11 20:41:49 +00:00
2013-04-05 20:53:09 +00:00
enable_initscripts : FORCE
cd $( TARGET_DIR) && ( export IPKG_INSTROOT = $( TARGET_DIR) ; \
$( foreach script,$( wildcard $( TARGET_DIR) /etc/init.d/*) , \
2014-01-13 17:23:25 +00:00
$( call EnableInitscript,$( script) ) ; \
2013-04-05 20:53:09 +00:00
) : \
)
2013-09-11 20:41:49 +00:00
2014-01-13 17:23:25 +00:00
# Generate package list
$( eval $ ( call merge -lists ,INSTALL_PACKAGES ,DEFAULT_PACKAGES $ ( PROFILE ) _PACKAGES GLUON_DEFAULT_PACKAGES GLUON_SITE_PACKAGES GLUON_ $ ( PROFILE ) _DEFAULT_PACKAGES GLUON_ $ ( PROFILE ) _SITE_PACKAGES ) )
2013-09-11 20:41:49 +00:00
2013-04-05 20:53:09 +00:00
package_install : FORCE
$( OPKG) update
$( OPKG) install $( PACKAGE_DIR) /libc_*.ipk
$( OPKG) install $( PACKAGE_DIR) /kernel_*.ipk
2014-01-13 17:23:25 +00:00
$( OPKG) install $( INSTALL_PACKAGES)
+$( GLUONMAKE) enable_initscripts
2013-04-05 20:53:09 +00:00
rm -f $( TARGET_DIR) /usr/lib/opkg/lists/* $( TARGET_DIR) /tmp/opkg.lock
image : FORCE
rm -rf $( TARGET_DIR) $( BIN_DIR) $( TMP_DIR) $( PROFILE_KDIR)
2014-02-05 21:12:50 +00:00
mkdir -p $( TARGET_DIR) $( BIN_DIR) $( TMP_DIR) $( TARGET_DIR) /tmp $( GLUON_IMAGEDIR) /factory $( GLUON_IMAGEDIR) /sysupgrade
2013-04-05 20:53:09 +00:00
cp -r $( BOARD_KDIR) $( PROFILE_KDIR)
2013-09-24 17:23:09 +00:00
+$( GLUONMAKE) package_install
2013-04-05 20:53:09 +00:00
$( call Image/mkfs/prepare)
2014-02-11 00:25:10 +00:00
$( _SINGLE) $( NO_TRACE_MAKE) -C $( TOPDIR) /target/linux/$( BOARD) /image install TARGET_BUILD = 1 IB = 1 IMG_PREFIX = " $( IMAGE_PREFIX) - $( BOARD) $( if $( SUBTARGET) ,-$( SUBTARGET) ) " \
2013-04-05 20:53:09 +00:00
PROFILE = " $( PROFILE) " KDIR = " $( PROFILE_KDIR) " TARGET_DIR = " $( TARGET_DIR) " BIN_DIR = " $( BIN_DIR) " TMP_DIR = " $( TMP_DIR) "
2014-02-05 21:12:50 +00:00
$( foreach model,$( GLUON_$( PROFILE) _MODELS) , \
2014-02-11 00:25:10 +00:00
rm -f $( GLUON_IMAGEDIR) /factory/gluon-*-$( GLUON_$( profile) _MODEL_$( model) ) .bin && \
rm -f $( GLUON_IMAGEDIR) /sysupgrade/gluon-*-$( GLUON_$( profile) _MODEL_$( model) ) -sysupgrade.bin && \
2014-02-05 21:12:50 +00:00
\
2014-02-11 00:25:10 +00:00
cp $( BIN_DIR) /$( IMAGE_PREFIX) -$( BOARD) $( if $( SUBTARGET) ,-$( SUBTARGET) ) -$( model) -factory.bin $( GLUON_IMAGEDIR) /factory/$( IMAGE_PREFIX) -$( GLUON_$( PROFILE) _MODEL_$( model) ) .bin && \
cp $( BIN_DIR) /$( IMAGE_PREFIX) -$( BOARD) $( if $( SUBTARGET) ,-$( SUBTARGET) ) -$( model) -sysupgrade.bin $( GLUON_IMAGEDIR) /sysupgrade/$( IMAGE_PREFIX) -$( GLUON_$( PROFILE) _MODEL_$( model) ) -sysupgrade.bin && \
2014-02-05 21:12:50 +00:00
) :
2013-04-05 20:53:09 +00:00
2013-02-19 15:58:48 +00:00
call_image/% : FORCE
2013-09-24 17:23:09 +00:00
+$( GLUONMAKE) $( patsubst call_image/%,image/%,$@ )
2013-02-19 15:58:48 +00:00
images : $( patsubst %,call_image /%,$ ( PROFILES ) ) ;
2013-02-11 03:52:16 +00:00
2014-02-06 12:20:34 +00:00
manifest : FORCE
mkdir -p $( GLUON_IMAGEDIR) /sysupgrade
2014-02-11 16:11:11 +00:00
( cd $( GLUON_IMAGEDIR) /sysupgrade && echo 'BRANCH=$(GLUON_BRANCH)' && echo && ( $( foreach profile,$( PROFILES) , \
2014-02-06 12:20:34 +00:00
$( foreach model,$( GLUON_$( profile) _MODELS) , \
2014-02-11 00:25:10 +00:00
for file in gluon-*-'$(GLUON_$(profile)_MODEL_$(model))-sysupgrade.bin' ; do \
2014-02-06 12:20:34 +00:00
[ -e " $$ file " ] && echo \
2014-02-11 00:25:10 +00:00
'$(GLUON_$(profile)_MODEL_$(model))' \
" $$ (echo " $$ file" | sed -n -r -e 's/^gluon- $( call regex-escape,$( GLUON_SITE_CODE) ) -(.*)- $( call regex-escape,$( GLUON_$( profile) _MODEL_$( model) ) ) -sysupgrade\.bin $$ /\1/p') " \
" $$ (sha512sum " $$ file" | awk '{print $$ 1}') " \
2014-02-06 12:20:34 +00:00
" $$ file " && break; \
done ; \
) \
) :) ) > $( GLUON_IMAGEDIR) /sysupgrade/$( BRANCH) .manifest
2013-02-12 01:03:37 +00:00
.PHONY : all images prepare clean cleanall
2013-02-17 15:30:59 +00:00
e n d i f