olibc/src/Makefile

59 lines
1.4 KiB
Makefile
Raw Normal View History

2021-12-19 08:35:56 +00:00
CC=cc
2021-12-19 08:35:56 +00:00
LIBLINUXHEADERS=
LIBLINUXDIR=
LIBLINUXFILE=liblinux.a
BUILDDIR=../build
TESTDIR=tests
OLIBCCFILES=$(wildcard *.c)
OLIBCOFILES=$(patsubst %.c, $(BUILDDIR)/%.o, $(OLIBCCFILES))
EXAMPLESCFILES=$(wildcard examples/*.c)
EXAMPLESOFILES=$(patsubst %.c, $(BUILDDIR)/%.o, $(EXAMPLESCFILES))
TESTCFILES=$(wildcard $(TESTDIR)/stdio/*.c $(TESTDIR)/string/*.c)
TESTOFILES=$(patsubst %.c, $(BUILDDIR)/%.o, $(TESTCFILES))
LIBFILE=$(BUILDDIR)/olibc.a
2021-12-19 08:35:56 +00:00
DEBUGFLAGS=-fsanitize=address -fsanitize=leak -fsanitize=undefined -fsanitize=pointer-compare -lasan
DEBUGFLAGS=-g
INCLUDEFLAGS=-I$(LIBLINUXHEADERS) -Iinclude
LIBFLAGS=-l:olibc.a
LINKFLAGS=-L$(LIBLINUXDIR) -L$(BUILDDIR) -l:$(LIBLINUXFILE)
CFLAGS=--std=c11 -ffreestanding -fno-stack-protector -nostdlib -pedantic -Wall -Wextra $(INCLUDEFLAGS)
.PHONY: all lib examples test clean
.SUFFIXES: .o .c
all: lib
$(BUILDDIR)/%.o: %.c
@mkdir -p $(@D)
$(CC) $< $(CFLAGS) -o $@ $(LINKFLAGS) $(DEBUGFLAGS)
$(OLIBCOFILES): CFLAGS += -c
$(OLIBCOFILES): $(OLIBCCFILES)
$(LIBFILE): $(OLIBCOFILES)
ar ruv $@ $(OLIBCOFILES)
ranlib $@
lib: $(LIBFILE)
$(EXAMPLESOFILES): LINKFLAGS:=$(LIBFLAGS) $(LINKFLAGS)
$(EXAMPLESOFILES): $(EXAMPLESCFILES)
examples: lib $(EXAMPLESOFILES)
$(TESTOFILES): LINKFLAGS:=$(LIBFLAGS) $(LINKFLAGS)
$(TESTOFILES): $(TESTCFILES)
test: lib $(TESTOFILES)
$(TESTDIR)/test.sh string
$(TESTDIR)/test.sh stdio
clean:
rm -rf $(BUILDDIR)
2021-12-19 08:35:56 +00:00