Procházet zdrojové kódy

add different arm architectures for toolchain building

Waldemar Brodkorb před 10 roky
rodič
revize
0b6ee788a6

+ 20 - 1
target/config/Config.in.arm.choice

@@ -1,6 +1,25 @@
 # This file is part of the OpenADK project. OpenADK is copyrighted
 # material, please see the LICENCE file in the top-level directory.
 
+choice ADK_TARGET_ARM_CPU_MODEL
+prompt "CPU model"
+depends on ADK_TARGET_TOOLCHAIN && ADK_LINUX_ARM
+default ADK_CPU_ARMV7
+
+config ADK_CPU_ARMV5TE
+        boolean "armv5te"
+        select ADK_armv5te
+
+config ADK_CPU_ARMV6
+        boolean "armv6"
+        select ADK_armv6
+
+config ADK_CPU_ARMV7A
+        boolean "armv7-a"
+        select ADK_armv7a
+
+endchoice
+
 choice
 prompt "Cubox-i model"
 depends on ADK_TARGET_SYSTEM_CUBOX_I
@@ -21,7 +40,7 @@ endchoice
 
 choice ADK_TARGET_ARM_FLOAT
 prompt "Target float type"
-depends on ADK_TARGET_CPU_WITH_FPU || ADK_TARGET_SYSTEM_QEMU_ARM
+depends on ADK_TARGET_CPU_WITH_FPU || ADK_TARGET_SYSTEM_QEMU_ARM || ADK_TARGET_TOOLCHAIN
 
 config ADK_TARGET_ARM_HARD_FLOAT
         boolean "Use hard-float for system with FPU"

+ 15 - 0
target/config/Config.in.arm.default

@@ -1,6 +1,21 @@
 # This file is part of the OpenADK project. OpenADK is copyrighted
 # material, please see the LICENCE file in the top-level directory.
 
+config ADK_armv5te
+	boolean
+
+config ADK_armv6
+	boolean
+
+config ADK_armv7a
+	boolean
+
+config ADK_TARGET_ARM_CPU
+	string
+	default "armv5te" if ADK_armv5te
+	default "armv6" if ADK_armv6
+	default "armv7-a" if ADK_armv7a
+
 config ADK_soft_float
 	boolean
 

+ 3 - 0
target/config/Config.in.target

@@ -30,6 +30,9 @@ config ADK_TARGET_CFLAGS
 	default "-march=armv6 -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard" if ADK_CPU_ARM1176JZF_S && ADK_hard_float
 	default "-march=armv7-a -mtune=cortex-a9 -mfloat-abi=soft" if ADK_CPU_CORTEX_A9 && ADK_soft_float
 	default "-march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard" if ADK_CPU_CORTEX_A9 && ADK_hard_float
+	default "-march=armv5te" if ADK_CPU_ARMV5TE
+	default "-march=armv6" if ADK_CPU_ARMV6
+	default "-march=armv7-a" if ADK_CPU_ARMV7A
 
 config ADK_TARGET_CMDLINE
 	string

+ 6 - 0
target/config/Config.in.toolchain

@@ -134,4 +134,10 @@ config ADK_TARGET_USE_STATIC_LIBS
 	  still requires libgcc_so.so.1 for pthread_cancel. Glibc also requires libnss_*.so libraries
 	  at runtime. Full static builds are only supported for musl libc.
 
+config ADK_STATIC_TOOLCHAIN
+	boolean "Build the toolchain components statically"
+	default n
+	help
+	  If you want to create more portable toolchains, build them static.
+
 endmenu

+ 1 - 1
target/config/Config.in.x86.choice

@@ -3,7 +3,7 @@
 
 choice ADK_TARGET_X86_CPU_MODEL
 prompt "CPU model"
-depends on ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_GENERIC_PC || ADK_TARGET_SYSTEM_VBOX_X86
+depends on (ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_GENERIC_PC || ADK_TARGET_SYSTEM_VBOX_X86 || ADK_TARGET_TOOLCHAIN) && ADK_LINUX_X86
 default ADK_CPU_I686
 
 config ADK_CPU_I486

+ 12 - 0
toolchain/gcc/Makefile

@@ -114,6 +114,18 @@ GCC_CONFOPTS+=		--with-fpu=$(ADK_TARGET_FPU)
 endif
 endif
 
+ifeq ($(ADK_CPU_ARMV5TE),y)
+GCC_CONFOPTS+=		--with-arch=armv5te
+endif
+
+ifeq ($(ADK_CPU_ARMV6),y)
+GCC_CONFOPTS+=		--with-arch=armv6
+endif
+
+ifeq ($(ADK_CPU_ARMV7A),y)
+GCC_CONFOPTS+=		--with-arch=armv7-a
+endif
+
 ifeq ($(ADK_CPU_ARM926EJ_S),y)
 GCC_CONFOPTS+=		--with-arch=armv5te --with-tune=arm926ej-s
 endif