2013-02-17 15:30:59 +00:00
all :
LC_ALL := C
LANG := C
export LC_ALL LANG
2017-11-28 20:29:56 +00:00
# check for spaces & resolve possibly relative paths
d e f i n e m k a b s p a t h
ifneq ( 1,$( words [ $( $( 1) ) ] ) )
$$ ( error $( 1) must not contain spaces)
endif
override $( 1) := $( abspath $( $( 1) ) )
e n d e f
2018-10-23 15:48:22 +00:00
GLUON_SITEDIR ?= site
2017-11-28 20:29:56 +00:00
$( eval $ ( call mkabspath ,GLUON_SITEDIR ) )
2013-02-17 15:30:59 +00:00
2017-01-18 16:21:43 +00:00
$(GLUON_SITEDIR)/site.mk :
$( error No site configuration was found. Please check out a site configuration to $( GLUON_SITEDIR) )
2013-02-11 03:52:16 +00:00
2017-02-22 21:40:36 +00:00
i n c l u d e $( GLUON_SITEDIR ) / s i t e . m k
2013-02-11 03:52:16 +00:00
2017-02-22 21:40:36 +00:00
GLUON_RELEASE ?= $( error GLUON_RELEASE not set. GLUON_RELEASE can be set in site.mk or on the command line)
2019-06-15 12:34:45 +00:00
GLUON_DEPRECATED ?= $( error GLUON_DEPRECATED not set. Please consult the documentation)
2018-10-23 15:48:22 +00:00
# initialize (possibly already user set) directory variables
GLUON_TMPDIR ?= tmp
GLUON_OUTPUTDIR ?= output
GLUON_IMAGEDIR ?= $( GLUON_OUTPUTDIR) /images
GLUON_PACKAGEDIR ?= $( GLUON_OUTPUTDIR) /packages
GLUON_TARGETSDIR ?= targets
GLUON_PATCHESDIR ?= patches
$( eval $ ( call mkabspath ,GLUON_TMPDIR ) )
$( eval $ ( call mkabspath ,GLUON_OUTPUTDIR ) )
$( eval $ ( call mkabspath ,GLUON_IMAGEDIR ) )
$( eval $ ( call mkabspath ,GLUON_PACKAGEDIR ) )
$( eval $ ( call mkabspath ,GLUON_TARGETSDIR ) )
$( eval $ ( call mkabspath ,GLUON_PATCHESDIR ) )
2018-01-25 23:13:37 +00:00
GLUON_MULTIDOMAIN ?= 0
2018-01-25 23:03:00 +00:00
GLUON_DEBUG ?= 0
2013-02-17 15:30:59 +00:00
2019-11-05 19:49:55 +00:00
export G L U O N _ R E L E A S E G L U O N _ R E G I O N G L U O N _ M U L T I D O M A I N G L U O N _ D E B U G G L U O N _ D E P R E C A T E D G L U O N _ D E V I C E S \
2018-10-23 15:48:22 +00:00
GLUON_TARGETSDIR GLUON_PATCHESDIR GLUON_TMPDIR GLUON_IMAGEDIR GLUON_PACKAGEDIR
2013-02-17 23:39:44 +00:00
2017-06-26 18:52:22 +00:00
show-release :
@echo '$(GLUON_RELEASE)'
2013-02-11 22:06:19 +00:00
2017-01-18 16:21:43 +00:00
update : FORCE
2017-01-19 16:27:14 +00:00
@GLUON_SITEDIR= '$(GLUON_SITEDIR)' scripts/update.sh
@GLUON_SITEDIR= '$(GLUON_SITEDIR)' scripts/patch.sh
@GLUON_SITEDIR= '$(GLUON_SITEDIR)' scripts/feeds.sh
2013-10-08 01:57:08 +00:00
2017-01-18 16:21:43 +00:00
update-patches : FORCE
2017-01-19 16:27:14 +00:00
@GLUON_SITEDIR= '$(GLUON_SITEDIR)' scripts/update.sh
@GLUON_SITEDIR= '$(GLUON_SITEDIR)' scripts/update-patches.sh
@GLUON_SITEDIR= '$(GLUON_SITEDIR)' scripts/patch.sh
2013-02-17 15:30:59 +00:00
2017-01-18 16:21:43 +00:00
update-feeds : FORCE
2017-01-19 16:27:14 +00:00
@GLUON_SITEDIR= '$(GLUON_SITEDIR)' scripts/feeds.sh
2013-10-08 01:57:08 +00:00
2014-02-05 21:12:50 +00:00
2017-01-18 16:21:43 +00:00
GLUON_TARGETS :=
2015-01-03 03:40:18 +00:00
2017-01-18 16:21:43 +00:00
d e f i n e G l u o n T a r g e t
gluon_target := $( 1) $$ ( if $( 2) ,-$( 2) )
GLUON_TARGETS += $$ ( gluon_target)
GLUON_TARGET_$$(gluon_target)_BOARD := $( 1)
2018-07-10 20:57:40 +00:00
GLUON_TARGET_$$(gluon_target)_SUBTARGET := $( 2)
2015-01-25 02:31:37 +00:00
e n d e f
2018-10-23 15:48:22 +00:00
i n c l u d e $( GLUON_TARGETSDIR ) / t a r g e t s . m k
2015-10-16 17:11:36 +00:00
2013-02-12 06:14:18 +00:00
2018-07-10 20:57:40 +00:00
OPENWRTMAKE = $( MAKE) -C openwrt
2015-10-14 18:12:52 +00:00
BOARD := $( GLUON_TARGET_$( GLUON_TARGET) _BOARD)
2017-01-18 16:21:43 +00:00
SUBTARGET := $( GLUON_TARGET_$( GLUON_TARGET) _SUBTARGET)
2017-09-07 01:21:42 +00:00
GLUON_CONFIG_VARS := \
GLUON_SITEDIR = '$(GLUON_SITEDIR)' \
GLUON_RELEASE = '$(GLUON_RELEASE)' \
GLUON_BRANCH = '$(GLUON_BRANCH)' \
GLUON_LANGS = '$(GLUON_LANGS)' \
BOARD = '$(BOARD)' \
SUBTARGET = '$(SUBTARGET)'
2015-10-14 18:12:52 +00:00
2019-06-14 17:20:15 +00:00
CheckTarget := [ '$(BOARD)' ] \
2017-01-18 16:21:43 +00:00
|| ( echo 'Please set GLUON_TARGET to a valid target. Gluon supports the following targets:' ; $( foreach target,$( GLUON_TARGETS) ,echo ' * $(target)' ; ) false )
2015-03-07 17:12:52 +00:00
2018-07-10 20:57:40 +00:00
CheckExternal := test -d openwrt || ( echo 'You don' "'" 't seem to have obtained the external repositories needed by Gluon; please call `make update` first!' ; false )
2014-05-11 08:43:10 +00:00
2018-01-19 03:57:48 +00:00
d e f i n e C h e c k S i t e
2019-06-14 17:20:15 +00:00
@GLUON_SITEDIR= '$(GLUON_SITEDIR)' GLUON_SITE_CONFIG = '$(1).conf' $( LUA) -e 'assert(dofile("scripts/site_config.lua")(os.getenv("GLUON_SITE_CONFIG")))' \
2018-01-19 03:57:48 +00:00
|| ( echo 'Your site configuration ($(1).conf) did not pass validation.' ; false )
e n d e f
2014-05-11 08:43:10 +00:00
2017-02-16 17:36:20 +00:00
list-targets : FORCE
@$( foreach target,$( GLUON_TARGETS) ,echo '$(target)' ; )
2019-12-14 21:18:58 +00:00
lint : lint -lua lint -sh
lint-lua : FORCE
@scripts/lint-lua.sh
lint-sh : FORCE
@scripts/lint-sh.sh
2017-02-16 17:36:20 +00:00
2019-04-19 11:53:09 +00:00
GLUON_DEFAULT_PACKAGES := hostapd-mini
2019-09-23 19:46:30 +00:00
GLUON_CLASS_PACKAGES_standard :=
GLUON_CLASS_PACKAGES_tiny :=
2019-04-19 11:53:09 +00:00
2017-07-11 02:43:52 +00:00
GLUON_FEATURE_PACKAGES := $( shell scripts/features.sh '$(GLUON_FEATURES)' || echo '__ERROR__' )
i f n e q ( $( filter __ERROR__ ,$ ( GLUON_FEATURE_PACKAGES ) ) , )
2017-07-08 23:09:15 +00:00
$( error Error while evaluating GLUON_FEATURES )
e n d i f
2017-01-18 16:21:43 +00:00
GLUON_PACKAGES :=
d e f i n e m e r g e _ p a c k a g e s
$( foreach pkg,$( 1) ,
GLUON_PACKAGES := $$ ( strip $$ ( filter-out -$$ ( patsubst -%,%,$( pkg) ) $$ ( patsubst -%,%,$( pkg) ) ,$$ ( GLUON_PACKAGES) ) $( pkg) )
)
e n d e f
2019-04-19 11:53:09 +00:00
$( eval $ ( call merge_packages ,$ ( GLUON_DEFAULT_PACKAGES ) $ ( GLUON_FEATURE_PACKAGES ) $ ( GLUON_SITE_PACKAGES ) ) )
2013-02-11 22:06:19 +00:00
2015-10-13 19:36:19 +00:00
2018-07-10 20:57:40 +00:00
LUA := openwrt/staging_dir/hostpkg/bin/lua
2015-10-13 19:36:19 +00:00
2017-01-18 16:21:43 +00:00
$(LUA) :
@$( CheckExternal)
2013-04-05 20:53:09 +00:00
2018-07-10 20:57:40 +00:00
+@[ -e openwrt/.config ] || $( OPENWRTMAKE) defconfig
+@$( OPENWRTMAKE) tools/install
+@$( OPENWRTMAKE) package/lua/host/compile
2013-04-05 20:53:09 +00:00
2019-06-14 17:20:15 +00:00
config : $( LUA ) FORCE
@$( CheckExternal)
@$( CheckTarget)
2018-01-19 03:57:48 +00:00
$( foreach conf,site $( patsubst $( GLUON_SITEDIR) /%.conf,%,$( wildcard $( GLUON_SITEDIR) /domains/*.conf) ) ,$( call CheckSite,$( conf) ) )
2013-04-05 20:53:09 +00:00
2019-06-14 17:20:15 +00:00
@$( GLUON_CONFIG_VARS) \
2019-09-23 19:46:30 +00:00
$( LUA) scripts/target_config.lua '$(GLUON_TARGET)' '$(GLUON_DEFAULT_PACKAGES)' '$(GLUON_CLASS_PACKAGES_standard)' '$(GLUON_CLASS_PACKAGES_tiny)' \
2019-06-14 17:20:15 +00:00
> openwrt/.config
+@$( OPENWRTMAKE) defconfig
@$( GLUON_CONFIG_VARS) \
2019-09-23 19:46:30 +00:00
$( LUA) scripts/target_config_check.lua '$(GLUON_TARGET)' '$(GLUON_DEFAULT_PACKAGES)' '$(GLUON_CLASS_PACKAGES_standard)' '$(GLUON_CLASS_PACKAGES_tiny)'
2019-06-14 17:20:15 +00:00
all : config
@$( GLUON_CONFIG_VARS) \
$( LUA) scripts/clean_output.lua
2018-07-10 20:57:40 +00:00
+@$( OPENWRTMAKE)
2019-06-14 17:20:15 +00:00
@$( GLUON_CONFIG_VARS) \
$( LUA) scripts/copy_output.lua '$(GLUON_TARGET)'
2013-04-05 20:53:09 +00:00
2017-01-18 16:21:43 +00:00
clean download : config
2018-07-10 20:57:40 +00:00
+@$( OPENWRTMAKE) $@
2013-04-05 20:53:09 +00:00
2017-01-18 16:21:43 +00:00
dirclean : FORCE
2018-07-10 20:57:40 +00:00
+@[ -e openwrt/.config ] || $( OPENWRTMAKE) defconfig
+@$( OPENWRTMAKE) dirclean
2017-01-18 16:21:43 +00:00
@rm -rf $( GLUON_TMPDIR) $( GLUON_OUTPUTDIR)
2013-04-05 20:53:09 +00:00
2017-01-18 16:21:43 +00:00
manifest : $( LUA ) FORCE
@[ '$(GLUON_BRANCH)' ] || ( echo 'Please set GLUON_BRANCH to create a manifest.' ; false )
@echo '$(GLUON_PRIORITY)' | grep -qE '^([0-9]*\.)?[0-9]+$$' || ( echo 'Please specify a numeric value for GLUON_PRIORITY to create a manifest.' ; false )
@$( CheckExternal)
2013-09-11 20:41:49 +00:00
2017-01-18 16:21:43 +00:00
@( \
echo 'BRANCH=$(GLUON_BRANCH)' && \
echo " DATE= $$ ( $( LUA) scripts/rfc3339date.lua) " && \
echo 'PRIORITY=$(GLUON_PRIORITY)' && \
echo && \
$( foreach GLUON_TARGET,$( GLUON_TARGETS) , \
2019-06-14 17:20:15 +00:00
GLUON_SITEDIR = '$(GLUON_SITEDIR)' $( LUA) scripts/generate_manifest.lua '$(GLUON_TARGET)' && \
2015-03-14 18:10:23 +00:00
) : \
2017-01-18 16:21:43 +00:00
) > 'tmp/$(GLUON_BRANCH).manifest.tmp'
2014-02-06 12:20:34 +00:00
2017-01-18 16:21:43 +00:00
@mkdir -p '$(GLUON_IMAGEDIR)/sysupgrade'
@mv 'tmp/$(GLUON_BRANCH).manifest.tmp' '$(GLUON_IMAGEDIR)/sysupgrade/$(GLUON_BRANCH).manifest'
2013-02-17 15:30:59 +00:00
2017-01-18 16:21:43 +00:00
FORCE : ;
.PHONY : FORCE
.NOTPARALLEL :