Patchwork [2/2] buildroot: target: Add Blackfin architecture support.

login
register
mail settings
Submitter Sonic Zhang
Date March 21, 2013, 6:38 a.m.
Message ID <1363847908-5662-2-git-send-email-sonic.adi@gmail.com>
Download mbox | patch
Permalink /patch/229572/
State Changes Requested
Headers show

Comments

Sonic Zhang - March 21, 2013, 6:38 a.m.
From: Sonic Zhang <sonic.zhang@analog.com>

- Create blackfin architecture makefile.
- Add blackfin target ABI options.
- Add blackfin cpu options and shared library installation options.
- Add blackfin cpu revision options and mcpu link flags
- Add blackfin FLAT specific makefile flags.
- Add shared library installation options and makefile targets to
install shared libraries into rootfs image.
- Copy extra blackfin toolchain FDPIC shared libraries to target fs

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
---
 Makefile              |    2 +
 arch/Config.in.bfin   |  117 +++++++++++++++++++++++++++++++++++++++++++++++++
 arch/Makefile.in.bfin |   50 +++++++++++++++++++++
 3 files changed, 169 insertions(+), 0 deletions(-)
 create mode 100644 arch/Makefile.in.bfin
Thomas De Schampheleire - March 22, 2013, 8:42 a.m.
Hi Sonic,

On Thu, Mar 21, 2013 at 7:38 AM, Sonic Zhang <sonic.adi@gmail.com> wrote:

> From: Sonic Zhang <sonic.zhang@analog.com>
>
> - Create blackfin architecture makefile.
> - Add blackfin target ABI options.
> - Add blackfin cpu options and shared library installation options.
> - Add blackfin cpu revision options and mcpu link flags
> - Add blackfin FLAT specific makefile flags.
> - Add shared library installation options and makefile targets to
> install shared libraries into rootfs image.
> - Copy extra blackfin toolchain FDPIC shared libraries to target fs
>
> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
> ---
>  Makefile              |    2 +
>  arch/Config.in.bfin   |  117
> +++++++++++++++++++++++++++++++++++++++++++++++++
>  arch/Makefile.in.bfin |   50 +++++++++++++++++++++
>  3 files changed, 169 insertions(+), 0 deletions(-)
>  create mode 100644 arch/Makefile.in.bfin
>

I can't give good technical feedback on this patch, but if you're making a
v2 anyway, there are some small comments below.


>
> diff --git a/Makefile b/Makefile
> index 7f0822f..32478e6 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -329,6 +329,8 @@ ifneq ($(PACKAGE_OVERRIDE_FILE),)
>  -include $(PACKAGE_OVERRIDE_FILE)
>  endif
>
> +include arch/Makefile.in.*
> +
>  include package/*/*.mk
>
>  include boot/common.mk
> diff --git a/arch/Config.in.bfin b/arch/Config.in.bfin
> index 0b137ae..0750b86 100644
> --- a/arch/Config.in.bfin
> +++ b/arch/Config.in.bfin
> @@ -7,10 +7,127 @@ config BR2_BFIN_FDPIC
>  config BR2_BFIN_FLAT
>         bool "FLAT"
>         select BR2_PREFER_STATIC_LIB
> +config BR2_BFIN_FLAT_SEP_DATA
> +       bool "FLAT (Separate data)"
> +       select BR2_PREFER_STATIC_LIB
> +config BR2_BFIN_SHARED_FLAT
> +       bool "Shared FLAT"
> +       select BR2_PREFER_STATIC_LIB
> +endchoice
> +
> +choice
> +       prompt "Target CPU"
> +       depends on BR2_bfin
> +       default BR2_bf609
> +       help
> +         Specify target CPU
> +config BR2_bf606
> +       bool "bf606"
> +config BR2_bf607
> +       bool "bf607"
> +config BR2_bf608
> +       bool "bf608"
> +config BR2_bf609
> +       bool "bf609"
> +config BR2_bf512
> +       bool "bf512"
> +config BR2_bf514
> +       bool "bf514"
> +config BR2_bf516
> +       bool "bf516"
> +config BR2_bf518
> +       bool "bf518"
> +config BR2_bf522
> +       bool "bf522"
> +config BR2_bf523
> +       bool "bf523"
> +config BR2_bf524
> +       bool "bf524"
> +config BR2_bf525
> +       bool "bf525"
> +config BR2_bf526
> +       bool "bf526"
> +config BR2_bf527
> +       bool "bf527"
> +config BR2_bf531
> +       bool "bf531"
> +config BR2_bf532
> +       bool "bf532"
> +config BR2_bf533
> +       bool "bf533"
> +config BR2_bf534
> +       bool "bf534"
> +config BR2_bf536
> +       bool "bf536"
> +config BR2_bf537
> +       bool "bf537"
> +config BR2_bf538
> +       bool "bf538"
> +config BR2_bf539
> +       bool "bf539"
> +config BR2_bf542
> +       bool "bf542"
> +config BR2_bf544
> +       bool "bf544"
> +config BR2_bf547
> +       bool "bf547"
> +config BR2_bf548
> +       bool "bf548"
> +config BR2_bf549
> +       bool "bf549"
> +config BR2_bf561
> +       bool "bf561"
>  endchoice
>
> +config BR2_TARGET_CPU_REVISION
> +       string "Target CPU revision"
> +
> +config BR2_BFIN_INSTALL_ELF_SHARED
> +       depends on BR2_bfin && !BR2_BFIN_FDPIC
> +       bool "Install ELF shared libraries"
> +       default y
> +
> +config BR2_BFIN_INSTALL_FLAT_SHARED
> +       depends on BR2_bfin
> +       bool "Install FLAT shared libraries" if !BR2_BFIN_SHARED_FLAT
> +       default y
> +
>  config BR2_ARCH
>         default "bfin"
>
>  config BR2_ENDIAN
>          default "LITTLE"
> +
> +config BR2_GCC_TARGET_CPU
> +       default bf606           if BR2_bf606
> +       default bf607           if BR2_bf607
> +       default bf608           if BR2_bf608
> +       default bf609           if BR2_bf609
> +       default bf512           if BR2_bf512
> +       default bf514           if BR2_bf514
> +       default bf516           if BR2_bf516
> +       default bf518           if BR2_bf518
> +       default bf522           if BR2_bf522
> +       default bf523           if BR2_bf523
> +       default bf524           if BR2_bf524
> +       default bf525           if BR2_bf525
> +       default bf526           if BR2_bf526
> +       default bf527           if BR2_bf527
> +       default bf531           if BR2_bf531
> +       default bf532           if BR2_bf532
> +       default bf533           if BR2_bf533
> +       default bf534           if BR2_bf534
> +       default bf536           if BR2_bf536
> +       default bf537           if BR2_bf537
> +       default bf538           if BR2_bf538
> +       default bf539           if BR2_bf539
> +       default bf542           if BR2_bf542
> +       default bf544           if BR2_bf544
> +       default bf547           if BR2_bf547
> +       default bf548           if BR2_bf548
> +       default bf549           if BR2_bf549
> +       default bf561           if BR2_bf561
> +
> +config BR2_TARGET_ABI_FLAT
> +       default n               if BR2_BFIN_FDPIC
> +       default y
> diff --git a/arch/Makefile.in.bfin b/arch/Makefile.in.bfin
> new file mode 100644
> index 0000000..cef9374
> --- /dev/null
> +++ b/arch/Makefile.in.bfin
> @@ -0,0 +1,50 @@
> +TARGETS-y =
> +TARGETS-$(BR2_BFIN_INSTALL_ELF_SHARED) += romfs.shared.libs.elf
> +TARGETS-$(BR2_BFIN_INSTALL_FLAT_SHARED) += romfs.shared.libs.flat
> +TARGETS += $(TARGETS-y)
> +
> +ifeq ($(BR2_BFIN_FDPIC),y)
> +USR_LIB_EXTERNAL_LIBS+=libgfortran.so libgomp.so libmudflap.so
> libmudflapth.so libobjc.so
> +endif
> +
>

We generally put spaces around variable assignments, as you did in most
places, but not here.


> +CROSS_COMPILE_SHARED_ELF ?= bfin-linux-uclibc-
> +romfs.shared.libs.elf:
> +       set -e; \
> +       t=`$(CROSS_COMPILE_SHARED_ELF)gcc $(CPUFLAGS)
> -print-file-name=libc.a`; \
> +       t=`dirname $$t`/../..; \
> +       for i in $$t/lib/*so*; do \
> +               i=`readlink -f "$$i"`; \
> +               soname=`$(CROSS_COMPILE_SHARED_ELF)readelf -d "$$i" | sed
> -n '/(SONAME)/s:.*[[]\(.*\)[]].*:\1:p'`; \
> +               $(INSTALL) -D $$i $(TARGET_DIR)/lib/$$soname; \
> +       done
> +
> +CROSS_COMPILE_SHARED_FLAT ?= bfin-uclinux-
> +romfs.shared.libs.flat:
> +       set -e; \
> +       t=`$(CROSS_COMPILE_SHARED_FLAT)gcc $(CPUFLAGS) -mid-shared-library
> -print-file-name=libc`; \
> +       if [ -f $$t -a ! -h $$t ] ; then \
> +               $(INSTALL) -D $$t $(TARGET_DIR)/lib/lib1.so; \
> +       fi
> +
> +ifeq ($(BR2_TARGET_CPU_REVISION),)
> +TARGET_CPU=-mcpu=$(BR2_GCC_TARGET_CPU)
> +else
> +TARGET_CPU=-mcpu=$(BR2_GCC_TARGET_CPU)-$(BR2_TARGET_CPU_REVISION)
> +endif
>

Same here (x2)


> +TARGET_CFLAGS += $(call qstrip,$(TARGET_CPU))
> +
> +ifneq ($(BR2_USE_MMU), y)
> +TARGET_CFLAGS += -D__uClinux__
> +endif
> +
> +ifeq ($(BR2_BFIN_FLAT_SEP_DATA),y)
> +TARGET_LDFLAGS += -msep-data
> +TARGET_CFLAGS += -msep-data
> +TARGET_CXXFLAGS += -msep-data
> +endif
> +
> +ifeq ($(BR2_BFIN_SHARED_FLAT), y)
> +TARGET_LDFLAGS += -mid-shared-library -mshared-library-id=0
> +TARGET_CFLAGS += -mid-shared-library -mshared-library-id=0
> +TARGET_CXXFLAGS += -mid-shared-library -mshared-library-id=0
> +endif
> --
> 1.7.0.4
>
>
>
Best regards,
Thomas

Patch

diff --git a/Makefile b/Makefile
index 7f0822f..32478e6 100644
--- a/Makefile
+++ b/Makefile
@@ -329,6 +329,8 @@  ifneq ($(PACKAGE_OVERRIDE_FILE),)
 -include $(PACKAGE_OVERRIDE_FILE)
 endif
 
+include arch/Makefile.in.*
+
 include package/*/*.mk
 
 include boot/common.mk
diff --git a/arch/Config.in.bfin b/arch/Config.in.bfin
index 0b137ae..0750b86 100644
--- a/arch/Config.in.bfin
+++ b/arch/Config.in.bfin
@@ -7,10 +7,127 @@  config BR2_BFIN_FDPIC
 config BR2_BFIN_FLAT
 	bool "FLAT"
 	select BR2_PREFER_STATIC_LIB
+config BR2_BFIN_FLAT_SEP_DATA
+	bool "FLAT (Separate data)"
+	select BR2_PREFER_STATIC_LIB
+config BR2_BFIN_SHARED_FLAT
+	bool "Shared FLAT"
+	select BR2_PREFER_STATIC_LIB
+endchoice
+
+choice
+	prompt "Target CPU"
+	depends on BR2_bfin
+	default BR2_bf609
+	help
+	  Specify target CPU
+config BR2_bf606
+	bool "bf606"
+config BR2_bf607
+	bool "bf607"
+config BR2_bf608
+	bool "bf608"
+config BR2_bf609
+	bool "bf609"
+config BR2_bf512
+	bool "bf512"
+config BR2_bf514
+	bool "bf514"
+config BR2_bf516
+	bool "bf516"
+config BR2_bf518
+	bool "bf518"
+config BR2_bf522
+	bool "bf522"
+config BR2_bf523
+	bool "bf523"
+config BR2_bf524
+	bool "bf524"
+config BR2_bf525
+	bool "bf525"
+config BR2_bf526
+	bool "bf526"
+config BR2_bf527
+	bool "bf527"
+config BR2_bf531
+	bool "bf531"
+config BR2_bf532
+	bool "bf532"
+config BR2_bf533
+	bool "bf533"
+config BR2_bf534
+	bool "bf534"
+config BR2_bf536
+	bool "bf536"
+config BR2_bf537
+	bool "bf537"
+config BR2_bf538
+	bool "bf538"
+config BR2_bf539
+	bool "bf539"
+config BR2_bf542
+	bool "bf542"
+config BR2_bf544
+	bool "bf544"
+config BR2_bf547
+	bool "bf547"
+config BR2_bf548
+	bool "bf548"
+config BR2_bf549
+	bool "bf549"
+config BR2_bf561
+	bool "bf561"
 endchoice
 
+config BR2_TARGET_CPU_REVISION
+	string "Target CPU revision"
+
+config BR2_BFIN_INSTALL_ELF_SHARED
+	depends on BR2_bfin && !BR2_BFIN_FDPIC
+	bool "Install ELF shared libraries"
+	default y
+
+config BR2_BFIN_INSTALL_FLAT_SHARED
+	depends on BR2_bfin
+	bool "Install FLAT shared libraries" if !BR2_BFIN_SHARED_FLAT
+	default y
+
 config BR2_ARCH
 	default "bfin"
 
 config BR2_ENDIAN
         default "LITTLE"
+
+config BR2_GCC_TARGET_CPU
+	default bf606		if BR2_bf606
+	default bf607		if BR2_bf607
+	default bf608		if BR2_bf608
+	default bf609		if BR2_bf609
+	default bf512		if BR2_bf512
+	default bf514		if BR2_bf514
+	default bf516		if BR2_bf516
+	default bf518		if BR2_bf518
+	default bf522		if BR2_bf522
+	default bf523		if BR2_bf523
+	default bf524		if BR2_bf524
+	default bf525		if BR2_bf525
+	default bf526		if BR2_bf526
+	default bf527		if BR2_bf527
+	default bf531		if BR2_bf531
+	default bf532		if BR2_bf532
+	default bf533		if BR2_bf533
+	default bf534		if BR2_bf534
+	default bf536		if BR2_bf536
+	default bf537		if BR2_bf537
+	default bf538		if BR2_bf538
+	default bf539		if BR2_bf539
+	default bf542		if BR2_bf542
+	default bf544		if BR2_bf544
+	default bf547		if BR2_bf547
+	default bf548		if BR2_bf548
+	default bf549		if BR2_bf549
+	default bf561		if BR2_bf561
+
+config BR2_TARGET_ABI_FLAT
+	default n		if BR2_BFIN_FDPIC
+	default y
diff --git a/arch/Makefile.in.bfin b/arch/Makefile.in.bfin
new file mode 100644
index 0000000..cef9374
--- /dev/null
+++ b/arch/Makefile.in.bfin
@@ -0,0 +1,50 @@ 
+TARGETS-y =
+TARGETS-$(BR2_BFIN_INSTALL_ELF_SHARED) += romfs.shared.libs.elf
+TARGETS-$(BR2_BFIN_INSTALL_FLAT_SHARED) += romfs.shared.libs.flat
+TARGETS += $(TARGETS-y)
+
+ifeq ($(BR2_BFIN_FDPIC),y)
+USR_LIB_EXTERNAL_LIBS+=libgfortran.so libgomp.so libmudflap.so libmudflapth.so libobjc.so
+endif
+
+CROSS_COMPILE_SHARED_ELF ?= bfin-linux-uclibc-
+romfs.shared.libs.elf:
+	set -e; \
+	t=`$(CROSS_COMPILE_SHARED_ELF)gcc $(CPUFLAGS) -print-file-name=libc.a`; \
+	t=`dirname $$t`/../..; \
+	for i in $$t/lib/*so*; do \
+		i=`readlink -f "$$i"`; \
+		soname=`$(CROSS_COMPILE_SHARED_ELF)readelf -d "$$i" | sed -n '/(SONAME)/s:.*[[]\(.*\)[]].*:\1:p'`; \
+		$(INSTALL) -D $$i $(TARGET_DIR)/lib/$$soname; \
+	done
+
+CROSS_COMPILE_SHARED_FLAT ?= bfin-uclinux-
+romfs.shared.libs.flat:
+	set -e; \
+	t=`$(CROSS_COMPILE_SHARED_FLAT)gcc $(CPUFLAGS) -mid-shared-library -print-file-name=libc`; \
+	if [ -f $$t -a ! -h $$t ] ; then \
+		$(INSTALL) -D $$t $(TARGET_DIR)/lib/lib1.so; \
+	fi
+
+ifeq ($(BR2_TARGET_CPU_REVISION),)
+TARGET_CPU=-mcpu=$(BR2_GCC_TARGET_CPU)
+else
+TARGET_CPU=-mcpu=$(BR2_GCC_TARGET_CPU)-$(BR2_TARGET_CPU_REVISION)
+endif
+TARGET_CFLAGS += $(call qstrip,$(TARGET_CPU))
+
+ifneq ($(BR2_USE_MMU), y)
+TARGET_CFLAGS += -D__uClinux__
+endif
+
+ifeq ($(BR2_BFIN_FLAT_SEP_DATA),y)
+TARGET_LDFLAGS += -msep-data
+TARGET_CFLAGS += -msep-data
+TARGET_CXXFLAGS += -msep-data
+endif
+
+ifeq ($(BR2_BFIN_SHARED_FLAT), y)
+TARGET_LDFLAGS += -mid-shared-library -mshared-library-id=0
+TARGET_CFLAGS += -mid-shared-library -mshared-library-id=0
+TARGET_CXXFLAGS += -mid-shared-library -mshared-library-id=0
+endif