Radix cross Linux Toolchains

Toolchains for all supported by Radix cross Linux devices

42 Commits   1 Branch   8 Tags
# include once
ifndef CONFIG_MK

#######
####### Constants:
#######


DOWNLOAD_SERVER      = https://ftp.radix.pro

WGET_OPTIONS         = -q -N

CACHED_CC_OUTPUT     = /opt/extra/ccache

TOOLCHAINS_BASE_PATH = /opt/toolchains

TOOLCHAINS_VERSION   = 1.0.0


# Build machine architrcture:

BUILD_ARCH = x86_64-pc-linux-gnu
#
# HOST and BUILD variables should be set up for each makefile.
# NOTE: the HOST is equal to BUILD because our toolchains work on BUILD machine.
#
 HOST = $(BUILD_ARCH)
BUILD = $(BUILD_ARCH)


#######
####### Standard Available Toolchains:
#######

#
# NOTE:
# ====
#   Toolchain names defined by 'TOOLCHAIN_...' variables.
#   Configuration variable names such as HOST_ARCH, HOST_DIR, HOST_PATH should have prefix
#   which is equal to $(TOOLCHAIN_...) in upper case letters and symbol '-' should be replaced with '_'.
#   In other words the PREFIX is equal to PREFIX = $(shell echo $(TOOLCHAIN_...) | tr '[a-z-]' '[A-Z_]').
#

# NOARCH
TOOLCHAIN_NOARCH = noarch

NOARCH_ARCH = noarch
NOARCH_DIR  = noarch
NOARCH_PATH = $(TOOLCHAINS_BASE_PATH)/noarch


# HOST
TOOLCHAIN_HOST = host

HOST_ARCH = $(BUILD_ARCH)
HOST_DIR  = $(word 1, $(subst -, ,$(BUILD_ARCH)))
HOST_PATH = $(TOOLCHAINS_BASE_PATH)/$(HOST_DIR)


#######
####### Additional Available Toolchains:
#######

# All ARM 32-bit series with Newlib
TOOLCHAIN_ARM32_NEWLIB = arm32-newlib

ARM32_NEWLIB_ARCH = arm-none-eabi
ARM32_NEWLIB_DIR  = arm-NONE-eabi-newlib
ARM32_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(ARM32_NEWLIB_DIR)
###                |---Toolchain-spec-handy-ruler----------------|
ARM32_NEWLIB_SPEC = All ARM 32-bit series newlib toolchain


# AT91SAM7S
TOOLCHAIN_AT91SAM7S_NEWLIB = at91sam7s-newlib

AT91SAM7S_NEWLIB_ARCH = arm-at91sam7s-eabi
AT91SAM7S_NEWLIB_DIR  = arm-AT91SAM7S-eabi-newlib
AT91SAM7S_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(AT91SAM7S_NEWLIB_DIR)
###                    |---Toolchain-spec-handy-ruler----------------|
AT91SAM7S_NEWLIB_SPEC = Atmel AT91SAM7S newlib toolchain


# IMX6-GLIBC
TOOLCHAIN_IMX6_GLIBC = imx6-glibc

IMX6_GLIBC_ARCH = arm-imx6-linux-gnueabihf
IMX6_GLIBC_DIR  = arm-IMX6-linux-glibc
IMX6_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(IMX6_GLIBC_DIR)
###              |---Toolchain-spec-handy-ruler----------------|
IMX6_GLIBC_SPEC = Freescale i.MX6 GNU Libc toolchain


# IMX6ULL-GLIBC
TOOLCHAIN_IMX6ULL_GLIBC = imx6ull-glibc

IMX6ULL_GLIBC_ARCH = arm-imx6ull-linux-gnueabihf
IMX6ULL_GLIBC_DIR  = arm-IMX6ULL-linux-glibc
IMX6ULL_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(IMX6ULL_GLIBC_DIR)
###                 |---Toolchain-spec-handy-ruler----------------|
IMX6ULL_GLIBC_SPEC = NXP i.MX6ULL GNU Libc toolchain


# OMAP543X-GLIBC
TOOLCHAIN_OMAP543X_GLIBC = omap543x-glibc

OMAP543X_GLIBC_ARCH = arm-omap543x-linux-gnueabihf
OMAP543X_GLIBC_DIR  = arm-OMAP543X-linux-glibc
OMAP543X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(OMAP543X_GLIBC_DIR)
###                  |---Toolchain-spec-handy-ruler----------------|
OMAP543X_GLIBC_SPEC = Texas OMAP543x GNU Libc toolchain


# AM335X-GLIBC
TOOLCHAIN_AM335X_GLIBC = am335x-glibc

AM335X_GLIBC_ARCH   = arm-am335x-linux-gnueabihf
AM335X_GLIBC_DIR    = arm-AM335X-linux-glibc
AM335X_GLIBC_PATH   = $(TOOLCHAINS_BASE_PATH)/$(AM335X_GLIBC_DIR)
###                  |---Toolchain-spec-handy-ruler----------------|
AM335X_GLIBC_SPEC   = Texas AM335x GNU Libc toolchain


# AllWinner A10-GLIBC
TOOLCHAIN_A1X_GLIBC = a1x-glibc

A1X_GLIBC_ARCH = arm-a1x-linux-gnueabihf
A1X_GLIBC_DIR  = arm-A1X-linux-glibc
A1X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(A1X_GLIBC_DIR)
###             |---Toolchain-spec-handy-ruler----------------|
A1X_GLIBC_SPEC = Allwinner A1x GNU Libc toolchain

# AllWinner A20-GLIBC
TOOLCHAIN_A2X_GLIBC = a2x-glibc

A2X_GLIBC_ARCH = arm-a2x-linux-gnueabihf
A2X_GLIBC_DIR  = arm-A2X-linux-glibc
A2X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(A2X_GLIBC_DIR)
###             |---Toolchain-spec-handy-ruler----------------|
A2X_GLIBC_SPEC = Allwinner A2x GNU Libc toolchain


# AllWinner H3-GLIBC
TOOLCHAIN_H3_GLIBC = h3-glibc

H3_GLIBC_ARCH = arm-h3-linux-gnueabihf
H3_GLIBC_DIR  = arm-H3-linux-glibc
H3_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(H3_GLIBC_DIR)
###            |---Toolchain-spec-handy-ruler----------------|
H3_GLIBC_SPEC = Allwinner H3 GNU Libc toolchain


# AllWinner H5-NEWLIB
TOOLCHAIN_H5_NEWLIB = h5-newlib

H5_NEWLIB_ARCH = aarch64-h5-elf
H5_NEWLIB_DIR  = aarch64-H5-elf-newlib
H5_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(H5_NEWLIB_DIR)
###             |---Toolchain-spec-handy-ruler----------------|
H5_NEWLIB_SPEC = Allwinner H5 newlib toolchain

# AllWinner H5-GLIBC
TOOLCHAIN_H5_GLIBC = h5-glibc

H5_GLIBC_ARCH = aarch64-h5-linux-gnu
H5_GLIBC_DIR  = aarch64-H5-linux-glibc
H5_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(H5_GLIBC_DIR)
###            |---Toolchain-spec-handy-ruler----------------|
H5_GLIBC_SPEC = Allwinner H5 GNU Libc toolchain


# Amlogic S8XX-GLIBC
TOOLCHAIN_S8XX_GLIBC = s8xx-glibc

S8XX_GLIBC_ARCH = arm-s8xx-linux-gnueabihf
S8XX_GLIBC_DIR  = arm-S8XX-linux-glibc
S8XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(S8XX_GLIBC_DIR)
###              |---Toolchain-spec-handy-ruler----------------|
S8XX_GLIBC_SPEC = Amlogic S8xx GNU Libc toolchain


# Amlogic S9XX (especially for u-boot firmware)
TOOLCHAIN_A9XX_NEWLIB = a9xx-newlib

A9XX_NEWLIB_ARCH = arm-a9xx-eabi
A9XX_NEWLIB_DIR  = arm-A9XX-eabi-newlib
A9XX_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(A9XX_NEWLIB_DIR)
###               |---Toolchain-spec-handy-ruler----------------|
A9XX_NEWLIB_SPEC = Amlogic S9xx Cortex-m3 newlib toolchain

# Amlogic S9XX
TOOLCHAIN_S9XX_NEWLIB = s9xx-newlib

S9XX_NEWLIB_ARCH = aarch64-s9xx-elf
S9XX_NEWLIB_DIR  = aarch64-S9XX-elf-newlib
S9XX_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(S9XX_NEWLIB_DIR)
###               |---Toolchain-spec-handy-ruler----------------|
S9XX_NEWLIB_SPEC = Amlogic S9xx newlib toolchain

# Amlogic S9XX-GLIBC
TOOLCHAIN_S9XX_GLIBC = s9xx-glibc

S9XX_GLIBC_ARCH = aarch64-s9xx-linux-gnu
S9XX_GLIBC_DIR  = aarch64-S9XX-linux-glibc
S9XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(S9XX_GLIBC_DIR)
###              |---Toolchain-spec-handy-ruler----------------|
S9XX_GLIBC_SPEC = Amlogic S9xx GNU Libc toolchain

# Amlogic A9XX-GLIBC
TOOLCHAIN_A9XX_GLIBC = a9xx-glibc

A9XX_GLIBC_ARCH = armv8l-a9xx-linux-gnueabihf
A9XX_GLIBC_DIR  = armv8l-A9XX-linux-glibc
A9XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(A9XX_GLIBC_DIR)
###              |---Toolchain-spec-handy-ruler----------------|
A9XX_GLIBC_SPEC = Amlogic S9xx armv8l GNU Libc toolchain

# Amlogic A311X-GLIBC
TOOLCHAIN_A311X_GLIBC = a311x-glibc

A311X_GLIBC_ARCH = aarch64-a311x-linux-gnu
A311X_GLIBC_DIR  = aarch64-A311X-linux-glibc
A311X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(A311X_GLIBC_DIR)
###               |---Toolchain-spec-handy-ruler----------------|
A311X_GLIBC_SPEC = Amlogic A311X GNU Libc toolchain


# Rockchip A33XX-NEWLIB (ARMv6-M Cortex-m0)
TOOLCHAIN_A33XX_NEWLIB = a33xx-newlib

A33XX_NEWLIB_ARCH = arm-a33xx-eabi
A33XX_NEWLIB_DIR  = arm-A33XX-eabi-newlib
A33XX_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(A33XX_NEWLIB_DIR)
###                |---Toolchain-spec-handy-ruler----------------|
A33XX_NEWLIB_SPEC = Rockchip RK33xx Cortex-m0 newlib toolchain

# Rockchip RK33XX-NEWLIB
TOOLCHAIN_RK33XX_NEWLIB = rk33xx-newlib

RK33XX_NEWLIB_ARCH = aarch64-rk33xx-elf
RK33XX_NEWLIB_DIR  = aarch64-RK33XX-elf-newlib
RK33XX_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(RK33XX_NEWLIB_DIR)
###                 |---Toolchain-spec-handy-ruler----------------|
RK33XX_NEWLIB_SPEC = Rockchip RK33xx newlib toolchain

# Rockchip RK33XX-GLIBC
TOOLCHAIN_RK33XX_GLIBC = rk33xx-glibc

RK33XX_GLIBC_ARCH = aarch64-rk33xx-linux-gnu
RK33XX_GLIBC_DIR  = aarch64-RK33XX-linux-glibc
RK33XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(RK33XX_GLIBC_DIR)
###                |---Toolchain-spec-handy-ruler----------------|
RK33XX_GLIBC_SPEC = Rockchip RK33xx GNU Libc toolchain

# Rockchip RK339X-GLIBC
TOOLCHAIN_RK339X_GLIBC = rk339x-glibc

RK339X_GLIBC_ARCH = aarch64-rk339x-linux-gnu
RK339X_GLIBC_DIR  = aarch64-RK339X-linux-glibc
RK339X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(RK339X_GLIBC_DIR)
###                |---Toolchain-spec-handy-ruler----------------|
RK339X_GLIBC_SPEC = Rockchip RK339x GNU Libc toolchain

# Rockchip RK358X-GLIBC
TOOLCHAIN_RK358X_GLIBC = rk358x-glibc

RK358X_GLIBC_ARCH = aarch64-rk358x-linux-gnu
RK358X_GLIBC_DIR  = aarch64-RK358X-linux-glibc
RK358X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(RK358X_GLIBC_DIR)
###                |---Toolchain-spec-handy-ruler----------------|
RK358X_GLIBC_SPEC = Rockchip RK358x GNU Libc toolchain

# Rockchip A33XX-GLIBC
TOOLCHAIN_A33XX_GLIBC = a33xx-glibc

A33XX_GLIBC_ARCH = armv8l-a33xx-linux-gnueabihf
A33XX_GLIBC_DIR  = armv8l-A33XX-linux-glibc
A33XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(A33XX_GLIBC_DIR)
###               |---Toolchain-spec-handy-ruler----------------|
A33XX_GLIBC_SPEC = Rockchip RK33xx armv8l GNU Libc toolchain


# Rockchip RK328X-GLIBC
TOOLCHAIN_RK328X_GLIBC = rk328x-glibc

RK328X_GLIBC_ARCH = arm-rk328x-linux-gnueabihf
RK328X_GLIBC_DIR  = arm-RK328X-linux-glibc
RK328X_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(RK328X_GLIBC_DIR)
###                |---Toolchain-spec-handy-ruler----------------|
RK328X_GLIBC_SPEC = Rockchip RK328x GNU Libc toolchain


# JZ47XX-GLIBC
TOOLCHAIN_JZ47XX_GLIBC = jz47xx-glibc

JZ47XX_GLIBC_ARCH = mipsel-jz47xx-linux-gnu
JZ47XX_GLIBC_DIR  = mipsel-JZ47XX-linux-glibc
JZ47XX_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(JZ47XX_GLIBC_DIR)
###                |---Toolchain-spec-handy-ruler----------------|
JZ47XX_GLIBC_SPEC = Ingenic MIPS jz47xx GNU Libc toolchain


# P5600-GLIBC
TOOLCHAIN_P5600_GLIBC = p5600-glibc

P5600_GLIBC_ARCH = mipsel-p5600-linux-gnu
P5600_GLIBC_DIR  = mipsel-P5600-linux-glibc
P5600_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(P5600_GLIBC_DIR)
###               |---Toolchain-spec-handy-ruler----------------|
P5600_GLIBC_SPEC = Baikal MIPS p5600 core GNU Libc toolchain

# BaikalElectronics M1000-NEWLIB
TOOLCHAIN_M1000_NEWLIB = m1000-newlib

M1000_NEWLIB_ARCH = aarch64-m1000-elf
M1000_NEWLIB_DIR  = aarch64-M1000-elf-newlib
M1000_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(M1000_NEWLIB_DIR)
###                |---Toolchain-spec-handy-ruler----------------|
M1000_NEWLIB_SPEC = BaikalElectronics M1000 newlib toolchain

# BaikalElectronics M1000-GLIBC
TOOLCHAIN_M1000_GLIBC = m1000-glibc

M1000_GLIBC_ARCH = aarch64-m1000-linux-gnu
M1000_GLIBC_DIR  = aarch64-M1000-linux-glibc
M1000_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(M1000_GLIBC_DIR)
###               |---Toolchain-spec-handy-ruler----------------|
M1000_GLIBC_SPEC = BaikalElectronics M1000 GNU Libc toolchain


# POWER8-GLIBC
TOOLCHAIN_POWER8_GLIBC = power8-glibc

POWER8_GLIBC_ARCH = ppc64-power8-linux-gnu
POWER8_GLIBC_DIR  = ppc64-POWER8-linux-glibc
POWER8_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(POWER8_GLIBC_DIR)
###                |---Toolchain-spec-handy-ruler----------------|
POWER8_GLIBC_SPEC = Openpower POWER8 MSB GNU Libc toolchain

# POWER9-GLIBC
TOOLCHAIN_POWER9_GLIBC = power9-glibc

POWER9_GLIBC_ARCH = ppc64-power9-linux-gnu
POWER9_GLIBC_DIR  = ppc64-POWER9-linux-glibc
POWER9_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(POWER9_GLIBC_DIR)
###                |---Toolchain-spec-handy-ruler----------------|
POWER9_GLIBC_SPEC = Openpower POWER9 MSB GNU Libc toolchain


# POWER8LE-GLIBC
TOOLCHAIN_POWER8LE_GLIBC = power8le-glibc

POWER8LE_GLIBC_ARCH = ppc64le-power8-linux-gnu
POWER8LE_GLIBC_DIR  = ppc64le-POWER8-linux-glibc
POWER8LE_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(POWER8LE_GLIBC_DIR)
###                  |---Toolchain-spec-handy-ruler----------------|
POWER8LE_GLIBC_SPEC = Openpower POWER8 LSB GNU Libc toolchain

# POWER9LE-GLIBC
TOOLCHAIN_POWER9LE_GLIBC = power9le-glibc

POWER9LE_GLIBC_ARCH = ppc64le-power9-linux-gnu
POWER9LE_GLIBC_DIR  = ppc64le-POWER9-linux-glibc
POWER9LE_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(POWER9LE_GLIBC_DIR)
###                  |---Toolchain-spec-handy-ruler----------------|
POWER9LE_GLIBC_SPEC = Openpower POWER9 LSB GNU Libc toolchain


# All RISC-V 32,64-bit series with Newlib
TOOLCHAIN_RISCV64_NEWLIB = riscv64-newlib

RISCV64_NEWLIB_ARCH = riscv64-none-elf
RISCV64_NEWLIB_DIR  = riscv64-NONE-elf-newlib
RISCV64_NEWLIB_PATH = $(TOOLCHAINS_BASE_PATH)/$(RISCV64_NEWLIB_DIR)
###                  |---Toolchain-spec-handy-ruler----------------|
RISCV64_NEWLIB_SPEC = All RISC-V 32,64-bit series newlib toolchain

# RISCV64-GLIBC
TOOLCHAIN_RISCV64_GLIBC = riscv64-glibc

RISCV64_GLIBC_ARCH = riscv64-rv64gc-linux-gnu
RISCV64_GLIBC_DIR  = riscv64-RV64GC-linux-glibc
RISCV64_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(RISCV64_GLIBC_DIR)
###                 |---Toolchain-spec-handy-ruler----------------|
RISCV64_GLIBC_SPEC = RISC-V 64-bit LSB GNU Libc toolchain


# I586-GLIBC
TOOLCHAIN_I586_GLIBC = i586-glibc

I586_GLIBC_ARCH = i586-radix-linux-gnu
I586_GLIBC_DIR  = i586-PC-linux-glibc
I586_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(I586_GLIBC_DIR)
###              |---Toolchain-spec-handy-ruler----------------|
I586_GLIBC_SPEC = Intel i586 GNU Libc toolchain


# I686-GLIBC
TOOLCHAIN_I686_GLIBC = i686-glibc

I686_GLIBC_ARCH = i686-radix-linux-gnu
I686_GLIBC_DIR  = i686-PC-linux-glibc
I686_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(I686_GLIBC_DIR)
###              |---Toolchain-spec-handy-ruler----------------|
I686_GLIBC_SPEC = Intel i686 GNU Libc toolchain


# X86_64-GLIBC
TOOLCHAIN_X86_64_GLIBC = x86_64-glibc

X86_64_GLIBC_ARCH = x86_64-radix-linux-gnu
X86_64_GLIBC_DIR  = x86_64-PC-linux-glibc
X86_64_GLIBC_PATH = $(TOOLCHAINS_BASE_PATH)/$(X86_64_GLIBC_DIR)
###                |---Toolchain-spec-handy-ruler----------------|
X86_64_GLIBC_SPEC = Intel x86_64 GNU Libc toolchain



CONFIG_MK=1
endif