1# Makefile for OpenWrt 2# 3# Copyright (C) 2007 OpenWrt.org 4# 5# This is free software, licensed under the GNU General Public License v2. 6# See /LICENSE for more information. 7# 8 9TOPDIR:=${CURDIR} 10LC_ALL:=C 11LANG:=C 12export TOPDIR LC_ALL LANG 13 14 15world: 16 17include $(TOPDIR)/include/host.mk 18 19ifneq ($(OPENWRT_BUILD),1) 20 # XXX: these three lines are normally defined by rules.mk 21 # but we can't include that file in this context 22 empty:= 23 space:= $(empty) $(empty) 24 _SINGLE=MAKEFLAGS=$(space) 25 26 override OPENWRT_BUILD=1 27 export OPENWRT_BUILD 28 include $(TOPDIR)/include/debug.mk 29 include $(TOPDIR)/include/depends.mk 30 include $(TOPDIR)/include/toplevel.mk 31else 32 include rules.mk 33 include $(INCLUDE_DIR)/depends.mk 34 include $(INCLUDE_DIR)/subdir.mk 35 include tools/Makefile 36 include toolchain/Makefile 37 38$(toolchain/stamp-install): $(tools/stamp-install) 39#$(target/stamp-compile): $(toolchain/stamp-install) $(tools/stamp-install) $(BUILD_DIR)/.prepared 40#$(package/stamp-cleanup): $(target/stamp-compile) 41#$(package/stamp-compile): $(target/stamp-compile) $(package/stamp-cleanup) 42#$(package/stamp-install): $(package/stamp-compile) 43#$(package/stamp-rootfs-prepare): $(package/stamp-install) 44#$(target/stamp-install): $(package/stamp-compile) $(package/stamp-install) $(package/stamp-rootfs-prepare) 45 46 47$(BUILD_DIR)/.prepared: Makefile 48 @mkdir -p $$(dirname $@) 49 @touch $@ 50 51clean: FORCE 52 rm -rf $(BUILD_DIR) $(BIN_DIR) 53 54dirclean: clean 55 rm -rf $(STAGING_DIR) $(STAGING_DIR_HOST) $(STAGING_DIR_TOOLCHAIN) $(TOOLCHAIN_DIR) $(BUILD_DIR_HOST) 56 rm -rf $(TMP_DIR) 57 58# check prerequisites before starting to build 59prereq: ; 60 61prepare: .config $(tools/stamp-install) $(toolchain/stamp-install) 62 63# build toolchain 64world: prepare FORCE 65# Strip binaries 66 $(RSTRIP) $(TOOLCHAIN_DIR)/bin 67 $(RSTRIP) $(TOOLCHAIN_DIR)/$(ARCH)-linux-uclibc/bin 68# Fix includes 69ifeq ($(CONFIG_LINUX_2_4),y) 70 -rm $(TOOLCHAIN_DIR)/include/sys/inotify.h 71endif 72 -tar -C toolchain/kernel-headers/extras/ --exclude='.svn' -cf - include | tar -C $(TOOLCHAIN_DIR) -xf - 73 74# Create addtional symlinks 75 ln -sf $(ARCH)-linux-gcc $(TOOLCHAIN_DIR)/bin/$(ARCH)-linux-cc 76 ln -sf $(ARCH)-linux-uclibc-g\+\+ $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-g\+\+ 77 ln -sf $(ARCH)-linux-uclibc-ar $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-ar 78 ln -sf $(ARCH)-linux-uclibc-gcc $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-gcc 79 ln -sf $(ARCH)-linux-uclibc-gcc-$(GCCV) $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-gcc-$(GCCV) 80 ln -sf $(ARCH)-linux-uclibc-ld $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-ld 81 ln -sf $(ARCH)-linux-uclibc-nm $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-nm 82 ln -sf $(ARCH)-linux-uclibc-objcopy $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-objcopy 83 ln -sf $(ARCH)-linux-uclibc-objdump $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-objdump 84 ln -sf $(ARCH)-linux-uclibc-ranlib $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-ranlib 85 ln -sf $(ARCH)-linux-uclibc-size $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-size 86 ln -sf $(ARCH)-linux-uclibc-strings $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-strings 87 ln -sf $(ARCH)-linux-uclibc-strip $(TOOLCHAIN_DIR)/bin/$(ARCH)-uclibc-strip 88 89 90#world: prepare $(target/stamp-compile) $(package/stamp-cleanup) $(package/stamp-compile) $(package/stamp-install) $(package/stamp-rootfs-prepare) $(target/stamp-install) FORCE 91# $(SUBMAKE) package/index 92 93# update all feeds, re-create index files, install symlinks 94#package/symlinks: 95# $(SCRIPT_DIR)/feeds update -a 96# $(SCRIPT_DIR)/feeds install -a 97 98# re-create index files, install symlinks 99#package/symlinks-install: 100# $(SCRIPT_DIR)/feeds update -i 101# $(SCRIPT_DIR)/feeds install -a 102 103# remove all symlinks, don't touch ./feeds 104#package/symlinks-clean: 105# $(SCRIPT_DIR)/feeds uninstall -a 106 107.PHONY: clean dirclean prereq prepare world package/symlinks package/symlinks-install package/symlinks-clean 108 109endif 110