# # Makefile for the Atheros AR71XX/AR724X/AR913X specific parts of the kernel # # Copyright (C) 2008-2011 Gabor Juhos # Copyright (C) 2008 Imre Kaloz # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 2 as published # by the Free Software Foundation. obj-y := prom.o setup.o irq.o common.o clock.o gpio.o obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_PCI) += pci.o # # Devices # obj-y += dev-common.o obj-$(CONFIG_ATH79_DEV_AP9X_PCI) += dev-ap9x-pci.o obj-$(CONFIG_ATH79_DEV_DSA) += dev-dsa.o obj-$(CONFIG_ATH79_DEV_ETH) += dev-eth.o obj-$(CONFIG_ATH79_DEV_GPIO_BUTTONS) += dev-gpio-buttons.o obj-$(CONFIG_ATH79_DEV_LEDS_GPIO) += dev-leds-gpio.o obj-$(CONFIG_ATH79_DEV_M25P80) += dev-m25p80.o obj-$(CONFIG_ATH79_DEV_NFC) += dev-nfc.o obj-$(CONFIG_ATH79_DEV_SPI) += dev-spi.o obj-$(CONFIG_ATH79_DEV_USB) += dev-usb.o obj-$(CONFIG_ATH79_DEV_WMAC) += dev-wmac.o # # Miscellaneous objects # obj-$(CONFIG_ATH79_NVRAM) += nvram.o obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += pci-ath9k-fixup.o obj-$(CONFIG_ATH79_ROUTERBOOT) += routerboot.o # # Machines # obj-$(CONFIG_ATH79_MACH_A60) += mach-a60.o obj-$(CONFIG_ATH79_MACH_WI2A_AC200I) += mach-wi2a-ac200i.o obj-$(CONFIG_ATH79_MACH_ALFA_AP120C) += mach-alfa-ap120c.o obj-$(CONFIG_ATH79_MACH_ALFA_AP96) += mach-alfa-ap96.o obj-$(CONFIG_ATH79_MACH_ALFA_NX) += mach-alfa-nx.o obj-$(CONFIG_ATH79_MACH_ALL0258N) += mach-all0258n.o obj-$(CONFIG_ATH79_MACH_ALL0315N) += mach-all0315n.o obj-$(CONFIG_ATH79_MACH_ANTMINER_S1) += mach-antminer-s1.o obj-$(CONFIG_ATH79_MACH_ANTMINER_S3) += mach-antminer-s3.o obj-$(CONFIG_ATH79_MACH_ANTROUTER_R1) += mach-antrouter-r1.o obj-$(CONFIG_ATH79_MACH_AP121) += mach-ap121.o obj-$(CONFIG_ATH79_MACH_AP121F) += mach-ap121f.o obj-$(CONFIG_ATH79_MACH_AP132) += mach-ap132.o obj-$(CONFIG_ATH79_MACH_AP136) += mach-ap136.o obj-$(CONFIG_ATH79_MACH_AP143) += mach-ap143.o obj-$(CONFIG_ATH79_MACH_AP147) += mach-ap147.o obj-$(CONFIG_ATH79_MACH_AP152) += mach-ap152.o obj-$(CONFIG_ATH79_MACH_AP531B0) += mach-ap531b0.o obj-$(CONFIG_ATH79_MACH_AP90Q) += mach-ap90q.o obj-$(CONFIG_ATH79_MACH_AP91_5G) += mach-ap91-5g.o obj-$(CONFIG_ATH79_MACH_AP96) += mach-ap96.o obj-$(CONFIG_ATH79_MACH_ARCHER_C25_V1) += mach-archer-c25-v1.o obj-$(CONFIG_ATH79_MACH_ARCHER_C58_V1) += mach-archer-c59-v1.o obj-$(CONFIG_ATH79_MACH_ARCHER_C59_V1) += mach-archer-c59-v1.o obj-$(CONFIG_ATH79_MACH_ARCHER_C60_V1) += mach-archer-c60-v1.o obj-$(CONFIG_ATH79_MACH_ARCHER_C60_V2) += mach-archer-c60-v1.o obj-$(CONFIG_ATH79_MACH_ARCHER_C7) += mach-archer-c7.o obj-$(CONFIG_ATH79_MACH_ARCHER_C7) += mach-archer-c7-v4.o obj-$(CONFIG_ATH79_MACH_ARCHER_C7) += mach-archer-c7-v5.o obj-$(CONFIG_ATH79_MACH_ARDUINO_YUN) += mach-arduino-yun.o obj-$(CONFIG_ATH79_MACH_AW_NR580) += mach-aw-nr580.o obj-$(CONFIG_ATH79_MACH_BHR_4GRV2) += mach-bhr-4grv2.o obj-$(CONFIG_ATH79_MACH_BHU_BXU2000N2_A) += mach-bhu-bxu2000n2-a.o obj-$(CONFIG_ATH79_MACH_BSB) += mach-bsb.o obj-$(CONFIG_ATH79_MACH_C55) += mach-c55.o obj-$(CONFIG_ATH79_MACH_C60) += mach-c60.o obj-$(CONFIG_ATH79_MACH_CAP324) += mach-cap324.o obj-$(CONFIG_ATH79_MACH_CAP4200AG) += mach-cap4200ag.o obj-$(CONFIG_ATH79_MACH_CARAMBOLA2) += mach-carambola2.o obj-$(CONFIG_ATH79_MACH_CF_E316N_V2) += mach-cf-e316n-v2.o obj-$(CONFIG_ATH79_MACH_CF_E320N_V2) += mach-cf-e316n-v2.o obj-$(CONFIG_ATH79_MACH_CF_E355AC) += mach-cf-e316n-v2.o obj-$(CONFIG_ATH79_MACH_CF_E375AC) += mach-cf-e316n-v2.o obj-$(CONFIG_ATH79_MACH_CF_E380AC_V1) += mach-cf-e316n-v2.o obj-$(CONFIG_ATH79_MACH_CF_E380AC_V2) += mach-cf-e316n-v2.o obj-$(CONFIG_ATH79_MACH_CF_E520N) += mach-cf-e316n-v2.o obj-$(CONFIG_ATH79_MACH_CF_E530N) += mach-cf-e316n-v2.o obj-$(CONFIG_ATH79_MACH_CPE505N) += mach-r602n.o obj-$(CONFIG_ATH79_MACH_CPE510) += mach-cpe510.o obj-$(CONFIG_ATH79_MACH_CPE830) += mach-ap90q.o obj-$(CONFIG_ATH79_MACH_CPE870) += mach-cpe870.o obj-$(CONFIG_ATH79_MACH_CR3000) += mach-cr3000.o obj-$(CONFIG_ATH79_MACH_CR5000) += mach-cr5000.o obj-$(CONFIG_ATH79_MACH_DAP_1330_A1) += mach-dap-1330-a1.o obj-$(CONFIG_ATH79_MACH_DAP_2695_A1) += mach-dap-2695-a1.o obj-$(CONFIG_ATH79_MACH_DB120) += mach-db120.o obj-$(CONFIG_ATH79_MACH_DGL_5500_A1) += mach-dgl-5500-a1.o obj-$(CONFIG_ATH79_MACH_DHP_1565_A1) += mach-dhp-1565-a1.o obj-$(CONFIG_ATH79_MACH_DIR_505_A1) += mach-dir-505-a1.o obj-$(CONFIG_ATH79_MACH_DIR_600_A1) += mach-dir-600-a1.o obj-$(CONFIG_ATH79_MACH_DIR_615_C1) += mach-dir-615-c1.o obj-$(CONFIG_ATH79_MACH_DIR_615_I1) += mach-dir-615-i1.o obj-$(CONFIG_ATH79_MACH_DIR_825_B1) += mach-dir-825-b1.o obj-$(CONFIG_ATH79_MACH_DIR_825_C1) += mach-dir-825-c1.o obj-$(CONFIG_ATH79_MACH_DIR_869_A1) += mach-dir-869-a1.o obj-$(CONFIG_ATH79_MACH_DLAN_HOTSPOT) += mach-dlan-hotspot.o obj-$(CONFIG_ATH79_MACH_DLAN_PRO_1200_AC) += mach-dlan-pro-1200-ac.o obj-$(CONFIG_ATH79_MACH_DLAN_PRO_500_WP) += mach-dlan-pro-500-wp.o obj-$(CONFIG_ATH79_MACH_DOMYWIFI_DW33D) += mach-domywifi-dw33d.o obj-$(CONFIG_ATH79_MACH_DR342) += mach-dr344.o obj-$(CONFIG_ATH79_MACH_DR344) += mach-dr344.o obj-$(CONFIG_ATH79_MACH_DR531) += mach-dr531.o obj-$(CONFIG_ATH79_MACH_DRAGINO2) += mach-dragino2.o obj-$(CONFIG_ATH79_MACH_E1700AC_V2) += mach-e1700ac-v2.o obj-$(CONFIG_ATH79_MACH_E558_V2) += mach-e558-v2.o obj-$(CONFIG_ATH79_MACH_E600G_V2) += mach-e600g-v2.o obj-$(CONFIG_ATH79_MACH_E750A_V4) += mach-e750a-v4.o obj-$(CONFIG_ATH79_MACH_E750G_V8) += mach-e750g-v8.o obj-$(CONFIG_ATH79_MACH_EAP120) += mach-eap120.o obj-$(CONFIG_ATH79_MACH_EAP300V2) += mach-eap300v2.o obj-$(CONFIG_ATH79_MACH_EAP7660D) += mach-eap7660d.o obj-$(CONFIG_ATH79_MACH_EL_M150) += mach-el-m150.o obj-$(CONFIG_ATH79_MACH_EL_MINI) += mach-el-mini.o obj-$(CONFIG_ATH79_MACH_ENS202EXT) += mach-ens202ext.o obj-$(CONFIG_ATH79_MACH_EPG5000) += mach-epg5000.o obj-$(CONFIG_ATH79_MACH_ESR1750) += mach-esr1750.o obj-$(CONFIG_ATH79_MACH_ESR900) += mach-esr900.o obj-$(CONFIG_ATH79_MACH_EW_BALIN) += mach-ew-balin.o obj-$(CONFIG_ATH79_MACH_EW_DORIN) += mach-ew-dorin.o obj-$(CONFIG_ATH79_MACH_F9K1115V2) += mach-f9k1115v2.o obj-$(CONFIG_ATH79_MACH_FRITZ300E) += mach-fritz300e.o obj-$(CONFIG_ATH79_MACH_FRITZ4020) += mach-fritz4020.o obj-$(CONFIG_ATH79_MACH_FRITZ450E) += mach-fritz450e.o obj-$(CONFIG_ATH79_MACH_GL_AR150) += mach-gl-ar150.o obj-$(CONFIG_ATH79_MACH_GL_AR300) += mach-gl-ar300.o obj-$(CONFIG_ATH79_MACH_GL_AR300M) += mach-gl-ar300
# 
# Copyright (C) 2007-2009 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
# Main makefile for the toolchain
#
# Steps:
# 1) toolchain/binutils/compile
#    build & install binutils
# 2) toolchain/gcc/minimal/compile
#    build & install a minimal gcc, needed for steps 3 & 4
# 3) toolchain/kernel-headers/compile
#    install kernel headers, needed for step 4
# 4) toolchain/libc/headers/compile
#    build & install libc headers & support files, needed for step 5
# 5) toolchain/gcc/initial/compile
#    build & install an initial gcc, needed for step 6
# 6) toolchain/libc/compile
#    build & install the final libc
# 7) toolchain/gcc/final/compile
#    build & install the final gcc
# 8) toolchain/libc/utils/compile
#    build & install libc utilities
#
# For musl, steps 2 and 4 are skipped, and step 3 is done after 5

curdir:=toolchain

# subdirectories to descend into
$(curdir)/builddirs := $(if $(CONFIG_GDB),gdb) $(if $(CONFIG_EXTERNAL_TOOLCHAIN),wrapper,kernel-headers binutils gcc/initial gcc/final $(LIBC) fortify-headers) $(if $(CONFIG_NASM),nasm)
ifdef CONFIG_USE_UCLIBC
  $(curdir)/builddirs += $(LIBC)/utils
endif

# builddir dependencies
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
  ifdef CONFIG_USE_MUSL
    $(curdir)/kernel-headers/compile:=$(curdir)/gcc/initial/compile
    $(curdir)/$(LIBC)/compile:=$(curdir)/kernel-headers/compile
  else
    $(curdir)/builddirs += $(LIBC)/headers gcc/minimal
    $(curdir)/gcc/minimal/compile:=$(curdir)/binutils/compile
    $(curdir)/kernel-headers/compile:=$(curdir)/gcc/minimal/compile
    $(curdir)/$(LIBC)/headers/compile:=$(curdir)/kernel-headers/compile
    $(curdir)/gcc/initial/compile:=$(curdir)/$(LIBC)/headers/compile
  endif

  $(curdir)/gcc/initial/compile+=$(curdir)/binutils/compile
  $(curdir)/$(LIBC)/compile:=$(curdir)/gcc/initial/compile
  $(curdir)/gcc/final/compile:=$(curdir)/$(LIBC)/compile $(curdir)/kernel-headers/compile
  $(curdir)/$(LIBC)/utils/compile:=$(curdir)/gcc/final/compile
endif

ifndef DUMP_TARGET_DB
ifneq ($(ARCH),)
  $(TOOLCHAIN_DIR)/info.mk: .config
	@for dir in $(TOOLCHAIN_DIR); do ( \
		$(if $(QUIET),,set -x;) \
		mkdir -p "$$dir"; \
		cd "$$dir"; \
		ln -nsf lib lib64; \
		ln -nsf lib lib32; \
		mkdir -p stamp lib usr/include usr/lib ; \
	); done
	@grep GCC_VERSION $@ >/dev/null 2>&1 || $(INSTALL_DATA) $(TOPDIR)/toolchain/info.mk $@
	@touch $@
endif
endif

ifdef CONFIG_BUILDBOT
ifneq ($(wildcard $(TOPDIR)/.git),)
  $(TOOLCHAIN_DIR)/stamp/.ver_check: $(TMP_DIR)/.build
	cd "$(TOPDIR)"; git log --format=%h -1 toolchain > $(TMP_DIR)/.ver_check
	cmp -s $(TMP_DIR)/.ver_check $@ || { \
		rm -rf $(BUILD_DIR) $(STAGING_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR_TOOLCHAIN); \
		mkdir -p $(TOOLCHAIN_DIR)/stamp; \
		mv $(TMP_DIR)/.ver_check $@; \
	}

$(TOOLCHAIN_DIR)/info.mk $(STAGING_DIR)/.prepared: $(TOOLCHAIN_DIR)/stamp/.ver_check
endif
endif

# prerequisites for the individual targets
$(curdir)/ := .config prereq
$(curdir)//compile = $(STAGING_DIR)/.prepared $(TOOLCHAIN_DIR)/info.mk $(tools/stamp-compile)

ifndef DUMP_TARGET_DB
$(TOOLCHAIN_DIR)/stamp/.gcc-initial_installed:
endif

$(curdir)/install: $(curdir)/compile

$(eval $(call stampfile,$(curdir),toolchain,compile,$(TOOLCHAIN_DIR)/stamp/.gcc-initial_installed,,$(TOOLCHAIN_DIR)))
$(eval $(call stampfile,$(curdir),toolchain,check,$(TMP_DIR)/.build))
$(eval $(call subdir,$(curdir)))