libweb/src/Makefile

46 lines
1.1 KiB
Makefile

CC=cc
DIRS=HTML DOM
BUILDDIR=../build
BUILDDIRS=$(BUILDDIR)/HTML $(BUILDDIR)/DOM
LIBFILE=$(BUILDDIR)/libweb.a
UTILSDIR=utils
UTILSCFILES=$(wildcard $(UTILSSDIR)/*.c)
UTILSSOFILES=$(patsubst %.c, $(BUILDDIR)/%.o, $(UTILSCFILES))
CFILES=$(wildcard HTML/*.c DOM/*.c)
OFILES=$(patsubst %.c, $(BUILDDIR)/%.o, $(CFILES))
INCLUDEFLAGS=-Iinclude/
DEBUGFLAGS=-fsanitize=address -fsanitize=leak -fsanitize=undefined -fsanitize=pointer-compare -lasan
CFLAGS=-Wall -Wextra $(INCLUDEFLAGS) -g
LINKFLAGS=-L$(BUILDDIR) -l:$(LIBFILE)
.PHONY: all clean test
.SUFFIXES: .o .c
all: $(BUILDDIRS) $(LIBFILE)
$(BUILDDIRS):
mkdir -p $(BUILDDIR)/$(UTILSDIR)
mkdir -p $(BUILDDIR)/HTML
mkdir -p $(BUILDDIR)/DOM
$(BUILDDIR)/HTML/%.o: HTML/%.c
$(CC) -c $< -o $@ $(CFLAGS)
$(BUILDDIR)/DOM/%.o: DOM/%.c
$(CC) -c $< -o $@ $(CFLAGS)
$(LIBFILE): $(OFILES)
ar ruv $(LIBFILE) $(OFILES)
ranlib $(LIBFILE)
utils: $(LIBFILE)
$(CC) utils/dump_tokens.c -o $(BUILDDIR)/$(UTILSDIR)/dump_tokens $(CFLAGS) $(LINKFLAGS)
$(CC) utils/dump_tree.c -o $(BUILDDIR)/$(UTILSDIR)/dump_tree $(CFLAGS) $(LINKFLAGS)
clean:
rm -rf $(BUILDDIR)