diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ae49346 --- /dev/null +++ b/Makefile @@ -0,0 +1,62 @@ +.POSIX: +.SUFFIXES: +.PHONY: all run clean distclean install uninstall cgi + +include config.mk + +TARGET = feuille +SRC = feuille.c util.c server.c bin.c +OBJ = $(SRC:%.c=%.o) + +all: $(TARGET) $(TARGET).1 cgi + +run: $(TARGET) + ./$(TARGET) + +clean: + @printf "%-8s $(OBJ)\n" "rm" + @rm -f $(OBJ) + +distclean: + @printf "%-8s $(TARGET) $(OBJ)\n" "rm" + @rm -f $(TARGET) $(OBJ) + +install: $(TARGET) $(TARGET).1 + @echo "installing executable file to $(PREFIX)/bin" + @mkdir -p "$(PREFIX)/bin" + @cp -f $(TARGET) "$(PREFIX)/bin" + @chmod 755 "$(PREFIX)/bin/$(TARGET)" + + @echo "installing manpage to $(MAN)/man1" + @mkdir -p $(MAN)/man1 + @mv -f $(TARGET).1 $(MAN)/man1 + @chmod 644 $(MAN)/man1/$(TARGET).1 + +uninstall: $(PREFIX)/bin/$(TARGET) $(MAN)/man1/$(TARGET).1 + @echo "removing executable file from $(PREFIX)/bin" + @rm -f "$(PREFIX)/bin/$(TARGET)" + + @echo "removing manpage from $(MAN)/man1" + @rm -f $(MAN)/man1/$(TARGET).1 + +$(TARGET): $(OBJ) + @printf "%-8s $(OBJ) -o $@\n" "$(CC)" + @$(CC) $(LDFLAGS) $(OBJ) -o $@ + +$(TARGET).1: $(TARGET).1.md + @printf "%-8s $(TARGET).1.md -o $@\n" "pandoc" + @sed "s/{VERSION}/$(VERSION)/g" $(TARGET).1.md | pandoc -s -t man -o $@ + +ADDR = 127.0.0.1 +PORT = 8888 + +cgi: web/cgi/feuille.cgi + +web/cgi/feuille.cgi: web/cgi/feuille.cgi.c + @printf "%-8s web/cgi/feuille.cgi.c -o $@\n" "$(CC)" + @$(CC) $(CFLAGS) $(LDFLAGS) -static -DADDR=\"$(ADDR)\" -DPORT=$(PORT) web/cgi/feuille.cgi.c -o $@ + +.SUFFIXES: .c .o +.c.o: + @printf "%-8s $<\n" "$(CC)" + @$(CC) $(CFLAGS) -c $< diff --git a/config.mk b/config.mk new file mode 100644 index 0000000..3e07cb2 --- /dev/null +++ b/config.mk @@ -0,0 +1,29 @@ +# feuille version +VERSION = 1.0.0 + +# paths (customize them to fit your system) +PREFIX = /usr/local +MAN = $(PREFIX)/share/man + +# includes and libs +INCS = -I/usr/include -I. +LIBS = -L/usr/lib -lc + +# OpenBSD / FreeBSD (uncomment) +#MAN = $(PREFIX)/man +#INCS = -I/usr/share/include -I. +#LIBS = -L/usr/share/lib -lc + +# compiler +CC = cc + +# debug build +CFLAGS = -g -std=c99 -Wall -Wextra -Wpedantic -Wno-sign-compare -DVERSION=\"$(VERSION)\" $(INCS) +LDFLAGS = -g $(LIBS) + +# release build +CFLAGS$(DEBUG) = -std=c99 -Wall -Wextra -Wno-sign-compare -DVERSION=\"$(VERSION)\" -O3 $(INCS) +LDFLAGS$(DEBUG) = -s $(LIBS) + +# static build (uncomment) +#LD_FLAGS += -static