mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-24 07:46:48 +00:00
5868331214
Most of the time, we want to make sure OpenWrt has been configured and setup before start running make. However, in case of package/symlinks, forcing prereq as a dependency creates multiple issues: *when executed on a clean workspace, it will prompt for user input and open a menuconfig window before executing the feeds command *the only way around that is to provide a .config. However, the "prereq" target would then run a "make defconfig", which will remove all the packages in the .config but from external feeds, as feeds have not been installed yet. The only way to currently work around this, is to generate a fake config by running "make defconfig", then "make package/symlinks", copy the real config (which at this point disregards the previously generated config), and run make defconfig again. Something like this: make defconfig make package/symlinks cp real.config .config make defconfig This change is removing the need for the first defconfig, making the process more logical for OpenWrt users using the package/symlinks target. Signed-off-by: Mathieu Olivari <mathieu@qca.qualcomm.com> SVN-Revision: 45657
92 lines
2.6 KiB
Makefile
92 lines
2.6 KiB
Makefile
# Makefile for OpenWrt
|
|
#
|
|
# Copyright (C) 2007 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
TOPDIR:=${CURDIR}
|
|
LC_ALL:=C
|
|
LANG:=C
|
|
export TOPDIR LC_ALL LANG
|
|
|
|
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)
|
|
|
|
dirclean: clean
|
|
rm -rf $(STAGING_DIR) $(STAGING_DIR_HOST) $(STAGING_DIR_TOOLCHAIN) $(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
|