1#!/usr/bin/make -f 2 3# these can be overridden using make variables. e.g. 4# make CFLAGS=-O2 5# make install DESTDIR=$(CURDIR)/debian/gmsynth.lv2 PREFIX=/usr 6# 7PREFIX ?= /usr/local 8MANDIR ?= $(PREFIX)/share/man/man1 9# see http://lv2plug.in/pages/filesystem-hierarchy-standard.html, don't use libdir 10LV2DIR ?= $(PREFIX)/lib/lv2 11 12OPTIMIZATIONS ?= $(PORT_SIMD_FLAGS) -ffast-math -fomit-frame-pointer -fno-finite-math-only -DNDEBUG 13CFLAGS ?= -Wall -g -Wno-unused-function 14STRIP ?= strip 15 16gmsynth_VERSION?=$(shell git describe --tags HEAD 2>/dev/null | sed 's/-g.*$$//;s/^v//' || echo "LV2") 17 18############################################################################### 19 20BUILDDIR = build/ 21 22############################################################################### 23 24LV2NAME=gmsynth 25BUNDLE=gmsynth.lv2 26targets= 27 28LOADLIBES=-lm 29 30UNAME=$(shell uname) 31ifeq ($(UNAME),Darwin) 32 LV2LDFLAGS=-dynamiclib 33 LIB_EXT=.dylib 34 EXTENDED_RE=-E 35 STRIPFLAGS=-u -r -arch all -s lv2syms 36 targets+=lv2syms 37else 38 LV2LDFLAGS=-Wl,-Bstatic -Wl,-Bdynamic -Wl,--as-needed -pthread 39 LIB_EXT=.so 40 STRIPFLAGS= -s 41 EXTENDED_RE=-r 42endif 43 44ifneq ($(XWIN),) 45 CC=$(XWIN)-gcc 46 STRIP=$(XWIN)-strip 47 LV2LDFLAGS=-Wl,-Bstatic -Wl,-Bdynamic -Wl,--as-needed -pthread 48 LIB_EXT=.dll 49 override LDFLAGS += -static-libgcc 50endif 51 52targets+=$(BUILDDIR)$(LV2NAME)$(LIB_EXT) 53 54targets+=$(BUILDDIR)GeneralUser_LV2.sf2 55 56############################################################################### 57# extract versions 58LV2VERSION=$(gmsynth_VERSION) 59include git2lv2.mk 60 61############################################################################### 62# check for build-dependencies 63ifeq ($(shell pkg-config --exists lv2 || echo no), no) 64 $(error "LV2 SDK was not found") 65endif 66 67ifeq ($(shell pkg-config --atleast-version=1.6.0 lv2 || echo no), no) 68 $(error "LV2 SDK needs to be version 1.6.0 or later") 69endif 70 71ifeq ($(shell pkg-config --exists glib-2.0 || echo no), no) 72 $(error "glib-2.0 was not found.") 73endif 74 75# check for lv2_atom_forge_object new in 1.8.1 deprecates lv2_atom_forge_blank 76ifeq ($(shell pkg-config --atleast-version=1.8.1 lv2 && echo yes), yes) 77 override CFLAGS += -DHAVE_LV2_1_8 78endif 79 80# add library dependent flags and libs 81override CFLAGS += $(OPTIMIZATIONS) -DVERSION="\"$(gmsynth_VERSION)\"" 82override CFLAGS += `pkg-config --cflags lv2 glib-2.0` 83ifeq ($(XWIN),) 84override CFLAGS += -fPIC -fvisibility=hidden 85else 86override CFLAGS += -DPTW32_STATIC_LIB 87endif 88override LOADLIBES += `pkg-config $(PKG_UI_FLAGS) --libs glib-2.0` 89 90 91############################################################################### 92# build target definitions 93default: all 94 95all: $(BUILDDIR)manifest.ttl $(BUILDDIR)$(LV2NAME).ttl $(targets) 96 97lv2syms: 98 echo "_lv2_descriptor" > lv2syms 99 100$(BUILDDIR)manifest.ttl: lv2ttl/manifest.ttl.in Makefile 101 @mkdir -p $(BUILDDIR) 102 sed "s/@LV2NAME@/$(LV2NAME)/g;s/@LIB_EXT@/$(LIB_EXT)/" \ 103 lv2ttl/manifest.ttl.in > $(BUILDDIR)manifest.ttl 104 105$(BUILDDIR)$(LV2NAME).ttl: Makefile lv2ttl/$(LV2NAME).*.in 106 @mkdir -p $(BUILDDIR) 107 sed "s/@LV2NAME@/$(LV2NAME)/;s/@VERSION@/lv2:microVersion $(LV2MIC) ;lv2:minorVersion $(LV2MIN) ;/g" \ 108 lv2ttl/$(LV2NAME).ttl.in > $(BUILDDIR)$(LV2NAME).ttl 109 110$(BUILDDIR)%.sf2: 111 cp -v sf2/$(*F).sf2 $@ 112 113FLUID_SRC = \ 114 fluidsynth/src/fluid_adsr_env.c \ 115 fluidsynth/src/fluid_chan.c \ 116 fluidsynth/src/fluid_chorus.c \ 117 fluidsynth/src/fluid_conv.c \ 118 fluidsynth/src/fluid_defsfont.c \ 119 fluidsynth/src/fluid_event.c \ 120 fluidsynth/src/fluid_gen.c \ 121 fluidsynth/src/fluid_hash.c \ 122 fluidsynth/src/fluid_iir_filter.c \ 123 fluidsynth/src/fluid_lfo.c \ 124 fluidsynth/src/fluid_list.c \ 125 fluidsynth/src/fluid_midi.c \ 126 fluidsynth/src/fluid_mod.c \ 127 fluidsynth/src/fluid_rev.c \ 128 fluidsynth/src/fluid_ringbuffer.c \ 129 fluidsynth/src/fluid_rvoice.c \ 130 fluidsynth/src/fluid_rvoice_dsp.c \ 131 fluidsynth/src/fluid_rvoice_event.c \ 132 fluidsynth/src/fluid_rvoice_mixer.c \ 133 fluidsynth/src/fluid_samplecache.c \ 134 fluidsynth/src/fluid_settings.c \ 135 fluidsynth/src/fluid_sffile.c \ 136 fluidsynth/src/fluid_sfont.c \ 137 fluidsynth/src/fluid_synth.c \ 138 fluidsynth/src/fluid_synth_monopoly.c \ 139 fluidsynth/src/fluid_sys.c \ 140 fluidsynth/src/fluid_tuning.c \ 141 fluidsynth/src/fluid_voice.c 142 143CPPFLAGS += -Ifluidsynth -I fluidsynth/fluidsynth -DHAVE_CONFIG_H -D DEFAULT_SOUNDFONT=\"\" 144DSP_SRC = src/$(LV2NAME).c $(FLUID_SRC) 145DSP_DEPS = $(DSP_SRC) 146 147$(BUILDDIR)$(LV2NAME)$(LIB_EXT): $(DSP_DEPS) Makefile 148 @mkdir -p $(BUILDDIR) 149 $(CC) $(CPPFLAGS) $(CFLAGS) -std=gnu99 \ 150 -o $(BUILDDIR)$(LV2NAME)$(LIB_EXT) $(DSP_SRC) \ 151 -shared $(LV2LDFLAGS) $(LDFLAGS) $(LOADLIBES) 152 $(STRIP) $(STRIPFLAGS) $(BUILDDIR)$(LV2NAME)$(LIB_EXT) 153 154ifneq ($(BUILDOPENGL), no) 155 -include $(RW)robtk.mk 156endif 157 158$(BUILDDIR)$(LV2GUI)$(LIB_EXT): gui/$(LV2NAME).c 159 160############################################################################### 161# install/uninstall/clean target definitions 162 163install: all 164 install -d $(DESTDIR)$(LV2DIR)/$(BUNDLE) 165 install -m644 $(BUILDDIR)manifest.ttl $(BUILDDIR)$(LV2NAME).ttl $(BUILDDIR)*.sf2 $(DESTDIR)$(LV2DIR)/$(BUNDLE) 166 install -m755 $(BUILDDIR)$(LV2NAME)$(LIB_EXT) $(DESTDIR)$(LV2DIR)/$(BUNDLE) 167 168uninstall: 169 rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/manifest.ttl 170 rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(LV2NAME).ttl 171 rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/*.sf2 172 rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(LV2NAME)$(LIB_EXT) 173 -rmdir $(DESTDIR)$(LV2DIR)/$(BUNDLE) 174 175install-man: 176 177uninstall-man: 178 179clean: 180 rm -f $(BUILDDIR)manifest.ttl $(BUILDDIR)$(LV2NAME).ttl \ 181 $(BUILDDIR)$(LV2NAME)$(LIB_EXT) \ 182 $(BUILDDIR)*.sf2 183 rm -rf $(BUILDDIR)*.dSYM 184 -test -d $(BUILDDIR) && rmdir $(BUILDDIR) || true 185 186distclean: clean 187 rm -f cscope.out cscope.files tags 188 189.PHONY: clean all install uninstall distclean \ 190