Initial commit
This commit is contained in:
8
target/toolchain/Config.in
Normal file
8
target/toolchain/Config.in
Normal file
@@ -0,0 +1,8 @@
|
||||
config MAKE_TOOLCHAIN
|
||||
bool "Package the OpenWrt-based Toolchain"
|
||||
depends on !EXTERNAL_TOOLCHAIN
|
||||
help
|
||||
Package the created toolchain as a tarball under the bin/ directory as
|
||||
OpenWrt-Toolchain-$(BOARD)-for-$(ARCH)$(ARCH_SUFFIX)-gcc-$(GCCV)$(DIR_SUFFIX).
|
||||
For example, a toolchain for the MIPS architecture might be named
|
||||
OpenWrt-Toolchain-malta-for-mipsel_mips32-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2.
|
||||
71
target/toolchain/Makefile
Normal file
71
target/toolchain/Makefile
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
# 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)/version.mk
|
||||
|
||||
override MAKEFLAGS=
|
||||
|
||||
TOOLCHAIN_NAME:=$(VERSION_DIST_SANITIZED)-toolchain-$(if $(CONFIG_VERSION_FILENAMES),$(VERSION_NUMBER)-)$(BOARD)$(if $(SUBTARGET),-$(SUBTARGET))_gcc-$(GCCV)$(DIR_SUFFIX).$(HOST_OS)-$(HOST_ARCH)
|
||||
TOOLCHAIN_BUILD_DIR:=$(BUILD_DIR)/$(TOOLCHAIN_NAME)
|
||||
EXCLUDE_DIRS:=*/ccache \
|
||||
*/initial \
|
||||
*/stamp \
|
||||
*/stampfiles \
|
||||
*/man \
|
||||
*/info
|
||||
|
||||
all: compile
|
||||
|
||||
TOOLCHAIN_PREFIX:=$(TOOLCHAIN_BUILD_DIR)/toolchain-$(ARCH)$(ARCH_SUFFIX)_gcc-$(GCCV)$(DIR_SUFFIX)
|
||||
|
||||
$(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)$(ARCH_SUFFIX)_gcc-$(GCCV)$(DIR_SUFFIX) | \
|
||||
$(TAR) -xf - -C $(TOOLCHAIN_BUILD_DIR)
|
||||
|
||||
$(CP) $(TOPDIR)/LICENSE ./files/README.TOOLCHAIN \
|
||||
$(TOOLCHAIN_BUILD_DIR)/
|
||||
|
||||
$(CP) ./files/wrapper.sh $(TOOLCHAIN_PREFIX)/bin/$(REAL_GNU_TARGET_NAME)-wrapper.sh
|
||||
chmod +x $(TOOLCHAIN_PREFIX)/bin/$(REAL_GNU_TARGET_NAME)-wrapper.sh
|
||||
(cd $(TOOLCHAIN_PREFIX)/bin; \
|
||||
for app in cc gcc g++ c++ cpp ld as ; do \
|
||||
[ -f $(REAL_GNU_TARGET_NAME)-$${app} ] && mv $(REAL_GNU_TARGET_NAME)-$${app} $(REAL_GNU_TARGET_NAME)-$${app}.bin ; \
|
||||
ln -sf $(REAL_GNU_TARGET_NAME)-wrapper.sh $(REAL_GNU_TARGET_NAME)-$${app} ; \
|
||||
done; \
|
||||
)
|
||||
|
||||
@-( \
|
||||
find \
|
||||
$(TOOLCHAIN_BUILD_DIR)/*/bin \
|
||||
$(TOOLCHAIN_BUILD_DIR)/*/*/bin \
|
||||
$(TOOLCHAIN_BUILD_DIR)/*/libexec \
|
||||
-type f; \
|
||||
) | xargs strip 2>/dev/null >/dev/null
|
||||
|
||||
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
|
||||
mkdir -p $(BIN_DIR)
|
||||
(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
|
||||
2
target/toolchain/files/README.TOOLCHAIN
Normal file
2
target/toolchain/files/README.TOOLCHAIN
Normal file
@@ -0,0 +1,2 @@
|
||||
This is the OpenWrt SDK. It contains just the toolchain created
|
||||
by buildroot.
|
||||
95
target/toolchain/files/wrapper.sh
Executable file
95
target/toolchain/files/wrapper.sh
Executable file
@@ -0,0 +1,95 @@
|
||||
#!/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"
|
||||
;;
|
||||
musl)
|
||||
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
|
||||
Reference in New Issue
Block a user