ifeq ($(PREFIX),) PREFIX := /usr/local endif ifeq ($(BINDIR),) BINDIR := /bin endif name := qidx cmd := qidx so_major := 0 so_minor := 1 CC=gcc CFLAGS = -Wall -pedantic $(debug) $(opt) LDFLAGS := -lhts -lm -fPIC ifeq ($(DEBUG),"1") debug = -fsanitize=address -g else opt = -O2 endif SRC_EXT:=%.c _STD_BUILD=$(CC) $(CFLAGS) $(filter $(SRC_EXT) %.o, $^) -o $@ STD_BUILD=$(_STD_BUILD) $(LDFLAGS) STD_COMPILE=$(_STD_BUILD) -fPIC -c OBJS = ./util/hash.o OBJS += ./util/prime_search.o OBJS += ./util/prime_search.o OBJS += ./util/sds/sds.o OBJS += ./util/err.o OBJS += ./qidx.o devname = lib$(name).so lib_so = lib$(name).so.$(so_major).$(so_minor) soname = lib$(name).so.$(so_major) make: $(cmd) $(lib_so) $(cmd): ./main.c $(OBJS) $(STD_BUILD) $(lib_so): $(OBJS) $(CC) $(LDFLAGS) -shared -Wl,-soname=$(soname) -fPIC -o $@ $^ [ -n "$(soname)" ] && ln -s $(lib_so) $(soname) || true [ -n "$(devname)" ] && ln -s $(soname) $(devname) || true clean: $(RM) $(cmd) $(OBJS) $(devname) $(lib_so) $(soname) .PHONY: clean %.o: %.c $(STD_COMPILE) .PHONY: install install: mkdir -p $(DESTDIR)$(PREFIX)/include $(DESTDIR)$(PREFIX)/lib cp qidx.h $(DESTDIR)$(PREFIX)/include/qidx.h cp -d $(lib_so) $(soname) $(devname) $(DESTDIR)$(PREFIX)/lib/ .PHONY: uninstall uninstall: rm -f $(DESTDIR)$(PREFIX)/include/qidx.h rm -f $(DESTDIR)$(PREFIX)/lib/$(lib_so) [ -n "$(soname)" ] && rm -f $(DESTDIR)$(PREFIX)/lib/$(soname) || true [ -n "$(devname)" ] && rm -f $(DESTDIR)$(PREFIX)/lib/$(devname) || true