.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