CC ?= gcc CFLAGS ?= -Wall -fPIC -Ihash -O2 AR ?= ar ARFLAGS ?= rcs SRCS = djb2.c OBJS = $(SRCS:.c=.o) STATIC_LIB = libhash.a SHARED_LIB = libhash.so PREFIX ?= /usr/local INCLUDEDIR = $(PREFIX)/include LIBDIR = $(PREFIX)/lib TEST_SRC = test.c TEST_BIN = test.elf all: $(STATIC_LIB) $(SHARED_LIB) $(TEST_BIN) test: $(TEST_BIN) ./$< %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ $(STATIC_LIB): $(OBJS) $(AR) $(ARFLAGS) $@ $^ $(SHARED_LIB): $(OBJS) $(CC) -shared -o $@ $^ $(TEST_BIN): $(TEST_SRC) $(STATIC_LIB) $(CC) -Wall -Ihash -o $@ $(TEST_SRC) $(STATIC_LIB) install: $(STATIC_LIB) $(SHARED_LIB) mkdir -p $(DESTDIR)$(INCLUDEDIR)/hash cp -r hash/*.h $(DESTDIR)$(INCLUDEDIR)/hash/ mkdir -p $(DESTDIR)$(LIBDIR) cp $(STATIC_LIB) $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/ @echo "Installed libraries to $(DESTDIR)$(LIBDIR) and headers to $(DESTDIR)$(INCLUDEDIR)/hash" uninstall: rm -f $(DESTDIR)$(LIBDIR)/$(STATIC_LIB) $(DESTDIR)$(LIBDIR)/$(SHARED_LIB) rm -rf $(DESTDIR)$(INCLUDEDIR)/hash @echo "Uninstalled libraries from $(DESTDIR)$(LIBDIR) and headers from $(DESTDIR)$(INCLUDEDIR)/hash" clean: rm -f $(OBJS) $(STATIC_LIB) $(SHARED_LIB) $(TEST_BIN) .PHONY: all clean install uninstall test