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 = BSchaffl.lv2 46DSP = BSchaffl 47DSP_SRC = ./src/BSchaffl.cpp 48GUI = BSchafflGUI 49GUI_SRC = ./src/BSchafflGUI.cpp 50OBJ_EXT = .so 51DSP_OBJ = $(DSP)$(OBJ_EXT) 52GUI_OBJ = $(GUI)$(OBJ_EXT) 53B_OBJECTS = $(addprefix $(BUNDLE)/, $(DSP_OBJ) $(GUI_OBJ)) 54ROOTFILES = manifest.ttl BSchaffl.ttl LICENSE 55INCFILES = inc/*.png 56B_FILES = $(addprefix $(BUNDLE)/, $(ROOTFILES) $(INCFILES)) 57 58DSP_INCL = \ 59 src/Message.cpp \ 60 src/BUtilities/stof.cpp 61 62GUI_CXX_INCL = \ 63 src/ShapeWidget.cpp \ 64 src/BWidgets/MessageBox.cpp \ 65 src/BWidgets/Text.cpp \ 66 src/BWidgets/ImageIcon.cpp \ 67 src/BWidgets/Icon.cpp \ 68 src/BWidgets/ItemBox.cpp \ 69 src/BWidgets/BItems.cpp \ 70 src/BWidgets/UpButton.cpp \ 71 src/BWidgets/DownButton.cpp \ 72 src/BWidgets/ToggleButton.cpp \ 73 src/BWidgets/TextButton.cpp \ 74 src/BWidgets/Button.cpp \ 75 src/BWidgets/ChoiceBox.cpp \ 76 src/BWidgets/ListBox.cpp \ 77 src/BWidgets/PopupListBox.cpp \ 78 src/BWidgets/DrawingSurface.cpp \ 79 src/BWidgets/DialValue.cpp \ 80 src/BWidgets/Dial.cpp \ 81 src/BWidgets/VSliderValue.cpp \ 82 src/BWidgets/VSlider.cpp \ 83 src/BWidgets/VScale.cpp \ 84 src/BWidgets/HSwitch.cpp \ 85 src/BWidgets/HSliderValue.cpp \ 86 src/BWidgets/HSlider.cpp \ 87 src/BWidgets/HScale.cpp \ 88 src/BWidgets/RangeWidget.cpp \ 89 src/BWidgets/ValueWidget.cpp \ 90 src/BWidgets/Knob.cpp \ 91 src/BWidgets/Label.cpp \ 92 src/BWidgets/Window.cpp \ 93 src/BWidgets/Widget.cpp \ 94 src/BWidgets/BStyles.cpp \ 95 src/BWidgets/BColors.cpp \ 96 src/BUtilities/to_string.cpp \ 97 src/BUtilities/stof.cpp \ 98 src/BUtilities/vsystem.cpp 99 100GUI_C_INCL = \ 101 src/screen.c \ 102 src/BWidgets/cairoplus.c \ 103 src/BWidgets/pugl/implementation.c \ 104 src/BWidgets/pugl/x11_stub.c \ 105 src/BWidgets/pugl/x11_cairo.c \ 106 src/BWidgets/pugl/x11.c 107 108ifeq ($(shell $(PKG_CONFIG) --exists 'lv2 >= 1.12.4' || echo no), no) 109 $(error lv2 >= 1.12.4 not found. Please install lv2 >= 1.12.4 first.) 110endif 111ifeq ($(shell $(PKG_CONFIG) --exists 'x11 >= 1.6.0' || echo no), no) 112 $(error x11 >= 1.6.0 not found. Please install x11 >= 1.6.0 first.) 113endif 114ifeq ($(shell $(PKG_CONFIG) --exists 'cairo >= 1.12.0' || echo no), no) 115 $(error cairo >= 1.12.0 not found. Please install cairo >= 1.12.0 first.) 116endif 117 118$(BUNDLE): clean $(DSP_OBJ) $(GUI_OBJ) 119 @cp $(ROOTFILES) $(BUNDLE) 120 @mkdir -p $(BUNDLE)/inc 121 @cp $(INCFILES) $(BUNDLE)/inc 122 123all: $(BUNDLE) 124 125$(DSP_OBJ): $(DSP_SRC) 126 @echo -n Build $(BUNDLE) DSP... 127 @mkdir -p $(BUNDLE) 128 @$(CXX) $(CPPFLAGS) $(OPTIMIZATIONS) $(CXXFLAGS) $(LDFLAGS) $(DSPCFLAGS) -Wl,--start-group $(DSPLIBS) $< $(DSP_INCL) -Wl,--end-group -o $(BUNDLE)/$@ 129 @$(STRIP) $(STRIPFLAGS) $(BUNDLE)/$@ 130 @echo \ done. 131 132$(GUI_OBJ): $(GUI_SRC) 133 @echo -n Build $(BUNDLE) GUI... 134 @mkdir -p $(BUNDLE) 135 @mkdir -p $(BUNDLE)/tmp 136 @cd $(BUNDLE)/tmp; $(CC) $(CPPFLAGS) $(GUIPPFLAGS) $(CFLAGS) $(GUICFLAGS) $(addprefix ../../, $(GUI_C_INCL)) -c 137 @cd $(BUNDLE)/tmp; $(CXX) $(CPPFLAGS) $(GUIPPFLAGS) $(CXXFLAGS) $(GUICFLAGS) $(addprefix ../../, $< $(GUI_CXX_INCL)) -c 138 @$(CXX) $(CPPFLAGS) $(GUIPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(GUICFLAGS) -Wl,--start-group $(GUILIBS) $(BUNDLE)/tmp/*.o -Wl,--end-group -o $(BUNDLE)/$@ 139 @$(STRIP) $(STRIPFLAGS) $(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 152uninstall: 153 @echo -n Uninstall $(BUNDLE)... 154 @rm -f $(addprefix $(DESTDIR)$(LV2DIR)/$(BUNDLE)/, $(ROOTFILES) $(INCFILES)) 155 -@rmdir $(DESTDIR)$(LV2DIR)/$(BUNDLE)/inc 156 @rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(GUI_OBJ) 157 @rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(DSP_OBJ) 158 -@rmdir $(DESTDIR)$(LV2DIR)/$(BUNDLE) 159 @echo \ done. 160 161clean: 162 @rm -rf $(BUNDLE) 163 164.PHONY: all install uninstall clean 165 166.NOTPARALLEL: 167