Skip to content
Snippets Groups Projects
Select Git revision
  • f08b712f23e5d56a44aee07b4dc1934a37de2df7
  • experimental default protected
  • v2023.2.5-ffs
  • nrb/ex400-remove-wps
  • nrb/airmax-test
  • v2023.2.4-ffs
  • nrb/ar9344-reset-sequence
  • autinerd/experimental-openwrt-24.10
  • v2023.2.3-ffs
  • v2023.2.2-ffs
  • v2023.2-ffs
  • v2023.1-ffs
  • v2022.1.4-ffs
  • feature/addMikrotikwAP
  • v2022.1.3-ffs
  • v2021.1.2-ffs
  • v2022.1.1-ffs
  • master protected
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • experimental-2025-08-26
  • experimental-2025-08-26-base
  • experimental-2025-08-25
  • experimental-2025-08-25-base
  • experimental-2025-08-20
  • experimental-2025-08-20-base
  • experimental-2025-08-13
  • experimental-2025-08-13-base
  • experimental-2025-08-04
  • experimental-2025-08-04-base
  • experimental-2025-07-31
  • experimental-2025-07-31-base
  • experimental-2025-07-29
  • experimental-2025-07-29-base
  • experimental-2025-07-28
  • experimental-2025-07-28-base
  • experimental-2025-07-26
  • experimental-2025-07-26-base
  • experimental-2025-07-24
  • experimental-2025-07-24-base
41 results

Makefile

Blame
  • user avatar
    Matthias Schiffer authored
    Debugging binaries in images that are built with sstrip is extremely
    annoying, as not even objdump will work on them.
    
    Switching from sstrip to standard strip increases the ath79 image size
    (for some usual Archer C7 v2 configuration I used for testing) by ~70KiB,
    or 1.3% of the rootfs size (~1% of the total image size), which is
    rarely worth the decreased debuggability.
    
    Extend GLUON_DEBUG to not only distinguish 0 and 1, such that:
    
    - 0 uses sstrip same as before
    - 1 switches to regular strip; this is the new default
    - 2 includes all debug info, like GLUON_DEBUG=1 did before
    d09cda05
    History
    Makefile 6.16 KiB
    all:
    
    LC_ALL:=C
    LANG:=C
    export LC_ALL LANG
    
    .SHELLFLAGS = -ec
    
    # check for spaces & resolve possibly relative paths
    define mkabspath
       ifneq (1,$(words [$($(1))]))
         $$(error $(1) must not contain spaces)
       endif
       override $(1) := $(abspath $($(1)))
    endef
    
    escape = '$(subst ','\'',$(1))'
    
    GLUON_SITEDIR ?= site
    $(eval $(call mkabspath,GLUON_SITEDIR))
    
    ifeq ($(realpath $(GLUON_SITEDIR)/site.mk),)
    $(error No site configuration was found. Please check out a site configuration to $(GLUON_SITEDIR))
    endif
    
    include $(GLUON_SITEDIR)/site.mk
    
    GLUON_RELEASE ?= $(error GLUON_RELEASE not set. GLUON_RELEASE can be set in site.mk or on the command line)
    
    GLUON_DEPRECATED ?= 0
    
    ifneq ($(GLUON_BRANCH),)
      $(warning *** Warning: GLUON_BRANCH has been deprecated, please set GLUON_AUTOUPDATER_BRANCH and GLUON_AUTOUPDATER_ENABLED instead.)
      GLUON_AUTOUPDATER_BRANCH ?= $(GLUON_BRANCH)
      GLUON_AUTOUPDATER_ENABLED ?= 1
    endif
    
    ifneq ($(GLUON_FEATURES)$(GLUON_FEATURES_standard)$(GLUON_FEATURES_tiny),)
      $(error *** Warning: GLUON_FEATURES has been obsolete, please use the image-customization.lua file instead.)
    endif
    
    ifneq ($(GLUON_SITE_PACKAGES)$(GLUON_SITE_PACKAGES_standard)$(GLUON_SITE_PACKAGES_tiny),)
      $(error *** Warning: GLUON_SITE_PACKAGES has been obsolete, please use the image-customization.lua file instead.)
    endif
    
    GLUON_AUTOUPDATER_ENABLED ?= 0
    
    # initialize (possibly already user set) directory variables
    GLUON_TMPDIR ?= tmp
    GLUON_OUTPUTDIR ?= output
    GLUON_IMAGEDIR ?= $(GLUON_OUTPUTDIR)/images
    GLUON_PACKAGEDIR ?= $(GLUON_OUTPUTDIR)/packages
    GLUON_DEBUGDIR ?= $(GLUON_OUTPUTDIR)/debug
    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))
    
    GLUON_VERSION := $(shell scripts/getversion.sh '.')
    
    # Set default SITE_VERSION if not set by user
    GLUON_SITE_VERSION ?= $(shell scripts/getversion.sh '$(GLUON_SITEDIR)')
    
    GLUON_MULTIDOMAIN ?= 0
    GLUON_AUTOREMOVE ?= 0
    GLUON_DEBUG ?= 1
    GLUON_MINIFY ?= 1
    
    # Can be overridden via environment/command line/... to use the Gluon
    # build system for non-Gluon builds
    define GLUON_BASE_FEEDS ?=
    src-link gluon_base ../../package
    endef
    
    GLUON_VARS = \
    	GLUON_VERSION GLUON_SITE_VERSION \
    	GLUON_RELEASE GLUON_REGION GLUON_MULTIDOMAIN GLUON_AUTOREMOVE GLUON_DEBUG GLUON_MINIFY GLUON_DEPRECATED \
    	GLUON_DEVICES GLUON_TARGETSDIR GLUON_PATCHESDIR GLUON_TMPDIR GLUON_IMAGEDIR GLUON_PACKAGEDIR GLUON_DEBUGDIR \
    	GLUON_SITEDIR GLUON_AUTOUPDATER_BRANCH GLUON_AUTOUPDATER_ENABLED GLUON_LANGS GLUON_BASE_FEEDS \
    	GLUON_TARGET BOARD SUBTARGET
    
    unexport $(GLUON_VARS)
    GLUON_ENV = $(foreach var,$(GLUON_VARS),$(var)=$(call escape,$($(var))))
    
    show-release:
    	@echo '$(GLUON_RELEASE)'
    
    
    update: FORCE
    	@
    	export $(GLUON_ENV)
    	scripts/update.sh
    	scripts/patch.sh
    	scripts/feeds.sh
    
    update-patches: FORCE
    	@
    	export $(GLUON_ENV)
    	scripts/update.sh
    	scripts/update-patches.sh
    	scripts/patch.sh
    
    refresh-patches: FORCE
    	@
    	export $(GLUON_ENV)
    	scripts/update.sh
    	scripts/patch.sh
    	scripts/update-patches.sh
    
    update-feeds: FORCE
    	@$(GLUON_ENV) scripts/feeds.sh
    
    update-modules: FORCE
    	@scripts/update-modules.sh
    
    update-ci: FORCE
    	@$(GLUON_ENV) scripts/update-ci.sh
    
    GLUON_TARGETS :=
    
    define GluonTarget
    gluon_target := $(1)$$(if $(2),-$(2))
    GLUON_TARGETS += $$(gluon_target)
    GLUON_TARGET_$$(gluon_target)_BOARD := $(1)
    GLUON_TARGET_$$(gluon_target)_SUBTARGET := $(2)
    endef
    
    include $(GLUON_TARGETSDIR)/targets.mk
    
    
    OPENWRTMAKE = $(MAKE) -C openwrt
    
    BOARD := $(GLUON_TARGET_$(GLUON_TARGET)_BOARD)
    SUBTARGET := $(GLUON_TARGET_$(GLUON_TARGET)_SUBTARGET)
    
    
    define CheckTarget
    	if [ -z '$(BOARD)' ]; then
    		echo 'Please set GLUON_TARGET to a valid target. Gluon supports the following targets:'
    		for target in $(GLUON_TARGETS); do
    			echo " * $$target"
    		done
    		exit 1
    	fi
    endef
    
    define CheckSite
    	if ! GLUON_SITEDIR='$(GLUON_SITEDIR)' GLUON_SITE_CONFIG='$(1).conf' $(LUA) -e 'assert(dofile("scripts/site_config.lua")(os.getenv("GLUON_SITE_CONFIG")))'; then
    		echo 'Your site configuration ($(1).conf) did not pass validation'
    		exit 1
    	fi
    endef
    
    list-targets: FORCE
    	@for target in $(GLUON_TARGETS); do
    		echo "$$target"
    	done
    
    lint: lint-editorconfig lint-lua lint-sh
    
    lint-editorconfig: FORCE
    	@scripts/lint-editorconfig.sh
    
    lint-lua: FORCE
    	@scripts/lint-lua.sh
    
    lint-sh: FORCE
    	@scripts/lint-sh.sh
    
    
    LUA := openwrt/staging_dir/hostpkg/bin/lua
    
    $(LUA):
    	+@
    
    	scripts/module_check.sh
    
    	$(GLUON_ENV) scripts/basic_openwrt_config.sh > openwrt/.config
    	$(OPENWRTMAKE) defconfig
    	$(OPENWRTMAKE) tools/install
    	$(OPENWRTMAKE) package/lua/host/compile
    
    
    config: $(LUA) FORCE
    	+@
    
    	scripts/module_check.sh
    	$(CheckTarget)
    	$(foreach conf,site $(patsubst $(GLUON_SITEDIR)/%.conf,%,$(wildcard $(GLUON_SITEDIR)/domains/*.conf)),\
    		$(call CheckSite,$(conf)); \
    	)
    
    	$(OPENWRTMAKE) prepare-tmpinfo
    	$(GLUON_ENV) $(LUA) scripts/target_config.lua > openwrt/.config
    	$(OPENWRTMAKE) defconfig
    	$(GLUON_ENV) $(LUA) scripts/target_config_check.lua
    
    
    container: FORCE
    	@scripts/container.sh
    
    
    all: config
    	+@
    	$(GLUON_ENV) $(LUA) scripts/clean_output.lua
    	$(OPENWRTMAKE)
    	$(GLUON_ENV) $(LUA) scripts/copy_output.lua
    
    clean download: config
    	+@$(OPENWRTMAKE) $@
    
    dirclean: FORCE
    	+@
    	[ -e openwrt/.config ] || $(OPENWRTMAKE) defconfig
    	$(OPENWRTMAKE) dirclean
    	rm -rf $(GLUON_TMPDIR) $(GLUON_OUTPUTDIR)
    
    manifest: $(LUA) FORCE
    	@
    	[ '$(GLUON_AUTOUPDATER_BRANCH)' ] || (echo 'Please set GLUON_AUTOUPDATER_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)
    	scripts/module_check.sh
    
    	(
    		export $(GLUON_ENV)
    		echo 'BRANCH=$(GLUON_AUTOUPDATER_BRANCH)'
    		echo "DATE=$$($(LUA) scripts/rfc3339date.lua)"
    		echo 'PRIORITY=$(GLUON_PRIORITY)'
    		echo
    		for target in $(GLUON_TARGETS); do
    			$(LUA) scripts/generate_manifest.lua "$$target"
    		done
    	) > 'tmp/$(GLUON_AUTOUPDATER_BRANCH).manifest.tmp'
    
    	mkdir -p '$(GLUON_IMAGEDIR)/sysupgrade'
    	mv 'tmp/$(GLUON_AUTOUPDATER_BRANCH).manifest.tmp' '$(GLUON_IMAGEDIR)/sysupgrade/$(GLUON_AUTOUPDATER_BRANCH).manifest'
    
    FORCE: ;
    
    .PHONY: FORCE
    .NOTPARALLEL:
    .ONESHELL: