1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
PROJECT = libstb
MULTIARCH := $(shell gcc --print-multiarch)
INCLUDEDIR := $(DESTDIR)/usr/include/stb
LIBDIR := $(DESTDIR)/usr/lib/$(MULTIARCH)
CFLAGS += -fPIC -DSTB_DEFINE
BLACKLIST := \
stb_connected_components \
stb_easy_font \
stb_textedit \
stb_tilemap_editor \
stb_voxel_render
HEADERS := $(wildcard *.h)
HEADERS_TOBE_PRECOMPILED := $(filter-out $(BLACKLIST:=.h),$(HEADERS))
SRCS := $(HEADERS_TOBE_PRECOMPILED:.h=.c)
OBJS := $(HEADERS_TOBE_PRECOMPILED:.h=.o) stb_vorbis.o
SO_NAME := $(PROJECT).so.0
REAL_NAME := $(PROJECT).so.0.0
all: $(PROJECT).a $(PROJECT).so
$(PROJECT).a: $(OBJS)
$(AR) rcs $@ $^
$(PROJECT).so: $(OBJS)
$(CC) -shared -Wl,-soname,$(SO_NAME) $(LDFLAGS) -o $@ $^ -lm
%.c: %.h
cp $< $@
%.o: %.c
$(CC) $(CFLAGS) -D$(shell echo $* | tr a-z A-Z)_IMPLEMENTATION -c $^
clean:
rm -f $(PROJECT).a $(PROJECT).so $(OBJS) $(SRCS)
install-shared: $(PROJECT).so
install -d $(LIBDIR) || true
install -m 0644 $(PROJECT).so $(LIBDIR)/$(REAL_NAME)
rm -f $(LIBDIR)/$(SO_NAME)
ln -s $(REAL_NAME) $(LIBDIR)/$(SO_NAME)
rm -f $(LIBDIR)/$(PROJECT).so
ln -s $(SO_NAME) $(LIBDIR)/$(PROJECT).so
install-static: $(PROJECT).a
install -d $(LIBDIR) || true
install -m 0644 $(PROJECT).a $(LIBDIR)/$(PROJECT).a
install-header: $(HEADERS)
install -d $(INCLUDEDIR) || true
install -m 0644 $(HEADERS) $(INCLUDEDIR)/
install: install-shared install-static install-header
.PHONY: all clean install install-shared install-static install-header
|