]> git.sesse.net Git - bmusb/commitdiff
Build and install a shared library.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 29 Sep 2016 16:36:14 +0000 (18:36 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 29 Sep 2016 17:27:37 +0000 (19:27 +0200)
Makefile

index 075aca8d8fc83837318e991f047371a03010c074..ee0ba10393e089591c598e1b2385da8abed25e61 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,29 +1,43 @@
 CXXFLAGS := -std=gnu++14 -O2 -Wall -I. -g $(shell pkg-config libusb-1.0 --cflags) -pthread
 LDFLAGS := $(shell pkg-config libusb-1.0 --libs) -pthread
 AR := ar
+LN := ln
 RANLIB := ranlib
 INSTALL := install
 PREFIX := /usr/local
 LIB := libbmusb.a
+SODEV := libbmusb.so
+SONAME := libbmusb.so.1
+SOLIB := libbmusb.so.1.0.0
 
-all: $(LIB) main
+all: $(LIB) $(SOLIB) main
+
+%.pic.o : %.cpp
+       $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -o $@ -c $^
 
 main: bmusb.o main.o
        $(CXX) -o main $^ $(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 fake_capture.o $(LIB) main
+       $(RM) bmusb.o main.o fake_capture.o bmusb.pic.o fake_capture.pic.o $(LIB) $(SOLIB) main
 
 install: all
        $(INSTALL) -m 755 -o root -g root -d \
                $(DESTDIR)$(PREFIX)/lib \
                $(DESTDIR)$(PREFIX)/lib/pkgconfig \
                $(DESTDIR)$(PREFIX)/include/bmusb
-       $(INSTALL) -m 755 -o root -g root $(LIB) $(DESTDIR)$(PREFIX)/lib
+       $(INSTALL) -m 755 -o root -g root $(LIB) $(SOLIB) $(DESTDIR)$(PREFIX)/lib
+       $(LN) -sf $(SOLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)
+       $(LN) -sf $(SOLIB) $(DESTDIR)$(PREFIX)/lib/$(SODEV)
        $(INSTALL) -m 755 -o root -g root bmusb/bmusb.h bmusb/fake_capture.h $(DESTDIR)$(PREFIX)/include/bmusb
        $(INSTALL) -m 644 -o root -g root bmusb.pc $(DESTDIR)$(PREFIX)/lib/pkgconfig