Skip to content

Commit

Permalink
tmp
Browse files Browse the repository at this point in the history
Signed-off-by: Shaw Summa <[email protected]>
  • Loading branch information
ShawSumma committed Mar 8, 2024
1 parent a1af7b6 commit 885a4df
Show file tree
Hide file tree
Showing 268 changed files with 26,192 additions and 176,836 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,5 @@ out.*
*.tmp.c
.vscode
.vscode
.mypy_cache
.mypy_cache
*.core
16 changes: 16 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[submodule "vendor/tcc"]
path = vendor/tcc
url = https://github.com/fastvm/minivm-tinycc
[submodule "vendor/cuik"]
path = vendor/cuik
url = https://github.com/fastvm/minivm-cuik
branch = tb2c
[submodule "vendor/xxhash"]
path = vendor/xxhash
url = https://github.com/fastvm/minivm-xxhash
[submodule "vendor/tree-sitter"]
path = vendor/tree-sitter
url = https://github.com/fastvm/minivm-tree-sitter
[submodule "vendor/isocline"]
path = vendor/isocline
url = https://github.com/fastvm/minivm-isocline
4 changes: 4 additions & 0 deletions base.mak
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

CFLAGS := -DVM_USE_TCC $(CFLAGS)

include makefile
55 changes: 39 additions & 16 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,21 @@ OPT ?= -Os -flto

EXE ?=

BUILD_DIR ?= build
CURRENT_DIR != pwd

BUILD_DIR ?= $(CURRENT_DIR)/build
OBJ_DIR ?= $(BUILD_DIR)/obj
TMP_DIR ?= $(BUILD_DIR)/tmp
BIN_DIR ?= $(BUILD_DIR)/bin
RES_DIR ?= $(BUILD_DIR)/res

VENDOR_DIR ?= $(CURRENT_DIR)/vendor
VENDOR_CUIK_DIR ?= $(VENDOR_DIR)/cuik
VENDOR_ISOCLINE_DIR ?= $(VENDOR_DIR)/isocline
VENDOR_TCC_DIR ?= $(VENDOR_DIR)/tcc
VENDOR_TREE_SITTER_DIR ?= $(VENDOR_DIR)/tree-sitter
VENDOR_XXHASH_DIR ?= $(VENDOR_DIR)/xxhash

UNAME_S != uname -s
UNAME_O != uname -o

Expand All @@ -18,38 +27,35 @@ PROG_OBJS = $(PROG_SRCS:%.c=$(OBJ_DIR)/%.o)
# GC_SRCS = vendor/bdwgc/alloc.c vendor/bdwgc/allchblk.c vendor/bdwgc/blacklst.c vendor/bdwgc/dbg_mlc.c vendor/bdwgc/dyn_load.c vendor/bdwgc/finalize.c vendor/bdwgc/headers.c vendor/bdwgc/malloc.c vendor/bdwgc/mallocx.c vendor/bdwgc/mark.c vendor/bdwgc/mach_dep.c vendor/bdwgc/mark_rts.c vendor/bdwgc/misc.c vendor/bdwgc/new_hblk.c vendor/bdwgc/obj_map.c vendor/bdwgc/os_dep.c vendor/bdwgc/ptr_chck.c vendor/bdwgc/reclaim.c
GC_OBJS = $(GC_SRCS:%.c=$(OBJ_DIR)/%.o)

TREES_SRCS = vendor/trees/alloc.c vendor/trees/get_changed_ranges.c vendor/trees/language.c vendor/trees/lexer.c vendor/trees/node.c vendor/trees/parser.c vendor/trees/query.c vendor/trees/stack.c vendor/trees/subtree.c vendor/trees/tree_cursor.c vendor/trees/tree.c
TREES_SRCS = vendor/tree-sitter/lib/src/alloc.c vendor/tree-sitter/lib/src/get_changed_ranges.c vendor/tree-sitter/lib/src/language.c vendor/tree-sitter/lib/src/lexer.c vendor/tree-sitter/lib/src/node.c vendor/tree-sitter/lib/src/parser.c vendor/tree-sitter/lib/src/query.c vendor/tree-sitter/lib/src/stack.c vendor/tree-sitter/lib/src/subtree.c vendor/tree-sitter/lib/src/tree_cursor.c vendor/tree-sitter/lib/src/tree.c vendor/tree-sitter/lib/src/wasm_store.c

STD_SRCS = vm/std/io.c vm/std/std.c
ISOCLINE_SRCS = vendor/isocline/isocline.c
ISOCLINE_SRCS = vendor/isocline/src/isocline.c
XXH_SRCS = vendor/xxhash/xxhash.c
VM_SRCS = vm/ir/ir.c vm/lib.c vm/ir/type.c vm/ast/build.c vm/ast/ast.c vm/ast/comp.c vm/ast/print.c vm/obj.c vm/backend/tb.c vm/backend/exec.c vm/ir/check.c vm/ir/rblock.c vm/lua/parser.c vm/lua/scan.c vm/lua/ast.c vm/lua/repl.c $(ISOCLINE_SRCS) $(XXH_SRCS)

VM_SRCS = vm/ir/ir.c vm/lib.c vm/ir/type.c vm/ast/build.c vm/ast/ast.c vm/ast/comp.c vm/ast/print.c vm/obj.c vm/backend/tb.c vm/backend/exec.c vm/ir/check.c vm/ir/rblock.c vm/lua/parser/parser.c vm/lua/parser/scan.c vm/lua/ast.c vm/lua/repl.c $(ISOCLINE_SRCS) $(XXH_SRCS) $(TREES_SRCS)

ALL_SRCS = $(VM_SRCS) $(STD_SRCS) $(EXTRA_SRCS) $(TREES_SRCS)
ALL_SRCS = $(VM_SRCS) $(STD_SRCS) $(EXTRA_SRCS)
ALL_OBJS = $(ALL_SRCS:%.c=$(OBJ_DIR)/%.o)

TCC_SRCS ?= vendor/tcc/libtcc.c vendor/tcc/lib/libtcc1.c
TCC_OBJS = $(TCC_SRCS:%.c=$(OBJ_DIR)/%.o)

TB_SRCS = vendor/common/common.c vendor/common/perf.c vendor/tb/src/libtb.c vendor/tb/src/x64/x64_target.c
TB_SRCS_BASE = vendor/cuik/common/common.c vendor/cuik/common/perf.c vendor/cuik/tb/src/libtb.c vendor/cuik/tb/src/x64/x64_target.c
TB_SRCS_FreeBSD = vendor/cuik/c11threads/threads_posix.c
TB_SRCS = $(TB_SRCS_BASE) $(TB_SRCS_$(UNAME_S))
TB_OBJS = $(TB_SRCS:%.c=$(OBJ_DIR)/%.o)

BASE_OBJS = $(ALL_OBJS) $(GC_OBJS) $(TB_OBJS) $(TCC_OBJS)

CFLAGS += $(FLAGS)
CFLAGS += -I vendor/tree-sitter/lib/include -I vendor/tree-sitter/lib/src $(FLAGS)
LDFLAGS += $(FLAGS)

RUNNER ?= $(BIN_DIR)/minivm

OBJS_FreeBSD =

OBJS = $(BASE_OBJS) $(OBJS_$(UNAME_S))
OBJS = $(BASE_OBJS)

LDFLAGS_S_Darwin = -w -Wl,-pagezero_size,0x4000
LDFLAGS_S_Linux = -lm -ldl
LDFLAGS_O_Cygwin =
LDFLAGS_S_FreeBSD = -lm -ldl -lstdthreads
LDFLAGS_S_FreeBSD = -lm -ldl -lpthread

LDFLAGS := $(LDFLAGS_S_$(UNAME_S)) $(LDFLAGS_O_$(UNAME_O)) $(LDFLAGS)

Expand All @@ -61,11 +67,28 @@ default: all

all: bins

# tree sitter

VM_LUA_GRAMMAR_DIR := $(TMP_DIR)/grammar

pre: $(VM_LUA_GRAMMAR_DIR)

$(VM_LUA_GRAMMAR_DIR): vm/lua/parser/grammar.js
mkdir -p $(VM_LUA_GRAMMAR_DIR)
cp vm/lua/parser/grammar.js $(VM_LUA_GRAMMAR_DIR)
cd $(VM_LUA_GRAMMAR_DIR) && cargo run --manifest-path $(VENDOR_TREE_SITTER_DIR)/Cargo.toml -- generate

vm/lua/parser/parser.c: $(VM_LUA_GRAMMAR_DIR) vm/lua/parser/tree_sitter
cp $(VM_LUA_GRAMMAR_DIR)/src/parser.c $(@)

vm/lua/parser/tree_sitter: $(VM_LUA_GRAMMAR_DIR)
cp -r $(VM_LUA_GRAMMAR_DIR)/src/tree_sitter $(@)

# windows

clang-windows: .dummy
rm -rf build
$(MAKE) -Bj$(J) CC=clang EXE=.exe OPT="$(OPT)" CFLAGS="-Icuik/c11threads $(CFLAGS)" LDFLAGS="$(LDFLAGS)" EXTRA_SRCS="vendor/c11threads/threads_msvc.c"
$(MAKE) -Bj$(J) CC=clang EXE=.exe OPT="$(OPT)" CFLAGS="-Icuik/c11threads $(CFLAGS)" LDFLAGS="$(LDFLAGS)" EXTRA_SRCS="vendor/cuik/c11threads/threads_msvc.c"

gcc-windows: .dummy
rm -rf build
Expand All @@ -83,7 +106,7 @@ minivm$(EXE) $(BIN_DIR)/minivm$(EXE): $(OBJ_DIR)/main/minivm.o $(OBJS)

$(TB_OBJS): $(@:$(OBJ_DIR)/%.o=%.c)
@mkdir -p $$(dirname $(@))
$(CC) -Wno-unused-value -c $(OPT) $(@:$(OBJ_DIR)/%.o=%.c) -o $(@) $(CFLAGS) -I vendor/tb/include -I vendor/common -DCUIK_USE_TB -DLOG_SUPPRESS -DTB_HAS_X64
$(CC) -Wno-unused-value -c $(OPT) $(@:$(OBJ_DIR)/%.o=%.c) -o $(@) $(CFLAGS) -I vendor/cuik/tb/include -I vendor/cuik/common -DCUIK_USE_TB -DLOG_SUPPRESS -DTB_HAS_X64

$(PROG_OBJS) $(ALL_OBJS) $(GC_OBJS) $(TCC_OBJS): $(@:$(OBJ_DIR)/%.o=%.c)
@mkdir -p $$(dirname $(@))
Expand Down
19 changes: 0 additions & 19 deletions pre.sh

This file was deleted.

7 changes: 7 additions & 0 deletions tcc.mak
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

CFLAGS := -DCONFIG_TCC_PREDEFS -DVM_USE_TCC $(CFLAGS)

IGNORE != cd vendor/tcc && ./configure
IGNORE != echo '""' > vendor/tcc/tccdefs_.h

include makefile
Loading

0 comments on commit 885a4df

Please sign in to comment.