1 2 STRIP ?= strip 3 # check if user is root 4 user = $(shell whoami) 5 ifeq ($(user),root) 6 INSTALL_DIR = /usr/local/lib/lv2 7 else 8 INSTALL_DIR = /usr/local/lib/lv2 9 endif 10 11 # check CPU and supported optimization flags 12 ifneq ($(shell echo "" | grep sse3 ) , ) 13 SSE_CFLAGS = -msse3 -mfpmath=sse 14 else ifneq ($(shell echo "" | grep sse2 ) , ) 15 SSE_CFLAGS = -msse2 -mfpmath=sse 16 else ifneq ($(shell echo "" | grep sse ) , ) 17 SSE_CFLAGS = -msse -mfpmath=sse 18 else ifneq ($(shell echo "" | grep ARM ) , ) 19 ifneq ($(shell echo "" | grep ARMv7 ) , ) 20 ifneq ($(shell echo "" | grep vfpd32 ) , ) 21 SSE_CFLAGS = -march=armv7-a -mfpu=vfpv3 22 else ifneq ($(shell echo "" | grep vfpv3 ) , ) 23 SSE_CFLAGS = -march=armv7-a -mfpu=vfpv3 24 endif 25 else 26 ARMCPU = "YES" 27 endif 28 else 29 SSE_CFLAGS = 30 endif 31 32 # set bundle name 33 NAME = gx_bajatubedriver 34 BUNDLE = $(NAME).lv2 35 VER = 0.1 36 # set compile flags 37 CXXFLAGS += -D_FORTIFY_SOURCE=2 -I. -I./dsp -I./plugin -fPIC -DPIC -Wall -fstack-protector -funroll-loops \ 38 -ffast-math -fomit-frame-pointer -fdata-sections -Wl,--gc-sections -Wl,-z,relro,-z,now $(SSE_CFLAGS) 39 LDFLAGS += -I. -shared -lm -Wl,-z,noexecstack 40 GUI_LDFLAGS += -I./gui -shared -Wl,-z,noexecstack -lm `pkg-config --cflags --libs cairo` -L/usr/X11/lib -lX11 41 # invoke build files 42 OBJECTS = plugin/$(NAME).cpp 43 GUI_OBJECTS = gui/$(NAME)_x11ui.c 44 RES_OBJECTS = gui/pedal.o gui/pswitch.o 45 ## output style (bash colours) 46 BLUE = "\033[1;34m" 47 RED = "\033[1;31m" 48 NONE = "\033[0m" 49 50.PHONY : mod all clean install uninstall 51 52all : check $(NAME) 53 @mkdir -p ./$(BUNDLE) 54 @cp ./plugin/*.ttl ./$(BUNDLE) 55 @mv ./*.so ./$(BUNDLE) 56 @if [ -f ./$(BUNDLE)/$(NAME).so ]; then echo $(BLUE)"build finish, now run make install"; \ 57 else echo $(RED)"sorry, build failed"; fi 58 @echo $(NONE) 59 60mod : check clean nogui 61 @mkdir -p ./$(BUNDLE) 62 @cp -R ./MOD/* ./$(BUNDLE) 63 @mv ./*.so ./$(BUNDLE) 64 @if [ -f ./$(BUNDLE)/$(NAME).so ]; then echo $(BLUE)"build finish, now run make install"; \ 65 else echo $(RED)"sorry, build failed"; fi 66 @echo $(NONE) 67 68check : 69ifdef ARMCPU 70 @echo $(RED)ARM CPU DEDECTED, please check the optimization flags 71 @echo $(NONE) 72endif 73 74 #@build resource object files 75$(RES_OBJECTS) : gui/pedal.png gui/pswitch.png 76 @echo $(LGREEN)"generate resource files,"$(NONE) 77 -@cd ./gui && $(LD) -r -b binary pedal.png -o pedal.o 78 -@cd ./gui && $(LD) -r -b binary pswitch.png -o pswitch.o 79 80clean : 81 @rm -f $(NAME).so 82 @rm -rf ./$(BUNDLE) 83 @echo ". ." $(BLUE)", clean up"$(NONE) 84 85dist-clean : 86 @rm -f $(NAME).so 87 @rm -rf ./$(BUNDLE) 88 @rm -rf ./$(RES_OBJECTS) 89 @echo ". ." $(BLUE)", clean up"$(NONE) 90 91install : 92ifneq ("$(wildcard ./$(BUNDLE))","") 93 @mkdir -p $(DESTDIR)$(INSTALL_DIR)/$(BUNDLE) 94 cp -r ./$(BUNDLE)/* $(DESTDIR)$(INSTALL_DIR)/$(BUNDLE) 95 @echo ". ." $(BLUE)", done"$(NONE) 96else 97 @echo ". ." $(BLUE)", you must build first"$(NONE) 98endif 99 100uninstall : 101 @rm -rf $(INSTALL_DIR)/$(BUNDLE) 102 @echo ". ." $(BLUE)", done"$(NONE) 103 104$(NAME) : clean $(RES_OBJECTS) 105 $(CXX) $(CXXFLAGS) $(OBJECTS) $(LDFLAGS) -o $(NAME).so 106 $(CC) $(CXXFLAGS) $(GUI_OBJECTS) $(RES_OBJECTS) $(GUI_LDFLAGS) -o $(NAME)_ui.so 107 $(STRIP) -s -x -X -R .note.ABI-tag $(NAME).so 108 $(STRIP) -s -x -X -R .note.ABI-tag $(NAME)_ui.so 109 110nogui : clean 111 $(CXX) $(CXXFLAGS) $(OBJECTS) $(LDFLAGS) -o $(NAME).so 112 $(STRIP) -s -x -X -R .note.ABI-tag $(NAME).so 113