aboutsummaryrefslogtreecommitdiff
path: root/scripts/makefile
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2024-10-18 22:35:27 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2024-10-23 18:25:23 +0300
commit7c5f098511b8f612a17f4ccdd8a4924c325d37e1 (patch)
tree4a97d802557bbffcadfcfd776c8e4afdb31d96aa /scripts/makefile
parent18262dcbecd97591dd15ee9274a81abb8c2ba1c4 (diff)
downloadlyn-7c5f098511b8f612a17f4ccdd8a4924c325d37e1.tar.gz
lyn-7c5f098511b8f612a17f4ccdd8a4924c325d37e1.zip
initial parser+lexer
+ AST might still change, also not a *huge* fan of having to reverse all arrays but I guess it's unlikely to be a significant bottleneck
Diffstat (limited to 'scripts/makefile')
-rw-r--r--scripts/makefile74
1 files changed, 74 insertions, 0 deletions
diff --git a/scripts/makefile b/scripts/makefile
new file mode 100644
index 0000000..dd0f7fd
--- /dev/null
+++ b/scripts/makefile
@@ -0,0 +1,74 @@
+# this could be done better
+RELEASE ?= 0
+OPTFLAGS != [ "$(RELEASE)" != "0" ] \
+ && echo "-O2 -flto=auto" \
+ || echo "-O0"
+
+DEBUG ?= 1
+DEBUGFLAGS != [ "$(DEBUG)" != "0" ] \
+ && echo "-DDEBUG=1" \
+ || echo "-DNDEBUG=1"
+
+ASSERT ?= 1
+ASSERTFLAGS != [ "$(ASSERT)" != "0" ] \
+ && echo "-DASSERT=1" \
+ || echo
+
+DEPFLAGS = -MT $@ -MMD -MP -MF $@.d
+LINTFLAGS := -fsyntax-only
+PREPROCESS := -E
+
+LLVM ?= 0
+BUILD := build
+
+all: lyn
+
+include gen/source.mk
+
+# default values, overwrite if/when needed
+CROSS_COMPILE :=
+
+OBJCOPY != [ "$(LLVM)" != "0" ] \
+ && echo llvm-objcopy \
+ || echo $(CROSS_COMPILE)objcopy
+
+COMPILER != [ -n "$(CROSS_COMPILE)" ] \
+ && { \
+ [ "$(LLVM)" != "0" ] \
+ && echo clang --target="$(CROSS_COMPILE)" \
+ || echo $(CROSS_COMPILE)gcc \
+ ; \
+ } \
+ || echo $(CC)
+
+
+OBFLAGS := -g
+WARNFLAGS := -Wall -Wextra
+
+COMPILE_FLAGS := $(CFLAGS) $(WARNFLAGS) $(OPTFLAGS) $(OBFLAGS) $(ASSERTFLAGS) \
+ $(DEBUGFLAGS)
+
+INCLUDE_FLAGS := -I include
+
+COMPILE = $(COMPILER) \
+ $(COMPILE_FLAGS) $(DEPFLAGS) $(INCLUDE_FLAGS)
+
+LINT = $(COMPILER) \
+ $(COMPILE_FLAGS) $(LINTFLAGS) $(INCLUDE_FLAGS)
+
+UBSAN ?= 0
+TRISCV_FLAGS != [ "$(UBSAN)" != "0" ] \
+ && echo -fsanitize=undefined \
+ || echo
+
+COMPILE_LYN = $(COMPILE) $(LYN_FLAGS)
+
+-include deps.mk
+
+lyn: $(LYN_OBJS) build/gen/parser.o
+ $(COMPILE_LYN) $(LYN_OBJS) build/gen/parser.o -o $@
+
+
+# might lint some common things twice
+.PHONY:
+lint: $(LYN_LINTS)