Skip to content
Snippets Groups Projects
Unverified Commit 2b08ea35 authored by José Ignacio Alamos Aste's avatar José Ignacio Alamos Aste Committed by GitHub
Browse files

Merge pull request #8847 from danpetry/lua_initial

Lua support - initial PR
parents 9657274d 9621831e
No related branches found
No related tags found
No related merge requests found
APPLICATION = lua
# If no BOARD is found in the environment, use this default:
BOARD ?= native
# This has to be the absolute path to the RIOT base directory:
RIOTBASE ?= $(CURDIR)/../..
BOARD_INSUFFICIENT_MEMORY := bluepill calliope-mini cc2650-launchpad \
cc2650stk maple-mini microbit nrf51dongle \
nucleo-f030r8 nucleo-f031k6 nucleo-f042k6 \
nucleo-f070rb nucleo-f072rb nucleo-f103rb \
nucleo-f302r8 nucleo-f303k8 nucleo-f334r8 \
nucleo-f410rb nucleo-l031k6 nucleo-l053r8 \
opencm904 spark-core stm32f0discovery
BOARD_BLACKLIST := arduino-duemilanove arduino-mega2560 arduino-uno \
chronos jiminy-mega256rfr2 mega-xplained mips-malta \
msb-430 msb-430h pic32-clicker pic32-wifire telosb \
waspmote-pro wsn430-v1_3b wsn430-v1_4 z1
# Comment this out to disable code in RIOT that does safety checking
# which is not needed in a production environment but helps in the
# development process:
DEVELHELP ?= 1
# Change this to 0 show compiler invocation lines by default:
QUIET ?= 1
USEMODULE += ps
ifneq ($(BOARD),native)
# This stack size is large enough to run Lua print() functions of
# various lengths. Other functions untested.
CFLAGS += -DTHREAD_STACKSIZE_MAIN=4096
endif
USEPKG += lua
include $(RIOTBASE)/Makefile.include
# The code below generates a header file from any .lua scripts in the
# example directory. The header file contains a byte array of the
# ASCII characters in the .lua script.
LUA_PATH := $(BINDIR)/lua
# add directory of generated *.lua.h files to include path
CFLAGS += -I$(LUA_PATH)
# generate .lua.h header files of .lua files
LUA = $(wildcard *.lua)
LUA_H := $(LUA:%.lua=$(LUA_PATH)/%.lua.h)
$(LUA_PATH)/:
@mkdir -p $@
$(LUA_H): | $(LUA_PATH)/
$(LUA_H): $(LUA_PATH)/%.lua.h: %.lua
xxd -i $< | sed 's/^unsigned/const/g' > $@
$(RIOTBUILD_CONFIG_HEADER_C): $(LUA_H)
### About
This example shows how to write IoT applications using Lua.
### Caveats
Currently, the only actual function available is "print"
### How to use
Put your lua code into "main.lua" (check the example). The file will
be included in your application as an ASCII byte array. This is done in the
last 20 or so lines of the example's Makefile.
The script will then be run immediately after RIOT has started up.
### How to run
Type `make flash term`
Note: you may have to press `RESET` on the board (after the flash) if the board
reboots faster than the terminal program can start..
/*
* Copyright (C) 2018 FU Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup examples
* @{
*
* @file
* @brief Basic lua example application
*
* @author Daniel Petry <daniel.petry@fu-berlin.de>
*
* @}
*/
#include <stdio.h>
#include <errno.h>
#include "lauxlib.h"
#include "lualib.h"
#include "main.lua.h"
int lua_run_script(const char *buffer, size_t buffer_len)
{
lua_State *L = luaL_newstate();
if (L == NULL) {
puts("cannot create state: not enough memory");
return ENOMEM;
}
luaL_openlibs(L);
luaL_loadbuffer(L, buffer, buffer_len, "lua input script");
if (lua_pcall(L, 0, 0, 0) != LUA_OK){
puts("Lua script running failed");
return EINTR;
}
lua_close(L);
return 0;
}
int main(void)
{
puts("Lua RIOT build");
lua_run_script(main_lua, main_lua_len);
return 0;
}
print("Hello world, this is lua!")
PKG_NAME=lua
PKG_URL=https://github.com/lua/lua.git
PKG_VERSION=e354c6355e7f48e087678ec49e340ca0696725b1
PKG_LICENSE=MIT
.PHONY: all
all:
@cp Makefile.lua $(PKG_BUILDDIR)
"$(MAKE)" -C $(PKG_BUILDDIR) -f Makefile.lua
include $(RIOTBASE)/pkg/pkg.mk
INCLUDES += -I$(PKGDIRBASE)/lua
SRC := $(filter-out lua.c luac.c,$(wildcard *.c))
# This builds for native using POSIX system calls and some extra libraries, and
# removes a compiler warning that warns against using tmpnam().
ifeq ($(BOARD),native)
CFLAGS += -DLUA_USE_LINUX
endif
include $(RIOTBASE)/Makefile.base
/**
* @defgroup pkg_lua Lua ported to RIOT
* @ingroup pkg
* @brief Provides Lua support for RIOT
* @see https://github.com/lua/lua
*/
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment