Kbuild: Add support for multiple toolchains
To use this, export the following: export VXMICRO_GCC_VARIANT=yocto # for yocto export VXMICRO_GCC_VARIANT=xtools # for crosstool-ng export YOCTO_SDK_INSTALL_DIR=/opt/poky-tm/1.8 or export XTOOLS_TOOLCHAIN_PATH=/opt/crosstool-ng Change-Id: I9cd6062ecc32047d1582aad46209f4232e0e31f6 Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
parent
b7fcfd53e5
commit
aca245d96f
5 changed files with 61 additions and 3 deletions
5
Makefile
5
Makefile
|
@ -628,6 +628,9 @@ endif # $(dot-config)
|
|||
#File that includes all prepare special embedded architecture targets.
|
||||
include $(srctree)/scripts/Makefile.preparch
|
||||
sinclude $(srctree)/scripts/Makefile.$(SRCARCH).preparch
|
||||
ifdef VXMICRO_GCC_VARIANT
|
||||
include $(srctree)/scripts/Makefile.toolchain.$(VXMICRO_GCC_VARIANT)
|
||||
endif
|
||||
|
||||
# The all: target is the default when no target is given on the
|
||||
# command line.
|
||||
|
@ -900,7 +903,7 @@ export KBUILD_ALLDIRS := $(sort $(filter-out arch/%,$(tinymountain-alldirs)) arc
|
|||
tinymountain-deps := $(KBUILD_LDS) $(KBUILD_TIMO_INIT) $(KBUILD_TIMO_MAIN)
|
||||
|
||||
# Final link of tinymountain
|
||||
cmd_link-tinymountain = $(CONFIG_SHELL) $< $(LD) $(LDFLAGS) $(LDFLAGS_tinymountain)
|
||||
cmd_link-tinymountain = $(CONFIG_SHELL) $< $(LD) $(LDFLAGS) $(LDFLAGS_tinymountain) $(LIB_INCLUDE_DIR)
|
||||
quiet_cmd_link-tinymountain = LINK $@
|
||||
|
||||
# Include targets which we want to
|
||||
|
|
13
scripts/Makefile.toolchain.xtools
Normal file
13
scripts/Makefile.toolchain.xtools
Normal file
|
@ -0,0 +1,13 @@
|
|||
|
||||
CROSS_COMPILE_TARGET_arm = arm-none-eabi
|
||||
CROSS_COMPILE_arm_version = 4.9.2
|
||||
CROSS_COMPILE_arm=${XTOOLS_TOOLCHAIN_PATH}/${CROSS_COMPILE_TARGET_arm}/bin/${CROSS_COMPILE_TARGET_arm}-
|
||||
|
||||
|
||||
CROSS_COMPILE_TARGET_x86 = i586-pc-elf
|
||||
CROSS_COMPILE_x86_version = 4.9.2
|
||||
CROSS_COMPILE_x86=${XTOOLS_TOOLCHAIN_PATH}/${CROSS_COMPILE_TARGET_x86}/bin/${CROSS_COMPILE_TARGET_x86}-
|
||||
|
||||
CROSS_COMPILE= $(CROSS_COMPILE_$(ARCH))
|
||||
|
||||
export CROSS_COMPILE
|
27
scripts/Makefile.toolchain.yocto
Normal file
27
scripts/Makefile.toolchain.yocto
Normal file
|
@ -0,0 +1,27 @@
|
|||
# arm
|
||||
CROSS_COMPILE_TARGET_arm = arm-poky-eabi
|
||||
CROSS_COMPILE_arm_version = 4.9.2
|
||||
CROSS_COMPILE_arm=${YOCTO_SDK_INSTALL_DIR}/sysroots/i686-pokysdk-linux/usr/bin/$(CROSS_COMPILE_TARGET_arm)/$(CROSS_COMPILE_TARGET_arm)-
|
||||
|
||||
LIB_INCLUDE_DIR_x86 = -L ${YOCTO_SDK_INSTALL_DIR}/sysroots/i586-poky-elf/usr/lib/i586-poky-elf/4.9.2
|
||||
|
||||
|
||||
# x86
|
||||
CROSS_COMPILE_TARGET_x86 = i586-poky-elf
|
||||
CROSS_COMPILE_x86_version = 4.9.2
|
||||
CROSS_COMPILE_x86=${YOCTO_SDK_INSTALL_DIR}/sysroots/i686-pokysdk-linux/usr/bin/$(CROSS_COMPILE_TARGET_x86)/$(CROSS_COMPILE_TARGET_x86)-
|
||||
|
||||
LIB_INCLUDE_DIR_arm = -L ${YOCTO_SDK_INSTALL_DIR}/sysroots/armv5e-poky-eabi/usr/lib/arm-poky-eabi/4.9.2
|
||||
|
||||
# arc
|
||||
CROSS_COMPILE_TARGET_arc = arc-poky-elf
|
||||
CROSS_COMPILE_arc_version = 4.8.3
|
||||
CROSS_COMPILE_arc=${YOCTO_SDK_INSTALL_DIR}/sysroots/i686-pokysdk-linux/usr/bin/$(CROSS_COMPILE_TARGET_x86)/$(CROSS_COMPILE_TARGET_x86)-
|
||||
|
||||
LIB_INCLUDE_DIR_arm = -L ${YOCTO_SDK_INSTALL_DIR}/sysroots/arc-poky-elf/usr/lib/arc-poky-elf/$(CROSS_COMPILE_arc_version)
|
||||
|
||||
|
||||
CROSS_COMPILE= $(CROSS_COMPILE_$(ARCH))
|
||||
LIB_INCLUDE_DIR = $(LIB_INCLUDE_DIR_$(ARCH))
|
||||
|
||||
export LIB_INCLUDE_DIR CROSS_COMPILE
|
|
@ -46,7 +46,8 @@ linker_params()
|
|||
echo "-Wl,-Map,./${2}" >> ${1}
|
||||
echo "-L ${objtree}/include/generated" >> ${1}
|
||||
echo "-u _OffsetAbsSyms -u _ConfigAbsSyms" >> ${1}
|
||||
echo "-Wl,--start-group ${KBUILD_TIMO_MAIN} -lgcc" >> ${1}
|
||||
echo "-Wl,--start-group ${KBUILD_TIMO_MAIN}" >> ${1}
|
||||
echo "${LIB_INCLUDE_DIR} -lgcc" >> ${1}
|
||||
echo "${objtree}/include/generated/offsets.o" >> ${1}
|
||||
}
|
||||
|
||||
|
|
|
@ -265,14 +265,19 @@ proj_info_set() {
|
|||
|
||||
if [ ${bsp2use} = "pentium4" ] ; then
|
||||
BSP_INFO[${NUM_PROJ}]="BSP=generic_pc BSP_VARIANT=pentium4"
|
||||
BSP[${NUM_PROJ}]=generic_pc
|
||||
elif [ ${bsp2use} = "minuteia" ] ; then
|
||||
BSP_INFO[${NUM_PROJ}]="BSP=generic_pc BSP_VARIANT=minuteia"
|
||||
BSP[${NUM_PROJ}]=generic_pc
|
||||
elif [ ${bsp2use} = "atom" ] ; then
|
||||
BSP_INFO[${NUM_PROJ}]="BSP=generic_pc BSP_VARIANT=atom_n28xx"
|
||||
BSP[${NUM_PROJ}]=generic_pc
|
||||
elif [ ${bsp2use} = "quark" ] ; then
|
||||
BSP_INFO[${NUM_PROJ}]="BSP=quark"
|
||||
BSP[${NUM_PROJ}]=quark
|
||||
else
|
||||
BSP_INFO[${NUM_PROJ}]="BSP=${bsp2use}"
|
||||
BSP[${NUM_PROJ}]=${bsp2use}
|
||||
fi
|
||||
|
||||
BSP_FLAG[${NUM_PROJ}]=`${AWK} '/!/ {print "!"}' <<< ${line}`
|
||||
|
@ -334,7 +339,16 @@ build_project() {
|
|||
${MAKE} distclean
|
||||
[ $? -eq 0 ] || fail_exit $? $FUNCNAME $LINENO
|
||||
|
||||
${MAKE} ARCH=${ARCH_NAME} ${BUILD_INFO} ${PRJ_ARGS[$1]} ${BSP_INFO[$1]}
|
||||
if [[ $arm_BSP_LIST == *"${BSP[$1]}"* ]]; then
|
||||
arch=arm
|
||||
else
|
||||
arch=x86
|
||||
fi
|
||||
if [ ! -z ${ARCH_NAME} ]; then
|
||||
arch=${ARCH_NAME}
|
||||
fi
|
||||
|
||||
${MAKE} ARCH=${arch} ${BUILD_INFO} ${PRJ_ARGS[$1]} ${BSP_INFO[$1]}
|
||||
[ $? -eq 0 ] || fail_exit $? $FUNCNAME $LINENO
|
||||
|
||||
if [ x$2 == x ] ; then
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue