File: Makefile

package info (click to toggle)
libstb 0.0~git20250907.fede005%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,520 kB
  • sloc: ansic: 80,787; cpp: 1,506; makefile: 114; sh: 22
file content (81 lines) | stat: -rw-r--r-- 2,293 bytes parent folder | download | duplicates (2)
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