This commit is contained in:
2025-07-20 15:50:48 -04:00
parent 5ea2f16ba9
commit 41cfafbaf0
10 changed files with 221 additions and 66 deletions

58
embed/Makefile Normal file
View File

@@ -0,0 +1,58 @@
prefix = /usr/bin
YAIT_SRCS := $(wildcard yait/*.c) $(wildcard core/*.c)
YAIT_OBJS := $(patsubst yait/%.c,c-out/obj/%.o,$(YAIT_SRCS))
YAIT := c-out/bin/yait
-include config.mak
ifeq ($(wildcard config.mak),)
all:
@echo "File config.mak not found, run configure"
@exit 1
else
all: build $(YAIT) $(YAIT_DOC)
build:
mkdir -p c-out/bin
mkdir -p c-out/obj
EMBED_FILES := $(wildcard embed/*)
gen-file-embeds:
@echo "// Generated header with embedded files" > $(EMBED_HEADER)
@echo "#ifndef EMBEDDED_FILES_H" >> $(EMBED_HEADER)
@echo "#define EMBEDDED_FILES_H" >> $(EMBED_HEADER)
@echo "" >> $(EMBED_HEADER)
@for f in $(EMBED_FILES); do \
var=$$(echo $$f | tr './-' '__' | tr '[:lower:]' '[:upper:]'); \
xxd -i $$f | sed "s/^unsigned char/${var}_data/" | sed "s/^unsigned int/${var}_len/" >> $(EMBED_HEADER); \
echo "" >> $(EMBED_HEADER); \
done
@echo "#endif // EMBEDDED_FILES_H" >> $(EMBED_HEADER)
c-out/obj/%.o: yait/%.c
$(CC) $(CFLAGS) -c $< -o $@
$(YAIT): $(YAIT_OBJS)
$(CC) $(CFLAGS) -DCOMMIT=$(shell git rev-list --count --all) $^ -o $@
endif
install:
@echo "NOT IMPL"
exit 1
uninstall:
@echo "NOT IMPL"
exit 1
clean:
rm -rf c-out
dist-clean: clean
rm -f config.mak
.PHONY: all clean dist-clean install uninstall build format gen-file-embeds

56
embed/configure vendored Executable file
View File

@@ -0,0 +1,56 @@
#!/bin/sh
usage() {
cat <<EOF
Usage: $0 [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.
CC C compiler command [detected]
CFLAGS C compiler flags [-g, ...]
EOF
exit 0
}
echo () { printf "%s\n" "$*" ; }
cmdexists () { type "$1" >/dev/null 2>&1 ; }
trycc () { test -z "$CC" && cmdexists "$1" && CC=$1 ; }
prefix=/usr/bin/
CFLAGS="-Wall -Wextra -O2"
LDFLAGS=
CC=
for arg ; do
case "$arg" in
--help|h) usage ;;
CFLAGS=*) CFLAGS=${arg#*=} ;;
LDFLAGS=*) LDFLAGS=${arg#*=} ;;
esac
done
printf "checking for C compiler... "
trycc gcc
trycc cc
trycc clang
printf "%s\n" "$CC"
printf "checking weather C compiler works... "
status="fail"
tmpc="$(mktemp -d)/test.c"
echo "typedef int x;" > "$tmpc"
if output=$($CC $CFLAGS -c -o /dev/null "$tmpc" 2>&1) ; then
printf "yes\n"
else
printf "no; %s\n" "$output"
exit 1
fi
printf "creating config.mak... "
printf "PREFIX=%s\n" "$prefix" > config.mak
printf "CFLAGS=%s\n" "$CFLAGS" >> config.mak
printf "LDFLAGS=%s\n" "$LDFLAGS" >> config.mak
printf "CC=%s\n" "$CC" >> config.mak
printf "done\n"