Initial commit
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled

This commit is contained in:
domenico
2025-06-24 12:51:15 +02:00
commit 27c9d80f51
10493 changed files with 1885777 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
config MAKE_TOOLCHAIN
bool "Package the OpenWrt-based Toolchain"
depends on !EXTERNAL_TOOLCHAIN
default BUILDBOT
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.

75
target/toolchain/Makefile Normal file
View File

@@ -0,0 +1,75 @@
#
# 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:= \
*/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.zst: 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)/LICENSES \
$(TOPDIR)/COPYING \
./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 -I '$(STAGING_DIR_HOST)/bin/zstd -T0 --ultra -20' -cf $@ $(TOOLCHAIN_NAME) \
--mtime="$(shell date --date=@$(SOURCE_DATE_EPOCH))"; \
)
download:
prepare:
compile: $(BIN_DIR)/$(TOOLCHAIN_NAME).tar.zst
install: compile
clean:
rm -rf $(TOOLCHAIN_BUILD_DIR) $(BIN_DIR)/$(TOOLCHAIN_NAME).tar.zst

View File

@@ -0,0 +1,2 @@
This is the OpenWrt SDK. It contains just the toolchain created
by buildroot.

View File

@@ -0,0 +1,88 @@
#!/bin/sh
# 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 -r _ _ _ 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 ORIG_PATH=${ORIG_PATH:-$PATH}
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|uclibc|musl)
GCC_SYSROOT_FLAGS="--sysroot=$TOOLCHAIN_SYSROOT -Wl,-rpath-link=$TOOLCHAIN_SYSROOT/lib:$TOOLCHAIN_SYSROOT/usr/lib"
LD_SYSROOT_FLAGS="-rpath-link=$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