Initial LuaJIT interpreter load
This commit is contained in:
parent
922f9932a6
commit
e599bbcd24
1
interpreters/luajit/.gitignore
vendored
Normal file
1
interpreters/luajit/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.tar.gz
|
10326
interpreters/luajit/0001-luajit-armv7m-nuttx.patch
Normal file
10326
interpreters/luajit/0001-luajit-armv7m-nuttx.patch
Normal file
File diff suppressed because it is too large
Load Diff
49
interpreters/luajit/Kconfig
Normal file
49
interpreters/luajit/Kconfig
Normal file
@ -0,0 +1,49 @@
|
||||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||
#
|
||||
|
||||
config INTERPRETERS_LUAJIT
|
||||
tristate "LuaJIT"
|
||||
default n
|
||||
|
||||
if INTERPRETERS_LUAJIT
|
||||
|
||||
config LUAJIT_VERSION
|
||||
string "LuaJIT version"
|
||||
default "03080b795aa3496ed62d4a0697c9f4767e7ca7e5"
|
||||
|
||||
config LUAJIT_PRIORITY
|
||||
int "LuaJIT REPL priority"
|
||||
default 100
|
||||
|
||||
config LUAJIT_STACKSIZE
|
||||
int "LuaJIT REPL stack size"
|
||||
default 16384
|
||||
|
||||
config LUAJIT_ALLOC_START
|
||||
hex "Alloc heap address"
|
||||
default 0x20200000
|
||||
---help---
|
||||
Allocation heap address for Lua objects.
|
||||
|
||||
config LUAJIT_ALLOC_SIZE
|
||||
hex "Alloc heap size"
|
||||
default 0x80000
|
||||
---help---
|
||||
Allocation heap size for Lua objects.
|
||||
|
||||
config LUAJIT_MCODE_START
|
||||
hex "MCode heap address"
|
||||
default 0x00002000
|
||||
depends on ARMV7M_ITCM
|
||||
---help---
|
||||
Allocation heap address for JIT MCode traces.
|
||||
|
||||
config LUAJIT_MCODE_SIZE
|
||||
hex "MCode heap size"
|
||||
default 0x1e000
|
||||
---help---
|
||||
Allocation heap size for JIT MCode traces.
|
||||
|
||||
endif
|
23
interpreters/luajit/Make.defs
Normal file
23
interpreters/luajit/Make.defs
Normal file
@ -0,0 +1,23 @@
|
||||
############################################################################
|
||||
# apps/interpreters/luajit/Make.defs
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership. The
|
||||
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance with the
|
||||
# License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
ifneq ($(CONFIG_INTERPRETERS_LUAJIT),)
|
||||
CONFIGURED_APPS += $(APPDIR)/interpreters/luajit
|
||||
endif
|
272
interpreters/luajit/Makefile
Normal file
272
interpreters/luajit/Makefile
Normal file
@ -0,0 +1,272 @@
|
||||
############################################################################
|
||||
# apps/interpreters/luajit/Makefile
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership. The
|
||||
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance with the
|
||||
# License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
include $(APPDIR)/Make.defs
|
||||
|
||||
LUAJIT_PATCHS ?= $(sort $(wildcard 000*.patch))
|
||||
|
||||
LUAJIT_VERSION := $(patsubst "%",%,$(CONFIG_LUAJIT_VERSION))
|
||||
LUAJIT_UNPACK = LuaJIT
|
||||
LUAJIT_TARBALL = $(LUAJIT_VERSION).tar.gz
|
||||
LUAJIT_URL_BASE = https://github.com/LuaJIT/LuaJIT/archive
|
||||
LUAJIT_URL = $(LUAJIT_URL_BASE)/$(LUAJIT_TARBALL)
|
||||
|
||||
MAINSRC = luajit.c
|
||||
|
||||
CSRCS += lib_aux.c
|
||||
CSRCS += lib_base.c
|
||||
CSRCS += lib_bit.c
|
||||
CSRCS += lib_buffer.c
|
||||
CSRCS += lib_debug.c
|
||||
CSRCS += lib_ffi.c
|
||||
CSRCS += lib_init.c
|
||||
CSRCS += lib_io.c
|
||||
CSRCS += lib_jit.c
|
||||
CSRCS += lib_math.c
|
||||
CSRCS += lib_os.c
|
||||
CSRCS += lib_package.c
|
||||
CSRCS += lib_string.c
|
||||
CSRCS += lib_table.c
|
||||
CSRCS += lj_alloc.c
|
||||
CSRCS += lj_api.c
|
||||
CSRCS += lj_asm.c
|
||||
CSRCS += lj_assert.c
|
||||
CSRCS += lj_bc.c
|
||||
CSRCS += lj_bcread.c
|
||||
CSRCS += lj_bcwrite.c
|
||||
CSRCS += lj_buf.c
|
||||
CSRCS += lj_carith.c
|
||||
CSRCS += lj_ccall.c
|
||||
CSRCS += lj_ccallback.c
|
||||
CSRCS += lj_cconv.c
|
||||
CSRCS += lj_cdata.c
|
||||
CSRCS += lj_char.c
|
||||
CSRCS += lj_clib.c
|
||||
CSRCS += lj_cparse.c
|
||||
CSRCS += lj_crecord.c
|
||||
CSRCS += lj_ctype.c
|
||||
CSRCS += lj_debug.c
|
||||
CSRCS += lj_dispatch.c
|
||||
CSRCS += lj_err.c
|
||||
CSRCS += lj_ffrecord.c
|
||||
CSRCS += lj_func.c
|
||||
CSRCS += lj_gc.c
|
||||
CSRCS += lj_gdbjit.c
|
||||
CSRCS += lj_ir.c
|
||||
CSRCS += lj_lex.c
|
||||
CSRCS += lj_lib.c
|
||||
CSRCS += lj_load.c
|
||||
CSRCS += lj_mcode.c
|
||||
CSRCS += lj_meta.c
|
||||
CSRCS += lj_obj.c
|
||||
CSRCS += lj_opt_dce.c
|
||||
CSRCS += lj_opt_fold.c
|
||||
CSRCS += lj_opt_loop.c
|
||||
CSRCS += lj_opt_mem.c
|
||||
CSRCS += lj_opt_narrow.c
|
||||
CSRCS += lj_opt_sink.c
|
||||
CSRCS += lj_opt_split.c
|
||||
CSRCS += lj_parse.c
|
||||
CSRCS += lj_prng.c
|
||||
CSRCS += lj_profile.c
|
||||
CSRCS += lj_record.c
|
||||
CSRCS += lj_serialize.c
|
||||
CSRCS += lj_snap.c
|
||||
CSRCS += lj_state.c
|
||||
CSRCS += lj_str.c
|
||||
CSRCS += lj_strfmt.c
|
||||
CSRCS += lj_strfmt_num.c
|
||||
CSRCS += lj_strscan.c
|
||||
CSRCS += lj_tab.c
|
||||
CSRCS += lj_trace.c
|
||||
CSRCS += lj_udata.c
|
||||
CSRCS += lj_vmevent.c
|
||||
CSRCS += lj_vmmath.c
|
||||
|
||||
ASRCS += lj_vm.S
|
||||
|
||||
VPATH += $(LUAJIT_UNPACK)/dynasm
|
||||
VPATH += $(LUAJIT_UNPACK)/src
|
||||
VPATH += $(LUAJIT_UNPACK)/src/host
|
||||
|
||||
CFLAGS += -fomit-frame-pointer
|
||||
CFLAGS += -fno-short-enums
|
||||
CFLAGS += -D__ARM_ARCH_7M__
|
||||
CFLAGS += -DLUAJIT_DISABLE_PROFILE
|
||||
CFLAGS += -DLUAJIT_NO_UNWIND
|
||||
CFLAGS += -DLUAJIT_OS=LUAJIT_OS_NUTTX
|
||||
CFLAGS += -DLUAJIT_SECURITY_MCODE=0
|
||||
CFLAGS += -DLUAJIT_SECURITY_PRNG=0
|
||||
CFLAGS += -DLUA_ROOT=CONFIG_LIBC_HOMEDIR
|
||||
|
||||
PROGNAME = luajit
|
||||
PRIORITY = $(CONFIG_LUAJIT_PRIORITY)
|
||||
STACKSIZE = $(CONFIG_LUAJIT_STACKSIZE)
|
||||
MODULE = $(CONFIG_INTERPRETERS_LUAJIT)
|
||||
|
||||
$(LUAJIT_TARBALL):
|
||||
$(call DOWNLOAD,$(LUAJIT_URL_BASE),$(LUAJIT_TARBALL),$(LUAJIT_TARBALL))
|
||||
|
||||
$(LUAJIT_UNPACK): $(LUAJIT_TARBALL)
|
||||
$(ECHO_BEGIN) "Unpacking $(LUAJIT_TARBALL) to $(LUAJIT_UNPACK)"
|
||||
$(Q) tar xzvf $(LUAJIT_TARBALL)
|
||||
$(Q) mv LuaJIT-$(LUAJIT_VERSION) $(LUAJIT_UNPACK)
|
||||
$(Q) cat $(LUAJIT_PATCHS) | \
|
||||
patch -s -N -d $(LUAJIT_UNPACK) -p1
|
||||
$(ECHO_END)
|
||||
|
||||
$(LUAJIT_UNPACK)/.patch: $(LUAJIT_UNPACK)
|
||||
$(Q) touch $(LUAJIT_UNPACK)/.patch
|
||||
|
||||
DASM_ARCH = armv7m
|
||||
|
||||
DASM_DASC = $(LUAJIT_UNPACK)/src/vm_armv7m.dasc
|
||||
|
||||
DASM_FLAGS += -D ENDIAN_LE
|
||||
DASM_FLAGS += -D JIT
|
||||
DASM_FLAGS += -D FFI
|
||||
DASM_FLAGS += -D DUALNUM
|
||||
DASM_FLAGS += -D FPU
|
||||
DASM_FLAGS += -D HFABI
|
||||
DASM_FLAGS += -D NO_UNWIND
|
||||
DASM_FLAGS += -D VER=70
|
||||
|
||||
MINILUA_O = $(LUAJIT_UNPACK)/src/host/minilua.o
|
||||
|
||||
BUILDVM_O = $(LUAJIT_UNPACK)/src/host/buildvm.o \
|
||||
$(LUAJIT_UNPACK)/src/host/buildvm_asm.o \
|
||||
$(LUAJIT_UNPACK)/src/host/buildvm_fold.o \
|
||||
$(LUAJIT_UNPACK)/src/host/buildvm_lib.o \
|
||||
$(LUAJIT_UNPACK)/src/host/buildvm_peobj.o
|
||||
|
||||
HOSTCFLAGS += -D__ARM_ARCH_7M__=1
|
||||
HOSTCFLAGS += -DLJ_ABI_SOFTFP=0
|
||||
HOSTCFLAGS += -DLJ_ARCH_HASFPU=1
|
||||
HOSTCFLAGS += -DLUAJIT_DISABLE_PROFILE
|
||||
HOSTCFLAGS += -DLUAJIT_NO_UNWIND
|
||||
HOSTCFLAGS += -DLUAJIT_TARGET=LUAJIT_ARCH_arm
|
||||
HOSTCFLAGS += -I$(LUAJIT_UNPACK)/src
|
||||
HOSTCFLAGS += -I$(LUAJIT_UNPACK)/src/host
|
||||
|
||||
HOSTLDFLAGS += -lm
|
||||
|
||||
BUILDVM_BIN = $(LUAJIT_UNPACK)/src/host/buildvm
|
||||
|
||||
MINILUA_BIN = $(LUAJIT_UNPACK)/src/host/minilua
|
||||
|
||||
LJVM_S = $(LUAJIT_UNPACK)/src/lj_vm.S
|
||||
|
||||
LIB_VMDEF = $(LUAJIT_UNPACK)/src/jit/vmdef.lua
|
||||
|
||||
LIB_VMDEFP = $(LIB_VMDEF)
|
||||
|
||||
ALL_T = $(MINILUA_BIN)
|
||||
|
||||
ALL_HDRGEN = $(LUAJIT_UNPACK)/src/lj_bcdef.h
|
||||
ALL_HDRGEN += $(LUAJIT_UNPACK)/src/lj_ffdef.h
|
||||
ALL_HDRGEN += $(LUAJIT_UNPACK)/src/lj_folddef.h
|
||||
ALL_HDRGEN += $(LUAJIT_UNPACK)/src/lj_libdef.h
|
||||
ALL_HDRGEN += $(LUAJIT_UNPACK)/src/lj_recdef.h
|
||||
|
||||
ALL_GEN = $(LJVM_S) $(ALL_HDRGEN) $(LIB_VMDEFP)
|
||||
|
||||
HOST_OBJS = $(MINILUA_O) $(BUILDVM_O)
|
||||
|
||||
LJLIB_O = $(LUAJIT_UNPACK)/src/lib_base.o
|
||||
LJLIB_O += $(LUAJIT_UNPACK)/src/lib_bit.o
|
||||
LJLIB_O += $(LUAJIT_UNPACK)/src/lib_buffer.o
|
||||
LJLIB_O += $(LUAJIT_UNPACK)/src/lib_debug.o
|
||||
LJLIB_O += $(LUAJIT_UNPACK)/src/lib_ffi.o
|
||||
LJLIB_O += $(LUAJIT_UNPACK)/src/lib_io.o
|
||||
LJLIB_O += $(LUAJIT_UNPACK)/src/lib_jit.o
|
||||
LJLIB_O += $(LUAJIT_UNPACK)/src/lib_math.o
|
||||
LJLIB_O += $(LUAJIT_UNPACK)/src/lib_os.o
|
||||
LJLIB_O += $(LUAJIT_UNPACK)/src/lib_package.o
|
||||
LJLIB_O += $(LUAJIT_UNPACK)/src/lib_string.o
|
||||
LJLIB_O += $(LUAJIT_UNPACK)/src/lib_table.o
|
||||
|
||||
LJLIB_C = $(LJLIB_O:.o=.c)
|
||||
|
||||
.NOTPARALLEL:
|
||||
|
||||
$(MINILUA_BIN): $(MINILUA_O)
|
||||
$(ECHO_BEGIN) "HOSTLINK $@"
|
||||
$(Q) $(HOSTCC) -m32 -o $@ $(MINILUA_O) $(HOSTLDFLAGS)
|
||||
$(ECHO_END)
|
||||
|
||||
$(LUAJIT_UNPACK)/src/host/buildvm_arch.h: $(DASM_DASC) $(MINILUA_BIN) $(LUAJIT_UNPACK)/src/lj_arch.h $(LUAJIT_UNPACK)/src/lua.h $(LUAJIT_UNPACK)/src/luaconf.h
|
||||
$(ECHO_BEGIN) "DYNASM $@"
|
||||
$(Q)$(MINILUA_BIN) $(LUAJIT_UNPACK)/dynasm/dynasm.lua $(DASM_FLAGS) -o $@ $(DASM_DASC)
|
||||
$(ECHO_END)
|
||||
|
||||
$(BUILDVM_BIN): $(BUILDVM_O)
|
||||
$(ECHO_BEGIN) "HOSTLINK $@"
|
||||
$(Q)$(HOSTCC) -m32 -o $@ $(BUILDVM_O)
|
||||
$(ECHO_END)
|
||||
|
||||
$(LJVM_S): $(BUILDVM_BIN)
|
||||
$(ECHO_BEGIN) "BUILDVM $@"
|
||||
$(Q)$(BUILDVM_BIN) -m elfasm -o $@
|
||||
$(ECHO_END)
|
||||
|
||||
$(LUAJIT_UNPACK)/src/lj_bcdef.h: $(BUILDVM_BIN) $(LJLIB_C)
|
||||
$(ECHO_BEGIN) "BUILDVM $@"
|
||||
$(Q)$(BUILDVM_BIN) -m bcdef -o $@ $(LJLIB_C)
|
||||
$(ECHO_END)
|
||||
|
||||
$(LUAJIT_UNPACK)/src/lj_ffdef.h: $(BUILDVM_BIN) $(LJLIB_C)
|
||||
$(ECHO_BEGIN) "BUILDVM $@"
|
||||
$(Q)$(BUILDVM_BIN) -m ffdef -o $@ $(LJLIB_C)
|
||||
$(ECHO_END)
|
||||
|
||||
$(LUAJIT_UNPACK)/src/lj_libdef.h: $(BUILDVM_BIN) $(LJLIB_C)
|
||||
$(ECHO_BEGIN) "BUILDVM $@"
|
||||
$(Q)$(BUILDVM_BIN) -m libdef -o $@ $(LJLIB_C)
|
||||
$(ECHO_END)
|
||||
|
||||
$(LUAJIT_UNPACK)/src/lj_recdef.h: $(BUILDVM_BIN) $(LJLIB_C)
|
||||
$(ECHO_BEGIN) "BUILDVM $@"
|
||||
$(Q)$(BUILDVM_BIN) -m recdef -o $@ $(LJLIB_C)
|
||||
$(ECHO_END)
|
||||
|
||||
$(LIB_VMDEF): $(BUILDVM_BIN) $(LJLIB_C)
|
||||
$(ECHO_BEGIN) "BUILDVM $@"
|
||||
$(Q)$(BUILDVM_BIN) -m vmdef -o $(LIB_VMDEFP) $(LJLIB_C)
|
||||
$(ECHO_END)
|
||||
|
||||
$(LUAJIT_UNPACK)/src/lj_folddef.h: $(BUILDVM_BIN) $(LUAJIT_UNPACK)/src/lj_opt_fold.c
|
||||
$(ECHO_BEGIN) "BUILDVM $@"
|
||||
$(Q)$(BUILDVM_BIN) -m folddef -o $@ $(LUAJIT_UNPACK)/src/lj_opt_fold.c
|
||||
$(ECHO_END)
|
||||
|
||||
$(HOST_OBJS): %.o: %.c
|
||||
$(ECHO_BEGIN) "CC: $<"
|
||||
$(Q) $(HOSTCC) -m32 -c $(HOSTCFLAGS) $< -o $@
|
||||
$(ECHO_END)
|
||||
|
||||
ifeq ($(wildcard $(LUAJIT_UNPACK)/.git),)
|
||||
context:: $(LUAJIT_UNPACK)/.patch $(LUAJIT_UNPACK)/src/host/buildvm_arch.h $(ALL_GEN)
|
||||
|
||||
distclean::
|
||||
$(call DELDIR, $(LUAJIT_UNPACK))
|
||||
$(call DELFILE, $(LUAJIT_TARBALL))
|
||||
endif
|
||||
|
||||
include $(APPDIR)/Application.mk
|
Loading…
x
Reference in New Issue
Block a user