nuclear@10: PREFIX ?= /usr/local nuclear@10: nuclear@10: src = $(wildcard src/*.c) nuclear@10: obj = $(src:.c=.o) nuclear@10: dep = $(obj:.o=.d) nuclear@10: name = tinyweb nuclear@10: nuclear@10: CFLAGS = -pedantic -Wall -g $(pic) nuclear@10: nuclear@10: sys = $(shell uname -s) nuclear@10: nuclear@10: so_major = 0 nuclear@10: so_minor = 1 nuclear@10: alib = lib$(name).a nuclear@10: nuclear@10: ifeq ($(sys), Darwin) nuclear@10: solib = lib$(name).dylib nuclear@10: shared = -dynamiclib nuclear@10: else nuclear@10: ldname = lib$(name).so nuclear@10: soname = lib$(name).so.$(so_major) nuclear@10: solib = lib$(name).so.$(so_major).$(so_minor) nuclear@10: shared = -shared -Wl,-soname=$(soname) nuclear@10: pic = -fPIC nuclear@10: endif nuclear@10: nuclear@10: .PHONY: all nuclear@10: all: $(alib) $(solib) nuclear@10: nuclear@10: $(solib): $(obj) nuclear@10: $(CC) -o $@ $(shared) $(obj) $(LDFLAGS) nuclear@10: [ -n "$(soname)" ] && \ nuclear@15: rm -f $(soname) $(ldname) && \ nuclear@10: ln -s $(solib) $(soname) && \ nuclear@10: ln -s $(soname) $(ldname) || true nuclear@10: nuclear@10: $(alib): $(obj) nuclear@10: $(AR) rcs $@ $(obj) nuclear@10: nuclear@10: -include $(dep) nuclear@10: nuclear@10: %.d: %.c nuclear@10: @$(CPP) $(CFLAGS) $< -MM -MT $(@:.d=.o) >$@ nuclear@10: nuclear@10: .PHONY: clean nuclear@10: clean: nuclear@10: rm -f $(obj) $(alib) $(solib) nuclear@10: nuclear@10: .PHONY: cleandep nuclear@10: cleandep: nuclear@10: rm -f $(dep) nuclear@10: nuclear@10: .PHONY: install nuclear@10: install: $(alib) $(solib) nuclear@10: mkdir -p $(DESTDIR)$(PREFIX)/lib $(DESTDIR)$(PREFIX)/include nuclear@10: cp src/tinyweb.h $(DESTDIR)$(PREFIX)/include/tinyweb.h nuclear@10: cp $(alib) $(DESTDIR)$(PREFIX)/lib/$(alib) nuclear@10: cp $(solib) $(DESTDIR)$(PREFIX)/lib/$(solib) nuclear@10: [ -n "$(soname)" ] && \ nuclear@10: cd $(DESTDIR)$(PREFIX)/lib && \ nuclear@15: rm -f $(soname) $(ldname) && \ nuclear@10: ln -s $(solib) $(soname) && \ nuclear@10: ln -s $(soname) $(ldname) || \ nuclear@10: true nuclear@10: nuclear@10: .PHONY: uninstall nuclear@10: uninstall: nuclear@10: rm -f $(DESTDIR)$(PREFIX)/include/tinyweb.h nuclear@10: rm -f $(DESTDIR)$(PREFIX)/lib/$(alib) nuclear@10: rm -f $(DESTDIR)$(PREFIX)/lib/$(solib) nuclear@10: [ -n "$(soname)" ] && \ nuclear@10: rm -f $(DESTDIR)$(PREFIX)/lib/$(soname) && \ nuclear@10: rm -f $(DESTDIR)$(PREFIX)/lib/$(ldname) || \ nuclear@10: true nuclear@10: