Files
Ensifer/Makefile
T
2026-09-30 19:27:45 -04:00

91 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