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 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 21CPPFLAGS += -DPIC 22CFLAGS += -std=c99 -fvisibility=hidden -fPIC 23CXXFLAGS += -std=c++11 -fvisibility=hidden -fPIC 24LDFLAGS += -shared -Wl,-z,relro,-z,now 25STRIPFLAGS += -s --strip-program=$(STRIP) 26 27GUIPPFLAGS += -DPUGL_HAVE_CAIRO 28 29LANGUAGE ?= EN 30 31ifdef UWU 32 GUIPPFLAGS += -DUWU 33 GUIBGFILE = surface2.png 34 LANGUAGE = UWU 35 SKIN = UWU 36else 37 GUIBGFILE = surface.png 38endif 39 40ifeq ($(shell test -e src/Locale_$(LANGUAGE).hpp && echo -n yes),yes) 41 GUIPPFLAGS += -DLOCALEFILE=\"Locale_$(LANGUAGE).hpp\" 42endif 43 44ifeq ($(shell test -e src/Skin_$(SKIN).hpp && echo -n yes),yes) 45 GUIPPFLAGS += -DSKINFILE=\"Skin_$(SKIN).hpp\" 46endif 47 48ifeq ($(shell test -e surface_$(SKIN).png && echo -n yes),yes) 49 GUIBGFILE = surface_$(SKIN).png 50else 51 GUIBGFILE = surface.png 52endif 53 54DSPCFLAGS += `$(PKG_CONFIG) --cflags $(LV2_LIBS)` 55GUICFLAGS += `$(PKG_CONFIG) --cflags $(GUI_LIBS)` 56DSPLFLAGS += `$(PKG_CONFIG) --libs $(LV2_LIBS)` 57GUILFLAGS += `$(PKG_CONFIG) --libs $(GUI_LIBS)` 58 59BUNDLE = BSlizr.lv2 60DSP = BSlizr 61DSP_SRC = ./src/BSlizr.cpp 62GUI = BSlizr_GUI 63GUI_SRC = ./src/BSlizr_GUI.cpp 64OBJ_EXT = .so 65DSP_OBJ = $(DSP)$(OBJ_EXT) 66GUI_OBJ = $(GUI)$(OBJ_EXT) 67B_OBJECTS = $(addprefix $(BUNDLE)/, $(DSP_OBJ) $(GUI_OBJ)) 68FILES = manifest.ttl BSlizr.ttl LICENSE 69B_FILES = $(addprefix $(BUNDLE)/, $(FILES)) 70 71DSP_INCL = \ 72 src/Message.cpp \ 73 src/BUtilities/stof.cpp 74 75GUI_CXX_INCL = \ 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/HSwitch.cpp \ 83 src/BWidgets/HSliderValue.cpp \ 84 src/BWidgets/HSlider.cpp \ 85 src/BWidgets/HScale.cpp \ 86 src/BWidgets/RangeWidget.cpp \ 87 src/BWidgets/ValueWidget.cpp \ 88 src/BWidgets/Knob.cpp \ 89 src/BWidgets/Label.cpp \ 90 src/BWidgets/Window.cpp \ 91 src/BWidgets/Widget.cpp \ 92 src/BWidgets/BStyles.cpp \ 93 src/BWidgets/BColors.cpp \ 94 src/BUtilities/to_string.cpp \ 95 src/BUtilities/stof.cpp 96 97GUI_C_INCL = \ 98 src/screen.c \ 99 src/BWidgets/cairoplus.c \ 100 src/BWidgets/pugl/implementation.c \ 101 src/BWidgets/pugl/x11_stub.c \ 102 src/BWidgets/pugl/x11_cairo.c \ 103 src/BWidgets/pugl/x11.c 104 105ifeq ($(shell $(PKG_CONFIG) --exists 'lv2 >= 1.12.4' || echo no), no) 106 $(error lv2 >= 1.12.4 not found. Please install lv2 >= 1.12.4 first.) 107endif 108ifeq ($(shell $(PKG_CONFIG) --exists 'x11 >= 1.6.0' || echo no), no) 109 $(error x11 >= 1.6.0 not found. Please install x11 >= 1.6.0 first.) 110endif 111ifeq ($(shell $(PKG_CONFIG) --exists 'cairo >= 1.12.0' || echo no), no) 112 $(error cairo >= 1.12.0 not found. Please install cairo >= 1.12.0 first.) 113endif 114 115$(BUNDLE): clean $(DSP_OBJ) $(GUI_OBJ) 116 @cp $(FILES) $(BUNDLE) 117 @cp $(GUIBGFILE) $(BUNDLE)/surface.png 118 119all: $(BUNDLE) 120 121$(DSP_OBJ): $(DSP_SRC) 122 @echo -n Build $(BUNDLE) DSP... 123 @mkdir -p $(BUNDLE) 124 @$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(DSPCFLAGS) -Wl,--start-group $(DSPLFLAGS) $< $(DSP_INCL) -Wl,--end-group -o $(BUNDLE)/$@ 125 @echo \ done. 126 127$(GUI_OBJ): $(GUI_SRC) 128 @echo -n Build $(BUNDLE) GUI... 129 @mkdir -p $(BUNDLE) 130 @mkdir -p $(BUNDLE)/tmp 131 @cd $(BUNDLE)/tmp; $(CC) $(CPPFLAGS) $(GUIPPFLAGS) $(CFLAGS) $(GUICFLAGS) $(addprefix ../../, $(GUI_C_INCL)) -c 132 @cd $(BUNDLE)/tmp; $(CXX) $(CPPFLAGS) $(GUIPPFLAGS) $(CXXFLAGS) $(GUICFLAGS) $(addprefix ../../, $< $(GUI_CXX_INCL)) -c 133 @$(CXX) $(CPPFLAGS) $(GUIPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(GUICFLAGS) -Wl,--start-group $(GUILFLAGS) $(BUNDLE)/tmp/*.o -Wl,--end-group -o $(BUNDLE)/$@ 134 @rm -rf $(BUNDLE)/tmp 135 @echo \ done. 136 137install: 138 @echo -n Install $(BUNDLE) to $(DESTDIR)$(LV2DIR)... 139 @$(INSTALL) -d $(DESTDIR)$(LV2DIR)/$(BUNDLE) 140 @$(INSTALL_PROGRAM) -m755 $(B_OBJECTS) $(DESTDIR)$(LV2DIR)/$(BUNDLE) 141 @$(INSTALL_DATA) $(B_FILES) $(DESTDIR)$(LV2DIR)/$(BUNDLE) 142 @cp -R $(BUNDLE) $(DESTDIR)$(LV2DIR) 143 @echo \ done. 144 145install-strip: 146 @echo -n "Install (stripped)" $(BUNDLE) to $(DESTDIR)$(LV2DIR)... 147 @$(INSTALL) -d $(DESTDIR)$(LV2DIR)/$(BUNDLE) 148 @$(INSTALL_PROGRAM) -m755 $(STRIPFLAGS) $(B_OBJECTS) $(DESTDIR)$(LV2DIR)/$(BUNDLE) 149 @$(INSTALL_DATA) $(B_FILES) $(DESTDIR)$(LV2DIR)/$(BUNDLE) 150 @cp -R $(BUNDLE) $(DESTDIR)$(LV2DIR) 151 @echo \ done. 152 153uninstall: 154 @echo -n Uninstall $(BUNDLE)... 155 @rm -f $(addprefix $(DESTDIR)$(LV2DIR)/$(BUNDLE)/, $(FILES)) 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 install-strip uninstall clean 165 166.NOTPARALLEL: 167