]> git.sesse.net Git - bmusb/blob - Makefile
Release 0.7.7 (no code changes, Makefile only).
[bmusb] / Makefile
1 PKG_CONFIG ?= pkg-config
2 CXXFLAGS ?= -O2 -g
3 CXXFLAGS := -std=gnu++14 -Wall -I. $(shell $(PKG_CONFIG) libusb-1.0 --cflags) -pthread $(CXXFLAGS)
4 LDFLAGS := $(shell $(PKG_CONFIG) libusb-1.0 --libs) -pthread $(LDFLAGS)
5 AR := ar
6 LN := ln
7 RANLIB := ranlib
8 INSTALL := install
9 PREFIX := /usr/local
10 LIBDIR := $(PREFIX)/lib
11 UDEVDIR ?= $(shell $(PKG_CONFIG) --variable udevdir udev)
12 UDEVDIR ?= /lib/udev
13 LIB := libbmusb.a
14 SODEV := libbmusb.so
15 SONAME := libbmusb.so.6
16 SOLIB := libbmusb.so.6.0.2
17
18 all: $(LIB) $(SOLIB) main bmusb-v4l2proxy
19
20 %.pic.o : %.cpp
21         $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -o $@ -c $^
22
23 main: bmusb.o main.o
24         $(CXX) -o $@ $^ $(LDFLAGS)
25
26 bmusb-v4l2proxy: bmusb.o v4l2proxy.o
27         $(CXX) -o $@ $^ $(LDFLAGS)
28
29 # Static library.
30 $(LIB): bmusb.o fake_capture.o
31         $(AR) rc $@ $^
32         $(RANLIB) $@
33
34 # Shared library.
35 $(SOLIB): bmusb.pic.o fake_capture.pic.o
36         $(CXX) -shared -Wl,-soname,$(SONAME) -o $@ $^ $(LDFLAGS)
37
38 clean:
39         $(RM) bmusb.o main.o v4l2proxy.o fake_capture.o bmusb.pic.o fake_capture.pic.o $(LIB) $(SOLIB) main bmusb-v4l2proxy
40
41 install: all
42         $(INSTALL) -m 755 -d \
43                 $(DESTDIR)$(LIBDIR) \
44                 $(DESTDIR)$(LIBDIR)/pkgconfig \
45                 $(DESTDIR)$(PREFIX)/include/bmusb \
46                 $(DESTDIR)$(UDEVDIR)/rules.d
47         $(INSTALL) -m 755 $(LIB) $(SOLIB) $(DESTDIR)$(LIBDIR)
48         $(LN) -sf $(SOLIB) $(DESTDIR)$(LIBDIR)/$(SONAME)
49         $(LN) -sf $(SOLIB) $(DESTDIR)$(LIBDIR)/$(SODEV)
50         $(INSTALL) -m 755 bmusb/bmusb.h bmusb/fake_capture.h $(DESTDIR)$(PREFIX)/include/bmusb
51         $(INSTALL) -m 644 bmusb.pc $(DESTDIR)$(LIBDIR)/pkgconfig
52         $(INSTALL) -m 644 70-bmusb.rules $(DESTDIR)$(UDEVDIR)/rules.d
53