1SHELL = /bin/sh 2 3PKG_CONFIG ?= pkg-config 4GUI_LIBS += lv2 sndfile x11 cairo 5LV2_LIBS += lv2 sndfile 6ifneq ($(shell $(PKG_CONFIG) --exists fontconfig || echo no), no) 7 GUI_LIBS += fontconfig 8 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 --strip-program=$(STRIP) 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 = BOops.lv2 46DSP = BOops 47DSP_SRC = ./src/BOops.cpp 48GUI = BOopsGUI 49GUI_SRC = ./src/BOopsGUI.cpp 50OBJ_EXT = .so 51DSP_OBJ = $(DSP)$(OBJ_EXT) 52GUI_OBJ = $(GUI)$(OBJ_EXT) 53B_OBJECTS = $(addprefix $(BUNDLE)/, $(DSP_OBJ) $(GUI_OBJ)) 54ROOTFILES = \ 55 *.ttl \ 56 LICENSE 57 58INCFILES = inc/*.png inc/*.wav 59 60B_FILES = $(addprefix $(BUNDLE)/, $(ROOTFILES) $(INCFILES)) 61 62DSP_INCL = \ 63 src/Message.cpp \ 64 src/BUtilities/stof.cpp \ 65 src/Slot.cpp \ 66 src/Airwindows/Galactic.cpp \ 67 src/Airwindows/Infinity2.cpp \ 68 src/Airwindows/XRegion.cpp 69 70GUI_CXX_INCL = \ 71 src/SampleChooser.cpp \ 72 src/PatternChooser.cpp \ 73 src/Pattern.cpp \ 74 src/ShapeWidget.cpp \ 75 src/SelectWidget.cpp \ 76 src/ValueSelect.cpp \ 77 src/DownClick.cpp \ 78 src/UpClick.cpp \ 79 src/BWidgets/FileChooser.cpp \ 80 src/BWidgets/HPianoRoll.cpp \ 81 src/BWidgets/PianoWidget.cpp \ 82 src/BWidgets/MessageBox.cpp \ 83 src/BWidgets/TextToggleButton.cpp \ 84 src/BWidgets/TextButton.cpp \ 85 src/BWidgets/DrawingSurface.cpp \ 86 src/BWidgets/PopupListBox.cpp \ 87 src/BWidgets/ListBox.cpp \ 88 src/BWidgets/ChoiceBox.cpp \ 89 src/BWidgets/ItemBox.cpp \ 90 src/BWidgets/Text.cpp \ 91 src/BWidgets/UpButton.cpp \ 92 src/BWidgets/DownButton.cpp \ 93 src/BWidgets/ToggleButton.cpp \ 94 src/BWidgets/Button.cpp \ 95 src/BWidgets/HSlider.cpp \ 96 src/BWidgets/HScale.cpp \ 97 src/BWidgets/Knob.cpp \ 98 src/BWidgets/RangeWidget.cpp \ 99 src/BWidgets/ValueWidget.cpp \ 100 src/BWidgets/ImageIcon.cpp \ 101 src/BWidgets/Icon.cpp \ 102 src/BWidgets/Label.cpp \ 103 src/BWidgets/Window.cpp \ 104 src/BWidgets/Widget.cpp \ 105 src/BWidgets/BStyles.cpp \ 106 src/BWidgets/BColors.cpp \ 107 src/BWidgets/BItems.cpp \ 108 src/BUtilities/to_string.cpp \ 109 src/BUtilities/stof.cpp \ 110 src/BUtilities/vsystem.cpp 111 112GUI_C_INCL = \ 113 src/screen.c \ 114 src/BWidgets/cairoplus.c \ 115 src/BWidgets/pugl/implementation.c \ 116 src/BWidgets/pugl/x11_stub.c \ 117 src/BWidgets/pugl/x11_cairo.c \ 118 src/BWidgets/pugl/x11.c 119 120$(BUNDLE): check clean $(DSP_OBJ) $(GUI_OBJ) 121 @cp $(ROOTFILES) $(BUNDLE) 122 @mkdir -p $(BUNDLE)/inc 123 @cp $(INCFILES) $(BUNDLE)/inc 124 125all: $(BUNDLE) 126 127$(DSP_OBJ): $(DSP_SRC) 128 @echo -n Build $(BUNDLE) DSP... 129 @mkdir -p $(BUNDLE) 130 @$(CXX) $(CPPFLAGS) $(OPTIMIZATIONS) $(CXXFLAGS) $(LDFLAGS) $(DSPCFLAGS) -Wl,--start-group $(DSPLIBS) $< $(DSP_INCL) -Wl,--end-group -o $(BUNDLE)/$@ 131 @echo \ done. 132 133$(GUI_OBJ): $(GUI_SRC) 134 @echo -n Build $(BUNDLE) GUI... 135 @mkdir -p $(BUNDLE) 136 @mkdir -p $(BUNDLE)/tmp 137 @cd $(BUNDLE)/tmp; $(CC) $(CPPFLAGS) $(GUIPPFLAGS) $(CFLAGS) $(GUICFLAGS) $(addprefix ../../, $(GUI_C_INCL)) -c 138 @cd $(BUNDLE)/tmp; $(CXX) $(CPPFLAGS) $(GUIPPFLAGS) $(CXXFLAGS) $(GUICFLAGS) $(addprefix ../../, $< $(GUI_CXX_INCL)) -c 139 @$(CXX) $(CPPFLAGS) $(GUIPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(GUICFLAGS) -Wl,--start-group $(GUILIBS) $(BUNDLE)/tmp/*.o -Wl,--end-group -o $(BUNDLE)/$@ 140 @rm -rf $(BUNDLE)/tmp 141 @echo \ done. 142 143install: 144 @echo -n Install $(BUNDLE) to $(DESTDIR)$(LV2DIR)... 145 @$(INSTALL) -d $(DESTDIR)$(LV2DIR)/$(BUNDLE) 146 @$(INSTALL) -d $(DESTDIR)$(LV2DIR)/$(BUNDLE)/inc 147 @$(INSTALL_PROGRAM) -m755 $(B_OBJECTS) $(DESTDIR)$(LV2DIR)/$(BUNDLE) 148 @$(INSTALL_DATA) $(addprefix $(BUNDLE)/, $(ROOTFILES)) $(DESTDIR)$(LV2DIR)/$(BUNDLE) 149 @$(INSTALL_DATA) $(addprefix $(BUNDLE)/, $(INCFILES)) $(DESTDIR)$(LV2DIR)/$(BUNDLE)/inc 150 @echo \ done. 151 152install-strip: 153 @echo -n "Install (stripped)" $(BUNDLE) to $(DESTDIR)$(LV2DIR)... 154 @$(INSTALL) -d $(DESTDIR)$(LV2DIR)/$(BUNDLE) 155 @$(INSTALL) -d $(DESTDIR)$(LV2DIR)/$(BUNDLE)/inc 156 @$(INSTALL_PROGRAM) -m755 $(STRIPFLAGS) $(B_OBJECTS) $(DESTDIR)$(LV2DIR)/$(BUNDLE) 157 @$(INSTALL_DATA) $(addprefix $(BUNDLE)/, $(ROOTFILES)) $(DESTDIR)$(LV2DIR)/$(BUNDLE) 158 @$(INSTALL_DATA) $(addprefix $(BUNDLE)/, $(INCFILES)) $(DESTDIR)$(LV2DIR)/$(BUNDLE)/inc 159 @echo \ done. 160 161uninstall: 162 @echo -n Uninstall $(BUNDLE)... 163 @rm -f $(addprefix $(DESTDIR)$(LV2DIR)/$(BUNDLE)/, $(ROOTFILES) $(INCFILES)) 164 -@rmdir $(DESTDIR)$(LV2DIR)/$(BUNDLE)/inc 165 @rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(GUI_OBJ) 166 @rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(DSP_OBJ) 167 -@rmdir $(DESTDIR)$(LV2DIR)/$(BUNDLE) 168 @echo \ done. 169 170check: 171ifeq ($(shell $(PKG_CONFIG) --exists 'sndfile > 1.0.18' || echo no), no) 172 $(error sndfile >= 1.0.18 not found. Please install sndfile >= 1.0.18 first.) 173endif 174ifeq ($(shell $(PKG_CONFIG) --exists 'lv2 >= 1.14.0' || echo no), no) 175 $(error lv2 >= 1.14.0 not found. Please install lv2 >= 1.14.0 first.) 176endif 177ifeq ($(shell $(PKG_CONFIG) --exists 'x11 >= 1.6.0' || echo no), no) 178 $(error x11 >= 1.6.0 not found. Please install x11 >= 1.6.0 first.) 179endif 180ifeq ($(shell $(PKG_CONFIG) --exists 'cairo >= 1.12.0' || echo no), no) 181 $(error cairo >= 1.12.0 not found. Please install cairo >= 1.12.0 first.) 182endif 183 184clean: 185 @rm -rf $(BUNDLE) 186 187.PHONY: all install uninstall check clean 188 189.NOTPARALLEL: 190