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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
PROJECT = stb
MULTIARCH ?= $(shell $(CC) --print-multiarch)
PREFIX ?= /usr
INCLUDEDIR ?= include/stb
LIBDIR ?= lib/$(MULTIARCH)
CPPFLAGS += -DSTB_DEFINE -DSTB_PERFECT_HASH
CFLAGS += -fPIC
BLACKLIST := \
stb_connected_components \
stb_easy_font \
stb_image_resize2 \
stb_textedit \
stb_tilemap_editor \
stb_voxel_render \
stb_rect_pack \
stb_truetype
HEADERS := $(wildcard *.h) deprecated/stb.h deprecated/stb_image_resize.h
HEADERS_TO_BE_PRECOMPILED := $(filter-out $(BLACKLIST:=.h),$(HEADERS))
GENERATED_SRCS := $(HEADERS_TO_BE_PRECOMPILED:.h=.c)
SRCS := $(GENERATED_SRCS) stb_rect_pack_truetype.c stb_vorbis.c
OBJS := $(sort $(SRCS:.c=.o))
LIB_NAME := lib$(PROJECT).so
SO_NAME := $(LIB_NAME).0
REAL_NAME := $(LIB_NAME).0.0
ARLIB := lib$(PROJECT).a
SHLIB := $(SO_NAME)
PCFILE := $(PROJECT).pc
.PHONY: all
all: $(ARLIB) $(SHLIB) $(PCFILE)
$(ARLIB): $(OBJS)
$(AR) rcs $@ $^
$(SHLIB): $(OBJS)
$(CC) -shared -Wl,-soname,$(SO_NAME) $(LDFLAGS) -o $@ $^ -lm
%.c: %.h
cp $< $@
%.o: %.c
$(CC) $(CPPFLAGS) -D$(shell echo $(notdir $*) | tr a-z A-Z)_IMPLEMENTATION $(CFLAGS) -o $@ -c $^
$(PCFILE): $(PCFILE).in
sed 's|@prefix@|$(PREFIX)|; s|@libdir@|$(LIBDIR)|; s|@includedir@|$(INCLUDEDIR)|' $< > $@
.PHONY: clean
clean:
rm -f $(ARLIB) $(SHLIB) $(OBJS) $(PCFILE) $(GENERATED_SRCS)
.PHONY: install-shared
install-shared: $(SHLIB)
install -d $(DESTDIR)$(PREFIX)/$(LIBDIR) || true
install -m 0644 $< $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(REAL_NAME)
rm -f $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(SO_NAME)
ln -s $(REAL_NAME) $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(SO_NAME)
rm -f $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(LIB_NAME)
ln -s $(SO_NAME) $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(LIB_NAME)
.PHONY: install-static
install-static: $(ARLIB)
install -d $(DESTDIR)$(PREFIX)/$(LIBDIR) || true
install -m 0644 $< $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(ARLIB)
.PHONY: install-header
install-header: $(HEADERS) $(PCFILE)
install -d $(DESTDIR)$(PREFIX)/$(INCLUDEDIR) || true
install -m 0644 $(HEADERS) $(DESTDIR)$(PREFIX)/$(INCLUDEDIR)/
install -m 0644 -T stb_vorbis.c $(DESTDIR)$(PREFIX)/$(INCLUDEDIR)/stb_vorbis.h
install -d $(DESTDIR)$(PREFIX)/$(LIBDIR)/pkgconfig || true
install -m 0644 $(PCFILE) $(DESTDIR)$(PREFIX)/$(LIBDIR)/pkgconfig
.PHONY: install
install: install-shared install-static install-header
|