summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2017-12-31 18:45:06 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2017-12-31 18:45:48 +0100
commitf855b1d7bfdc36a65703fdf9a638ad016c409bbe (patch)
tree3fcedec43e1387c1410add7f3e5f3e958050e010
parent1c7ad1a115614a32ac299a9ad5341a9b4157e47b (diff)
add basic zephyr experiments, add xtensa newlib support
-rw-r--r--mk/build.mk3
-rw-r--r--mk/vars.mk2
-rwxr-xr-xscripts/create-menu2
-rw-r--r--target/Makefile12
-rw-r--r--target/config/Config.in.libc13
-rw-r--r--target/config/Config.in.os5
-rw-r--r--target/zephyr/Config.in0
-rw-r--r--target/zephyr/Makefile33
-rw-r--r--target/zephyr/arch.lst4
-rw-r--r--toolchain/newlib/Makefile.inc7
-rw-r--r--toolchain/newlib/patches/newlib-xtensa/fix-tooldir.patch12
11 files changed, 90 insertions, 3 deletions
diff --git a/mk/build.mk b/mk/build.mk
index 4840ab66d..fc293bcfa 100644
--- a/mk/build.mk
+++ b/mk/build.mk
@@ -177,6 +177,9 @@ endif
ifeq ($(ADK_TARGET_OS_FROSTED),y)
$(MAKE) -f mk/build.mk package/hostcompile toolchain/final target/config-prepare target/compile target/install target/targethelp
endif
+ifeq ($(ADK_TARGET_OS_ZEPHYR),y)
+ $(MAKE) -f mk/build.mk package/hostcompile toolchain/final target/config-prepare target/compile target/install target/targethelp
+endif
ifeq ($(ADK_TARGET_OS_LINUX),y)
$(MAKE) -f mk/build.mk package/hostcompile toolchain/final target/config-prepare target/compile package_clean package/compile root_clean package/install target/install package_index
endif
diff --git a/mk/vars.mk b/mk/vars.mk
index bd4b2442a..ad0e56206 100644
--- a/mk/vars.mk
+++ b/mk/vars.mk
@@ -238,10 +238,12 @@ endif
# special architecture optimization flags
ifeq ($(ADK_TARGET_ARCH_XTENSA),y)
ifeq ($(ADK_TARGET_BIG_ENDIAN),)
+ifeq ($(ADK_TARGET_LIB_NEWLIB),)
TARGET_CFLAGS+= -mlongcalls -mauto-litpools
TARGET_CXXFLAGS+= -mlongcalls -mauto-litpools
endif
endif
+endif
ifeq ($(ADK_TARGET_ARCH_MICROBLAZE),y)
TARGET_CFLAGS+= -mxl-barrel-shift
TARGET_CXXFLAGS+= -mxl-barrel-shift
diff --git a/scripts/create-menu b/scripts/create-menu
index f087300b6..f4b7184b5 100755
--- a/scripts/create-menu
+++ b/scripts/create-menu
@@ -98,7 +98,7 @@ config ADK_TARGET_CHOOSE_ARCH
bool "choose architecture"
EOD
-for os in linux frosted baremetal; do
+for os in linux frosted zephyr baremetal; do
for arch in $(cat $topdir/target/$os/arch.lst);do
OS=$(echo $os | tr '[:lower:]' '[:upper:]')
ARCH=$(echo $arch | tr '[:lower:]' '[:upper:]')
diff --git a/target/Makefile b/target/Makefile
index 99e0fff14..9882e4d84 100644
--- a/target/Makefile
+++ b/target/Makefile
@@ -140,6 +140,11 @@ config-prepare: $(ADK_TOPDIR)/.config
>$(BUILD_DIR)/.frostedapps
endif
+ifeq ($(ADK_TARGET_OS_ZEPHYR),y)
+config-prepare: $(ADK_TOPDIR)/.config
+ echo foo
+endif
+
ifeq ($(ADK_TARGET_OS_FROSTED),y)
prepare: frosted-prepare
compile: frosted-compile
@@ -147,6 +152,13 @@ install: frosted-install
targethelp: frosted-targethelp
endif
+ifeq ($(ADK_TARGET_OS_ZEPHYR),y)
+prepare: zephyr-prepare
+compile: zephyr-compile
+install: zephyr-install
+targethelp: zephyr-targethelp
+endif
+
ifeq ($(ADK_TARGET_OS_LINUX),y)
prepare: $(ADK_TARGET_ARCH)-prepare
compile: $(ADK_TARGET_ARCH)-compile
diff --git a/target/config/Config.in.libc b/target/config/Config.in.libc
index 76c36e044..91ce9f091 100644
--- a/target/config/Config.in.libc
+++ b/target/config/Config.in.libc
@@ -127,7 +127,9 @@ config ADK_TARGET_LIB_NEWLIB
ADK_TARGET_ARCH_X86 || \
ADK_TARGET_ARCH_X86_64 || \
ADK_TARGET_ARCH_XTENSA) && \
- (ADK_TARGET_OS_BAREMETAL || ADK_TARGET_OS_FROSTED)
+ (ADK_TARGET_OS_BAREMETAL || \
+ ADK_TARGET_OS_FROSTED || \
+ ADK_TARGET_OS_ZEPHYR )
help
https://sourceware.org/newlib/
@@ -166,12 +168,19 @@ config ADK_TARGET_LIB_MUSL_GIT
config ADK_TARGET_LIB_NEWLIB_2_5_0
bool "2.5.0"
- depends on ADK_TARGET_LIB_NEWLIB && !ADK_TARGET_ARCH_RISCV && !ADK_TARGET_OS_FROSTED
+ depends on ADK_TARGET_LIB_NEWLIB \
+ && !ADK_TARGET_ARCH_RISCV \
+ && !ADK_TARGET_ARCH_XTENSA \
+ && !ADK_TARGET_OS_FROSTED
config ADK_TARGET_LIB_NEWLIB_RISCV
bool "2.4.0-riscv"
depends on ADK_TARGET_LIB_NEWLIB && ADK_TARGET_ARCH_RISCV
+config ADK_TARGET_LIB_NEWLIB_XTENSA
+ bool "xtensa"
+ depends on ADK_TARGET_LIB_NEWLIB && ADK_TARGET_ARCH_XTENSA
+
config ADK_TARGET_LIB_NEWLIB_FROSTED
bool "frosted-git"
depends on ADK_TARGET_LIB_NEWLIB && ADK_TARGET_OS_FROSTED
diff --git a/target/config/Config.in.os b/target/config/Config.in.os
index 2eb420e14..6d77dfa4b 100644
--- a/target/config/Config.in.os
+++ b/target/config/Config.in.os
@@ -14,6 +14,11 @@ config ADK_TARGET_OS_FROSTED
help
Create a frosted appliance or toolchain.
+config ADK_TARGET_OS_ZEPHYR
+ bool "Zephyr"
+ help
+ Create a zephyr appliance or toolchain.
+
config ADK_TARGET_OS_BAREMETAL
bool "Bare metal"
help
diff --git a/target/zephyr/Config.in b/target/zephyr/Config.in
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/target/zephyr/Config.in
diff --git a/target/zephyr/Makefile b/target/zephyr/Makefile
new file mode 100644
index 000000000..2f937225c
--- /dev/null
+++ b/target/zephyr/Makefile
@@ -0,0 +1,33 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+prepare:
+ if [ ! -d $(BUILD_DIR)/zephyr ]; then \
+ cd $(BUILD_DIR) ;\
+ git clone https://github.com/zephyrproject-rtos/zephyr.git ;\
+ fi
+ if [ ! -d $(BUILD_DIR)/zephyr-kconfig ]; then \
+ mkdir $(BUILD_DIR)/zephyr-kconfig ;\
+ fi
+ cd $(BUILD_DIR)/zephyr-kconfig && \
+ PATH='$(HOST_PATH)' cmake $(BUILD_DIR)/zephyr/scripts && \
+ make
+ source $(BUILD_DIR)/zephyr/zephyr-env.sh
+
+compile:
+ export GCCXTENSA_TOOLCHAIN_PATH="$(TOOLCHAIN_DIR)"
+ export ZEPHYR_GCC_VARIANT=gccxtensa
+ if [ ! -d $(BUILD_DIR)/zephyr/samples/hello_world/build ]; then \
+ mkdir $(BUILD_DIR)/zephyr/samples/hello_world/build ;\
+ fi
+ cd $(BUILD_DIR)/zephyr/samples/hello_world/build && \
+ cmake -DBOARD=qemu_xtensa .. && \
+ make
+
+install:
+
+targethelp:
+
+clean:
diff --git a/target/zephyr/arch.lst b/target/zephyr/arch.lst
new file mode 100644
index 000000000..951bee724
--- /dev/null
+++ b/target/zephyr/arch.lst
@@ -0,0 +1,4 @@
+arc
+arm
+x86_64
+xtensa
diff --git a/toolchain/newlib/Makefile.inc b/toolchain/newlib/Makefile.inc
index 31622c2b8..ca97e5660 100644
--- a/toolchain/newlib/Makefile.inc
+++ b/toolchain/newlib/Makefile.inc
@@ -22,6 +22,13 @@ PKG_RELEASE:= 1
PKG_SITES:= https://github.com/riscv/riscv-newlib.git
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
endif
+ifeq ($(ADK_TARGET_LIB_NEWLIB_XTENSA),y)
+PKG_VERSION:= xtensa
+PKG_GIT:= branch
+PKG_RELEASE:= 1
+PKG_SITES:= https://github.com/jcmvbkbc/newlib-xtensa.git
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+endif
ifeq ($(ADK_TARGET_LIB_NEWLIB_FROSTED),y)
PKG_VERSION:= frosted
PKG_GIT:= branch
diff --git a/toolchain/newlib/patches/newlib-xtensa/fix-tooldir.patch b/toolchain/newlib/patches/newlib-xtensa/fix-tooldir.patch
new file mode 100644
index 000000000..1ad0f373d
--- /dev/null
+++ b/toolchain/newlib/patches/newlib-xtensa/fix-tooldir.patch
@@ -0,0 +1,12 @@
+diff -Nur newlib-xtensa.orig/configure newlib-xtensa/configure
+--- newlib-xtensa.orig/configure 2017-12-29 15:26:12.000000000 +0100
++++ newlib-xtensa/configure 2017-12-29 15:35:01.420208845 +0100
+@@ -6847,7 +6847,7 @@
+
+ # Some systems (e.g., one of the i386-aix systems the gas testers are
+ # using) don't handle "\$" correctly, so don't use it here.
+-tooldir='${exec_prefix}'/${target_noncanonical}
++tooldir='${exec_prefix}'
+ build_tooldir=${tooldir}
+
+ # Create a .gdbinit file which runs the one in srcdir