+# Implicit rules are implemented in make as suffix rules. The following rule
+# empties the suffix list to disable the predefined implicit rules. This
+# increases performance and avoids hard-to-debug behaviour.
+.SUFFIXES:
+MAKEFLAGS += -Rr
+ifeq ("$(origin CC)", "default")
+ CC := cc
+endif
+
# where to install
PREFIX ?= /usr/local
libdir := $(PREFIX)/lib
RM := rm -f
LN := ln
LD := ld
+M4 := m4 -g
OBJCOPY := objcopy
# libosl's versioning consists of three numbers. Let's call them x, y and z.
OSL_CPPFLAGS += -DOSL_VERSION='"$(VERSION)"'
-OSL_CFLAGS += -Wno-sign-compare -g -Wunused -Wundef -W
+OSL_CFLAGS += -g -Wunused -Wundef -W
OSL_CFLAGS += -Wredundant-decls
OSL_CFLAGS += -Os
OSL_CFLAGS += -Wall
oslfsck: $(fsck_objects)
$(CC) -o $@ $(fsck_objects) $(LDFLAGS) -llopsub
+.PRECIOUS: %.lsg.h %.lsg.c
%.lsg.c: %.suite
lopsubgen --gen-c < $<
errtab.h: errlist
sed -e 's/^\([A-Z_]*\)\s*\(.*\)/OSL_ERROR(E_OSL_\1, \2)/g' $< > $@
-osl.h: osl.h.in errlist Makefile
+osl.h: osl.h.m4 errlist Makefile
echo '#ifndef _OSL_H' > $@
echo '#define _OSL_H' >> $@
- cat osl.h.in >> $@
+ $(M4) -DOUTPUT_MODE=C gendoc.m4 $< >> $@
echo '/** public error codes of the osl library. */' >> $@
sed -e 's/\([A-Z_]*\) .*/ E_OSL_\1/' \
-e '1s/^/enum osl_errors {/1' \
distclean: clean
rm -f web/index.html web/oslfsck.1.html web/osl.png
- rm -rf web/doxygen
install-bin: $(executables)
$(MKDIR) $(bindir)
$(INSTALL) -m 644 $(headers) $(includedir)
install: all install-bin install-man install-lib
-www: web/index.html web/osl.png web/doxygen/index.html
+www: web/index.html web/osl.png web/api.html
.PHONY: all shared clean install install-bin install-man install-lib www
web/osl.png: web/osl.pdf Makefile
convert -scale 200x200 $< $@
-web/index.html: oslfsck.1 web/index.html.in INSTALL README
- sed -e '/@README@/,$$d' web/index.html.in > $@
+web/index.html: oslfsck.1 web/header.html web/index.html.in INSTALL README QUICK_START
+ cat web/header.html > $@
+ sed -e '/@README@/,$$d' web/index.html.in >> $@
markdown < README >> $@
sed -e '1,/@README@/d' -e '/@INSTALL@/,$$d' web/index.html.in >> $@
markdown < INSTALL >> $@
- sed -e '1,/@INSTALL@/d' -e '/@MAN_PAGE@/,$$d' web/index.html.in >> $@
+ sed -e '1,/@INSTALL@/d' -e '/@QUICK_START@/,$$d' web/index.html.in >> $@
+ markdown < QUICK_START >> $@
+ sed -e '1,/@QUICK_START@/d' -e '/@MAN_PAGE@/,$$d' web/index.html.in >> $@
groff -m man -Thtml -P -l oslfsck.1 | sed -e '1,/^<body>/d; /^<\/body>/,$$d' >> $@
sed -e '1,/@MAN_PAGE@/d' web/index.html.in >> $@
-web/doxygen/index.html: $(wildcard *.c *.h) web/Doxyfile web/header.html \
- web/footer.html
- doxygen web/Doxyfile
+web/api.html: osl.h.m4 web/header.html web/footer.html
+ cat web/header.html > $@
+ $(M4) -DOUTPUT_MODE=HTML gendoc.m4 $< >> $@
+ cat web/footer.html >> $@