Radix cross Linux Build System

Cross-platform build system is designed to build distributions of different operating systems for a set of target devices

39 Commits   2 Branches   2 Tags
# include once
ifndef CONSTANTS_MK

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

SYSTEM_VERSION       = 1.9.2

#
# Distribution:
#
DISTRO_NAME          = radix

DISTRO_CAPTION       = Radix

DISTRO_SPEC          = Radix cross Linux

DISTRO_VERSION       = 1.9

BUG_URL              = https://radix.pro


#
# Download Sources:
#
DOWNLOAD_SERVER      = https://ftp.radix.pro

WGET_OPTIONS         = -q -N

TOOLCHAINS_FTP_BASE  = toolchains/x86_64
TARBALL_SUFFIX       = tar.gz


CACHED_CC_OUTPUT     = /opt/extra/ccache

TOOLCHAINS_BASE_PATH = /opt/toolchains


#
# GnuPG options for make-package:
# ==============================
#
# Usage:
# -----
#   GNUPG_OPTIONS  = -g ~/.gnupg
#   GNUPG_OPTIONS += -p ~/.gnupg/.pkgtool-passphrase
#   GNUPG_OPTIONS += -k 0xA5ED710298807270
#
#   where:
#     -g,--gnupghome=<DIR>       Set the name of the GnuPG home directory
#                                to <DIR>. If this option is not used it
#                                defaults to '~/.gnupg'. This also overrides
#                                the environment variable 'GNUPGHOME'.
#     -p,--passphrase=<FILE>     File with passphrase of private certificate
#                                for signing package. For example:
#                                   ~/.gnupg/.passphrase
#                                Passphrase should be placed in the first
#                                line of the file (the new-line symbol at
#                                end of passphrase is allowed). File must
#                                have access mode 600.
#     -k,--key-id=<USER-ID>      Use USER-ID to sign package, for example,
#                                --key-id=0xA5ED710298807270
#
#     [see OpenPGP options of make-package utility].
#
GNUPG_OPTIONS =


################################################################
#######
####### Target Package suffixes & functions:
#######

# pkgtool/make-package script creates three files:
#  - package tarball,
#  - package signature,
#  - package description.
# extensions of these files are depend on pkgtool.

pkg_arch_suffix = txz
pkg_cert_suffix = asc
pkg_sign_suffix = sha
pkg_desc_suffix = txt

#
# functions:
#
cert-name = $(if $(GNUPG_OPTIONS),$(subst .$(pkg_arch_suffix),.$(pkg_cert_suffix),$1),)
sign-name = $(subst .$(pkg_arch_suffix),.$(pkg_sign_suffix),$1)
desc-name = $(subst .$(pkg_arch_suffix),.$(pkg_desc_suffix),$1)
pkg-files = $1 $(call cert-name,$1) $(call sign-name,$1) $(call desc-name,$1)

#
# usage:
#
#   pkg_archive     = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
#   pkg_signature   = $(call sign-name,$(pkg_archive))
#   pkg_description = $(call desc-name,$(pkg_archive))
#   products        = $(call pkg-files,$(pkg_archive))
#
#   PRODUCT_TARGETS = $(products)
#   ROOTFS_TARGETS  = $(pkg_archive)
#
#   $(pkg_signature)   : $(pkg_archive) ;
#   $(pkg_description) : $(pkg_archive) ;
#
#   $(pkg_archive): '''dependencies'''
#   	```package creation procedure'''

#######
####### End of Target Package suffixes & functions.
#######
################################################################


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

#######
####### Hardware names and specific attributes:
#######

####### noarch:
HARDWARE_NOARCH     = none
####### Host Build:
HARDWARE_BUILD      = build

#
# NOTE:
# ====
#   $(HARDWARE)_USE_BUILT_GCC_LIBS - defines that the system is based on GCC Runtime Libraries
#                                    which built in the platform instead of Libraries which
#                                    are taken from TOOLCHAIN.
#
#   These variables give their values to the global variable named as __USE_BUILT_GCC_LIBS__
#   and defined in the target-setup.mk file. Variable __USE_BUILT_GCC_LIBS__ can be used in
#   user's Makefile to deside do we need to wait gcc built or we can to set dependencies from
#   GNU Libc which based on GCC Runtime Libs taken from toolchain.
#
#   [see: app/inputattach/1.4.7/Makefile, for example].
#

####### x86 Personal Computer:
HARDWARE_INTEL_PC32              = intel-pc32
###                               |---HW-spec-handy-ruler-----------------------|
INTEL_PC32_SPEC                  = Intel x86_32 generic Linux machine
INTEL_PC32_USE_BUILT_GCC_LIBS    = yes
INTEL_PC32_ENABLE_STATIC         = no

####### {x86|x86_64} Personal Computer:
HARDWARE_INTEL_PC64              = intel-pc64
###                               |---HW-spec-handy-ruler-----------------------|
INTEL_PC64_SPEC                  = Intel x86_64 generic Linux machine
INTEL_PC64_USE_BUILT_GCC_LIBS    = yes
INTEL_PC64_ENABLE_STATIC         = no

####### x86 micro Linux:
HARDWARE_INTEL_PC32M             = intel-pc32m
###                               |---HW-spec-handy-ruler-----------------------|
INTEL_PC32M_SPEC                 = x86_32 micro Linux
INTEL_PC32M_USE_BUILT_GCC_LIBS   = no
INTEL_PC32M_ENABLE_STATIC        = no

####### x86_64 micro Linux:
HARDWARE_INTEL_PC64M             = intel-pc64m
###                               |---HW-spec-handy-ruler-----------------------|
INTEL_PC64M_SPEC                 = x86_64 micro Linux
INTEL_PC64M_USE_BUILT_GCC_LIBS   = no
INTEL_PC64M_ENABLE_STATIC        = no


####### i586 devices:
####### ------------

####### DMP Electronics Inc. EBOX-3350DX2-AP [https://www.compactpc.com.tw]:
HARDWARE_EBOX_3350DX2            = ebox-3350dx2
###                               |---HW-spec-handy-ruler-----------------------|
EBOX_3350DX2_SPEC                = EBOX 3350DX2 \(Linux, GNU Libc based\)
EBOX_3350DX2_USE_BUILT_GCC_LIBS  = yes
EBOX_3350DX2_ENABLE_STATIC       = no

HARDWARE_EBOX_3350DX2M           = ebox-3350dx2m
###                               |---HW-spec-handy-ruler-----------------------|
EBOX_3350DX2M_SPEC               = EBOX 3350DX2M \(micro Linux, GNU Libc based\)
EBOX_3350DX2M_USE_BUILT_GCC_LIBS = no
EBOX_3350DX2M_ENABLE_STATIC      = no


####### Allwinner devices:
####### -----------------

####### A1N newlib devices (cubieboard 1):
HARDWARE_CB1N                    = cb1n
###                               |---HW-spec-handy-ruler-----------------------|
CB1N_SPEC                        = Cubieboard A10 \(Newlib based\)
CB1N_USE_BUILT_GCC_LIBS          = no
CB1N_ENABLE_STATIC               = yes

####### A1X devices (cubieboard 1 glibc):
HARDWARE_CB1X                    = cb1x
###                               |---HW-spec-handy-ruler-----------------------|
CB1X_SPEC                        = Cubieboard A10 \(Linux, GNU Libc based\)
CB1X_USE_BUILT_GCC_LIBS          = yes
CB1X_ENABLE_STATIC               = no

####### A2N newlib devices (cubieboard 2):
HARDWARE_CB2N                    = cb2n
###                               |---HW-spec-handy-ruler-----------------------|
CB2N_SPEC                        = Cubieboard A20 \(Newlib based\)
CB2N_USE_BUILT_GCC_LIBS          = no
CB2N_ENABLE_STATIC               = yes

####### A2X devices (cubieboard 2 glibc):
HARDWARE_CB2X                    = cb2x
###                               |---HW-spec-handy-ruler-----------------------|
CB2X_SPEC                        = Cubieboard A20 \(Linux, GNU Libc based\)
CB2X_USE_BUILT_GCC_LIBS          = yes
CB2X_ENABLE_STATIC               = no

####### A3N newlib devices (cubieboard 3):
HARDWARE_CB3N                    = cb3n
###                               |---HW-spec-handy-ruler-----------------------|
CB3N_SPEC                        = Cubietrack A20 \(Newlib based\)
CB3N_USE_BUILT_GCC_LIBS          = no
CB3N_ENABLE_STATIC               = yes

####### A3X devices (cubieboard 3 glibc):
HARDWARE_CB3X                    = cb3x
###                               |---HW-spec-handy-ruler-----------------------|
CB3X_SPEC                        = Cubietrack A20 \(Linux, GNU Libc based\)
CB3X_USE_BUILT_GCC_LIBS          = yes
CB3X_ENABLE_STATIC               = no


####### H3 devices:
####### ----------

####### Orange Pi Plus 2E [http://www.orangepi.org/orangepiplus2e]:
HARDWARE_ORANGE_PP2E             = orange-pp2e
###                               |---HW-spec-handy-ruler-----------------------|
ORANGE_PP2E_SPEC                 = Orange Pi Plus 2E \(Linux, GNU Libc based\)
ORANGE_PP2E_USE_BUILT_GCC_LIBS   = yes
ORANGE_PP2E_ENABLE_STATIC        = no

####### NanoPi NEO Air [http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO_Air]:
HARDWARE_NANOPI_NEO              = nanopi-neo
###                               |---HW-spec-handy-ruler-----------------------|
NANOPI_NEO_SPEC                  = NanoPi NEO Air \(Linux, GNU Libc based\)
NANOPI_NEO_USE_BUILT_GCC_LIBS    = yes
NANOPI_NEO_ENABLE_STATIC         = no

####### H5 devices:
####### ----------

####### Orange Pi Prime [http://www.orangepi.org/OrangePiPrime]:
HARDWARE_ORANGE_PP               = orange-pp
###                               |---HW-spec-handy-ruler-----------------------|
ORANGE_PP_SPEC                   = Orange Pi Prime \(Linux, GNU Libc based\)
ORANGE_PP_USE_BUILT_GCC_LIBS     = yes
ORANGE_PP_ENABLE_STATIC          = no

####### Orange Pi Lite 2 [http://www.orangepi.org/Orange Pi Lite 2/]:
HARDWARE_ORANGE_PL2              = orange-pl2
###                               |---HW-spec-handy-ruler-----------------------|
ORANGE_PL2_SPEC                  = Orange Pi Lite 2 \(Linux, GNU Libc based\)
ORANGE_PL2_USE_BUILT_GCC_LIBS    = yes
ORANGE_PL2_ENABLE_STATIC         = no

####### Wechip TX6 [https://aliexpress.com]:
HARDWARE_WECHIP_TX6              = wechip-tx6
###                               |---HW-spec-handy-ruler-----------------------|
WECHIP_TX6_SPEC                  = WeChip TX6 OTT Box \(Linux, GNU Libc based\)
WECHIP_TX6_USE_BUILT_GCC_LIBS    = yes
WECHIP_TX6_ENABLE_STATIC         = no



####### Microcontrollers:
####### ----------------

####### AT91SAM7S devices:
HARDWARE_AT91S                   = at91s
###                               |---HW-spec-handy-ruler-----------------------|
AT91S_SPEC                       = Atmel at91sam7s \(Newlib based\)
AT91S_USE_BUILT_GCC_LIBS         = no
AT91S_ENABLE_STATIC              = yes



####### i.MX6 devices:
####### -------------

####### Nitrogen6X [https://boundarydevices.com/product/nitrogen6x]:
HARDWARE_NIT6Q                   = nit6q
###                               |---HW-spec-handy-ruler-----------------------|
NIT6Q_SPEC                       = Nitrogen6X Nit6Q \(Linux, GNU Libc based\)
NIT6Q_USE_BUILT_GCC_LIBS         = yes
NIT6Q_ENABLE_STATIC              = no

####### OKMX6DL-C [http://www.forlinx.net/products_detail/productId=69.html]:
HARDWARE_OKMX6DL_C               = okmx6dl-c
###                               |---HW-spec-handy-ruler-----------------------|
OKMX6DL_C_SPEC                   = Forlinx OKMX6DL-C \(Linux, GNU Libc based\)
OKMX6DL_C_USE_BUILT_GCC_LIBS     = yes
OKMX6DL_C_ENABLE_STATIC          = no

####### OKMX6Q-C [http://www.forlinx.net/products_detail/productId=69.html]:
HARDWARE_OKMX6Q_C                = okmx6q-c
###                               |---HW-spec-handy-ruler-----------------------|
OKMX6Q_C_SPEC                    = Forlinx OKMX6Q-C \(Linux, GNU Libc based\)
OKMX6Q_C_USE_BUILT_GCC_LIBS      = yes
OKMX6Q_C_ENABLE_STATIC           = no

####### SK6ULL [http://starterkit.ru/html/index.php?name=shop&op=view&id=154]:
HARDWARE_SK6ULL                  = sk6ull
###                               |---HW-spec-handy-ruler-----------------------|
SK6ULL_SPEC                      = SK-iMX6ULL-NANO  \(Linux, GNU Libc based\)
SK6ULL_USE_BUILT_GCC_LIBS        = yes
SK6ULL_ENABLE_STATIC             = no


####### AM335X devices:
####### --------------

HARDWARE_BONE_BLACK              = bone-black
###                               |---HW-spec-handy-ruler-----------------------|
BONE_BLACK_SPEC                  = BeagleBone Black \(Linux, GNU Libc based\)
BONE_BLACK_USE_BUILT_GCC_LIBS    = yes
BONE_BLACK_ENABLE_STATIC         = no


####### OMAP543X devices:
####### ----------------

HARDWARE_OMAP5UEVM               = omap5uevm
###                               |---HW-spec-handy-ruler-----------------------|
OMAP5UEVM_SPEC                   = Texas OMAP5 uEVM \(Linux, GNU Libc based\)
OMAP5UEVM_USE_BUILT_GCC_LIBS     = yes
OMAP5UEVM_ENABLE_STATIC          = no

HARDWARE_DRA7XXEVM               = dra7xxevm
###                               |---HW-spec-handy-ruler-----------------------|
DRA7XXEVM_SPEC                   = Texas DRA7xx EVM \(Linux, GNU Libc based\)
DRA7XXEVM_USE_BUILT_GCC_LIBS     = yes
DRA7XXEVM_ENABLE_STATIC          = no


####### JZ47XX devices:
####### --------------

####### MIPS Creator CI20 [http://www.elinux.org/MIPS_Creator_CI20]:
HARDWARE_CI20                    = ci20
###                               |---HW-spec-handy-ruler-----------------------|
CI20_SPEC                        = MIPS Creator CI20 \(Linux, GNU Libc based\)
CI20_USE_BUILT_GCC_LIBS          = yes
CI20_ENABLE_STATIC               = no


####### MIPS Warrior P-class P5600 devices:
####### ----------------------------------

####### Baikal T1 based boards [https://baikalelectronics.com/products/168]:
HARDWARE_BAIKAL_T1               = baikal-t1
###                               |---HW-spec-handy-ruler-----------------------|
BAIKAL_T1_SPEC                   = MIPS Baikal T1 \(Linux, GNU Libc based\)
BAIKAL_T1_USE_BUILT_GCC_LIBS     = yes
BAIKAL_T1_ENABLE_STATIC          = no

####### BE-M1000 devices:
####### ----------------

####### Baikal M1 based boards [https://baikalelectronics.com/products/238]:
HARDWARE_BAIKAL_M1               = baikal-m1
###                               |---HW-spec-handy-ruler-----------------------|
BAIKAL_M1_SPEC                   = ARM64 Baikal M1 \(Linux, GNU Libc based\)
BAIKAL_M1_USE_BUILT_GCC_LIBS     = yes
BAIKAL_M1_ENABLE_STATIC          = no


####### RK328X devices:
####### --------------

####### Firefly-RK3288 [http://en.t-firefly.com/en/firenow/firefly_rk3288]:
HARDWARE_FFRK3288                = ffrk3288
###                               |---HW-spec-handy-ruler-----------------------|
FFRK3288_SPEC                    = Firefly RK3288 \(Linux, GNU Libc based\)
FFRK3288_USE_BUILT_GCC_LIBS      = yes
FFRK3288_ENABLE_STATIC           = no

####### Poin2 RK3288 Chromebook [https://poin2.com/chromebook11]:
HARDWARE_POIN2                   = poin2
###                               |---HW-spec-handy-ruler-----------------------|
POIN2_SPEC                       = Poin2 RK3288 \(Linux, GNU Libc based\)
POIN2_USE_BUILT_GCC_LIBS         = yes
POIN2_ENABLE_STATIC              = no


####### RK33XX devices:
####### --------------

####### ROC-RK3328-CC [http://en.t-firefly.com/doc/product/index/id/34.html]:
HARDWARE_RK3328_CC               = rk3328-cc
###                               |---HW-spec-handy-ruler-----------------------|
RK3328_CC_SPEC                   = ROC RK3328 CC \(Linux, GNU Libc based\)
RK3328_CC_USE_BUILT_GCC_LIBS     = yes
RK3328_CC_ENABLE_STATIC          = no


####### RK339X devices:
####### --------------

####### KHADAS EDGE [https://www.khadas.com/edge]:
HARDWARE_KHADAS_EDGE             = khadas-edge
###                               |---HW-spec-handy-ruler-----------------------|
KHADAS_EDGE_SPEC                 = Khadas Edge RK3399 \(Linux, GNU Libc based\)
KHADAS_EDGE_USE_BUILT_GCC_LIBS   = yes
KHADAS_EDGE_ENABLE_STATIC        = no

####### LENOVO Leez SBC P710/PR710 [https://github.com/leezsbc/resources/wiki]:
HARDWARE_LEEZ_P710               = leez-p710
###                               |---HW-spec-handy-ruler-----------------------|
LEEZ_P710_SPEC                   = Lenovo Leez P710 \(Linux, GNU Libc based\)
LEEZ_P710_USE_BUILT_GCC_LIBS     = yes
LEEZ_P710_ENABLE_STATIC          = no



####### S8XX devices:
####### ------------

####### Amlogic S805 meson8b m201:
HARDWARE_M201                    = m201
###                               |---HW-spec-handy-ruler-----------------------|
M201_SPEC                        = Amlogic M201 S805 \(Linux, GNU Libc based\)
M201_USE_BUILT_GCC_LIBS          = yes
M201_ENABLE_STATIC               = no

HARDWARE_MXV                     = mxv
###                               |---HW-spec-handy-ruler-----------------------|
MXV_SPEC                         = MXV OTT Box S805 \(Linux, GNU Libc based\)
MXV_USE_BUILT_GCC_LIBS           = yes
MXV_ENABLE_STATIC                = no


####### S9XX devices:
####### ------------

####### Amlogic S905 meson-gxbb p201:
HARDWARE_P201                    = p201
###                               |---HW-spec-handy-ruler-----------------------|
P201_SPEC                        = Amlogic P201 S905 \(Linux, GNU Libc based\)
P201_USE_BUILT_GCC_LIBS          = yes
P201_ENABLE_STATIC               = no

HARDWARE_NEXBOX_A95X             = nexbox-a95x
###                               |---HW-spec-handy-ruler-----------------------|
NEXBOX_A95X_SPEC                 = NEXBOX A95X S905 \(Linux, GNU Libc based\)
NEXBOX_A95X_USE_BUILT_GCC_LIBS   = yes
NEXBOX_A95X_ENABLE_STATIC        = no

HARDWARE_ODROID_C2               = odroid-c2
###                               |---HW-spec-handy-ruler-----------------------|
ODROID_C2_SPEC                   = ODROID C2 S905 \(Linux, GNU Libc based\)
ODROID_C2_USE_BUILT_GCC_LIBS     = yes
ODROID_C2_ENABLE_STATIC          = no

####### Amlogic S905X meson-gxl p212:
HARDWARE_P212                    = p212
###                               |---HW-spec-handy-ruler-----------------------|
P212_SPEC                        = Amlogic P212 S905X \(Linux, GNU Libc based\)
P212_USE_BUILT_GCC_LIBS          = yes
P212_ENABLE_STATIC               = no

HARDWARE_KHADAS_VIM              = khadas-vim
###                               |---HW-spec-handy-ruler-----------------------|
KHADAS_VIM_SPEC                  = Khadas Vim S905X \(Linux, GNU Libc based\)
KHADAS_VIM_USE_BUILT_GCC_LIBS    = yes
KHADAS_VIM_ENABLE_STATIC         = no

####### Amlogic S912 meson-gxm q201:
HARDWARE_Q201                    = q201
###                               |---HW-spec-handy-ruler-----------------------|
Q201_SPEC                        = Amlogic Q201 S912 \(Linux, GNU Libc based\)
Q201_USE_BUILT_GCC_LIBS          = yes
Q201_ENABLE_STATIC               = no

HARDWARE_ENYBOX_X2               = enybox-x2
###                               |---HW-spec-handy-ruler-----------------------|
ENYBOX_X2_SPEC                   = Enybox X2 S912 \(Linux, GNU Libc based\)
ENYBOX_X2_USE_BUILT_GCC_LIBS     = yes
ENYBOX_X2_ENABLE_STATIC          = no

HARDWARE_KHADAS_VIM2             = khadas-vim2
###                               |---HW-spec-handy-ruler-----------------------|
KHADAS_VIM2_SPEC                 = Khadas Vim2 S912 \(Linux, GNU Libc based\)
KHADAS_VIM2_USE_BUILT_GCC_LIBS   = yes
KHADAS_VIM2_ENABLE_STATIC        = no

####### Amlogic A311D:
HARDWARE_KHADAS_VIM3             = khadas-vim3
###                               |---HW-spec-handy-ruler-----------------------|
KHADAS_VIM3_SPEC                 = Khadas Vim3 A311D \(Linux, GNU Libc based\)
KHADAS_VIM3_USE_BUILT_GCC_LIBS   = yes
KHADAS_VIM3_ENABLE_STATIC        = no


####### OpenPOWER (POWER8) devices:
####### --------------------------

####### IBM Power S824L Server (Most Significant Bit/Byte) [https://www-03.ibm.com/systems/power/hardware/s824l]:
HARDWARE_S824L                   = s824l
###                               |---HW-spec-handy-ruler-----------------------|
S824L_SPEC                       = IBM Power S824L \(Linux, GNU Libc based\)
S824L_USE_BUILT_GCC_LIBS         = yes
S824L_ENABLE_STATIC              = no

####### IBM Power S824L Server (Least Significant Bit/Byte):
HARDWARE_S824L_LSB               = s824l-lsb
###                               |---HW-spec-handy-ruler-----------------------|
S824L_LSB_SPEC                   = IBM Power S824L LSB \(Linux, GNU Libc based\)
S824L_LSB_USE_BUILT_GCC_LIBS     = yes
S824L_LSB_ENABLE_STATIC          = no

####### VESNIN Server (Most Significant Bit/Byte) [http://yadro.com/products/vesnin]:
HARDWARE_VESNIN                  = vesnin
###                               |---HW-spec-handy-ruler-----------------------|
VESNIN_SPEC                      = Vesnin Server \(Linux, GNU Libc based\)
VESNIN_USE_BUILT_GCC_LIBS        = yes
VESNIN_ENABLE_STATIC             = no

####### VESNIN Server (Least Significant Bit/Byte):
HARDWARE_VESNIN_LSB              = vesnin-lsb
###                               |---HW-spec-handy-ruler-----------------------|
VESNIN_LSB_SPEC                  = Vesnin Server LSB \(Linux, GNU Libc based\)
VESNIN_LSB_USE_BUILT_GCC_LIBS    = yes
VESNIN_LSB_ENABLE_STATIC         = no


####### RAPTOR devices (POWER9) [https://www.raptorcs.com]:
####### --------------------------------------------------

####### Talos II Secure Workstation [https://www.raptorcs.com/content/TL2WK2/intro.html]:
HARDWARE_TL2WK2                  = tl2wk2
###                               |---HW-spec-handy-ruler-----------------------|
TL2WK2_SPEC                      = Talos II PC \(Linux, GNU Libc based\)
TL2WK2_USE_BUILT_GCC_LIBS        = yes
TL2WK2_ENABLE_STATIC             = no

####### Talos II Secure Workstation (Least Significant Bit/Byte):
HARDWARE_TL2WK2_LSB              = tl2wk2-lsb
###                               |---HW-spec-handy-ruler-----------------------|
TL2WK2_LSB_SPEC                  = Talos II PC LSB \(Linux, GNU Libc based\)
TL2WK2_LSB_USE_BUILT_GCC_LIBS    = yes
TL2WK2_LSB_ENABLE_STATIC         = no

####### Talos II Rack Mount Development Platform [https://www.raptorcs.com/content/TL2SV2/intro.html]:
HARDWARE_TL2SV2                  = tl2sv2
###                               |---HW-spec-handy-ruler-----------------------|
TL2SV2_SPEC                      = Talos II Server \(Linux, GNU Libc based\)
TL2SV2_USE_BUILT_GCC_LIBS        = yes
TL2SV2_ENABLE_STATIC             = no

####### Talos II Rack Mount Development Platform (Least Significant Bit/Byte):
HARDWARE_TL2SV2_LSB              = tl2sv2-lsb
###                               |---HW-spec-handy-ruler-----------------------|
TL2SV2_LSB_SPEC                  = Talos II Server LSB \(Linux, GNU Libc based\)
TL2SV2_LSB_USE_BUILT_GCC_LIBS    = yes
TL2SV2_LSB_ENABLE_STATIC         = no


####### RISC-V devices:
####### --------------------------------------------------

####### SiFive SBC HiFive Unmatched [https://www.sifive.com/boards/hifive-unmatched]:
HARDWARE_SIFIVE_U740             = sifive-u740
###                               |---HW-spec-handy-ruler-----------------------|
SIFIVE_U740_SPEC                 = SiFive U740 SBC \(Linux, GNU Libc based\)
SIFIVE_U740_USE_BUILT_GCC_LIBS   = yes
SIFIVE_U740_ENABLE_STATIC        = no



HW_SPEC                = $(shell echo $($(shell echo $(HARDWARE) | tr '[a-z-]' '[A-Z_]')_SPEC) | sed "s, (.*),,")
__USE_BUILT_GCC_LIBS__ = $(strip $(shell echo $($(shell echo $(HARDWARE) | tr '[a-z-]' '[A-Z_]')_USE_BUILT_GCC_LIBS)))
__ENABLE_STATIC__      = $(strip $(shell echo $($(shell echo $(HARDWARE) | tr '[a-z-]' '[A-Z_]')_ENABLE_STATIC)))


#######
####### Hardware IDs:
#######
    INTEL_PC32_ID_STD = 0001
    INTEL_PC64_ID_STD = 0002
   INTEL_PC32M_ID_STD = 0004
   INTEL_PC64M_ID_STD = 0008

  EBOX_3350DX2_ID_STD = 0010
 EBOX_3350DX2M_ID_STD = 0011

          CB1N_ID_STD = 0100
          CB1X_ID_STD = 0101
          CB2N_ID_STD = 0200
          CB2X_ID_STD = 0201
          CB3N_ID_STD = 0300
          CB3X_ID_STD = 0301

         AT91S_ID_STD = 0400

         NIT6Q_ID_STD = 0601
     OKMX6DL_C_ID_STD = 0602
      OKMX6Q_C_ID_STD = 0603
        SK6ULL_ID_STD = 0604

    BONE_BLACK_ID_STD = 0700

     OMAP5UEVM_ID_STD = 0801
     DRA7XXEVM_ID_STD = 0802

          CI20_ID_STD = 0901
     BAIKAL_T1_ID_STD = 0A01

     BAIKAL_M1_ID_STD = 0B01

      FFRK3288_ID_STD = 0C01
         POIN2_ID_STD = 0C02
     RK3328_CC_ID_STD = 0D01
   KHADAS_EDGE_ID_STD = 0E01
     LEEZ_P710_ID_STD = 0E02
   ORANGE_PP2E_ID_STD = 0F01
    NANOPI_NEO_ID_STD = 0D02
     ORANGE_PP_ID_STD = 1001
    ORANGE_PL2_ID_STD = 1002
    WECHIP_TX6_ID_STD = 1003
          M201_ID_STD = 1101
           MXV_ID_STD = 1102
          P201_ID_STD = 1201
   NEXBOX_A95X_ID_STD = 1202
     ODROID_C2_ID_STD = 1204
          P212_ID_STD = 1401
    KHADAS_VIM_ID_STD = 1402
          Q201_ID_STD = 1501
     ENYBOX_X2_ID_STD = 1502
   KHADAS_VIM2_ID_STD = 1503

   KHADAS_VIM3_ID_STD = 1600

         S824L_ID_STD = 1700
     S824L_LSB_ID_STD = 1701
        VESNIN_ID_STD = 1800
    VESNIN_LSB_ID_STD = 1801
        TL2WK2_ID_STD = 1900
    TL2WK2_LSB_ID_STD = 1901
        TL2SV2_ID_STD = 1A00
    TL2SV2_LSB_ID_STD = 1A01

   SIFIVE_U740_ID_STD = 1B01



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

#
# NOTE:
# ====
#   Toolchain names defined by 'TOOLCHAIN_...' variables.
#   Configuration variable names such as ..._ARCH, ..._DIR, ..._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_]').
#

#   if variable ..._DEST_SYSROOT equal to "yes" then the switch --sysroot=$(TARGET_DEST_DIR)
#   is used to say that cross compiler have to usre $(TARGET_DEST_DIR) as system root instead
#   of compiler default sysroot $(TOOLCHAIN_PATH)/$(TARGET)/sys-root
#   The '...' as usually shoul be equal to suffix of some 'TOOLCHAIN_...' name.



# NOARCH
TOOLCHAIN_NOARCH  = noarch

NOARCH_ARCH       = noarch
NOARCH_VERSION    =
NOARCH_DIR        =
NOARCH_PATH       =
NOARCH_TARBALL    =

NOARCH_HARDWARE_VARIANTS := $(HARDWARE_NOARCH)


# BUILD machine
TOOLCHAIN_BUILD_MACHINE      = build-machine

BUILD_MACHINE_ARCH           = $(shell $(BUILDSYSTEM)/canonical-build)
BUILD_MACHINE_VERSION        =
BUILD_MACHINE_DIR            =
BUILD_MACHINE_PATH           = /usr
BUILD_MACHINE_TARBALL        =

BUILD_MACHINE_HARDWARE_VARIANTS := $(HARDWARE_BUILD)



# ======= I686-GLIBC =========================================================

TOOLCHAIN_I686_GLIBC         = i686-glibc

I686_GLIBC_ARCH              = i686-radix-linux-gnu
I686_GLIBC_VERSION           = 1.9.2
I686_GLIBC_DIR               = i686-PC-linux-glibc
I686_GLIBC_PATH              = $(TOOLCHAINS_BASE_PATH)/$(I686_GLIBC_DIR)
I686_GLIBC_TARBALL           = $(TOOLCHAINS_FTP_BASE)/$(I686_GLIBC_VERSION)/$(I686_GLIBC_DIR)-$(I686_GLIBC_VERSION).$(TARBALL_SUFFIX)

I686_GLIBC_ARCH_DEFS         = -D__I686_GLIBC__=1
I686_GLIBC_ARCH_FLAGS        = -march=i686 -mtune=i686

I686_GLIBC_SYSROOT           = sys-root
I686_GLIBC_DEST_SYSROOT      = yes

I686_GLIBC_HAS_PATCHELF      = yes

I686_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_INTEL_PC32) $(HARDWARE_INTEL_PC32M)



# ======= X86_64-GLIBC =======================================================

TOOLCHAIN_X86_64_GLIBC       = x86_64-glibc

X86_64_GLIBC_ARCH            = x86_64-radix-linux-gnu
X86_64_GLIBC_VERSION         = 1.9.2
X86_64_GLIBC_DIR             = x86_64-PC-linux-glibc
X86_64_GLIBC_PATH            = $(TOOLCHAINS_BASE_PATH)/$(X86_64_GLIBC_DIR)
X86_64_GLIBC_TARBALL         = $(TOOLCHAINS_FTP_BASE)/$(X86_64_GLIBC_VERSION)/$(X86_64_GLIBC_DIR)-$(X86_64_GLIBC_VERSION).$(TARBALL_SUFFIX)

X86_64_GLIBC_ARCH_DEFS       = -D__X86_64_GLIBC__=1
X86_64_GLIBC_ARCH_FLAGS      = -march=x86-64

X86_64_GLIBC_SYSROOT         = sys-root
X86_64_GLIBC_DEST_SYSROOT    = yes

X86_64_GLIBC_HAS_PATCHELF    = yes

X86_64_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_INTEL_PC64) $(HARDWARE_INTEL_PC64M)



# ======= I586-GLIBC =========================================================

TOOLCHAIN_I586_GLIBC         = i586-glibc

I586_GLIBC_ARCH              = i586-radix-linux-gnu
I586_GLIBC_VERSION           = 1.9.2
I586_GLIBC_DIR               = i586-PC-linux-glibc
I586_GLIBC_PATH              = $(TOOLCHAINS_BASE_PATH)/$(I586_GLIBC_DIR)
I586_GLIBC_TARBALL           = $(TOOLCHAINS_FTP_BASE)/$(I586_GLIBC_VERSION)/$(I586_GLIBC_DIR)-$(I586_GLIBC_VERSION).$(TARBALL_SUFFIX)

I586_GLIBC_ARCH_DEFS         = -D__I586_GLIBC__=1
I586_GLIBC_ARCH_FLAGS        = -march=i586 -mtune=i586

I586_GLIBC_SYSROOT           = sys-root
I586_GLIBC_DEST_SYSROOT      = yes

I586_GLIBC_HAS_PATCHELF      = yes

I586_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_EBOX_3350DX2) $(HARDWARE_EBOX_3350DX2M)



# ======= A1X-NEWLIB =========================================================

TOOLCHAIN_A1X_NEWLIB         = a1x-newlib

A1X_NEWLIB_ARCH              = arm-none-eabi
A1X_NEWLIB_VERSION           = 1.9.2
A1X_NEWLIB_DIR               = arm-NONE-eabi-newlib
A1X_NEWLIB_PATH              = $(TOOLCHAINS_BASE_PATH)/$(A1X_NEWLIB_DIR)
A1X_NEWLIB_TARBALL           = $(TOOLCHAINS_FTP_BASE)/$(A1X_NEWLIB_VERSION)/$(A1X_NEWLIB_DIR)-$(A1X_NEWLIB_VERSION).$(TARBALL_SUFFIX)

A1X_NEWLIB_ARCH_DEFS         = -D__ALLWINNER_1N__=1
A1X_NEWLIB_ARCH_FLAGS        = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard -mlittle-endian -fomit-frame-pointer

A1X_NEWLIB_HARDWARE_VARIANTS := $(HARDWARE_CB1N)



# ======= A1X-GLIBC ==========================================================

TOOLCHAIN_A1X_GLIBC          = a1x-glibc

A1X_GLIBC_ARCH               = arm-a1x-linux-gnueabihf
A1X_GLIBC_VERSION            = 1.9.2
A1X_GLIBC_DIR                = arm-A1X-linux-glibc
A1X_GLIBC_PATH               = $(TOOLCHAINS_BASE_PATH)/$(A1X_GLIBC_DIR)
A1X_GLIBC_TARBALL            = $(TOOLCHAINS_FTP_BASE)/$(A1X_GLIBC_VERSION)/$(A1X_GLIBC_DIR)-$(A1X_GLIBC_VERSION).$(TARBALL_SUFFIX)

A1X_GLIBC_ARCH_DEFS          = -D__ALLWINNER_1X_GLIBC__=1
A1X_GLIBC_ARCH_FLAGS         = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard -mabi=aapcs-linux -fomit-frame-pointer

A1X_GLIBC_SYSROOT            = sys-root
A1X_GLIBC_DEST_SYSROOT       = yes

A1X_GLIBC_HAS_PATCHELF       = yes

A1X_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_CB1X)



# ======= A2X-NEWLIB =========================================================

TOOLCHAIN_A2X_NEWLIB         = a2x-newlib

A2X_NEWLIB_ARCH              = arm-none-eabi
A2X_NEWLIB_VERSION           = 1.9.2
A2X_NEWLIB_DIR               = arm-NONE-eabi-newlib
A2X_NEWLIB_PATH              = $(TOOLCHAINS_BASE_PATH)/$(A2X_NEWLIB_DIR)
A2X_NEWLIB_TARBALL           = $(TOOLCHAINS_FTP_BASE)/$(A2X_NEWLIB_VERSION)/$(A2X_NEWLIB_DIR)-$(A2X_NEWLIB_VERSION).$(TARBALL_SUFFIX)

A2X_NEWLIB_ARCH_DEFS         = -D__ALLWINNER_2N__=1
A2X_NEWLIB_ARCH_FLAGS        = -march=armv7ve -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -mlittle-endian -fomit-frame-pointer

A2X_NEWLIB_HARDWARE_VARIANTS := $(HARDWARE_CB2N) $(HARDWARE_CB3N)



# ======= A2X-GLIBC =========================================================

TOOLCHAIN_A2X_GLIBC          = a2x-glibc

A2X_GLIBC_ARCH               = arm-a2x-linux-gnueabihf
A2X_GLIBC_VERSION            = 1.9.2
A2X_GLIBC_DIR                = arm-A2X-linux-glibc
A2X_GLIBC_PATH               = $(TOOLCHAINS_BASE_PATH)/$(A2X_GLIBC_DIR)
A2X_GLIBC_TARBALL            = $(TOOLCHAINS_FTP_BASE)/$(A2X_GLIBC_VERSION)/$(A2X_GLIBC_DIR)-$(A2X_GLIBC_VERSION).$(TARBALL_SUFFIX)

A2X_GLIBC_ARCH_DEFS          = -D__ALLWINNER_2X_GLIBC__=1
A2X_GLIBC_ARCH_FLAGS         = -march=armv7ve -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -mabi=aapcs-linux -fomit-frame-pointer

A2X_GLIBC_SYSROOT            = sys-root
A2X_GLIBC_DEST_SYSROOT       = yes

A2X_GLIBC_HAS_PATCHELF       = yes

A2X_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_CB2X) $(HARDWARE_CB3X)



# ======= H3-GLIBC =========================================================

TOOLCHAIN_H3_GLIBC           = h3-glibc

H3_GLIBC_ARCH                = arm-h3-linux-gnueabihf
H3_GLIBC_VERSION             = 1.9.2
H3_GLIBC_DIR                 = arm-H3-linux-glibc
H3_GLIBC_PATH                = $(TOOLCHAINS_BASE_PATH)/$(H3_GLIBC_DIR)
H3_GLIBC_TARBALL             = $(TOOLCHAINS_FTP_BASE)/$(H3_GLIBC_VERSION)/$(H3_GLIBC_DIR)-$(H3_GLIBC_VERSION).$(TARBALL_SUFFIX)

H3_GLIBC_ARCH_DEFS           = -D__ALLWINNER_H3_GLIBC__=1
H3_GLIBC_ARCH_FLAGS          = -march=armv7ve -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -mabi=aapcs-linux -fomit-frame-pointer

H3_GLIBC_SYSROOT             = sys-root
H3_GLIBC_DEST_SYSROOT        = yes

H3_GLIBC_HAS_PATCHELF        = yes

H3_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_ORANGE_PP2E) $(HARDWARE_NANOPI_NEO)



# ======= H5-GLIBC ======================================================

TOOLCHAIN_H5_GLIBC           = h5-glibc

H5_GLIBC_ARCH                = aarch64-h5-linux-gnu
H5_GLIBC_VERSION             = 1.9.2
H5_GLIBC_DIR                 = aarch64-H5-linux-glibc
H5_GLIBC_PATH                = $(TOOLCHAINS_BASE_PATH)/$(H5_GLIBC_DIR)
H5_GLIBC_TARBALL             = $(TOOLCHAINS_FTP_BASE)/$(H5_GLIBC_VERSION)/$(H5_GLIBC_DIR)-$(H5_GLIBC_VERSION).$(TARBALL_SUFFIX)

H5_GLIBC_ARCH_DEFS           = -D__ALLWINNER_H5_GLIBC__=1
H5_GLIBC_ARCH_FLAGS          = -march=armv8-a -mcpu=cortex-a53 -mabi=lp64 -fomit-frame-pointer

H5_GLIBC_SYSROOT             = sys-root
H5_GLIBC_DEST_SYSROOT        = yes

H5_GLIBC_HAS_PATCHELF        = yes

H5_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_ORANGE_PP) $(HARDWARE_ORANGE_PL2) $(HARDWARE_WECHIP_TX6)



# ======= RK328X-GLIBC ======================================================

TOOLCHAIN_RK328X_GLIBC       = rk328x-glibc

RK328X_GLIBC_ARCH            = arm-rk328x-linux-gnueabihf
RK328X_GLIBC_VERSION         = 1.9.2
RK328X_GLIBC_DIR             = arm-RK328X-linux-glibc
RK328X_GLIBC_PATH            = $(TOOLCHAINS_BASE_PATH)/$(RK328X_GLIBC_DIR)
RK328X_GLIBC_TARBALL         = $(TOOLCHAINS_FTP_BASE)/$(RK328X_GLIBC_VERSION)/$(RK328X_GLIBC_DIR)-$(RK328X_GLIBC_VERSION).$(TARBALL_SUFFIX)

RK328X_GLIBC_ARCH_DEFS       = -D__RK328X_GLIBC__=1
RK328X_GLIBC_ARCH_FLAGS      = -march=armv7ve -mtune=cortex-a17 -mfpu=neon-vfpv4 -mfloat-abi=hard -mabi=aapcs-linux -fomit-frame-pointer

RK328X_GLIBC_SYSROOT         = sys-root
RK328X_GLIBC_DEST_SYSROOT    = yes

RK328X_GLIBC_HAS_PATCHELF    = yes

RK328X_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_FFRK3288) $(HARDWARE_POIN2)



# ======= RK33XX-GLIBC ======================================================

TOOLCHAIN_RK33XX_GLIBC       = rk33xx-glibc

RK33XX_GLIBC_ARCH            = aarch64-rk33xx-linux-gnu
RK33XX_GLIBC_VERSION         = 1.9.2
RK33XX_GLIBC_DIR             = aarch64-RK33XX-linux-glibc
RK33XX_GLIBC_PATH            = $(TOOLCHAINS_BASE_PATH)/$(RK33XX_GLIBC_DIR)
RK33XX_GLIBC_TARBALL         = $(TOOLCHAINS_FTP_BASE)/$(RK33XX_GLIBC_VERSION)/$(RK33XX_GLIBC_DIR)-$(RK33XX_GLIBC_VERSION).$(TARBALL_SUFFIX)

RK33XX_GLIBC_ARCH_DEFS       = -D__RK33XX_GLIBC__=1
RK33XX_GLIBC_ARCH_FLAGS      = -march=armv8-a -mcpu=cortex-a53 -mabi=lp64 -fomit-frame-pointer

RK33XX_GLIBC_SYSROOT         = sys-root
RK33XX_GLIBC_DEST_SYSROOT    = yes

RK33XX_GLIBC_HAS_PATCHELF    = yes

RK33XX_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_RK3328_CC)



# ======= RK339X-GLIBC ======================================================

TOOLCHAIN_RK339X_GLIBC       = rk339x-glibc

RK339X_GLIBC_ARCH            = aarch64-rk339x-linux-gnu
RK339X_GLIBC_VERSION         = 1.9.2
RK339X_GLIBC_DIR             = aarch64-RK339X-linux-glibc
RK339X_GLIBC_PATH            = $(TOOLCHAINS_BASE_PATH)/$(RK339X_GLIBC_DIR)
RK339X_GLIBC_TARBALL         = $(TOOLCHAINS_FTP_BASE)/$(RK339X_GLIBC_VERSION)/$(RK339X_GLIBC_DIR)-$(RK339X_GLIBC_VERSION).$(TARBALL_SUFFIX)

RK339X_GLIBC_ARCH_DEFS       = -D__RK339X_GLIBC__=1
RK339X_GLIBC_ARCH_FLAGS      = -march=armv8-a -mcpu=cortex-a72.cortex-a53 -mabi=lp64 -fomit-frame-pointer

RK339X_GLIBC_SYSROOT         = sys-root
RK339X_GLIBC_DEST_SYSROOT    = yes

RK339X_GLIBC_HAS_PATCHELF    = yes

RK339X_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_KHADAS_EDGE) $(HARDWARE_LEEZ_P710)



# ======= S8XX-GLIBC =========================================================

TOOLCHAIN_S8XX_GLIBC         = s8xx-glibc

S8XX_GLIBC_ARCH              = arm-s8xx-linux-gnueabihf
S8XX_GLIBC_VERSION           = 1.9.2
S8XX_GLIBC_DIR               = arm-S8XX-linux-glibc
S8XX_GLIBC_PATH              = $(TOOLCHAINS_BASE_PATH)/$(S8XX_GLIBC_DIR)
S8XX_GLIBC_TARBALL           = $(TOOLCHAINS_FTP_BASE)/$(S8XX_GLIBC_VERSION)/$(S8XX_GLIBC_DIR)-$(S8XX_GLIBC_VERSION).$(TARBALL_SUFFIX)

S8XX_GLIBC_ARCH_DEFS         = -D__AMLOGIC_S8XX_GLIBC__=1
S8XX_GLIBC_ARCH_FLAGS        = -march=armv7-a -mtune=cortex-a5 -mfpu=neon -mfloat-abi=hard -mfpu=neon -mabi=aapcs-linux -fomit-frame-pointer

S8XX_GLIBC_SYSROOT           = sys-root
S8XX_GLIBC_DEST_SYSROOT      = yes

S8XX_GLIBC_HAS_PATCHELF      = yes

S8XX_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_M201) $(HARDWARE_MXV)



# ======= S9XX-GLIBC =========================================================

TOOLCHAIN_S9XX_GLIBC         = s9xx-glibc

S9XX_GLIBC_ARCH              = aarch64-s9xx-linux-gnu
S9XX_GLIBC_VERSION           = 1.9.2
S9XX_GLIBC_DIR               = aarch64-S9XX-linux-glibc
S9XX_GLIBC_PATH              = $(TOOLCHAINS_BASE_PATH)/$(S9XX_GLIBC_DIR)
S9XX_GLIBC_TARBALL           = $(TOOLCHAINS_FTP_BASE)/$(S9XX_GLIBC_VERSION)/$(S9XX_GLIBC_DIR)-$(S9XX_GLIBC_VERSION).$(TARBALL_SUFFIX)

S9XX_GLIBC_ARCH_DEFS         = -D__AMLOGIC_S9XX_GLIBC__=1
S9XX_GLIBC_ARCH_FLAGS        = -march=armv8-a -mcpu=cortex-a53 -mabi=lp64 -fomit-frame-pointer

S9XX_GLIBC_SYSROOT           = sys-root
S9XX_GLIBC_DEST_SYSROOT      = yes

S9XX_GLIBC_HAS_PATCHELF      = yes

S9XX_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_P201) $(HARDWARE_NEXBOX_A95X) \
                                                 $(HARDWARE_ODROID_C2)   \
                                $(HARDWARE_P212) $(HARDWARE_KHADAS_VIM)  \
                                $(HARDWARE_Q201) $(HARDWARE_ENYBOX_X2)   \
                                                 $(HARDWARE_KHADAS_VIM2)


# ======= A311X-GLIBC ========================================================

TOOLCHAIN_A311X_GLIBC        = a311x-glibc

A311X_GLIBC_ARCH             = aarch64-a311x-linux-gnu
A311X_GLIBC_VERSION          = 1.9.2
A311X_GLIBC_DIR              = aarch64-A311X-linux-glibc
A311X_GLIBC_PATH             = $(TOOLCHAINS_BASE_PATH)/$(A311X_GLIBC_DIR)
A311X_GLIBC_TARBALL          = $(TOOLCHAINS_FTP_BASE)/$(A311X_GLIBC_VERSION)/$(A311X_GLIBC_DIR)-$(A311X_GLIBC_VERSION).$(TARBALL_SUFFIX)

A311X_GLIBC_ARCH_DEFS        = -D__AMLOGIC_A311X_GLIBC__=1
A311X_GLIBC_ARCH_FLAGS       = -march=armv8-a -mcpu=cortex-a73.cortex-a53 -mabi=lp64 -fomit-frame-pointer

A311X_GLIBC_SYSROOT          = sys-root
A311X_GLIBC_DEST_SYSROOT     = yes

A311X_GLIBC_HAS_PATCHELF     = yes

A311X_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_KHADAS_VIM3)


# ======= AT91SAM7S-NEWLIB ===================================================

TOOLCHAIN_AT91SAM7S_NEWLIB   = at91sam7s-newlib

AT91SAM7S_NEWLIB_ARCH        = arm-at91sam7s-eabi
AT91SAM7S_NEWLIB_VERSION     = 1.9.2
AT91SAM7S_NEWLIB_DIR         = arm-AT91SAM7S-eabi-newlib
AT91SAM7S_NEWLIB_PATH        = $(TOOLCHAINS_BASE_PATH)/$(AT91SAM7S_NEWLIB_DIR)
AT91SAM7S_NEWLIB_TARBALL     = $(TOOLCHAINS_FTP_BASE)/$(AT91SAM7S_NEWLIB_VERSION)/$(AT91SAM7S_NEWLIB_DIR)-$(AT91SAM7S_NEWLIB_VERSION).$(TARBALL_SUFFIX)

AT91SAM7S_NEWLIB_ARCH_DEFS   = -D__AT91SAM7S__=1
AT91SAM7S_NEWLIB_ARCH_FLAGS  = -mcpu=arm7tdmi -mbig-endian -fomit-frame-pointer

AT91SAM7S_NEWLIB_HARDWARE_VARIANTS := $(HARDWARE_AT91S)



# ======= IMX6-GLIBC ======================================================

TOOLCHAIN_IMX6_GLIBC         = imx6-glibc

IMX6_GLIBC_ARCH              = arm-imx6-linux-gnueabihf
IMX6_GLIBC_VERSION           = 1.9.2
IMX6_GLIBC_DIR               = arm-IMX6-linux-glibc
IMX6_GLIBC_PATH              = $(TOOLCHAINS_BASE_PATH)/$(IMX6_GLIBC_DIR)
IMX6_GLIBC_TARBALL           = $(TOOLCHAINS_FTP_BASE)/$(IMX6_GLIBC_VERSION)/$(IMX6_GLIBC_DIR)-$(IMX6_GLIBC_VERSION).$(TARBALL_SUFFIX)

IMX6_GLIBC_ARCH_DEFS         = -D__IMX6_GLIBC__=1
IMX6_GLIBC_ARCH_FLAGS        = -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -mabi=aapcs-linux -fomit-frame-pointer

IMX6_GLIBC_SYSROOT           = sys-root
IMX6_GLIBC_DEST_SYSROOT      = yes

IMX6_GLIBC_HAS_PATCHELF      = yes

IMX6_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_NIT6Q) $(HARDWARE_OKMX6DL_C) $(HARDWARE_OKMX6Q_C)



# ======= IMX6ULL-GLIBC ======================================================

TOOLCHAIN_IMX6ULL_GLIBC      = imx6ull-glibc

IMX6ULL_GLIBC_ARCH           = arm-imx6ull-linux-gnueabihf
IMX6ULL_GLIBC_VERSION        = 1.9.2
IMX6ULL_GLIBC_DIR            = arm-IMX6ULL-linux-glibc
IMX6ULL_GLIBC_PATH           = $(TOOLCHAINS_BASE_PATH)/$(IMX6ULL_GLIBC_DIR)
IMX6ULL_GLIBC_TARBALL        = $(TOOLCHAINS_FTP_BASE)/$(IMX6ULL_GLIBC_VERSION)/$(IMX6ULL_GLIBC_DIR)-$(IMX6ULL_GLIBC_VERSION).$(TARBALL_SUFFIX)

IMX6ULL_GLIBC_ARCH_DEFS      = -D__IMX6ULL_GLIBC__=1
IMX6ULL_GLIBC_ARCH_FLAGS     = -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -mabi=aapcs-linux -fomit-frame-pointer

IMX6ULL_GLIBC_SYSROOT        = sys-root
IMX6ULL_GLIBC_DEST_SYSROOT   = yes

IMX6ULL_GLIBC_HAS_PATCHELF   = yes

IMX6ULL_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_SK6ULL)



# ======= AM335X-GLIBC =======================================================

TOOLCHAIN_AM335X_GLIBC       = am335x-glibc

AM335X_GLIBC_ARCH            = arm-am335x-linux-gnueabihf
AM335X_GLIBC_VERSION         = 1.9.2
AM335X_GLIBC_DIR             = arm-AM335X-linux-glibc
AM335X_GLIBC_PATH            = $(TOOLCHAINS_BASE_PATH)/$(AM335X_GLIBC_DIR)
AM335X_GLIBC_TARBALL         = $(TOOLCHAINS_FTP_BASE)/$(AM335X_GLIBC_VERSION)/$(AM335X_GLIBC_DIR)-$(AM335X_GLIBC_VERSION).$(TARBALL_SUFFIX)

AM335X_GLIBC_ARCH_DEFS       = -D__AM335X_GLIBC__=1
AM335X_GLIBC_ARCH_FLAGS      = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard -mabi=aapcs-linux -fomit-frame-pointer

AM335X_GLIBC_SYSROOT         = sys-root
AM335X_GLIBC_DEST_SYSROOT    = yes

AM335X_GLIBC_HAS_PATCHELF    = yes

AM335X_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_BONE_BLACK)



# ======= OMAP543X-GLIBC =====================================================

TOOLCHAIN_OMAP543X_GLIBC     = omap543x-glibc

OMAP543X_GLIBC_ARCH          = arm-omap543x-linux-gnueabihf
OMAP543X_GLIBC_VERSION       = 1.9.2
OMAP543X_GLIBC_DIR           = arm-OMAP543X-linux-glibc
OMAP543X_GLIBC_PATH          = $(TOOLCHAINS_BASE_PATH)/$(OMAP543X_GLIBC_DIR)
OMAP543X_GLIBC_TARBALL       = $(TOOLCHAINS_FTP_BASE)/$(OMAP543X_GLIBC_VERSION)/$(OMAP543X_GLIBC_DIR)-$(OMAP543X_GLIBC_VERSION).$(TARBALL_SUFFIX)

OMAP543X_GLIBC_ARCH_DEFS     = -D__OMAP543X_GLIBC__=1
OMAP543X_GLIBC_ARCH_FLAGS    = -march=armv7ve -mtune=cortex-a15 -mfpu=neon-vfpv4 -mfloat-abi=hard -mabi=aapcs-linux -fomit-frame-pointer

OMAP543X_GLIBC_SYSROOT       = sys-root
OMAP543X_GLIBC_DEST_SYSROOT  = yes

OMAP543X_GLIBC_HAS_PATCHELF  = yes

OMAP543X_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_OMAP5UEVM) $(HARDWARE_DRA7XXEVM)



# ======= JZ47XX-GLIBC =======================================================

TOOLCHAIN_JZ47XX_GLIBC       = jz47xx-glibc

JZ47XX_GLIBC_ARCH            = mipsel-jz47xx-linux-gnu
JZ47XX_GLIBC_VERSION         = 1.9.2
JZ47XX_GLIBC_DIR             = mipsel-JZ47XX-linux-glibc
JZ47XX_GLIBC_PATH            = $(TOOLCHAINS_BASE_PATH)/$(JZ47XX_GLIBC_DIR)
JZ47XX_GLIBC_TARBALL         = $(TOOLCHAINS_FTP_BASE)/$(JZ47XX_GLIBC_VERSION)/$(JZ47XX_GLIBC_DIR)-$(JZ47XX_GLIBC_VERSION).$(TARBALL_SUFFIX)

JZ47XX_GLIBC_ARCH_DEFS       = -D__JZ47XX_GLIBC__=1
JZ47XX_GLIBC_ARCH_FLAGS      = -march=mips32r2 -mhard-float
JZ47XX_GLIBC_OPTIMIZATION    = -O2

JZ47XX_GLIBC_SYSROOT         = sys-root
JZ47XX_GLIBC_DEST_SYSROOT    = yes

JZ47XX_GLIBC_HAS_PATCHELF    = yes

JZ47XX_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_CI20)



# ======= P5600-GLIBC =======================================================

TOOLCHAIN_P5600_GLIBC        = p5600-glibc

P5600_GLIBC_ARCH             = mipsel-p5600-linux-gnu
P5600_GLIBC_VERSION          = 1.9.2
P5600_GLIBC_DIR              = mipsel-P5600-linux-glibc
P5600_GLIBC_PATH             = $(TOOLCHAINS_BASE_PATH)/$(P5600_GLIBC_DIR)
P5600_GLIBC_TARBALL          = $(TOOLCHAINS_FTP_BASE)/$(P5600_GLIBC_VERSION)/$(P5600_GLIBC_DIR)-$(P5600_GLIBC_VERSION).$(TARBALL_SUFFIX)

P5600_GLIBC_ARCH_DEFS        = -D__P5600_GLIBC__=1
P5600_GLIBC_ARCH_FLAGS       = -march=mips32r5 -mtune=p5600 -mhard-float
P5600_GLIBC_OPTIMIZATION     = -O2

P5600_GLIBC_SYSROOT          = sys-root
P5600_GLIBC_DEST_SYSROOT     = yes

P5600_GLIBC_HAS_PATCHELF     = yes

P5600_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_BAIKAL_T1)


# ======= M1000-GLIBC =======================================================

TOOLCHAIN_M1000_GLIBC        = m1000-glibc

M1000_GLIBC_ARCH             = aarch64-m1000-linux-gnu
M1000_GLIBC_VERSION          = 1.9.2
M1000_GLIBC_DIR              = aarch64-M1000-linux-glibc
M1000_GLIBC_PATH             = $(TOOLCHAINS_BASE_PATH)/$(M1000_GLIBC_DIR)
M1000_GLIBC_TARBALL          = $(TOOLCHAINS_FTP_BASE)/$(M1000_GLIBC_VERSION)/$(M1000_GLIBC_DIR)-$(M1000_GLIBC_VERSION).$(TARBALL_SUFFIX)

M1000_GLIBC_ARCH_DEFS        = -D__M1000_GLIBC__=1
M1000_GLIBC_ARCH_FLAGS       = -march=armv8-a -mcpu=cortex-a57 -mabi=lp64 -fomit-frame-pointer

M1000_GLIBC_SYSROOT          = sys-root
M1000_GLIBC_DEST_SYSROOT     = yes

M1000_GLIBC_HAS_PATCHELF     = yes

M1000_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_BAIKAL_M1)



# ======= POWER8-GLIBC ======================================================

TOOLCHAIN_POWER8_GLIBC       = power8-glibc

POWER8_GLIBC_ARCH            = ppc64-power8-linux-gnu
POWER8_GLIBC_VERSION         = 1.9.2
POWER8_GLIBC_DIR             = ppc64-POWER8-linux-glibc
POWER8_GLIBC_PATH            = $(TOOLCHAINS_BASE_PATH)/$(POWER8_GLIBC_DIR)
POWER8_GLIBC_TARBALL         = $(TOOLCHAINS_FTP_BASE)/$(POWER8_GLIBC_VERSION)/$(POWER8_GLIBC_DIR)-$(POWER8_GLIBC_VERSION).$(TARBALL_SUFFIX)

POWER8_GLIBC_ARCH_DEFS       = -D__POWER8_GLIBC__=1
POWER8_GLIBC_ARCH_FLAGS      = -mcpu=power8 -mlong-double-128
POWER8_GLIBC_OPTIMIZATION    = -O3

POWER8_GLIBC_SYSROOT         = sys-root
POWER8_GLIBC_DEST_SYSROOT    = yes

POWER8_GLIBC_HAS_PATCHELF    = yes

POWER8_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_S824L) $(HARDWARE_VESNIN)


# ======= POWER8LE-GLIBC ====================================================

TOOLCHAIN_POWER8LE_GLIBC     = power8le-glibc

POWER8LE_GLIBC_ARCH          = ppc64le-power8-linux-gnu
POWER8LE_GLIBC_VERSION       = 1.9.2
POWER8LE_GLIBC_DIR           = ppc64le-POWER8-linux-glibc
POWER8LE_GLIBC_PATH          = $(TOOLCHAINS_BASE_PATH)/$(POWER8LE_GLIBC_DIR)
POWER8LE_GLIBC_TARBALL       = $(TOOLCHAINS_FTP_BASE)/$(POWER8LE_GLIBC_VERSION)/$(POWER8LE_GLIBC_DIR)-$(POWER8LE_GLIBC_VERSION).$(TARBALL_SUFFIX)

POWER8LE_GLIBC_ARCH_DEFS     = -D__POWER8LE_GLIBC__=1
POWER8LE_GLIBC_ARCH_FLAGS    = -mcpu=power8 -mlong-double-128
POWER8LE_GLIBC_OPTIMIZATION  = -O3

POWER8LE_GLIBC_SYSROOT       = sys-root
POWER8LE_GLIBC_DEST_SYSROOT  = yes

POWER8LE_GLIBC_HAS_PATCHELF  = yes

POWER8LE_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_S824L_LSB) $(HARDWARE_VESNIN_LSB)



# ======= POWER9-GLIBC ======================================================

TOOLCHAIN_POWER9_GLIBC       = power9-glibc

POWER9_GLIBC_ARCH            = ppc64-power9-linux-gnu
POWER9_GLIBC_VERSION         = 1.9.2
POWER9_GLIBC_DIR             = ppc64-POWER9-linux-glibc
POWER9_GLIBC_PATH            = $(TOOLCHAINS_BASE_PATH)/$(POWER9_GLIBC_DIR)
POWER9_GLIBC_TARBALL         = $(TOOLCHAINS_FTP_BASE)/$(POWER9_GLIBC_VERSION)/$(POWER9_GLIBC_DIR)-$(POWER9_GLIBC_VERSION).$(TARBALL_SUFFIX)

POWER9_GLIBC_ARCH_DEFS       = -D__POWER9_GLIBC__=1
POWER9_GLIBC_ARCH_FLAGS      = -mcpu=power9 -mlong-double-128
POWER9_GLIBC_OPTIMIZATION    = -O3

POWER9_GLIBC_SYSROOT         = sys-root
POWER9_GLIBC_DEST_SYSROOT    = yes

POWER9_GLIBC_HAS_PATCHELF    = yes

POWER9_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_TL2WK2) $(HARDWARE_TL2SV2)


# ======= POWER9LE-GLIBC ====================================================

TOOLCHAIN_POWER9LE_GLIBC     = power9le-glibc

POWER9LE_GLIBC_ARCH          = ppc64le-power9-linux-gnu
POWER9LE_GLIBC_VERSION       = 1.9.2
POWER9LE_GLIBC_DIR           = ppc64le-POWER9-linux-glibc
POWER9LE_GLIBC_PATH          = $(TOOLCHAINS_BASE_PATH)/$(POWER9LE_GLIBC_DIR)
POWER9LE_GLIBC_TARBALL       = $(TOOLCHAINS_FTP_BASE)/$(POWER9LE_GLIBC_VERSION)/$(POWER9LE_GLIBC_DIR)-$(POWER9LE_GLIBC_VERSION).$(TARBALL_SUFFIX)

POWER9LE_GLIBC_ARCH_DEFS     = -D__POWER9LE_GLIBC__=1
POWER9LE_GLIBC_ARCH_FLAGS    = -mcpu=power9 -mlong-double-128
POWER9LE_GLIBC_OPTIMIZATION  = -O3

POWER9LE_GLIBC_SYSROOT       = sys-root
POWER9LE_GLIBC_DEST_SYSROOT  = yes

POWER9LE_GLIBC_HAS_PATCHELF  = yes

POWER9LE_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_TL2WK2_LSB) $(HARDWARE_TL2SV2_LSB)



# ======= RISCV64-GLIBC =====================================================

TOOLCHAIN_RISCV64_GLIBC      = riscv64-glibc

RISCV64_GLIBC_ARCH           = riscv64-rv64gc-linux-gnu
RISCV64_GLIBC_VERSION        = 1.9.2
RISCV64_GLIBC_DIR            = riscv64-RV64GC-linux-glibc
RISCV64_GLIBC_PATH           = $(TOOLCHAINS_BASE_PATH)/$(RISCV64_GLIBC_DIR)
RISCV64_GLIBC_TARBALL        = $(TOOLCHAINS_FTP_BASE)/$(RISCV64_GLIBC_VERSION)/$(RISCV64_GLIBC_DIR)-$(RISCV64_GLIBC_VERSION).$(TARBALL_SUFFIX)

RISCV64_GLIBC_ARCH_DEFS      = -D__RV64GC_GLIBC__=1
RISCV64_GLIBC_ARCH_FLAGS     = -march=rv64gc -mcmodel=medany
RISCV64_GLIBC_OPTIMIZATION   = -O3

RISCV64_GLIBC_SYSROOT        = sys-root
RISCV64_GLIBC_DEST_SYSROOT   = yes

RISCV64_GLIBC_HAS_PATCHELF   = yes

RISCV64_GLIBC_HARDWARE_VARIANTS := $(HARDWARE_SIFIVE_U740)



CONSTANTS_MK=1
endif