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
|
PKG_CONFIG ?= pkg-config
CXXFLAGS ?= -O2 -g
CXXFLAGS := -std=gnu++14 -Wall -I. $(shell $(PKG_CONFIG) libusb-1.0 --cflags) -pthread $(CXXFLAGS)
LDFLAGS := $(shell $(PKG_CONFIG) libusb-1.0 --libs) -pthread $(LDFLAGS)
AR := ar
LN := ln
RANLIB := ranlib
INSTALL := install
PREFIX := /usr
DEB_MULTIARCH_TRIPLET := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
LIBDIR := $(PREFIX)/lib/$(DEB_MULTIARCH_TRIPLET)
UDEVDIR ?= $(shell $(PKG_CONFIG) --variable udevdir udev)
UDEVDIR ?= /lib/udev
LIB := libbmusb.a
SODEV := libbmusb.so
SONAME := libbmusb.so.6
SOLIB := libbmusb.so.6.0.4
all: $(LIB) $(SOLIB) main bmusb-v4l2proxy
%.pic.o : %.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -o $@ -c $^
main: bmusb.o main.o
$(CXX) -o $@ $^ $(LDFLAGS)
bmusb-v4l2proxy: bmusb.o v4l2proxy.o
$(CXX) -o $@ $^ $(LDFLAGS)
# Static library.
$(LIB): bmusb.o fake_capture.o
$(AR) rc $@ $^
$(RANLIB) $@
# Shared library.
$(SOLIB): bmusb.pic.o fake_capture.pic.o
$(CXX) -shared -Wl,-soname,$(SONAME) -o $@ $^ $(LDFLAGS)
clean:
$(RM) bmusb.o main.o v4l2proxy.o fake_capture.o bmusb.pic.o fake_capture.pic.o $(LIB) $(SOLIB) main bmusb-v4l2proxy
install: all
$(INSTALL) -m 755 -d \
$(DESTDIR)$(LIBDIR) \
$(DESTDIR)$(LIBDIR)/pkgconfig \
$(DESTDIR)$(PREFIX)/include/bmusb \
$(DESTDIR)$(UDEVDIR)/rules.d
$(INSTALL) -m 755 $(LIB) $(SOLIB) $(DESTDIR)$(LIBDIR)
$(LN) -sf $(SOLIB) $(DESTDIR)$(LIBDIR)/$(SONAME)
$(LN) -sf $(SOLIB) $(DESTDIR)$(LIBDIR)/$(SODEV)
$(INSTALL) -m 755 bmusb/bmusb.h bmusb/fake_capture.h $(DESTDIR)$(PREFIX)/include/bmusb
sed 's/@DEB_MULTIARCH_TRIPLET@/$(DEB_MULTIARCH_TRIPLET)/' < bmusb.pc > $(DESTDIR)$(LIBDIR)/pkgconfig/bmusb.pc
chmod 0644 $(DESTDIR)$(LIBDIR)/pkgconfig/bmusb.pc
$(INSTALL) -m 644 70-bmusb.rules $(DESTDIR)$(UDEVDIR)/rules.d
|