From daffcbe6ec2d2bed6e2c65308ea97fda1e5ce4f7 Mon Sep 17 00:00:00 2001
From: yangfl <yangfl@users.noreply.github.com>
Date: Wed, 10 Jul 2019 10:57:16 +0800
Subject: [PATCH 1/8] Makefile: refactor

---
 Makefile  | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 stb.pc.in |  9 +++++++
 2 files changed, 89 insertions(+)
 create mode 100644 Makefile
 create mode 100644 stb.pc.in

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..d374f44
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,80 @@
+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_textedit \
+ stb_tilemap_editor \
+ stb_voxel_render \
+ stb_rect_pack \
+ stb_truetype
+
+HEADERS := $(wildcard *.h) deprecated/stb.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
diff --git a/stb.pc.in b/stb.pc.in
new file mode 100644
index 0000000..0479ed2
--- /dev/null
+++ b/stb.pc.in
@@ -0,0 +1,9 @@
+prefix=@prefix@
+libdir=${prefix}/@libdir@
+includedir=${prefix}/@includedir@
+
+Name: stb
+Description: single-file image and audio processing libraries for C/C++
+Version: 0.0
+Libs: -L${libdir} -lstb
+Cflags: -I${includedir}
-- 
2.35.1

