1CXX?=g++ 2CXXFLAGS?=-Wall -O2 3LIB?=hidapi 4ifeq ($(LIB),libusb) 5 CPPFLAGS=-Dlibusb 6 LIBS=-lusb-1.0 7else 8 CPPFLAGS=-Dhidapi 9 LIBS=-lhidapi 10endif 11SYSTEMDDIR?=/usr/lib/systemd 12 13PREFIX?=$(DESTDIR)/usr 14libdir?=$(PREFIX)/lib 15includedir?=$(PREFIX)/include 16 17# Program & versioning information 18PROGN=g810-led 19MAJOR=0 20MINOR=4 21MICRO=2 22 23CXXFLAGS+=-std=gnu++11 -DVERSION=\"$(MAJOR).$(MINOR).$(MICRO)\" 24APPSRCS=src/main.cpp src/helpers/*.cpp 25LIBSRCS=src/classes/*.cpp 26 27.PHONY: all bin debug clean setup install uninstall lib install-lib install-dev 28 29all: lib/lib$(PROGN).so bin/$(PROGN) 30 31bin: bin/$(PROGN) 32 33bin/$(PROGN): $(APPSRCS) $(LIBSRCS) 34 @mkdir -p bin 35 $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) 36 37debug: CXXFLAGS += -g -Wextra -pedantic 38debug: bin/$(PROGN) 39 40lib/lib$(PROGN).so: $(LIBSRCS) 41 @mkdir -p lib 42 $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-soname,lib$(PROGN).so -o lib/lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) $^ $(LIBS) 43 @ln -sf lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) lib/lib$(PROGN).so 44 45bin-linked: lib/lib$(PROGN).so 46 @mkdir -p bin 47 $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(APPSRCS) -o bin/$(PROGN) $(LIBS) -L./lib -l$(PROGN) 48 49lib: lib/lib$(PROGN).so 50 51clean: 52 @rm -rf bin 53 @rm -rf lib 54 55setup: 56 @install -m 755 -d \ 57 $(DESTDIR)/usr/local/bin \ 58 $(DESTDIR)/usr/local/etc/$(PROGN)/samples 59 @cp bin/$(PROGN) $(DESTDIR)/usr/local/bin 60 @test -s $(DESTDIR)/usr/local/bin/g213-led || ln -s /usr/local/bin/$(PROGN) $(DESTDIR)/usr/local/bin/g213-led 61 @test -s $(DESTDIR)/usr/local/bin/g410-led || ln -s /usr/local/bin/$(PROGN) $(DESTDIR)/usr/local/bin/g410-led 62 @test -s $(DESTDIR)/usr/local/bin/g413-led || ln -s /usr/local/bin/$(PROGN) $(DESTDIR)/usr/local/bin/g413-led 63 @test -s $(DESTDIR)/usr/local/bin/g512-led || ln -s /usr/local/bin/$(PROGN) $(DESTDIR)/usr/local/bin/g512-led 64 @test -s $(DESTDIR)/usr/local/bin/g513-led || ln -s /usr/local/bin/$(PROGN) $(DESTDIR)/usr/local/bin/g513-led 65 @test -s $(DESTDIR)/usr/local/bin/g610-led || ln -s /usr/local/bin/$(PROGN) $(DESTDIR)/usr/local/bin/g610-led 66 @test -s $(DESTDIR)/usr/local/bin/g815-led || ln -s /usr/local/bin/$(PROGN) $(DESTDIR)/usr/local/bin/g815-led 67 @test -s $(DESTDIR)/usr/local/bin/g910-led || ln -s /usr/local/bin/$(PROGN) $(DESTDIR)/usr/local/bin/g910-led 68 @test -s $(DESTDIR)/usr/local/bin/gpro-led || ln -s /usr/local/bin/$(PROGN) $(DESTDIR)/usr/local/bin/gpro-led 69 @cp sample_profiles/* $(DESTDIR)/usr/local/etc/$(PROGN)/samples 70 71install-lib: lib 72 @install -m 755 -d $(libdir) 73 @install -m 644 lib/lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) $(libdir)/ 74 @ln -sf lib$(PROGN).so.$(MAJOR).$(MINOR).$(MICRO) $(libdir)/lib$(PROGN).so 75 76install-dev: install-lib 77 @mkdir -p $(includedir)/$(PROGN)/ 78 @install -m 644 src/classes/*.h $(includedir)/$(PROGN) 79 80install: setup 81# Nothing to do 82 83uninstall-lib: 84 @rm -f $(libdir)/lib$(PROGN).so* 85 86uninstall-dev: 87 @rm -rf $(includedir)/$(PROGN) 88 89uninstall: 90 @test -s /usr/bin/systemd-run && \ 91 systemctl disable $(PROGN)-reboot && \ 92 rm $(SYSTEMDDIR)/system/$(PROGN)-reboot.service && \ 93 systemctl daemon-reload && \ 94 rm -R /etc/$(PROGN) 95 96 @rm /usr/bin/g213-led 97 @rm /usr/bin/g410-led 98 @rm /usr/bin/g413-led 99 @rm /usr/bin/g512-led 100 @rm /usr/bin/g513-led 101 @rm /usr/bin/g610-led 102 @rm /usr/bin/g815-led 103 @rm /usr/bin/g910-led 104 @rm /usr/bin/gpro-led 105 @rm /usr/bin/$(PROGN) 106 107 @rm /etc/udev/rules.d/$(PROGN).rules 108 @udevadm control --reload-rules 109