feat: abstract I/O and strings for freestanding compilation

Co-authored-by: aider (openrouter/moonshotai/kimi-k2.6) <aider@aider.chat>
This commit is contained in:
2026-05-04 10:17:43 +03:00
parent 19c8608c76
commit dbf4eb5d0e
8 changed files with 216 additions and 42 deletions
+13 -10
View File
@@ -1,19 +1,22 @@
CC = gcc
CFLAGS = -Wall -Wextra -g -std=c11 -D_POSIX_C_SOURCE=200809L
LDFLAGS =
SRCS = forth_core.c forth_dict.c forth_words.c forth_interp.c main.c
OBJS = $(SRCS:.c=.o)
CC = clang
CFLAGS = -Wall -Wextra -g -std=c11
COMMON_SRCS = forth_core.c forth_dict.c forth_words.c forth_interp.c main.c
HOSTED_SRCS = $(COMMON_SRCS) platform_hosted.c
FREESTANDING_SRCS = $(COMMON_SRCS) platform_freestanding.c
TARGET = forth
FREESTANDING_TARGET = forth_freestanding
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
$(TARGET): $(HOSTED_SRCS) forth.h
$(CC) $(CFLAGS) -D_POSIX_C_SOURCE=200809L -o $@ $(HOSTED_SRCS)
%.o: %.c forth.h
$(CC) $(CFLAGS) -c $< -o $@
$(FREESTANDING_TARGET): $(FREESTANDING_SRCS) forth.h
$(CC) $(CFLAGS) -ffreestanding -nostdlib -fno-stack-protector -o $@ $(FREESTANDING_SRCS)
clean:
rm -f $(OBJS) $(TARGET)
rm -f $(TARGET) $(FREESTANDING_TARGET)
.PHONY: all clean