openwrt/Makefile

92 lines
2.6 KiB
Makefile
Raw Normal View History

# Makefile for OpenWrt
2005-01-16 11:43:02 +00:00
#
# Copyright (C) 2007 OpenWrt.org
2005-01-16 11:43:02 +00:00
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
2005-01-16 11:43:02 +00:00
#
TOPDIR:=${CURDIR}
LC_ALL:=C
LANG:=C
export TOPDIR LC_ALL LANG
2005-01-16 11:43:02 +00:00
empty:=
space:= $(empty) $(empty)
$(if $(findstring $(space),$(TOPDIR)),$(error ERROR: The path to the OpenWrt directory must not include any spaces))
world:
include $(TOPDIR)/include/host.mk
ifneq ($(OPENWRT_BUILD),1)
_SINGLE=export MAKEFLAGS=$(space);
override OPENWRT_BUILD=1
export OPENWRT_BUILD
GREP_OPTIONS=
export GREP_OPTIONS
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-install): $(tools/stamp-install)
$(target/stamp-compile): $(toolchain/stamp-install) $(tools/stamp-install) $(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)
printdb:
@true
prepare: $(target/stamp-compile)
clean: FORCE
rm -rf $(BUILD_DIR) $(BIN_DIR) $(BUILD_LOG_DIR)
2005-01-16 11:43:02 +00:00
dirclean: clean
Makefile: remove non-existent STAGING_DIR_TOOLCHAIN from dirclean Makefile: remove non-existent STAGING_DIR_TOOLCHAIN from dirclean Openwrt's top level Makefile uses STAGING_DIR_TOOLCHAIN in the make dirclean statement. https://dev.openwrt.org/browser/trunk/Makefile#L55 rm -rf $(STAGING_DIR) $(STAGING_DIR_HOST) $(STAGING_DIR_TOOLCHAIN) $(TOOLCHAIN_DIR) $(BUILD_DIR_HOST) $(BUILD_DIR_TOOLCHAIN) As far as I can determine, no such variable has been defined. I made a search in Openwrt source repository and the one line in Makefile's dirclean command is the only place where that variable exists. The item has been introduced to Makefile by r8362, but even at that time neither Makefile nor rules.mk defined such a variable. Most likely the goal has been to set both staging_dir/toolchain and build_dir/toolchain to be cleaned, but one of the variables has been erroneous. The correct variable for build_dir/toolchain has been then added by r13494. References: https://dev.openwrt.org/changeset/8362/ https://dev.openwrt.org/browser/trunk/Makefile?rev=8362 https://dev.openwrt.org/browser/trunk/rules.mk?rev=8362 https://lists.openwrt.org/pipermail/openwrt-devel/2007-August/001159.html https://dev.openwrt.org/changeset/13494 In current code, TOOLCHAIN_DIR = $(TOPDIR)/staging_dir/$(TOOLCHAIN_DIR_NAME) BUILD_DIR_TOOLCHAIN = $(TOPDIR)/build_dir/$(TOOLCHAIN_DIR_NAME) so the item STAGING_DIR_TOOLCHAIN in the rm command is unnecessary. signed-off-by: Hannu Nyman <hannu.nyman@iki.fi> SVN-Revision: 45736
2015-05-23 15:28:42 +00:00
rm -rf $(STAGING_DIR) $(STAGING_DIR_HOST) $(TOOLCHAIN_DIR) $(BUILD_DIR_HOST) $(BUILD_DIR_TOOLCHAIN)
rm -rf $(TMP_DIR)
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
prepare: .config $(tools/stamp-install) $(toolchain/stamp-install)
world: prepare $(target/stamp-compile) $(package/stamp-compile) $(package/stamp-install) $(target/stamp-install) FORCE
$(_SINGLE)$(SUBMAKE) -r package/index
.PHONY: clean dirclean prereq prepare world package/symlinks package/symlinks-install package/symlinks-clean
endif