VERSION = 0.1 # Compiler flags CC ?= gcc AR ?= ar LIBS = -ljansson CFLAGS = -std=c99 -pedantic -Wall -Werror -Wextra -I$(PREFIX)/include CFLAGS += -D_POSIX_C_SOURCE=200112L -DVERSION=\"$(VERSION)\" LDFLAGS = -L$(PREFIX)/lib BUILDDIR = build # Install directories PREFIX ?= /usr/local BINPREFIX = $(PREFIX)/bin MANPREFIX = $(PREFIX)/share/man BASHCPL = $(PREFIX)/share/bash-completion/completions ZSHCPL = $(PREFIX)/share/zsh/site-functions # Source files SRC = jsh.c OBJ = $(addprefix $(BUILDDIR)/,$(SRC:.c=.o)) # Dependencies and targets all: CFLAGS += -Os all: LDFLAGS += -s all: $(BUILDDIR)/libjsh.so debug: CFLAGS += -O0 -g -DDEBUG debug: $(BUILDDIR)/libjsh.so include Sourcedeps $(BUILDDIR): mkdir -p $(BUILDDIR) $(OBJ): Makefile | $(BUILDDIR) $(BUILDDIR)/jsh.o: CFLAGS += -fPIC $(BUILDDIR)/%.o: %.c $(CC) $(CFLAGS) $(OPTFLAGS) -c -o $@ $< $(BUILDDIR)/libjsh.so: $(OBJ) $(CC) -shared -o $@ $(OBJ) $(BUILDDIR)/libjshtest: $(BUILDDIR)/libjshtest.o $(BUILDDIR)/libjsh.so $(CC) $(CFLAGS) $(OPTFLAGS) -o $@ $(BUILDDIR)/libjshtest.o -L $(BUILDDIR) -ljsh -ljansson test: $(BUILDDIR)/libjshtest LD_LIBRARY_PATH=$(BUILDDIR) $(BUILDDIR)/libjshtest install: mkdir -p "$(DESTDIR)$(BINPREFIX)" cp -p mtsd "$(DESTDIR)$(BINPREFIX)" uninstall: rm -f "$(DESTDIR)$(BINPREFIX)"/mtsd clean: rm -rf $(BUILDDIR) $(OBJ) mtsd .PHONY: all debug test install uninstall clean