aboutsummaryrefslogtreecommitdiffstats
path: root/meta-zephyr-core/classes/zephyr.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta-zephyr-core/classes/zephyr.bbclass')
-rw-r--r--meta-zephyr-core/classes/zephyr.bbclass55
1 files changed, 55 insertions, 0 deletions
diff --git a/meta-zephyr-core/classes/zephyr.bbclass b/meta-zephyr-core/classes/zephyr.bbclass
new file mode 100644
index 0000000..e1d3185
--- /dev/null
+++ b/meta-zephyr-core/classes/zephyr.bbclass
@@ -0,0 +1,55 @@
+inherit terminal
+
+OE_TERMINAL_EXPORTS += "HOST_EXTRACFLAGS HOSTLDFLAGS TERMINFO CROSS_CURSES_LIB CROSS_CURSES_INC"
+HOST_EXTRACFLAGS = "${BUILD_CFLAGS} ${BUILD_LDFLAGS}"
+HOSTLDFLAGS = "${BUILD_LDFLAGS}"
+CROSS_CURSES_LIB = "-lncurses -ltinfo"
+CROSS_CURSES_INC = '-DCURSES_LOC="<curses.h>"'
+TERMINFO = "${STAGING_DATADIR_NATIVE}/terminfo"
+
+KCONFIG_CONFIG_COMMAND ??= "menuconfig"
+ZEPHYR_BOARD ?= "${MACHINE}"
+
+# qemuboot writes into IMGDEPLOYDIR, force to write to DEPLOY_DIR_IMAGE
+IMGDEPLOYDIR = "${DEPLOY_DIR_IMAGE}"
+
+python () {
+ # Translate MACHINE into Zephyr BOARD
+ # Zephyr BOARD is basically our MACHINE, except we must use "-" instead of "_"
+ board = d.getVar('ZEPHYR_BOARD', True)
+ board = board.replace('-', '_')
+ d.setVar('BOARD',board)
+}
+
+python do_menuconfig() {
+ os.chdir(d.getVar('ZEPHYR_SRC_DIR', True))
+ configdir = d.getVar('ZEPHYR_SRC_DIR', True) + '/outdir/' + d.getVar('BOARD', True)
+ try:
+ mtime = os.path.getmtime(configdir +"/.config")
+ except OSError:
+ mtime = 0
+
+ oe_terminal("${SHELL} -c \"ZEPHYR_BASE=%s make BOARD=%s %s; if [ \$? -ne 0 ]; then echo 'Command failed.'; \
+ printf 'Press any key to continue... '; \
+ read r; fi\"" % (d.getVar('ZEPHYR_BASE', True), d.getVar('BOARD', True),d.getVar('KCONFIG_CONFIG_COMMAND', True)),
+ d.getVar('PN', True) + ' Configuration', d)
+
+ try:
+ newmtime = os.path.getmtime(configdir +"/.config")
+ except OSError:
+ newmtime = 0
+
+ if newmtime > mtime:
+ bb.warn("Configuration changed, recompile will be forced")
+ bb.build.write_taint('do_compile', d)
+}
+do_menuconfig[depends] += "ncurses-native:do_populate_sysroot"
+do_menuconfig[nostamp] = "1"
+do_menuconfig[dirs] = "${B}"
+addtask menuconfig after do_configure
+
+python do_devshell:prepend () {
+ # Most likely we need to manually edit prj.conf...
+ os.chdir(d.getVar('ZEPHYR_SRC_DIR', True))
+}
+