diff --git a/Makefile b/Makefile index 1c4da0c..cdf5975 100644 --- a/Makefile +++ b/Makefile @@ -47,6 +47,7 @@ ifeq ($(UNAME),Darwin) PKG_GL_LIBS= GLUILIBS=-framework Cocoa -framework OpenGL -framework CoreFoundation STRIPFLAGS=-u -r -arch all -s $(RW)lv2syms + EXTENDED_RE=-E else LV2LDFLAGS=-Wl,-Bstatic -Wl,-Bdynamic -Wl,--as-needed LIB_EXT=.so @@ -57,6 +58,7 @@ else GLUILIBS=-lX11 GLUICFLAGS+=`pkg-config --cflags glu` STRIPFLAGS= -s + EXTENDED_RE=-r endif ifneq ($(XWIN),) @@ -84,6 +86,11 @@ endif targets+=$(BUILDDIR)$(LV2NAME)$(LIB_EXT) targets+=$(BUILDDIR)$(LV2GUI)$(LIB_EXT) +############################################################################### +# extract versions +LV2VERSION=$(fil4_VERSION) +include git2lv2.mk + # check for build-dependencies ifeq ($(shell pkg-config --exists lv2 || echo no), no) $(error "LV2 SDK was not found") @@ -219,10 +226,10 @@ $(BUILDDIR)$(LV2NAME).ttl: Makefile lv2ttl/$(LV2NAME).ttl.in \ @mkdir -p $(BUILDDIR) sed "s/@LV2NAME@/$(LV2NAME)/g;s/@UI_TYPE@/$(UI_TYPE)/;s/@UI_REQ@/$(LV2UIREQ)/" \ lv2ttl/$(LV2NAME).ttl.in > $(BUILDDIR)$(LV2NAME).ttl - sed "s/@LV2NAME@/$(LV2NAME)/g;s/@URISUFFIX@/mono/;s/@NAMESUFFIX@/ Mono/;s/@CTLSIZE@/65888/" \ + sed "s/@LV2NAME@/$(LV2NAME)/g;s/@URISUFFIX@/mono/;s/@NAMESUFFIX@/ Mono/;s/@CTLSIZE@/65888/;s/@VERSION@/lv2:microVersion $(LV2MIC) ;lv2:minorVersion $(LV2MIN) ;/g" \ lv2ttl/$(LV2NAME).ports.ttl.in >> $(BUILDDIR)$(LV2NAME).ttl cat lv2ttl/$(LV2NAME).mono.ttl.in >> $(BUILDDIR)$(LV2NAME).ttl - sed "s/@LV2NAME@/$(LV2NAME)/g;s/@URISUFFIX@/stereo/;s/@NAMESUFFIX@/ Stereo/;s/@CTLSIZE@/131424/" \ + sed "s/@LV2NAME@/$(LV2NAME)/g;s/@URISUFFIX@/stereo/;s/@NAMESUFFIX@/ Stereo/;s/@CTLSIZE@/131424/;s/@VERSION@/lv2:microVersion $(LV2MIC) ;lv2:minorVersion $(LV2MIN) ;/g" \ lv2ttl/$(LV2NAME).ports.ttl.in >> $(BUILDDIR)$(LV2NAME).ttl cat lv2ttl/$(LV2NAME).stereo.ttl.in >> $(BUILDDIR)$(LV2NAME).ttl diff --git a/git2lv2.mk b/git2lv2.mk new file mode 100644 index 0000000..879e11a --- /dev/null +++ b/git2lv2.mk @@ -0,0 +1,43 @@ + +############################################################################### +# extract versions +GIT_REV_REGEXP="([0-9][0-9]*)\.([0-9][0-9]*)(\.([0-9][0-9]*))?(-([0-9][0-9]*))?(-g([a-f0-9]+))?" + +override MAJOR=$(shell echo $(LV2VERSION) | sed $(EXTENDED_RE) -e s/$(GIT_REV_REGEXP)/\\1/) +override MINOR=$(shell echo $(LV2VERSION) | sed $(EXTENDED_RE) -e s/$(GIT_REV_REGEXP)/\\2/) +override MICRO=$(shell echo $(LV2VERSION) | sed $(EXTENDED_RE) -e s/$(GIT_REV_REGEXP)/\\4/) +override GITREV=$(shell echo $(LV2VERSION) | sed $(EXTENDED_RE) -e s/$(GIT_REV_REGEXP)/\\6/) + +ifeq ($(MAJOR),) + override MAJOR=0 +endif +ifeq ($(MINOR),) + override MINOR=0 +endif +ifeq ($(MICRO),) + override MICRO=0 +endif + +$(info Version: $(LV2VERSION) -> $(MAJOR) $(MINOR) $(MICRO) $(GITREV)) + +# version requirements, see +# http://lv2plug.in/ns/lv2core/#minorVersion +# http://lv2plug.in/ns/lv2core/#microVersion +ifeq ($(GITREV),) +# even numbers for tagged releases + override LV2MIN = $(shell expr $(MAJOR) \* 65536 + $(MINOR) \* 256 + $(MICRO) \* 2 ) + override LV2MIC = 0 +else +# odd-numbers for all non tagged git versions + override LV2MIN = $(shell expr $(MAJOR) \* 65536 + $(MINOR) \* 256 + $(MICRO) \* 2 + 1 ) + override LV2MIC = $(shell expr $(GITREV) \* 2 + 1) +endif + +ifeq ($(LV2MIN),) + $(error "Cannot extract required LV2 minor-version parameter") +endif +ifeq ($(LV2MIC),) + $(error "Cannot extract required LV2 micro-version parameter") +endif + +$(info LV2 Version: $(LV2MIN) $(LV2MIC)) diff --git a/lv2ttl/fil4.ports.ttl.in b/lv2ttl/fil4.ports.ttl.in index 0d64bcc..70cb4ab 100644 --- a/lv2ttl/fil4.ports.ttl.in +++ b/lv2ttl/fil4.ports.ttl.in @@ -3,6 +3,7 @@ a lv2:Plugin, doap:Project, lv2:ParaEQPlugin; doap:license ; doap:maintainer ; + @VERSION@ doap:name "4 Band Parametric EQ@NAMESUFFIX@"; lv2:requiredFeature urid:map ; lv2:extensionData state:interface ;