mirror of
				https://github.com/openwrt/openwrt.git
				synced 2025-11-04 08:17:24 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			194 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			194 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
# 
 | 
						|
# Copyright (C) 2006-2007 OpenWrt.org
 | 
						|
#
 | 
						|
# This is free software, licensed under the GNU General Public License v2.
 | 
						|
# See /LICENSE for more information.
 | 
						|
#
 | 
						|
KERNEL_BUILD:=1
 | 
						|
 | 
						|
include $(INCLUDE_DIR)/kernel-version.mk
 | 
						|
include $(INCLUDE_DIR)/host.mk
 | 
						|
include $(INCLUDE_DIR)/kernel.mk
 | 
						|
include $(INCLUDE_DIR)/prereq.mk
 | 
						|
 | 
						|
GENERIC_LINUX_CONFIG:=$(GENERIC_PLATFORM_DIR)/config-$(shell [ -f "$(GENERIC_PLATFORM_DIR)/config-$(KERNEL_PATCHVER)" ] && echo "$(KERNEL_PATCHVER)" || echo template ) 
 | 
						|
LINUX_CONFIG_DIR ?= ./config$(shell [ -d "./config-$(KERNEL_PATCHVER)" ] && printf -- "-$(KERNEL_PATCHVER)" || true )
 | 
						|
LINUX_CONFIG ?= $(LINUX_CONFIG_DIR)/default
 | 
						|
 | 
						|
ifneq ($(DUMP),)
 | 
						|
  TMP_CONFIG:=$(TMP_DIR)/.kconfig-$(BOARD)-$(KERNEL)
 | 
						|
  $(TMP_CONFIG): $(GENERIC_LINUX_CONFIG) $(LINUX_CONFIG)
 | 
						|
	$(SCRIPT_DIR)/config.pl + $^ > $@
 | 
						|
  -include $(TMP_CONFIG)
 | 
						|
  .SILENT: $(TMP_CONFIG)
 | 
						|
endif
 | 
						|
 | 
						|
ifneq ($(CONFIG_ATM),)
 | 
						|
  FEATURES += atm
 | 
						|
endif
 | 
						|
ifneq ($(CONFIG_PCI),)
 | 
						|
  FEATURES += pci
 | 
						|
endif
 | 
						|
ifneq ($(CONFIG_USB),)
 | 
						|
  FEATURES += usb
 | 
						|
endif
 | 
						|
ifneq ($(CONFIG_PCMCIA)$(CONFIG_PCCARD),)
 | 
						|
  FEATURES += pcmcia
 | 
						|
endif
 | 
						|
ifneq ($(CONFIG_VIDEO_DEV),)
 | 
						|
  FEATURES += video
 | 
						|
endif
 | 
						|
 | 
						|
# remove duplicates
 | 
						|
FEATURES:=$(sort $(FEATURES))
 | 
						|
 | 
						|
ifeq ($(DUMP),1)
 | 
						|
  all: dumpinfo
 | 
						|
else
 | 
						|
  all: compile
 | 
						|
endif
 | 
						|
 | 
						|
ifneq (,$(findstring uml,$(BOARD)))
 | 
						|
  LINUX_KARCH:=um
 | 
						|
else
 | 
						|
  LINUX_KARCH:=$(shell echo $(ARCH) | sed -e 's/i[3-9]86/i386/' \
 | 
						|
	-e 's/mipsel/mips/' \
 | 
						|
	-e 's/mipseb/mips/' \
 | 
						|
	-e 's/powerpc/ppc/' \
 | 
						|
	-e 's/sh[234]/sh/' \
 | 
						|
	-e 's/armeb/arm/' \
 | 
						|
  )
 | 
						|
endif
 | 
						|
 | 
						|
STAMP_PREPARED:=$(LINUX_DIR)/.prepared
 | 
						|
STAMP_CONFIGURED:=$(LINUX_DIR)/.configured
 | 
						|
include $(INCLUDE_DIR)/quilt.mk
 | 
						|
include $(INCLUDE_DIR)/kernel-defaults.mk
 | 
						|
 | 
						|
define Kernel/Prepare
 | 
						|
	$(call Kernel/Prepare/Default)
 | 
						|
endef
 | 
						|
 | 
						|
define Kernel/Configure
 | 
						|
	$(call Kernel/Configure/Default)
 | 
						|
endef
 | 
						|
 | 
						|
define Kernel/CompileModules
 | 
						|
	$(call Kernel/CompileModules/Default)
 | 
						|
endef
 | 
						|
 | 
						|
define Kernel/CompileImage
 | 
						|
	$(call Kernel/CompileImage/Default)
 | 
						|
endef
 | 
						|
 | 
						|
define Kernel/Clean
 | 
						|
	$(call Kernel/Clean/Default)
 | 
						|
endef
 | 
						|
 | 
						|
define BuildKernel
 | 
						|
  ifneq ($(LINUX_SITE),)
 | 
						|
    $(DL_DIR)/$(LINUX_SOURCE):
 | 
						|
		-mkdir -p $(DL_DIR)
 | 
						|
		$(SCRIPT_DIR)/download.pl $(DL_DIR) $(LINUX_SOURCE) $(LINUX_KERNEL_MD5SUM) $(LINUX_SITE)
 | 
						|
  endif
 | 
						|
 | 
						|
  $(STAMP_PREPARED): $(DL_DIR)/$(LINUX_SOURCE)
 | 
						|
	-rm -rf $(KERNEL_BUILD_DIR)
 | 
						|
	-mkdir -p $(KERNEL_BUILD_DIR)
 | 
						|
	$(call Kernel/Prepare)
 | 
						|
	touch $$@
 | 
						|
 | 
						|
  $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_CONFIG) $(GENERIC_LINUX_CONFIG)
 | 
						|
	$(call Kernel/Configure)
 | 
						|
	touch $$@
 | 
						|
 | 
						|
  $(LINUX_DIR)/.modules: $(STAMP_CONFIGURED) $(LINUX_DIR)/.config FORCE
 | 
						|
	$(call Kernel/CompileModules)
 | 
						|
	touch $$@
 | 
						|
 | 
						|
  $(LINUX_DIR)/.image: $(STAMP_CONFIGURED) FORCE
 | 
						|
	$(call Kernel/CompileImage)
 | 
						|
	touch $$@
 | 
						|
	
 | 
						|
  mostlyclean: FORCE
 | 
						|
	$(call Kernel/Clean)
 | 
						|
 | 
						|
  ifeq ($(DUMP),1)
 | 
						|
    dumpinfo:
 | 
						|
		@echo 'Target: $(BOARD)-$(KERNEL)'
 | 
						|
		@echo 'Target-Name: $(BOARDNAME) [$(KERNEL)]'
 | 
						|
		@echo 'Target-Path: $(subst $(TOPDIR)/,,$(PWD))'
 | 
						|
		@echo 'Target-Arch: $(ARCH)'
 | 
						|
		@echo 'Target-Features: $(FEATURES)'
 | 
						|
		@echo 'Linux-Version: $(LINUX_VERSION)'
 | 
						|
		@echo 'Linux-Release: $(LINUX_RELEASE)'
 | 
						|
		@echo 'Linux-Kernel-Arch: $(LINUX_KARCH)'
 | 
						|
		@echo 'Target-Description:'
 | 
						|
		@getvar $(call shvar,Target/Description)
 | 
						|
		@echo '@@'
 | 
						|
		@echo 'Default-Packages: $(DEFAULT_PACKAGES)'
 | 
						|
    ifneq ($(DUMPINFO),)
 | 
						|
		@$(DUMPINFO)
 | 
						|
    endif
 | 
						|
  endif
 | 
						|
 | 
						|
  define BuildKernel
 | 
						|
  endef
 | 
						|
endef
 | 
						|
 | 
						|
define Profile/Default
 | 
						|
  NAME:=
 | 
						|
  PACKAGES:=
 | 
						|
endef
 | 
						|
 | 
						|
confname=$(subst .,_,$(subst -,_,$(1)))
 | 
						|
define Profile
 | 
						|
  $(eval $(call Profile/Default))
 | 
						|
  $(eval $(call Profile/$(1)))
 | 
						|
  $(eval $(call shexport,Profile/$(1)/Config))
 | 
						|
  $(eval $(call shexport,Profile/$(1)/Description))
 | 
						|
  DUMPINFO += \
 | 
						|
	echo "Target-Profile: $(1)"; \
 | 
						|
	echo "Target-Profile-Name: $(NAME)"; \
 | 
						|
	echo "Target-Profile-Packages: $(PACKAGES)"; \
 | 
						|
	if [ -f ./config/profile-$(1) ]; then \
 | 
						|
		echo "Target-Profile-Kconfig: yes"; \
 | 
						|
	fi; \
 | 
						|
	echo "Target-Profile-Config: "; \
 | 
						|
	getvar "$(call shvar,Profile/$(1)/Config)"; \
 | 
						|
	echo "@@"; \
 | 
						|
	echo "Target-Profile-Description:"; \
 | 
						|
	getvar "$(call shvar,Profile/$(1)/Description)"; \
 | 
						|
	echo "@@"; \
 | 
						|
	echo;
 | 
						|
  ifeq ($(CONFIG_LINUX_$(call confname,$(KERNEL)_$(1))),y)
 | 
						|
    PROFILE=$(1)
 | 
						|
  endif
 | 
						|
endef
 | 
						|
 | 
						|
$(eval $(call shexport,Target/Description))
 | 
						|
 | 
						|
download: $(DL_DIR)/$(LINUX_SOURCE)
 | 
						|
prepare: $(STAMP_CONFIGURED)
 | 
						|
compile: $(LINUX_DIR)/.modules
 | 
						|
menuconfig: $(STAMP_PREPARED) FORCE
 | 
						|
	$(SCRIPT_DIR)/config.pl '+' $(GENERIC_LINUX_CONFIG) $(LINUX_CONFIG) > $(LINUX_DIR)/.config
 | 
						|
	$(call Kernel/Configure)
 | 
						|
	$(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKEOPTS) menuconfig
 | 
						|
	$(SCRIPT_DIR)/config.pl '>' $(GENERIC_LINUX_CONFIG) $(LINUX_DIR)/.config > $(LINUX_CONFIG)
 | 
						|
 | 
						|
install: $(LINUX_DIR)/.image
 | 
						|
 | 
						|
clean: FORCE
 | 
						|
	rm -f $(STAMP_DIR)/.linux-compile
 | 
						|
	rm -rf $(KERNEL_BUILD_DIR)
 | 
						|
 | 
						|
rebuild: FORCE
 | 
						|
	@$(MAKE) mostlyclean
 | 
						|
	@if [ -f $(LINUX_KERNEL) ]; then \
 | 
						|
		$(MAKE) clean; \
 | 
						|
	fi
 | 
						|
	@$(MAKE) compile
 | 
						|
 | 
						|
 |