install: image_clean linux-install
clean: linux-clean utils-clean lzma-clean image_clean
-image_clean:
+image_clean: FORCE
rm -f $(BIN_DIR)/openwrt-*
-%-clean:
+%-clean: FORCE
$(MAKE) -C $(patsubst %-clean,%,$@) clean
-%-prepare:
+%-prepare: FORCE
$(MAKE) -C $(patsubst %-prepare,%,$@) prepare
%-compile: %-prepare
$(MAKE) -C $(patsubst %-compile,%,$@) compile
-%-rebuild:
+%-rebuild: FORCE
$(MAKE) -C $(patsubst %-rebuild,%,$@) rebuild
%-install: %-compile
$(MAKE) -C $(patsubst %-install,%,$@) install
-linux-imagebuilder:
+linux-imagebuilder: FORCE
$(MAKE) -C linux imagebuilder
linux-dirclean: drivers-clean
-drivers-clean:
+drivers-clean: FORCE
rm -rf $(BUILD_DIR)/$(ATM_FIRMWARE_DIR)
linux-dirclean: drivers-clean
-drivers-clean:
+drivers-clean: FORCE
rm -rf $(BUILD_DIR)/kernel-binary-wl
include ./tgz.mk
endif
-prepare:
+prepare: FORCE
$(MAKE) prepare-targets
-compile:
+compile: FORCE
$(MAKE) compile-targets
-install:
+install: FORCE
$(MAKE) install-targets
-.PHONY: prepare compile install
-
-$(BOARD)-compile:
+$(BOARD)-compile: FORCE
$(MAKE) -C $(BOARD) prepare
$(MAKE) -C $(BOARD) compile
-install-ib:
+install-ib: FORCE
-$(MAKE) -C $(BOARD) IB_DIR="$(IB_DIR)" install-ib
mkdir -p $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD)
$(CP) $(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)/kernel[-_]*.ipk $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD)/
-install-prepare:
+install-prepare: FORCE
find $(BUILD_DIR)/root -type f -not -perm +0100 | xargs chmod 0644
find $(BUILD_DIR)/root -type f -perm +0100 | xargs chmod 0755
find $(BUILD_DIR)/root -type d | xargs chmod 0755
chmod 0777 $(BUILD_DIR)/root/tmp
rebuild: clean prepare compile install
-clean:
+clean: FORCE
$(MAKE) clean-targets
KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
-lzma-loader-clean:
+lzma-loader-clean: FORCE
$(MAKE) -C ../generic/lzma-loader $(LOADER_MAKEOPTS) clean
-lzma-loader-prepare:
+lzma-loader-prepare: FORCE
$(MAKE) -C ../generic/lzma-loader $(LOADER_MAKEOPTS) prepare
lzma-loader-compile: $(KDIR)/vmlinux.lzma lzma-loader-prepare
KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
-lzma-loader-clean:
+lzma-loader-clean: FORCE
$(MAKE) -C ../generic/lzma-loader $(LOADER_MAKEOPTS) clean
-lzma-loader-prepare:
+lzma-loader-prepare: FORCE
$(MAKE) -C ../generic/lzma-loader $(LOADER_MAKEOPTS) prepare
lzma-loader-compile: $(KDIR)/vmlinux.lzma lzma-loader-prepare
KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
-lzma-loader-clean:
+lzma-loader-clean: FORCE
$(MAKE) -C lzma-loader clean
-lzma-loader-prepare:
+lzma-loader-prepare: FORCE
$(MAKE) -C lzma-loader prepare
lzma-loader-compile: lzma-loader-prepare
#JFFS2OPTS += -Xlzo -msize -Xlzari
-jffs2-prepare:
+jffs2-prepare: FORCE
$(MAKE) -C jffs2 prepare
jffs2-compile: prepare-targets
$(MAKE) -C jffs2 compile
-jffs2-clean:
+jffs2-clean: FORCE
$(MAKE) -C jffs2 clean
rm -f $(KDIR)/root.jffs2*
jffs2-install: compile-targets $(BOARD)-compile
endif
-jffs2-install: $(KDIR)/root.jffs2-4MB $(KDIR)/root.jffs2-8MB
+jffs2-install: $(KDIR)/root.jffs2-4MB $(KDIR)/root.jffs2-8MB FORCE
$(MAKE) -C $(BOARD) install KERNEL="$(KERNEL)" FS="jffs2-4MB"
$(MAKE) -C $(BOARD) install KERNEL="$(KERNEL)" FS="jffs2-8MB"
-jffs2-install-ib: compile-targets
+jffs2-install-ib: compile-targets FORCE
mkdir -p $(IB_DIR)/staging_dir_$(ARCH)/bin
$(CP) $(STAGING_DIR)/bin/mkfs.jffs2 $(IB_DIR)/staging_dir_$(ARCH)/bin
prepare: $(MTD_DIR)/.unpacked
compile: $(MTD_DIR)/util/mkfs.jffs2 $(STAGING_DIR)/bin/mkfs.jffs2
install:
-clean:
+clean: FORCE
rm -rf $(MTD_DIR)
endian := be
endif
-squashfs-prepare:
+squashfs-prepare: FORCE
$(MAKE) -C squashfs prepare
squashfs-compile: prepare-targets
$(MAKE) -C squashfs compile
-squashfs-clean:
+squashfs-clean: FORCE
$(MAKE) -C squashfs clean
rm -f $(KDIR)/root.squashfs
squashfs-install: compile-targets $(BOARD)-compile
endif
-squashfs-install: $(KDIR)/root.squashfs
+squashfs-install: $(KDIR)/root.squashfs FORCE
$(MAKE) -C $(BOARD) install KERNEL="$(KERNEL)" FS="squashfs"
squashfs-install-ib: compile-targets
prepare: $(SQUASHFSLZMA_DIR)/.unpacked
compile: $(SQUASHFSLZMA_DIR)/squashfs-tools/mksquashfs-lzma $(STAGING_DIR)/bin/mksquashfs-lzma
install:
-clean:
+clean: FORCE
rm -rf $(SQUASHFSLZMA_DIR)
-$(KDIR)/root.tar.gz:
+$(KDIR)/root.tar.gz: FORCE
tar -zcf $@ --owner=root --group=root -C $(BUILD_DIR)/root/ .
ifeq ($(BOARD),x86)
ifeq ($(FS),jffs2-8MB)
-
$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).img: $(KDIR)/root.$(FS)
$(CP) $^ $@
install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).img
-
endif
ifeq ($(FS),tgz)
-
$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-rootfs.tar.gz: $(KDIR)/root.tar.gz
$(CP) $^ $@
install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-rootfs.tar.gz
-
endif
$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-vmlinuz: $(KDIR)/bzImage
$(CP) $^ $@
-
clean:
prepare:
compile:
install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-vmlinuz
-install-ib:
+install-ib: FORCE
mkdir -p $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD)
$(CP) $(KDIR)/bzImage $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD)/
KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
-
ifeq ($(FS),jffs2-8MB)
-
$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).img: $(KDIR)/root.$(FS)
$(CP) $^ $@
install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).img
-
endif
ifeq ($(FS),tgz)
-
$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-rootfs.tar.gz: $(KDIR)/root.tar.gz
$(CP) $^ $@
install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-rootfs.tar.gz
-
endif
$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-vmlinuz: $(KDIR)/vmlinux
$(CP) $^ $@
-
clean:
prepare:
compile:
install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-vmlinuz
-install-ib:
+install-ib: FORCE
mkdir -p $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD)
$(CP) $(KDIR)/bzImage $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD)/
include ./kernel.mk
-clean:
+clean: FORCE
@rm -rf $(LINUX_BUILD_DIR)/root*
@rm -rf $(BIN_DIR)
all:
-build:
+build: FORCE
echo
echo '### BUILDING IMAGE FROM lists/$(LIST).$(BOARD)-$(KERNEL)'
echo
echo "LINUX_VERSION:=$(LINUX_VERSION)" >> $@
echo "LINUX_RELEASE:=$(LINUX_RELEASE)" >> $@
-pkg-install:
+pkg-install: FORCE
@{ [ "$(INSTALL_TARGETS)" != "" ] && $(IPKG) install $(INSTALL_TARGETS) || true; }
source: $(DL_DIR)/$(LINUX_SOURCE)
install: compile $(LINUX_KERNEL)
-mostlyclean:
+mostlyclean: FORCE
rm -f $(STAMP_DIR)/.linux-compile
rm -f $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION)/.modules_done
rm -f $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION)/.drivers-unpacked
$(MAKE) -C $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION) clean
rm -f $(LINUX_KERNEL)
-rebuild:
+rebuild: FORCE
-$(MAKE) mostlyclean
if [ -f $(LINUX_KERNEL) ]; then \
$(MAKE) clean; \
fi
$(MAKE) compile $(MAKE_TRACE)
-clean:
+clean: FORCE
rm -f $(STAMP_DIR)/.linux-compile
rm -rf $(LINUX_BUILD_DIR)
rm -f $(TARGETS)
-
-.PHONY: source prepare compile install mostlyclean rebuild clean pkg-install
-
KPKG_MAKEOPTS += BUILD_DIR="$(LINUX_BUILD_DIR)"
-%-prepare:
+%-prepare: FORCE
$(MAKE) -C $(patsubst %-prepare,%,$@) \
$(KPKG_MAKEOPTS) \
prepare
-%-compile:
+%-compile: FORCE
$(MAKE) -C $(patsubst %-compile,%,$@) \
$(KPKG_MAKEOPTS) \
compile
-%-install:
+%-install: FORCE
$(MAKE) -C $(patsubst %-install,%,$@) \
$(KPKG_MAKEOPTS) \
install
-%-clean:
+%-clean: FORCE
@$(MAKE) -C $(patsubst %-clean,%,$@) \
$(KPKG_MAKEOPTS) \
clean
lzma-source: $(DL_DIR)/$(LZMA_SOURCE)
-lzma-clean:
+lzma-clean: FORCE
-$(MAKE) -C $(LZMA_LIB_DIR) clean
-$(MAKE) -C $(LZMA_ALONE_DIR) clean
rm -f $(LZMA_DIR)/liblzma.a $(LZMA_DIR)/lzma
-lzma-dirclean:
+lzma-dirclean: FORCE
rm -rf $(LZMA_DIR)
#############################################################
prepare: $(LZMA_DIR)/.unpacked
compile: lzma
-install: lzma
+install: lzma FORCE
$(CP) $(LZMA_DIR)/lzma $(STAGING_DIR)/bin/
clean: lzma-dirclean
UTILS_BUILD_DIR:=$(BUILD_DIR)/target-utils
prepare: $(UTILS_BUILD_DIR)
-compile: prepare $(patsubst %,$(UTILS_BUILD_DIR)/%,$(TARGETS))
+compile: prepare $(patsubst %,$(UTILS_BUILD_DIR)/%,$(TARGETS)) FORCE
mkdir -p $(STAGING_DIR)/bin
$(CP) $(UTILS_BUILD_DIR)/* $(STAGING_DIR)/bin/
install: compile
package:
-clean:
+clean: FORCE
rm -rf $(UTILS_BUILD_DIR)
for f in $(TARGETS); do \
rm -f $(STAGING_DIR)/bin/$$f ; \
source "toolchain/binutils/Config.in"
source "toolchain/gcc/Config.in"
+config GDB
+ bool
+ prompt "Build gdb" if TOOLCHAINOPTS
+ default n
+ help
+ Enable if you want to build the gdb
+
config ENABLE_MULTILIB
bool
prompt "Enable multilib support?" if TOOLCHAINOPTS
# Main makefile for the toolchain
include $(TOPDIR)/rules.mk
-TARGETS:=sed utils binutils gcc uClibc ipkg-utils gdb libnotimpl
+TARGETS-y:=sed utils binutils gcc uClibc ipkg-utils libnotimpl
+TARGETS-$(CONFIG_GDB) += gdb
-TARGETS_INSTALL:=$(patsubst %,%-install,$(TARGETS))
-TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
+TARGETS_INSTALL:=$(patsubst %,%-install,$(TARGETS-y))
+TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS-y))
all: install
install: $(TARGETS_INSTALL)
TOOLCHAIN_STAMP_DIR:=$(STAGING_DIR)/stampfiles
$(TOOLCHAIN_STAMP_DIR):
- mkdir -p $(TOOLCHAIN_STAMP_DIR)
+ mkdir -p $@
$(STAGING_DIR):
- @mkdir -p $(STAGING_DIR)/lib
- @mkdir -p $(STAGING_DIR)/include
- @mkdir -p $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)
- @ln -sf ../lib $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib
+ @mkdir -p $@/lib
+ @mkdir -p $@/include
+ @mkdir -p $@/$(REAL_GNU_TARGET_NAME)
+ @ln -sf ../lib $@/$(REAL_GNU_TARGET_NAME)/lib
$(TOOL_BUILD_DIR):
- @mkdir -p $(TOOL_BUILD_DIR)
+ @mkdir -p $@
-%-prepare: $(TOOLCHAIN_STAMP_DIR) $(STAGING_DIR) $(TOOL_BUILD_DIR)
+%-prepare: $(TOOLCHAIN_STAMP_DIR) $(STAGING_DIR) $(TOOL_BUILD_DIR) FORCE
@[ -f $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@ ] || { \
$(MAKE) -C $(patsubst %-prepare,%,$@) prepare; \
}
}
@touch $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@
-%-clean:
+%-clean: FORCE
@$(MAKE) -C $(patsubst %-clean,%,$@) clean
@rm -f $(TOOLCHAIN_STAMP_DIR)/.toolchain_$(patsubst %-clean,%,$@)-*
# build binutils for use on the host system
#
#############################################################
-BINUTILS_VERSION:=$(strip $(subst ",, $(CONFIG_BINUTILS_VERSION)))
-#"
+BINUTILS_VERSION:=$(strip $(subst ",, $(CONFIG_BINUTILS_VERSION)))#"))
BINUTILS_SITE:=http://www.fr.kernel.org/pub/linux/devel/binutils \
http://www.fi.kernel.org/pub/linux/devel/binutils \
prepare: $(BINUTILS_DIR)/.patched
compile: $(BINUTILS_DIR1)/binutils/objdump
install: $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-ld
-clean:
+clean: FORCE
rm -f $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)*
rm -rf $(BINUTILS_DIR) $(BINUTILS_DIR1)
PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR2) all
touch $(GCC_BUILD_DIR2)/.compiled
-gcc-install: $(GCC_BUILD_DIR2)/.compiled
+gcc-install: $(GCC_BUILD_DIR2)/.compiled FORCE
PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR2) install
echo $(GCC_VERSION) > $(STAGING_DIR)/gcc_version
# Set up the symlinks to enable lying about target name.
prepare: $(GDB_DIR)/.patched
compile:
install: $(TARGET_CROSS)gdb
-clean:
+clean: FORCE
rm -rf $(GDB_CLIENT_DIR) $(GDB_DIR)
install -m0755 $(PKG_BUILD_DIR)/ipkg.py $(STAGING_DIR)/usr/bin
source: $(DL_DIR)/$(PKG_SOURCE_FILE)
-
prepare: $(PKG_BUILD_DIR)/.patched
-
compile:
-
install: $(STAGING_DIR)/usr/bin/ipkg-build
-clean:
+clean: FORCE
rm -f $(STAGING_DIR)/etc/ipkg.conf
rm -f $(STAGING_DIR)/usr/bin/ipkg*
rm -rf $(PKG_BUILD_DIR)
prepare: $(LIBNOTIMPL_DIR)/.prepared
compile: $(LIBNOTIMPL_DIR)/libnotimpl.a
install: $(STAGING_DIR)/usr/lib/libnotimpl.a
-clean:
+clean: FORCE
rm -rf \
$(STAGING_DIR)/usr/lib/libnotimpl.a \
$(LIBNOTIMPL_DIR) \
$(MAKE) -C $(SED_DIR1)
# This stuff is needed to work around GNU make deficiencies
-build-sed-host-binary: $(SED_DIR1)/$(SED_BINARY)
+build-sed-host-binary: $(SED_DIR1)/$(SED_BINARY) FORCE
@if [ -L $(STAGING_DIR)/$(SED_TARGET_BINARY) ] ; then \
rm -f $(STAGING_DIR)/$(SED_TARGET_BINARY); fi;
@if [ ! -f $(STAGING_DIR)/$(SED_TARGET_BINARY) -o $(STAGING_DIR)/$(SED_TARGET_BINARY) \
rm -rf $(STAGING_DIR)/share/locale $(STAGING_DIR)/usr/info \
$(STAGING_DIR)/usr/man $(STAGING_DIR)/usr/share/doc; fi
-use-sed-host-binary:
+use-sed-host-binary: FORCE
@if [ -x /usr/bin/sed ]; then SED="/usr/bin/sed"; else \
if [ -x /bin/sed ]; then SED="/bin/sed"; fi; fi; \
mkdir -p $(STAGING_DIR)/bin; \
prepare:
compile:
install: $(HOST_SED_TARGET)
-clean:
+clean: FORCE
rm -rf $(SED_DIR1)
rm -f $(STAGING_DIR)/$(SED_TARGET_BINARY)
ifeq ($(CONFIG_UCLIBC_VERSION_SNAPSHOT),y)
# Be aware that this changes daily....
UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc
-UCLIBC_SOURCE:=uClibc-$(strip $(subst ",, $(CONFIG_USE_UCLIBC_SNAPSHOT))).tar.bz2
-#"
+UCLIBC_SOURCE:=uClibc-$(strip $(subst ",, $(CONFIG_USE_UCLIBC_SNAPSHOT))).tar.bz2#"))
UCLIBC_SITE:=http://www.uclibc.org/downloads/snapshots
UCLIBC_VER:=PKG_VERSION:=0.${shell date +"%G%m%d"}
+UCLIBC_MD5SUM:=x
else
UCLIBC_VER:=0.9.28
UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc-$(UCLIBC_VER)
UCLIBC_SOURCE:=uClibc-$(UCLIBC_VER).tar.bz2
UCLIBC_SITE:=http://www.uclibc.org/downloads
+UCLIBC_MD5SUM:=1ada58d919a82561061e4741fb6abd29
endif
UCLIBC_TARGET_ARCH:=$(shell echo $(ARCH) | sed -e s'/-.*//' \
$(DL_DIR)/$(UCLIBC_SOURCE):
mkdir -p $(DL_DIR)
- $(SCRIPT_DIR)/download.pl $(DL_DIR) $(UCLIBC_SOURCE) x $(UCLIBC_SITE)
+ $(SCRIPT_DIR)/download.pl $(DL_DIR) $(UCLIBC_SOURCE) $(UCLIBC_MD5SUM) $(UCLIBC_SITE)
$(UCLIBC_DIR)/.unpacked: $(DL_DIR)/$(UCLIBC_SOURCE)
mkdir -p $(TOOL_BUILD_DIR)
prepare: $(UCLIBC_DIR)/.configured
compile: $(UCLIBC_DIR)/lib/libc.a
install: $(STAGING_DIR)/lib/libc.a $(UCLIBC_TARGETS)
-clean:
+clean: FORCE
rm -rf $(UCLIBC_DIR) $(TOOL_BUILD_DIR)/uClibc_dev
mkdir -p $(STAGING_DIR)/bin
$(CP) $(UTILS_BUILD_DIR)/* $(STAGING_DIR)/bin/
package:
-clean:
+clean: FORCE
rm -rf $(UTILS_BUILD_DIR)
$(UTILS_BUILD_DIR):