# --- Variables ---
CCFLAGS = -Wall -Wextra -std=c++2b -g
CC = clang++
.PHONY: all clean docs serve all_tests
all: main
build:
mkdir -p build
main: main.cc build/grim.o build/parser.o
${CC} ${CCFLAGS} main.cc -Iinclude/ build/grim.o build/parser.o -o main
build/grim.o: src/grim.cc include/grim.h | build
${CC} ${CCFLAGS} -Iinclude/ -c src/grim.cc -o build/grim.o
build/parser.o: src/parser.cc include/parser.h | build
${CC} ${CCFLAGS} -Iinclude/ -c src/parser.cc -o build/parser.o
# --- Tests ---
all_tests: build/html_node_test build/css_selector_test build/html_parser_test build/query_select_test
build/html_node_test --skip-benchmarks
build/css_selector_test --skip-benchmarks
build/html_parser_test --skip-benchmarks
build/query_select_test --skip-benchmarks
build/html_node_test: tests/html_node.cc build/grim.o build/catch.o build/parser.o | build
${CC} ${CCFLAGS} -Iinclude/ tests/html_node.cc build/grim.o build/catch.o build/parser.o -o build/html_node_test
build/css_selector_test: tests/css_selector.cc build/grim.o build/catch.o build/parser.o | build
${CC} ${CCFLAGS} -Iinclude/ tests/css_selector.cc build/grim.o build/catch.o build/parser.o -o build/css_selector_test
build/html_parser_test: tests/html_parser.cc build/grim.o build/parser.o build/catch.o | build
${CC} ${CCFLAGS} -Iinclude/ tests/html_parser.cc build/grim.o build/parser.o build/catch.o -o build/html_parser_test
build/css_parser_test: tests/css_parser.cc build/grim.o build/parser.o build/catch.o | build
${CC} ${CCFLAGS} -Iinclude/ tests/css_parser.cc build/grim.o build/parser.o build/catch.o -o build/css_parser_test
build/query_select_test: tests/query_select.cc build/grim.o build/parser.o build/catch.o | build
${CC} ${CCFLAGS} -Iinclude/ tests/query_select.cc build/grim.o build/parser.o build/catch.o -o build/query_select_test
build/catch.o: ./include/catch_amalgamated.cpp ./include/catch_amalgamated.hpp | build
${CC} ${CCFLAGS} -Iinclude/ -c include/catch_amalgamated.cpp -o build/catch.o
# --- Prebuild ---
# use to prebuild the master.css
# --- Tools ---
clean:
rm -f main build/*.o
MD_FILES := $(shell find docs/content -name "*.md")
HTML_FILES := $(MD_FILES:docs/content/%.md=docs/dist/%.html)
docs: $(HTML_FILES)
@printf "\
\n\
Commit: %H
%b
%N
]]>' --date=iso >> docs/dist/rss.xml @printf "\ \n\ " >> docs/dist/rss.xml # See 080f729 note for the template command docs/dist/%.html: docs/content/%.md docs/components/navbar.html pandoc $< | template docs/components/navbar.html --stdin docs/template.html > $@ serve: cd docs/dist && python3 -m http.server 8000