90 lines
3.4 KiB
Makefile
90 lines
3.4 KiB
Makefile
.DEFAULT_GOAL := all
|
|||
|
|
-include config.mk
|
||
|
|
|
||
|
|
ifeq ($(wildcard config.mk),)
|
||
|
|
$(error Run ./configure first)
|
||
|
|
endif
|
||
|
|
|
||
|
|
PREFIX ?= /usr/local
|
||
|
|
BINDIR ?= $(PREFIX)/bin
|
||
|
|
LIBDIR ?= $(PREFIX)/lib
|
||
|
|
INCLUDEDIR ?= $(PREFIX)/include/ensifer
|
||
|
|
DATADIR ?= $(PREFIX)/share/ensifer
|
||
|
|
DOCDIR ?= $(PREFIX)/share/doc/ensifer
|
||
|
|
MANDIR ?= $(PREFIX)/share/man
|
||
|
|
|
||
|
|
BUILD = build
|
||
|
|
OBJDIR = $(BUILD)/obj
|
||
|
|
LIBDIR_BUILD = $(BUILD)/lib
|
||
|
|
BINDIR_BUILD = $(BUILD)/bin
|
||
|
|
CORE_OBJS = $(OBJDIR)/enfilade.o $(OBJDIR)/tumbler.o
|
||
|
|
S7_OBJS = $(OBJDIR)/enfilade_s7.o $(CORE_OBJS)
|
||
|
|
|
||
|
|
.PHONY: all clean distclean check test install uninstall version
|
||
|
|
|
||
|
|
version:
|
||
|
|
@printf 'ensifer version %s\n' '$(VERSION)'
|
||
|
|
|
||
|
|
all: $(LIBDIR_BUILD)/libensifer.a $(LIBDIR_BUILD)/enfilade.so $(BINDIR_BUILD)/logan
|
||
|
|
|
||
|
|
$(OBJDIR) $(LIBDIR_BUILD) $(BINDIR_BUILD):
|
||
|
|
@mkdir -p $@
|
||
|
|
|
||
|
|
$(OBJDIR)/%.o: src/%.c | $(OBJDIR)
|
||
|
|
$(CC) $(CPPFLAGS) -Iinc $(CFLAGS) -fPIC -c $< -o $@
|
||
|
|
|
||
|
|
$(OBJDIR)/s7.o: src/s7.c inc/s7.h | $(OBJDIR)
|
||
|
|
$(CC) $(CPPFLAGS) $(S7_CPPFLAGS) -Iinc $(CFLAGS) -w -c $< -o $@
|
||
|
|
|
||
|
|
$(LIBDIR_BUILD)/libensifer.a: $(CORE_OBJS) | $(LIBDIR_BUILD)
|
||
|
|
$(AR) rcs $@ $(CORE_OBJS)
|
||
|
|
|
||
|
|
$(LIBDIR_BUILD)/enfilade.so: $(S7_OBJS) | $(LIBDIR_BUILD)
|
||
|
|
$(CC) -shared $(LDFLAGS) -o $@ $(S7_OBJS) -lm
|
||
|
|
|
||
|
|
$(BINDIR_BUILD)/logan: src/logan.c $(OBJDIR)/s7.o $(S7_OBJS) inc/enfilade_s7.h | $(BINDIR_BUILD)
|
||
|
|
$(CC) $(CPPFLAGS) $(S7_CPPFLAGS) -Iinc $(CFLAGS) $(LDFLAGS) -o $@ \
|
||
|
|
src/logan.c $(OBJDIR)/s7.o $(S7_OBJS) -lm $(S7_LIBS)
|
||
|
|
|
||
|
|
$(BUILD)/tumbler-test: test/tumbler-test.c $(OBJDIR)/tumbler.o | $(BUILD)
|
||
|
|
$(CC) $(CPPFLAGS) -Iinc $(CFLAGS) $(LDFLAGS) -o $@ $^
|
||
|
|
|
||
|
|
$(BUILD)/enfilade-test: test/enfilade-test.c $(CORE_OBJS) | $(BUILD)
|
||
|
|
$(CC) $(CPPFLAGS) -Iinc $(CFLAGS) $(LDFLAGS) -o $@ $^
|
||
|
|
|
||
|
|
$(BUILD)/enfload: test/enfload.c $(OBJDIR)/s7.o $(S7_OBJS) inc/enfilade_s7.h | $(BUILD)
|
||
|
|
$(CC) $(CPPFLAGS) $(S7_CPPFLAGS) -Iinc $(CFLAGS) $(LDFLAGS) -o $@ \
|
||
|
|
test/enfload.c $(OBJDIR)/s7.o $(S7_OBJS) -lm $(S7_LIBS)
|
||
|
|
|
||
|
|
$(BUILD):
|
||
|
|
@mkdir -p $@
|
||
|
|
|
||
|
|
check test: $(BUILD)/tumbler-test $(BUILD)/enfilade-test $(BUILD)/enfload
|
||
|
|
$(BUILD)/tumbler-test
|
||
|
|
$(BUILD)/enfilade-test
|
||
|
|
$(BUILD)/enfload
|
||
|
|
|
||
|
|
install: all
|
||
|
|
$(INSTALL) -d $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(INCLUDEDIR) \
|
||
|
|
$(DESTDIR)$(DATADIR)/scheme $(DESTDIR)$(DOCDIR) $(DESTDIR)$(MANDIR)/man3 $(DESTDIR)$(MANDIR)/man7
|
||
|
|
$(INSTALL) -m 755 $(BINDIR_BUILD)/logan $(DESTDIR)$(BINDIR)/logan
|
||
|
|
$(INSTALL) -m 644 $(LIBDIR_BUILD)/libensifer.a $(DESTDIR)$(LIBDIR)/libensifer.a
|
||
|
|
$(INSTALL) -m 755 $(LIBDIR_BUILD)/enfilade.so $(DESTDIR)$(LIBDIR)/enfilade.so
|
||
|
|
$(INSTALL) -m 644 inc/enfilade.h inc/tumbler.h inc/s7.h inc/enfilade_s7.h $(DESTDIR)$(INCLUDEDIR)/
|
||
|
|
$(INSTALL) -m 644 scheme/enf.scm scheme/cload.scm scheme/libc.scm scheme/libdl.scm $(DESTDIR)$(DATADIR)/scheme/
|
||
|
|
$(INSTALL) -m 644 README.md doc/USAGE $(DESTDIR)$(DOCDIR)/
|
||
|
|
$(INSTALL) -m 644 doc/enfilade.3 doc/tumbler.3 $(DESTDIR)$(MANDIR)/man3/
|
||
|
|
$(INSTALL) -m 644 doc/enfilade-s7.7 doc/ensifer.7 doc/tumbler-s7.7 $(DESTDIR)$(MANDIR)/man7/
|
||
|
|
|
||
|
|
uninstall:
|
||
|
|
rm -f $(DESTDIR)$(BINDIR)/logan $(DESTDIR)$(LIBDIR)/libensifer.a $(DESTDIR)$(LIBDIR)/enfilade.so
|
||
|
|
rm -f $(DESTDIR)$(INCLUDEDIR)/enfilade.h $(DESTDIR)$(INCLUDEDIR)/tumbler.h $(DESTDIR)$(INCLUDEDIR)/s7.h $(DESTDIR)$(INCLUDEDIR)/enfilade_s7.h
|
||
|
|
rm -f $(DESTDIR)$(MANDIR)/man3/enfilade.3 $(DESTDIR)$(MANDIR)/man3/tumbler.3
|
||
|
|
rm -f $(DESTDIR)$(MANDIR)/man7/enfilade-s7.7 $(DESTDIR)$(MANDIR)/man7/ensifer.7 $(DESTDIR)$(MANDIR)/man7/tumbler-s7.7
|
||
|
|
rm -rf $(DESTDIR)$(DATADIR) $(DESTDIR)$(DOCDIR)
|
||
|
|
|
||
|
|
clean:
|
||
|
|
rm -rf $(BUILD)
|
||
|
|
|
||
|
|
distclean: clean
|
||
|
|
rm -f config.mk config.h config.log
|