1SHELL = /bin/sh 2 3PKG_CONFIG ?= pkg-config 4GUI_LIBS += lv2 x11 cairo 5LV2_LIBS += lv2 6ifneq ($(shell $(PKG_CONFIG) --exists fontconfig || echo no), no) 7 override GUI_LIBS += fontconfig 8 override GUIPPFLAGS += -DPKG_HAVE_FONTCONFIG 9endif 10 11CC ?= gcc 12CXX ?= g++ 13INSTALL ?= install 14INSTALL_PROGRAM ?= $(INSTALL) 15INSTALL_DATA ?= $(INSTALL) -m644 16STRIP ?= strip 17 18PREFIX ?= /usr/local 19LV2DIR ?= $(PREFIX)/lib/lv2 20 21OPTIMIZATIONS ?=-O3 -ffast-math 22CFLAGS ?=-Wall 23CXXFLAGS ?=-Wall 24STRIPFLAGS ?=-s 25LDFLAGS ?=-Wl,-Bstatic -Wl,-Bdynamic -Wl,--as-needed 26 27override CFLAGS += -std=c99 -fvisibility=hidden -fPIC 28override CXXFLAGS += -std=c++11 -fvisibility=hidden -fPIC 29override LDFLAGS += -shared -pthread 30 31override GUIPPFLAGS += -DPUGL_HAVE_CAIRO 32DSPCFLAGS += `$(PKG_CONFIG) --cflags $(LV2_LIBS)` 33GUICFLAGS += `$(PKG_CONFIG) --cflags $(GUI_LIBS)` 34DSPLIBS += -lm `$(PKG_CONFIG) --libs $(LV2_LIBS)` 35GUILIBS += -lm `$(PKG_CONFIG) --libs $(GUI_LIBS)` 36 37ifeq ($(shell test -e src/Locale_$(LANGUAGE).hpp && echo -n yes),yes) 38 override GUIPPFLAGS += -DLOCALEFILE=\"Locale_$(LANGUAGE).hpp\" 39endif 40 41ifdef WWW_BROWSER_CMD 42 override GUIPPFLAGS += -DWWW_BROWSER_CMD=\"$(WWW_BROWSER_CMD)\" 43endif 44 45BUNDLE = BSEQuencer.lv2 46DSP = BSEQuencer 47DSP_SRC = ./src/BSEQuencer.cpp 48GUI = BSEQuencer_GUI 49GUI_SRC = ./src/BSEQuencer_GUI.cpp 50OBJ_EXT = .so 51DSP_OBJ = $(DSP)$(OBJ_EXT) 52GUI_OBJ = $(GUI)$(OBJ_EXT) 53B_OBJECTS = $(addprefix $(BUNDLE)/, $(DSP_OBJ) $(GUI_OBJ)) 54FILES = *.ttl surface.png DrumSymbol.png NoteSymbol.png EditSymbol.png ScaleEditor.png LICENSE 55B_FILES = $(addprefix $(BUNDLE)/, $(FILES)) 56 57DSP_INCL = src/BUtilities/stof.cpp 58 59GUI_CXX_INCL = \ 60 src/BWidgets/ImageIcon.cpp \ 61 src/BWidgets/Icon.cpp \ 62 src/BWidgets/HPianoRoll.cpp \ 63 src/BWidgets/PianoWidget.cpp \ 64 src/BWidgets/TextToggleButton.cpp \ 65 src/BWidgets/ToggleButton.cpp \ 66 src/BWidgets/TextButton.cpp \ 67 src/BWidgets/HSwitch.cpp \ 68 src/BWidgets/PopupListBox.cpp \ 69 src/BWidgets/ListBox.cpp \ 70 src/BWidgets/ChoiceBox.cpp \ 71 src/BWidgets/ItemBox.cpp \ 72 src/BWidgets/Text.cpp \ 73 src/BWidgets/UpButton.cpp \ 74 src/BWidgets/DownButton.cpp \ 75 src/BWidgets/Button.cpp \ 76 src/BWidgets/DrawingSurface.cpp \ 77 src/BWidgets/DialValue.cpp \ 78 src/BWidgets/Dial.cpp \ 79 src/BWidgets/VSliderValue.cpp \ 80 src/BWidgets/VSlider.cpp \ 81 src/BWidgets/VScale.cpp \ 82 src/BWidgets/HSliderValue.cpp \ 83 src/BWidgets/HSlider.cpp \ 84 src/BWidgets/HScale.cpp \ 85 src/BWidgets/RangeWidget.cpp \ 86 src/BWidgets/ValueWidget.cpp \ 87 src/BWidgets/Knob.cpp \ 88 src/BWidgets/Label.cpp \ 89 src/BWidgets/Window.cpp \ 90 src/BWidgets/Widget.cpp \ 91 src/BWidgets/BStyles.cpp \ 92 src/BWidgets/BColors.cpp \ 93 src/BWidgets/BItems.cpp \ 94 src/BUtilities/to_string.cpp \ 95 src/BUtilities/stof.cpp \ 96 src/BUtilities/vsystem.cpp 97 98GUI_C_INCL = \ 99 src/screen.c \ 100 src/BWidgets/cairoplus.c \ 101 src/BWidgets/pugl/implementation.c \ 102 src/BWidgets/pugl/x11_stub.c \ 103 src/BWidgets/pugl/x11_cairo.c \ 104 src/BWidgets/pugl/x11.c 105 106ifeq ($(shell $(PKG_CONFIG) --exists 'lv2 >= 1.12.4' || echo no), no) 107 $(error lv2 >= 1.12.4 not found. Please install lv2 >= 1.12.4 first.) 108endif 109ifeq ($(shell $(PKG_CONFIG) --exists 'x11 >= 1.6.0' || echo no), no) 110 $(error x11 >= 1.6.0 not found. Please install x11 >= 1.6.0 first.) 111endif 112ifeq ($(shell $(PKG_CONFIG) --exists 'cairo >= 1.12.0' || echo no), no) 113 $(error cairo >= 1.12.0 not found. Please install cairo >= 1.12.0 first.) 114endif 115 116$(BUNDLE): clean $(DSP_OBJ) $(GUI_OBJ) 117 @cp $(FILES) $(BUNDLE) 118 119all: $(BUNDLE) 120 121$(DSP_OBJ): $(DSP_SRC) 122 @echo -n Build $(BUNDLE) DSP... 123 @mkdir -p $(BUNDLE) 124 @$(CXX) $(CPPFLAGS) $(OPTIMIZATIONS) $(CXXFLAGS) $(LDFLAGS) $(DSPCFLAGS) -Wl,--start-group $(DSPLIBS) $< $(DSP_INCL) -Wl,--end-group -o $(BUNDLE)/$@ 125 @$(STRIP) $(STRIPFLAGS) $(BUNDLE)/$@ 126 @echo \ done. 127 128$(GUI_OBJ): $(GUI_SRC) 129 @echo -n Build $(BUNDLE) GUI... 130 @mkdir -p $(BUNDLE) 131 @mkdir -p $(BUNDLE)/tmp 132 @cd $(BUNDLE)/tmp; $(CC) $(CPPFLAGS) $(GUIPPFLAGS) $(CFLAGS) $(GUICFLAGS) $(addprefix ../../, $(GUI_C_INCL)) -c 133 @cd $(BUNDLE)/tmp; $(CXX) $(CPPFLAGS) $(GUIPPFLAGS) $(CXXFLAGS) $(GUICFLAGS) $(addprefix ../../, $< $(GUI_CXX_INCL)) -c 134 @$(CXX) $(CPPFLAGS) $(GUIPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(GUICFLAGS) -Wl,--start-group $(GUILIBS) $(BUNDLE)/tmp/*.o -Wl,--end-group -o $(BUNDLE)/$@ 135 @$(STRIP) $(STRIPFLAGS) $(BUNDLE)/$@ 136 @rm -rf $(BUNDLE)/tmp 137 @echo \ done. 138 139install: 140 @echo -n Install $(BUNDLE) to $(DESTDIR)$(LV2DIR)... 141 @$(INSTALL) -d $(DESTDIR)$(LV2DIR)/$(BUNDLE) 142 @$(INSTALL_PROGRAM) -m755 $(B_OBJECTS) $(DESTDIR)$(LV2DIR)/$(BUNDLE) 143 @$(INSTALL_DATA) $(B_FILES) $(DESTDIR)$(LV2DIR)/$(BUNDLE) 144 @cp -R $(BUNDLE) $(DESTDIR)$(LV2DIR) 145 @echo \ done. 146 147uninstall: 148 @echo -n Uninstall $(BUNDLE)... 149 @rm -f $(addprefix $(DESTDIR)$(LV2DIR)/$(BUNDLE)/, $(FILES)) 150 @rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(GUI_OBJ) 151 @rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(DSP_OBJ) 152 -@rmdir $(DESTDIR)$(LV2DIR)/$(BUNDLE) 153 @echo \ done. 154 155clean: 156 @rm -rf $(BUNDLE) 157 158.PHONY: all install uninstall clean 159 160.NOTPARALLEL: 161