From da616f03fef545a14f5da6c5ac4d7a963cd1ccd1 Mon Sep 17 00:00:00 2001 From: tzyvoski <67583725+tzyvoski@users.noreply.github.com> Date: Sat, 21 May 2022 20:21:11 +0200 Subject: [PATCH 01/12] Created Makefile --- Makefile | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..99e807b --- /dev/null +++ b/Makefile @@ -0,0 +1,48 @@ +CXX = gcc +CC = $(CROSS_COMPILE)$(CXX) + +INCDIR = include +CFLAGS = -O3 -Wall -Wextra -g -I $(INCDIR)/intf -I "src/intf" +LFLAGS = -lm + +SRCDIR = src +OBJDIR = temp +BINDIR = build +OUTFILE = noja + +rwildcard = $(foreach d, $(wildcard $(1:=/*)), $(call rwildcard ,$d, $2) $(filter $(subst *, %, $2), $d)) + +SRC = $(call rwildcard, $(SRCDIR), *.c) +SRC_OBJECTS = $(call rwildcard, $(SRCDIR)/objects, *.c) +SRC_COMPILER = $(call rwildcard, $(SRCDIR)/compiler, *.c) +SRC_COMMON = $(call rwildcard, $(SRCDIR)/common, *.c) +SRC_BUILTINS = $(call rwildcard, $(SRCDIR)/builtins, *.c) +SRC_UTILS = $(call rwildcard, $(SRCDIR)/utils, *.c) +SRC_RUNTIME = $(call rwildcard, $(SRCDIR)/runtime, *.c) + +OBJS_OBJECTS = $(patsubst $(SRCDIR)/objects/%.c, $(OBJDIR)/objects/%.o, $(SRC_OBJECTS)) +OBJS_COMPILER = $(patsubst $(SRCDIR)/compiler/%.c, $(OBJDIR)/compiler/%.o, $(SRC_COMPILER)) +OBJS_COMMON = $(patsubst $(SRCDIR)/common/%.c, $(OBJDIR)/common/%.o, $(SRC_COMMON)) +OBJS_BUILTINS = $(patsubst $(SRCDIR)/builtins/%.c, $(OBJDIR)/builtins/%.o, $(SRC_BUILTINS)) +OBJS_UTILS = $(patsubst $(SRCDIR)/utils/%.c, $(OBJDIR)/utils/%.o, $(SRC_UTILS)) +OBJS_RUNTIME = $(patsubst $(SRCDIR)/runtime/%.c, $(OBJDIR)/runtime/%.o, $(SRC_UTILS)) +OBJS = $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(SRC)) + + +$(OBJDIR)/%.o: $(SRCDIR)/%.c + @ echo $(shell tput setaf 3) [C] $(shell tput setaf 5) [SRC] $(shell tput setaf 7) $^ + @ mkdir -p $(@D) + @ $(CC) $(CFLAGS) -c $^ -o $@ + + +all: $(OBJS) build + +build: + @ mkdir -p build + + @ echo !==== LINKING EVERYTHING + @ $(CC) -o $(BINDIR)/$(OUTFILE) $(OBJS) $(LFLAGS) + +clean: + @ rm -rf $(BINDIR) + @ rm -rf $(OBJDIR) From 6f739fab89c3dc3af401ad3e5f7dba16e74511fe Mon Sep 17 00:00:00 2001 From: tzyvoski <67583725+tzyvoski@users.noreply.github.com> Date: Sat, 21 May 2022 20:23:43 +0200 Subject: [PATCH 02/12] Fixed warning --- src/compiler/parse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/parse.c b/src/compiler/parse.c index 9424cfb..ef5f67b 100644 --- a/src/compiler/parse.c +++ b/src/compiler/parse.c @@ -1795,7 +1795,7 @@ static Node *parse_ifelse_statement(Context *ctx) static Node *parse_compound_statement(Context *ctx, TokenKind end) { - int end_offset; + int end_offset = 0; Node *head, **tail; tail = &head; From 27c4833987cfc397bd1619852849b537c2708fcf Mon Sep 17 00:00:00 2001 From: tzyvoski <67583725+tzyvoski@users.noreply.github.com> Date: Sat, 21 May 2022 20:44:58 +0200 Subject: [PATCH 03/12] Shorter Makefile --- Makefile | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/Makefile b/Makefile index 99e807b..9a63056 100644 --- a/Makefile +++ b/Makefile @@ -13,19 +13,6 @@ OUTFILE = noja rwildcard = $(foreach d, $(wildcard $(1:=/*)), $(call rwildcard ,$d, $2) $(filter $(subst *, %, $2), $d)) SRC = $(call rwildcard, $(SRCDIR), *.c) -SRC_OBJECTS = $(call rwildcard, $(SRCDIR)/objects, *.c) -SRC_COMPILER = $(call rwildcard, $(SRCDIR)/compiler, *.c) -SRC_COMMON = $(call rwildcard, $(SRCDIR)/common, *.c) -SRC_BUILTINS = $(call rwildcard, $(SRCDIR)/builtins, *.c) -SRC_UTILS = $(call rwildcard, $(SRCDIR)/utils, *.c) -SRC_RUNTIME = $(call rwildcard, $(SRCDIR)/runtime, *.c) - -OBJS_OBJECTS = $(patsubst $(SRCDIR)/objects/%.c, $(OBJDIR)/objects/%.o, $(SRC_OBJECTS)) -OBJS_COMPILER = $(patsubst $(SRCDIR)/compiler/%.c, $(OBJDIR)/compiler/%.o, $(SRC_COMPILER)) -OBJS_COMMON = $(patsubst $(SRCDIR)/common/%.c, $(OBJDIR)/common/%.o, $(SRC_COMMON)) -OBJS_BUILTINS = $(patsubst $(SRCDIR)/builtins/%.c, $(OBJDIR)/builtins/%.o, $(SRC_BUILTINS)) -OBJS_UTILS = $(patsubst $(SRCDIR)/utils/%.c, $(OBJDIR)/utils/%.o, $(SRC_UTILS)) -OBJS_RUNTIME = $(patsubst $(SRCDIR)/runtime/%.c, $(OBJDIR)/runtime/%.o, $(SRC_UTILS)) OBJS = $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(SRC)) From dbab0cc0e575f6f8e73adc075ed9133cc696f8cc Mon Sep 17 00:00:00 2001 From: tzyvoski <67583725+tzyvoski@users.noreply.github.com> Date: Sat, 21 May 2022 20:48:10 +0200 Subject: [PATCH 04/12] Comments --- Makefile | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 9a63056..8f0ca84 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,26 @@ +# Aux functions +rwildcard = $(foreach d, $(wildcard $(1:=/*)), $(call rwildcard ,$d, $2) $(filter $(subst *, %, $2), $d)) + +# Compiler CXX = gcc CC = $(CROSS_COMPILE)$(CXX) -INCDIR = include -CFLAGS = -O3 -Wall -Wextra -g -I $(INCDIR)/intf -I "src/intf" +# Compiler flags +CFLAGS = -O3 -Wall -Wextra -g LFLAGS = -lm +# Files and directories SRCDIR = src OBJDIR = temp BINDIR = build OUTFILE = noja -rwildcard = $(foreach d, $(wildcard $(1:=/*)), $(call rwildcard ,$d, $2) $(filter $(subst *, %, $2), $d)) - -SRC = $(call rwildcard, $(SRCDIR), *.c) -OBJS = $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(SRC)) +# Find all files +SRC = $(call rwildcard, $(SRCDIR), *.c) +OBJS = $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(SRC)) +# Compile everything to object files $(OBJDIR)/%.o: $(SRCDIR)/%.c @ echo $(shell tput setaf 3) [C] $(shell tput setaf 5) [SRC] $(shell tput setaf 7) $^ @ mkdir -p $(@D) @@ -31,5 +36,5 @@ build: @ $(CC) -o $(BINDIR)/$(OUTFILE) $(OBJS) $(LFLAGS) clean: - @ rm -rf $(BINDIR) - @ rm -rf $(OBJDIR) + @ rm -rf $(BINDIR) + @ rm -rf $(OBJDIR) From fb8306798a195eb78820d21bbd7d3bcb3bc6d7ab Mon Sep 17 00:00:00 2001 From: tzyvoski <67583725+tzyvoski@users.noreply.github.com> Date: Sat, 21 May 2022 20:55:42 +0200 Subject: [PATCH 05/12] More spacing fixes --- Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 8f0ca84..4640186 100644 --- a/Makefile +++ b/Makefile @@ -6,14 +6,14 @@ CXX = gcc CC = $(CROSS_COMPILE)$(CXX) # Compiler flags -CFLAGS = -O3 -Wall -Wextra -g -LFLAGS = -lm +CFLAGS = -O3 -Wall -Wextra -g +LFLAGS = -lm # Files and directories -SRCDIR = src -OBJDIR = temp -BINDIR = build -OUTFILE = noja +SRCDIR = src +OBJDIR = temp +BINDIR = build +OUTFILE = noja # Find all files SRC = $(call rwildcard, $(SRCDIR), *.c) From f5bafa594675abe265fc35042bc7722aa6ab94f6 Mon Sep 17 00:00:00 2001 From: tzyvoski <67583725+tzyvoski@users.noreply.github.com> Date: Sat, 21 May 2022 21:07:29 +0200 Subject: [PATCH 06/12] Makefile updates --- Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 4640186..ef803d9 100644 --- a/Makefile +++ b/Makefile @@ -30,9 +30,8 @@ $(OBJDIR)/%.o: $(SRCDIR)/%.c all: $(OBJS) build build: - @ mkdir -p build - - @ echo !==== LINKING EVERYTHING + @ echo !==== LINKING + @ mkdir -p $(BINDIR) @ $(CC) -o $(BINDIR)/$(OUTFILE) $(OBJS) $(LFLAGS) clean: From ff80901115f8b841aade51d8308f952b24d83f07 Mon Sep 17 00:00:00 2001 From: tzyvoski <67583725+tzyvoski@users.noreply.github.com> Date: Sat, 21 May 2022 21:19:02 +0200 Subject: [PATCH 07/12] Added fuzz I guess --- Makefile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ef803d9..43bb122 100644 --- a/Makefile +++ b/Makefile @@ -27,8 +27,15 @@ $(OBJDIR)/%.o: $(SRCDIR)/%.c @ $(CC) $(CFLAGS) -c $^ -o $@ -all: $(OBJS) build +all: clean $(OBJS) build +.PHONY fuzz: all +fuzz: + @ export AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 + @ export AFL_SKIP_CPUFREQ=1 + afl-fuzz -i examples/ -o out -m none -d -- ./build/noja run @@ + +.PHONY: all build: @ echo !==== LINKING @ mkdir -p $(BINDIR) From 6866bba871119c523b6a21a6c1516e5caf1a2fdb Mon Sep 17 00:00:00 2001 From: tzyvoski <67583725+tzyvoski@users.noreply.github.com> Date: Sat, 21 May 2022 21:27:54 +0200 Subject: [PATCH 08/12] More makefile fixes --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 43bb122..6205685 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,7 @@ fuzz: @ export AFL_SKIP_CPUFREQ=1 afl-fuzz -i examples/ -o out -m none -d -- ./build/noja run @@ -.PHONY: all +.PHONY build: all build: @ echo !==== LINKING @ mkdir -p $(BINDIR) From a557db0de27f134ca1d33222e051432bcc25b4fe Mon Sep 17 00:00:00 2001 From: tzyvoski <67583725+tzyvoski@users.noreply.github.com> Date: Sat, 21 May 2022 21:28:59 +0200 Subject: [PATCH 09/12] More comments --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 6205685..0dc2d31 100644 --- a/Makefile +++ b/Makefile @@ -27,14 +27,17 @@ $(OBJDIR)/%.o: $(SRCDIR)/%.c @ $(CC) $(CFLAGS) -c $^ -o $@ +# Clean all artifacts and rebuild the whole thing all: clean $(OBJS) build +# Run fuzz .PHONY fuzz: all fuzz: @ export AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 @ export AFL_SKIP_CPUFREQ=1 afl-fuzz -i examples/ -o out -m none -d -- ./build/noja run @@ +# Link all object files .PHONY build: all build: @ echo !==== LINKING From 1a4cb9ef25d7bf0bb1b847191edfcf4d1ced125d Mon Sep 17 00:00:00 2001 From: Alessandro Salerno <67583725+Alessandro-Salerno@users.noreply.github.com> Date: Sat, 21 May 2022 21:30:00 +0200 Subject: [PATCH 10/12] Update README.md --- README.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 31e8774..6935fe1 100644 --- a/README.md +++ b/README.md @@ -56,16 +56,10 @@ The interpreter is fully functional, but lots of built-in functions that one wou ## Build To build it, just run: ```sh -$ ./build.sh +$ make ``` it will create a `build` folder where the interpreter's executable will be generated. -You may need to give executable permissions to the script. You can do so with by running: - -```sh -$ chmod +x build.sh -``` - ## Usage You can run files by doing: ```sh @@ -75,4 +69,4 @@ location/of/noja run or you can run strings by doing: ```sh location/of/noja run inline -``` \ No newline at end of file +``` From 87dac3f05e757f5a6f49256b9351e10f39af60b2 Mon Sep 17 00:00:00 2001 From: tzyvoski <67583725+tzyvoski@users.noreply.github.com> Date: Sat, 21 May 2022 22:09:02 +0200 Subject: [PATCH 11/12] I'm stupid --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 0dc2d31..ea7e31b 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,6 @@ fuzz: afl-fuzz -i examples/ -o out -m none -d -- ./build/noja run @@ # Link all object files -.PHONY build: all build: @ echo !==== LINKING @ mkdir -p $(BINDIR) From 191938548f0c9101f9a1f7f88b1b2ff120961d67 Mon Sep 17 00:00:00 2001 From: tzyvoski <67583725+tzyvoski@users.noreply.github.com> Date: Sat, 21 May 2022 22:47:07 +0200 Subject: [PATCH 12/12] Removed useless target --- Makefile | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Makefile b/Makefile index ea7e31b..503cd83 100644 --- a/Makefile +++ b/Makefile @@ -30,13 +30,6 @@ $(OBJDIR)/%.o: $(SRCDIR)/%.c # Clean all artifacts and rebuild the whole thing all: clean $(OBJS) build -# Run fuzz -.PHONY fuzz: all -fuzz: - @ export AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 - @ export AFL_SKIP_CPUFREQ=1 - afl-fuzz -i examples/ -o out -m none -d -- ./build/noja run @@ - # Link all object files build: @ echo !==== LINKING