Radix cross Linux Toolchains

Toolchains for all supported by Radix cross Linux devices

80 Commits   2 Branches   13 Tags


COMPONENT_TARGETS  = $(TOOLCHAIN_A1X_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_A2X_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_H3_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_H5_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_IMX6_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_IMX6ULL_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_JZ47XX_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_P5600_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_M1000_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_OMAP543X_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_AM335X_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_RK328X_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_S8XX_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_S9XX_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_A9XX_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_A311X_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_RK33XX_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_RK339X_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_RK358X_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_A33XX_GLIBC)

COMPONENT_TARGETS += $(TOOLCHAIN_PPC8_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_PPC9_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_POWER8_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_POWER9_GLIBC)

COMPONENT_TARGETS += $(TOOLCHAIN_POWER8LE_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_POWER9LE_GLIBC)

COMPONENT_TARGETS += $(TOOLCHAIN_RISCV64_GLIBC)

COMPONENT_TARGETS += $(TOOLCHAIN_I586_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_I686_GLIBC)
COMPONENT_TARGETS += $(TOOLCHAIN_X86_64_GLIBC)


FLAVOURS = compat next

include ../../../build-system/config.mk

SOURCE_REQUIRES = sources/crypt

ifeq ($(FLAVOUR),compat)
REQUIRES  = core/glibc/2.41^full
ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
REQUIRES += core/crypt/4.4.38-x86_32^compat
else
ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) \
                             $(TOOLCHAIN_POWER9_GLIBC)),)
REQUIRES += core/crypt/4.4.38-ppc32^compat
endif
endif
endif

ifeq ($(FLAVOUR),next)
REQUIRES  = core/crypt/4.4.38^compat
ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
REQUIRES += core/crypt/4.4.38-x86_32^next
else
ifneq ($(filter $(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC) \
                             $(TOOLCHAIN_POWER9_GLIBC)),)
REQUIRES += core/crypt/4.4.38-ppc32^next
endif
endif
endif

# ======= __END_OF_REQUIRES__ =======

tar_xz_archive  = $(SRC_PACKAGE_PATH)/crypt/libxcrypt/libxcrypt-4.4.38.tar.xz
SRC_ARCHIVE     = $(tar_xz_archive)
SRC_DIR         = $(TARGET_BUILD_DIR)/libxcrypt-4.4.38
src_dir_name    = libxcrypt-4.4.38
src_done        = $(TARGET_BUILD_DIR)/.source-done

PATCHES         = PATCHES

build_compat_dir    = $(TARGET_BUILD_DIR)/build-compat
build_next_dir      = $(TARGET_BUILD_DIR)/build-next

sysroot_dir         = $(TOOLCHAIN_PATH)/$(TARGET)/sys-root

build_compat_target = $(TARGET_BUILD_DIR)/.compat-built
compat_target       = $(TARGET_BUILD_DIR)/.compat-installed

build_next_target   = $(TARGET_BUILD_DIR)/.next-built
next_target         = $(TARGET_BUILD_DIR)/.next-installed


ifeq ($(FLAVOUR),compat)
BUILD_TARGETS  = $(build_compat_target)
BUILD_TARGETS += $(compat_target)
endif

ifeq ($(FLAVOUR),next)
BUILD_TARGETS  = $(build_next_target)
BUILD_TARGETS += $(next_target)
endif

include ../../../build-system/core.mk


env_sysroot     = DESTDIR=$(sysroot_dir)


CC           = $(CCACHE)$(TOOLCHAIN_PATH)/bin/$(TARGET)-gcc
CXX          = $(CCACHE)$(TOOLCHAIN_PATH)/bin/$(TARGET)-g++

environment  = AS=$(TOOLCHAIN_PATH)/bin/$(TARGET)-as
environment += LD=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ld
environment += CC="$(CC)"
environment += CXX="$(CXX)"
environment += AR=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ar
environment += RANLIB=$(TOOLCHAIN_PATH)/bin/$(TARGET)-ranlib

environment += PATH=$(TOOLCHAIN_PATH)/bin:$(PATH)

LIBSUFFIX    =

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A1X_GLIBC))
environment += CFLAGS="-g -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A2X_GLIBC))
environment += CFLAGS="-g -O3 -march=armv7ve -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H3_GLIBC))
environment += CFLAGS="-g -O3 -march=armv7ve -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_H5_GLIBC))
environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a53 -mabi=lp64"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_IMX6_GLIBC))
environment += CFLAGS="-g -O3 -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_IMX6ULL_GLIBC))
environment += CFLAGS="-g -O3 -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_JZ47XX_GLIBC))
environment += CFLAGS="-g -O2 -march=mips32r2 -mhard-float"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_P5600_GLIBC))
environment += CFLAGS="-g -O2 -march=mips32r5 -mtune=p5600 -mhard-float"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_M1000_GLIBC))
environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a57 -mabi=lp64"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_OMAP543X_GLIBC))
environment += CFLAGS="-g -O3 -march=armv7ve -mtune=cortex-a15 -mfpu=neon-vfpv4 -mfloat-abi=hard"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_AM335X_GLIBC))
environment += CFLAGS="-g -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK328X_GLIBC))
environment += CFLAGS="-g -O3 -march=armv7ve -mtune=cortex-a17 -mfpu=neon-vfpv4 -mfloat-abi=hard"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S8XX_GLIBC))
environment += CFLAGS="-g -O3 -march=armv7-a -mtune=cortex-a5 -mfpu=neon -mfloat-abi=hard"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_S9XX_GLIBC))
environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a53 -mabi=lp64"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A9XX_GLIBC))
environment += CFLAGS="-g -O3 -march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A311X_GLIBC))
environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a73.cortex-a53 -mabi=lp64"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK33XX_GLIBC))
environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a53 -mabi=lp64"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK339X_GLIBC))
environment += CFLAGS="-g -O3 -march=armv8-a -mcpu=cortex-a72.cortex-a53 -mabi=lp64"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RK358X_GLIBC))
environment += CFLAGS="-g -O3 -march=armv8.2-a -mtune=cortex-a76.cortex-a55 -mabi=lp64"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_A33XX_GLIBC))
environment += CFLAGS="-g -O3 -march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_PPC8_GLIBC))
environment += CFLAGS="-g -O3 -mcpu=power8 -mlong-double-128"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_PPC9_GLIBC))
environment += CFLAGS="-g -O3 -mcpu=power9 -mlong-double-128"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER8_GLIBC))
environment += CFLAGS="-g -O3 -mcpu=power8 -mlong-double-128"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER9_GLIBC))
environment += CFLAGS="-g -O3 -mcpu=power9 -mlong-double-128"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER8LE_GLIBC))
environment += CFLAGS="-g -O3 -mcpu=power8 -mlong-double-128"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_POWER9LE_GLIBC))
environment += CFLAGS="-g -O3 -mcpu=power9 -mlong-double-128"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_RISCV64_GLIBC))
environment += CFLAGS="-g -O3 -march=rv64gc -mcmodel=medany"
endif


ifeq ($(TOOLCHAIN),$(TOOLCHAIN_I586_GLIBC))
environment += CFLAGS="-g -O3 -march=i586 -mtune=i586"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_I686_GLIBC))
environment += CFLAGS="-g -O3"
endif

ifeq ($(TOOLCHAIN),$(TOOLCHAIN_X86_64_GLIBC))
environment += CFLAGS="-g -O3"
endif


extra_configure_switches   = --libdir=/usr/lib$(LIBSUFFIX)
extra_configure_switches  += --mandir=/usr/share/man
ifeq ($(FLAVOUR),compat)
extra_configure_switches  += --enable-hashes=strong,glibc
extra_configure_switches  += --enable-obsolete-api=glibc
extra_configure_switches  += --disable-feature-tokens
endif
ifeq ($(FLAVOUR),next)
extra_configure_switches  += --enable-hashes=strong,glibc
extra_configure_switches  += --enable-obsolete-api=no
extra_configure_switches  += --disable-feature-tokens
extra_configure_switches  += --enable-static=no
endif



$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
	$(UNPACK_SRC_ARCHIVE)
	$(APPLY_PATCHES)
	@touch $@

$(build_compat_target): $(src_done)
	@mkdir -p $(build_compat_dir)
	@cd $(build_compat_dir) && $(env_sysroot) $(environment) ../$(src_dir_name)/configure \
	  --prefix=/usr                \
	  --build=$(BUILD)             \
	  --host=$(TARGET)             \
	  $(extra_configure_switches)
	@cd $(build_compat_dir) && $(environment) $(MAKE) all
	@touch $@

$(build_next_target): $(src_done)
	@mkdir -p $(build_next_dir)
	@cd $(build_next_dir) && $(env_sysroot) $(environment) ../$(src_dir_name)/configure \
	  --prefix=/usr                \
	  --build=$(BUILD)             \
	  --host=$(TARGET)             \
	  $(extra_configure_switches)
	@cd $(build_next_dir) && $(environment) $(MAKE) all
	@touch $@

$(compat_target): $(build_compat_target)
	@mkdir -p $(sysroot_dir)/{,usr/}lib$(LIBSUFFIX)
	@cd $(build_compat_dir) && $(environment) $(MAKE) -j1 install $(env_sysroot)
	@( cd $(sysroot_dir)/usr/lib$(LIBSUFFIX) ; \
	   rm -f *.la ; \
	   rm libcrypt.so ; \
	   mv libcrypt.so* ../../lib$(LIBSUFFIX) ; \
	   ln -sf ../../lib$(LIBSUFFIX)/libcrypt.so.1 libcrypt.so ; \
	 )
	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
	@touch $@

$(next_target): $(build_next_target)
	@mkdir -p $(sysroot_dir)/{,usr/}lib$(LIBSUFFIX)
	@cd $(build_next_dir) && $(environment) $(MAKE) -j1 install $(env_sysroot)
	@( cd $(sysroot_dir)/usr/lib$(LIBSUFFIX) ; \
	   rm -f *.la ; \
	   rm libcrypt.so ; \
	   mv libcrypt.so* ../../lib$(LIBSUFFIX) ; \
	   ln -sf ../../lib$(LIBSUFFIX)/libcrypt.so.2 libcrypt.so ; \
	 )
	@echo "  $(subst $(TOP_BUILD_DIR_ABS)/,,$(CURDIR))$(if $(FLAVOUR),:$(FLAVOUR),)" >> $(TOOLCHAIN_PATH)/README
	@touch $@