LIBNAME := $(shell basename $$(pwd)) MAJOR := 1 MINOR := 0.0 UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Darwin) LINKERNAME := $(LIBNAME).dylib SONAME := $(LIBNAME).$(MAJOR).dylib REALNAME := $(LINKERNAME) else LINKERNAME := $(LIBNAME).so SONAME := $(LINKERNAME).$(MAJOR) REALNAME := $(SONAME).$(MINOR) endif PREFIX ?= ../.. LIBDIR ?= $(PREFIX)/plugins SRCS := $(wildcard *.cpp) OBJS := $(subst .cpp,.o,$(SRCS)) DEPS := $(subst .cpp,.d,$(SRCS)) HDRS := $(filter-out $(LIBNAME).hpp,$(wildcard *.hpp)) CXX ?= g++ CXXFLAGS += -Wshadow -Wall -Wpedantic -Wextra -g -std=c++17 -fPIC ifeq ($(DEBUG),1) CXXFLAGS += -D DEBUG -O0 else CXXFLAGS += -D NDEBUG -O3 endif LDLIBS := -lcairo -lscscreensaver -lscnumerics RM := /bin/rm -f INSTALL := /usr/bin/install -c .PHONY: all clean install all: $(REALNAME) $(REALNAME): $(OBJS) $(DEPS) ifeq ($(UNAME_S),Darwin) $(CXX) -dynamiclib -o $(REALNAME) -current_version $(MAJOR) -compatibility_version $(MINOR) $(LDFLAGS) $(LDLIBS) $(OBJS) else $(CXX) -g -shared -Wl,-soname,$(SONAME) -o $(REALNAME) $(LDFLAGS) $(LDLIBS) $(OBJS) endif %.o: %.cpp %.d Makefile $(CXX) $(CXXFLAGS) -MMD -MP -MT $@ -MF $*.d -c $< -include *.d %.d: ; clean: $(RM) $(OBJS) $(DEPS) $(REALNAME) install: $(REALNAME) $(INSTALL) -d $(LIBDIR) $(INSTALL) -m 644 $(REALNAME) $(LIBDIR)/$(LIBNAME).saver $(INSTALL) -m 644 $(LIBNAME).json $(LIBDIR)