hoedown/Makefile
Josh Stone be82ac2cb0 Support overrides for bin, lib, and include
Usually bin and include are the same, but for instance lib may want to be
lib64 on Red Hat distros.  Add BINDIR, LIBDIR, and INCLUDEDIR variables
that can be overridden on the command line.

This commit also tweaks the way the libraries are installed, dropping
execute privileges on libhoedown.a, and making sure libhoedown.so is
installed as a symlink.  (The install command doesn't preserve symlinks.)
2015-05-15 12:06:38 -07:00

90 lines
2 KiB
Makefile

CFLAGS = -g -O3 -ansi -pedantic -Wall -Wextra -Wno-unused-parameter
PREFIX = /usr/local
BINDIR = $(PREFIX)/bin
LIBDIR = $(PREFIX)/lib
INCLUDEDIR = $(PREFIX)/include
HOEDOWN_CFLAGS = $(CFLAGS) -Isrc
ifneq ($(OS),Windows_NT)
HOEDOWN_CFLAGS += -fPIC
endif
HOEDOWN_SRC=\
src/autolink.o \
src/buffer.o \
src/document.o \
src/escape.o \
src/html.o \
src/html_blocks.o \
src/html_smartypants.o \
src/stack.o \
src/version.o
.PHONY: all test test-pl clean
all: libhoedown.so libhoedown.a hoedown smartypants
# Libraries
libhoedown.so: libhoedown.so.3
ln -f -s $^ $@
libhoedown.so.3: $(HOEDOWN_SRC)
$(CC) -Wl,-soname,$(@F) -shared $^ $(LDFLAGS) -o $@
libhoedown.a: $(HOEDOWN_SRC)
$(AR) rcs libhoedown.a $^
# Executables
hoedown: bin/hoedown.o $(HOEDOWN_SRC)
$(CC) $^ $(LDFLAGS) -o $@
smartypants: bin/smartypants.o $(HOEDOWN_SRC)
$(CC) $^ $(LDFLAGS) -o $@
# Perfect hashing
src/html_blocks.c: html_block_names.gperf
gperf -L ANSI-C -N hoedown_find_block_tag -c -C -E -S 1 --ignore-case -m100 $^ > $@
# Testing
test: hoedown
python test/runner.py
test-pl: hoedown
perl test/MarkdownTest_1.0.3/MarkdownTest.pl \
--script=./hoedown --testdir=test/MarkdownTest_1.0.3/Tests --tidy
# Housekeeping
clean:
$(RM) src/*.o bin/*.o
$(RM) libhoedown.so libhoedown.so.1 libhoedown.a
$(RM) hoedown smartypants hoedown.exe smartypants.exe
# Installing
install:
install -m755 -d $(DESTDIR)$(LIBDIR)
install -m755 -d $(DESTDIR)$(BINDIR)
install -m755 -d $(DESTDIR)$(INCLUDEDIR)
install -m644 libhoedown.a $(DESTDIR)$(LIBDIR)
install -m755 libhoedown.so.3 $(DESTDIR)$(LIBDIR)
ln -f -s libhoedown.so.3 $(DESTDIR)$(LIBDIR)/libhoedown.so
install -m755 hoedown $(DESTDIR)$(BINDIR)
install -m755 smartypants $(DESTDIR)$(BINDIR)
install -m755 -d $(DESTDIR)$(INCLUDEDIR)/hoedown
install -m644 src/*.h $(DESTDIR)$(INCLUDEDIR)/hoedown
# Generic object compilations
%.o: %.c
$(CC) $(HOEDOWN_CFLAGS) -c -o $@ $<
src/html_blocks.o: src/html_blocks.c
$(CC) $(HOEDOWN_CFLAGS) -Wno-static-in-inline -c -o $@ $<