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 82 83 84 85
|
PROJECT = imgui
MULTIARCH ?= $(shell $(CC) --print-multiarch)
PREFIX ?= /usr
INCLUDEDIR ?= include/imgui
LIBDIR ?= lib/$(MULTIARCH)
CPPFLAGS += -I. \
-DIMGUI_DISABLE_STB_RECT_PACK_IMPLEMENTATION \
-DIMGUI_STB_RECT_PACK_FILENAME="<stb/stb_rect_pack.h>" \
-DIMGUI_DISABLE_STB_TRUETYPE_IMPLEMENTATION \
-DIMGUI_STB_TRUETYPE_FILENAME="<stb/stb_truetype.h>"
CXXFLAGS += -fPIC
LIBS := freetype2 sdl2
PKG_CONFIG ?= pkg-config
LIBS_CPPFLAGS := $(shell $(PKG_CONFIG) --cflags-only-I $(LIBS))
LIBS_CFLAGS := $(shell $(PKG_CONFIG) --cflags-only-other $(LIBS))
LIBS_LDFLAGS := $(shell $(PKG_CONFIG) --libs $(LIBS))
CPPFLAGS += $(LIBS_CPPFLAGS)
CFLAGS += $(LIBS_CFLAGS)
LDFLAGS += $(LIBS_LDFLAGS)
HEADERS := $(wildcard *.h misc/cpp/*.h misc/freetype/*.h)
HEADERS_BACKENDS := $(wildcard backends/*.h)
SRCS := $(wildcard *.cpp misc/cpp/*.cpp misc/freetype/*.cpp) \
backends/imgui_impl_allegro5.cpp \
backends/imgui_impl_glfw.cpp backends/imgui_impl_glut.cpp \
backends/imgui_impl_opengl2.cpp backends/imgui_impl_opengl3.cpp \
backends/imgui_impl_sdl.cpp backends/imgui_impl_vulkan.cpp
OBJS := $(sort $(SRCS:.cpp=.o))
# unused
LIB_NAME := lib$(PROJECT).so
SO_NAME := $(LIB_NAME).0
REAL_NAME := $(LIB_NAME).$(VERSION)
ARLIB := lib$(PROJECT).a
SHLIB := $(SO_NAME)
PCFILE := $(PROJECT).pc
.PHONY: all
all: $(ARLIB) $(PCFILE)
$(ARLIB): $(OBJS)
$(AR) rcs $@ $^
$(SHLIB): $(OBJS)
$(CXX) -shared -Wl,-soname,$(SO_NAME) -o $@ $^ $(LDFLAGS) -lm -lstb
$(PCFILE): $(PCFILE).in
sed 's|@prefix@|$(PREFIX)|; s|@libdir@|$(LIBDIR)|; s|@includedir@|$(INCLUDEDIR)|; s|@version@|$(VERSION)|' $< > $@
.PHONY: clean
clean:
rm -f $(ARLIB) $(SHLIB) $(OBJS) $(PCFILE)
# unused
.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) $(HEADERS_BACKENDS) $(PCFILE)
install -d $(DESTDIR)$(PREFIX)/$(INCLUDEDIR) || true
install -m 0644 $(HEADERS) $(DESTDIR)$(PREFIX)/$(INCLUDEDIR)/
install -d $(DESTDIR)$(PREFIX)/$(INCLUDEDIR)/backends || true
install -m 0644 $(HEADERS_BACKENDS) $(DESTDIR)$(PREFIX)/$(INCLUDEDIR)/backends/
install -d $(DESTDIR)$(PREFIX)/$(LIBDIR)/pkgconfig || true
install -m 0644 $(PCFILE) $(DESTDIR)$(PREFIX)/$(LIBDIR)/pkgconfig
.PHONY: install
install: install-static install-header
|