libhash/Makefile

51 lines
1.2 KiB
Makefile

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)
install -d $(DESTDIR)$(INCLUDEDIR)/hash
install -m 644 hash/*.h $(DESTDIR)$(INCLUDEDIR)/hash/
install -d $(DESTDIR)$(LIBDIR)
install -m 644 $(STATIC_LIB) $(DESTDIR)$(LIBDIR)/
install -m 755 $(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