# increases performance and avoids hard-to-debug behaviour.
.SUFFIXES:
MAKEFLAGS += -Rr
-ifeq ("$(origin CC)", "default")
+CC := $(CC)
+ifeq ($(strip $(CC)),)
CC := cc
endif
bindir := $(PREFIX)/bin
mandir := $(PREFIX)/man/man1
-objects := osl.o util.o rbtree.o sha1.o
-fsck_objects := fsck.o osl.o util.o rbtree.o sha1.o oslfsck.lsg.o
+objects := osl.o util.o rbtree.o sha1.o sha3.o sha256.o
+fsck_objects := fsck.o osl.o util.o rbtree.o sha1.o sha3.o sha256.o oslfsck.lsg.o
deps := $(sort $(objects:.o=.d) $(fsck_objects:.o=.d))
headers := osl.h
executables := oslfsck
man_pages := oslfsck.1
INSTALL := install
-ifeq "$(origin CC)" "default"
- CC := cc
-endif
MKDIR := mkdir -p
RM := rm -f
LN := ln
# libosl's versioning consists of three numbers. Let's call them x, y and z.
x := 0
-y := 1
-z := 3
+y := 2
+z := 0
VERSION := $(x).$(y).$(z)
OSL_CPPFLAGS += -DOSL_VERSION='"$(VERSION)"'
-include $(deps)
endif
-# List osl.h in the prerequisites to make sure we generate it before attempting
-# to run the compiler. This matters only when the .d file does not exist.
-%.o: %.c osl.h Makefile errtab.h
+# The files to generate before attempting to run the compiler. These
+# are the order-only prerequisites in the rule below.
+pre_deps := osl.h errtab.h oslfsck.lsg.h
+
+# The .d and .o files are both created from a single cc invocation.
+define CC_CMD
$(CC) $(OSL_CPPFLAGS) $(CPPFLAGS) \
- -c -MMD -MF $(*F).d -MT $@ \
+ -c -MMD -MF $(*F).d -MT $(*F).o \
$(OSL_CFLAGS) $(CFLAGS) $<
+endef
+%.o: %.c Makefile | $(pre_deps)
+ $(CC_CMD)
+%.d: %.c Makefile | $(pre_deps)
+ $(CC_CMD)
fsck.o: oslfsck.lsg.h
oslfsck: $(fsck_objects)
web/osl.png: web/osl.pdf Makefile
convert -scale 200x200 $< $@
-web/index.html: oslfsck.1 web/index.html.in INSTALL README QUICK_START
- 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 >> $@