Add a target (CONFIG_MAKE_CONFIG) that creates an exportable toolchain. The toolchain will zipped and saved under $(TOPDIR)/bin directory.
Signed-off-by: Luigi 'Comio' Mantellini <luigi.mantellini@idf-hit.com> SVN-Revision: 18419master
parent
ac141eb667
commit
44aa03f2f9
@ -0,0 +1,6 @@ |
||||
config MAKE_TOOLCHAIN |
||||
bool "Build the OpenWrt based Toolchain" |
||||
depends !EXTERNAL_TOOLCHAIN |
||||
help |
||||
This is essentially the toolchain created by OpenWrt. |
||||
|
@ -0,0 +1,53 @@ |
||||
#
|
||||
# Copyright (C) 2008-2009 Industrie Dial Face S.p.A.
|
||||
# Luigi 'Comio' Mantellini <luigi.mantellini@idf-hit.com>
|
||||
# Copyright (C) 2006-2008 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk |
||||
include $(INCLUDE_DIR)/kernel.mk |
||||
include $(INCLUDE_DIR)/host.mk |
||||
|
||||
override MAKEFLAGS=
|
||||
|
||||
PKG_OS:=$(shell uname -s)
|
||||
PKG_CPU:=$(shell uname -m)
|
||||
|
||||
TOOLCHAIN_NAME:=OpenWrt-Toolchain-$(BOARD)-for-$(ARCH)-gcc-$(GCCV)_$(LIBC)-$(LIBCV)
|
||||
TOOLCHAIN_BUILD_DIR:=$(BUILD_DIR)/$(TOOLCHAIN_NAME)
|
||||
EXCLUDE_DIRS:=*/ccache \
|
||||
*/stamp \
|
||||
*/stampfiles \
|
||||
*/man \
|
||||
*/info
|
||||
|
||||
all: compile |
||||
|
||||
$(BIN_DIR)/$(TOOLCHAIN_NAME).tar.bz2: clean |
||||
mkdir -p $(TOOLCHAIN_BUILD_DIR)
|
||||
$(TAR) -cf - -C $(TOPDIR)/staging_dir/ \
|
||||
$(foreach exclude,$(EXCLUDE_DIRS),--exclude="$(exclude)") \
|
||||
toolchain-$(ARCH)_gcc-$(GCCV)_$(LIBC)-$(LIBCV) | \
|
||||
$(TAR) -xf - -C $(TOOLCHAIN_BUILD_DIR)
|
||||
|
||||
$(CP) $(TOPDIR)/LICENSE ./files/README.TOOLCHAIN \
|
||||
$(TOOLCHAIN_BUILD_DIR)/
|
||||
|
||||
echo REVISION:="$(REVISION)" > $(TOOLCHAIN_BUILD_DIR)/version.mk
|
||||
find $(TOOLCHAIN_BUILD_DIR) -name .git | $(XARGS) rm -rf
|
||||
find $(TOOLCHAIN_BUILD_DIR) -name .svn | $(XARGS) rm -rf
|
||||
find $(TOOLCHAIN_BUILD_DIR) -name CVS | $(XARGS) rm -rf
|
||||
(cd $(BUILD_DIR); \
|
||||
tar cfj $@ $(TOOLCHAIN_NAME); \
|
||||
)
|
||||
|
||||
download: |
||||
prepare: |
||||
compile: $(BIN_DIR)/$(TOOLCHAIN_NAME).tar.bz2 |
||||
install: compile |
||||
|
||||
clean: |
||||
rm -rf $(TOOLCHAIN_BUILD_DIR) $(BIN_DIR)/$(TOOLCHAIN_NAME).tar.bz2
|
@ -0,0 +1,2 @@ |
||||
This is the OpenWrt SDK. It contains just the toolchain created |
||||
by buildroot. |
@ -0,0 +1,91 @@ |
||||
#!/bin/bash |
||||
|
||||
# 2009 (C) Copyright Industrie Dial Face S.p.A. |
||||
# Luigi 'Comio' Mantellini <luigi.mantellini@idf-hit.com> |
||||
# |
||||
# Based on original idea from WindRiver |
||||
# |
||||
# Toolchain wrapper script. |
||||
# |
||||
# This script allows us to use a small number of GCC / binutils cross-tools |
||||
# (one toolchain per instruction set architecture) to implement a larger |
||||
# number of processor- or board-specific tools. The wrapper script is |
||||
# configured at install time with information covering basic CFLAGS, |
||||
# LD options and the toolchain triplet name. |
||||
# |
||||
|
||||
PROGNAME=$0 |
||||
REALNAME=`readlink -f $0` |
||||
|
||||
REALNAME_BASE=`basename $REALNAME` |
||||
REALNAME_DIR=`dirname $REALNAME` |
||||
|
||||
TARGET_FUNDAMENTAL_ASFLAGS='' |
||||
TARGET_FUNDAMENTAL_CFLAGS='' |
||||
TARGET_ROOTFS_CFLAGS='' |
||||
TARGET_FUNDAMENTAL_LDFLAGS='' |
||||
TARGET_TOOLCHAIN_TRIPLET=${REALNAME_BASE%-*} |
||||
|
||||
# Parse our tool name, splitting it at '-' characters. |
||||
BINARY=${PROGNAME##*-} |
||||
|
||||
# Parse our tool name, splitting it at '-' characters. |
||||
IFS=- read TOOLCHAIN_ARCH TOOLCHAIN_BUILDROOT TOOLCHAIN_OS TOOLCHAIN_PLATFORM PROGNAME << EOF |
||||
$REALNAME_BASE |
||||
EOF |
||||
|
||||
# |
||||
# We add the directory this was executed from to the PATH |
||||
# The toolchains (links) should be in this directory or in the users |
||||
# PATH. |
||||
# |
||||
TOOLCHAIN_BIN_DIR="$REALNAME_DIR/" |
||||
|
||||
# Set the PATH so that our run-time location is first |
||||
# (get_feature is run from the path, so this has to be set) |
||||
export PATH="$TOOLCHAIN_BIN_DIR":$PATH |
||||
export GCC_HONOUR_COPTS |
||||
|
||||
TOOLCHAIN_SYSROOT="$TOOLCHAIN_BIN_DIR/../.." |
||||
if [ ! -d "$TOOLCHAIN_SYSROOT" ]; then |
||||
echo "Error: Unable to determine sysroot (looking for $TOOLCHAIN_SYSROOT)!" >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
# -Wl,--dynamic-linker=$TOOLCHAIN_SYSROOT/lib/ld-uClibc.so.0 |
||||
# --dynamic-linker=$TOOLCHAIN_SYSROOT/lib/ld-uClibc.so.0 |
||||
|
||||
case $TOOLCHAIN_PLATFORM in |
||||
gnu|glibc|eglibc) |
||||
GCC_SYSROOT_FLAGS="--sysroot=$TOOLCHAIN_SYSROOT -Wl,-rpath=$TOOLCHAIN_SYSROOT/lib:$TOOLCHAIN_SYSROOT/usr/lib" |
||||
LD_SYSROOT_FLAGS="-rpath=$TOOLCHAIN_SYSROOT/lib:$TOOLCHAIN_SYSROOT/usr/lib" |
||||
;; |
||||
uclibc) |
||||
GCC_SYSROOT_FLAGS="--sysroot=$TOOLCHAIN_SYSROOT -Wl,-rpath=$TOOLCHAIN_SYSROOT/lib:$TOOLCHAIN_SYSROOT/usr/lib" |
||||
LD_SYSROOT_FLAGS="-rpath=$TOOLCHAIN_SYSROOT/lib:$TOOLCHAIN_SYSROOT/usr/lib" |
||||
;; |
||||
*) |
||||
GCC_SYSROOT_FLAGS="" |
||||
LD_SYSROOT_FLAGS="" |
||||
;; |
||||
esac |
||||
|
||||
# |
||||
# Run the cross-tool. |
||||
# |
||||
case $BINARY in |
||||
cc|gcc|g++|c++|cpp) |
||||
exec $TARGET_TOOLCHAIN_TRIPLET-$BINARY.bin $GCC_SYSROOT_FLAGS $TARGET_FUNDAMENTAL_CFLAGS $TARGET_ROOTFS_CFLAGS "$@" |
||||
;; |
||||
ld) |
||||
exec $TARGET_TOOLCHAIN_TRIPLET-$BINARY.bin $LD_SYSROOT_FLAGS $TARGET_FUNDAMENTAL_LDFLAGS "$@" |
||||
;; |
||||
as) |
||||
exec $TARGET_TOOLCHAIN_TRIPLET-$BINARY.bin $TARGET_FUNDAMENTAL_ASFLAGS "$@" |
||||
;; |
||||
*) |
||||
exec $TARGET_TOOLCHAIN_TRIPLET-$BINARY.bin "$@" |
||||
;; |
||||
esac |
||||
|
||||
exit 0 |
Loading…
Reference in new issue