feat: port lua scripting language
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
MAKEFLAGS += -rR
|
||||
.SUFFIXES:
|
||||
|
||||
TOOLCHAIN_PREFIX := $(shell cd ../../.. && pwd)/toolchain/local/bin/x86_64-elf-
|
||||
ifneq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),)
|
||||
CC := $(TOOLCHAIN_PREFIX)gcc
|
||||
AR := $(TOOLCHAIN_PREFIX)ar
|
||||
else
|
||||
CC := gcc
|
||||
AR := ar
|
||||
endif
|
||||
|
||||
SRCDIR := src
|
||||
OBJDIR := obj
|
||||
LIBC_DIR := ../../lib/libc
|
||||
BINDIR := ../../bin/os
|
||||
LIBDIR := ../../bin/lib/lua
|
||||
|
||||
CFLAGS := \
|
||||
-std=gnu11 \
|
||||
-g -O2 -pipe \
|
||||
-Wall \
|
||||
-Wextra \
|
||||
-Wno-unused-parameter \
|
||||
-Wno-unused-function \
|
||||
-Wno-sign-compare \
|
||||
-Wno-misleading-indentation \
|
||||
-Wno-implicit-fallthrough \
|
||||
-nostdinc \
|
||||
-ffreestanding \
|
||||
-fno-stack-protector \
|
||||
-fno-stack-check \
|
||||
-fno-PIC \
|
||||
-ffunction-sections \
|
||||
-fdata-sections \
|
||||
-m64 \
|
||||
-march=x86-64 \
|
||||
-msse \
|
||||
-msse2 \
|
||||
-mno-red-zone \
|
||||
-mcmodel=small \
|
||||
-D__MONTAUKOS__=1 \
|
||||
-DLUA_COMPAT_5_3 \
|
||||
-I$(SRCDIR) \
|
||||
-isystem ../../include/libc \
|
||||
-isystem $(shell $(CC) -print-file-name=include)
|
||||
|
||||
LDFLAGS := \
|
||||
-nostdlib \
|
||||
-static \
|
||||
-Wl,--build-id=none \
|
||||
-Wl,--gc-sections \
|
||||
-Wl,-m,elf_x86_64 \
|
||||
-z max-page-size=0x1000 \
|
||||
-T ../../link.ld
|
||||
|
||||
CORE_SRCS := \
|
||||
lapi.c lcode.c lctype.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c \
|
||||
lmem.c lobject.c lopcodes.c lparser.c lstate.c lstring.c ltable.c \
|
||||
ltm.c lundump.c lvm.c lzio.c
|
||||
|
||||
LIB_SRCS := \
|
||||
lauxlib.c lbaselib.c lcorolib.c ldblib.c liolib.c lmathlib.c loadlib.c \
|
||||
loslib.c lstrlib.c ltablib.c lutf8lib.c linit.c
|
||||
|
||||
BASE_SRCS := $(CORE_SRCS) $(LIB_SRCS)
|
||||
BASE_OBJS := $(addprefix $(OBJDIR)/,$(BASE_SRCS:.c=.o))
|
||||
LUA_MAIN := $(OBJDIR)/lua.o
|
||||
|
||||
TARGET_LIB := $(LIBDIR)/liblua.a
|
||||
TARGET_BIN := $(BINDIR)/lua.elf
|
||||
STAGE_HEADERS := \
|
||||
$(LIBDIR)/include/lua.h \
|
||||
$(LIBDIR)/include/lauxlib.h \
|
||||
$(LIBDIR)/include/luaconf.h \
|
||||
$(LIBDIR)/include/lualib.h \
|
||||
$(LIBDIR)/include/lua.hpp
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: $(TARGET_LIB) $(TARGET_BIN) $(STAGE_HEADERS)
|
||||
|
||||
$(TARGET_LIB): $(BASE_OBJS) $(LIBC_DIR)/liblibc.a
|
||||
@mkdir -p $(LIBDIR)
|
||||
$(AR) rcs $@ $(BASE_OBJS)
|
||||
|
||||
$(TARGET_BIN): $(LUA_MAIN) $(TARGET_LIB) $(LIBC_DIR)/liblibc.a $(LIBC_DIR)/crt1.o $(LIBC_DIR)/crti.o $(LIBC_DIR)/crtn.o
|
||||
@mkdir -p $(BINDIR)
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) \
|
||||
$(LIBC_DIR)/crt1.o $(LIBC_DIR)/crti.o \
|
||||
$(LUA_MAIN) $(TARGET_LIB) $(LIBC_DIR)/liblibc.a $(LIBC_DIR)/crtn.o \
|
||||
-lgcc -o $@
|
||||
|
||||
$(LIBDIR)/include/%: $(SRCDIR)/%
|
||||
@mkdir -p $(LIBDIR)/include
|
||||
cp $< $@
|
||||
|
||||
$(OBJDIR)/%.o: $(SRCDIR)/%.c Makefile
|
||||
@mkdir -p $(OBJDIR)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
clean:
|
||||
rm -rf $(OBJDIR) $(TARGET_BIN) $(TARGET_LIB) $(LIBDIR)/include
|
||||
Reference in New Issue
Block a user