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_SunFace 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 \ 38 -fstack-protector -funroll-loops -ffast-math -fomit-frame-pointer \ 39 -fdata-sections -Wl,--gc-sections -Wl,-z,relro,-z,now $(SSE_CFLAGS) 40 LDFLAGS += -I. -shared -lm -Wl,-z,noexecstack 41 GUI_LDFLAGS += -I./gui -shared -Wl,-z,noexecstack -lm `pkg-config --cflags --libs cairo` -L/usr/X11/lib -lX11 42 # invoke build files 43 OBJECTS = plugin/$(NAME).cpp 44 GUI_OBJECTS = gui/$(NAME)_x11ui.c 45 RES_OBJECTS = gui/pedal.o gui/pswitch_on.o gui/pswitch_off.o 46 ## output style (bash colours) 47 BLUE = "\033[1;34m" 48 RED = "\033[1;31m" 49 NONE = "\033[0m" 50 51.PHONY : mod all clean install uninstall 52 53all : check $(NAME) 54 @mkdir -p ./$(BUNDLE) 55 @cp ./plugin/*.ttl ./$(BUNDLE) 56 @mv ./*.so ./$(BUNDLE) 57 @if [ -f ./$(BUNDLE)/$(NAME).so ]; then echo $(BLUE)"build finish, now run make install"; \ 58 else echo $(RED)"sorry, build failed"; fi 59 @echo $(NONE) 60 61mod : nogui 62 @mkdir -p ./$(BUNDLE) 63 @cp -R ./MOD/* ./$(BUNDLE) 64 @mv ./*.so ./$(BUNDLE) 65 @if [ -f ./$(BUNDLE)/$(NAME).so ]; then echo $(BLUE)"build finish, now run make install"; \ 66 else echo $(RED)"sorry, build failed"; fi 67 @echo $(NONE) 68 69check : 70ifdef ARMCPU 71 @echo $(RED)ARM CPU DEDECTED, please check the optimization flags 72 @echo $(NONE) 73endif 74 75 #@build resource object files 76$(RES_OBJECTS) : gui/pedal.png gui/pswitch_on.png gui/pswitch_off.png 77 @echo $(LGREEN)"generate resource files,"$(NONE) 78 -@cd ./gui && $(LD) -r -b binary pedal.png -o pedal.o 79 -@cd ./gui && $(LD) -r -b binary pswitch_on.png -o pswitch_on.o 80 -@cd ./gui && $(LD) -r -b binary pswitch_off.png -o pswitch_off.o 81 82clean : 83 @rm -f $(NAME).so 84 @rm -rf ./$(BUNDLE) 85 @echo ". ." $(BLUE)", clean up"$(NONE) 86 87dist-clean : 88 @rm -f $(NAME).so 89 @rm -rf ./$(BUNDLE) 90 @rm -rf ./$(RES_OBJECTS) 91 @echo ". ." $(BLUE)", clean up"$(NONE) 92 93install : 94ifneq ("$(wildcard ./$(BUNDLE))","") 95 @mkdir -p $(DESTDIR)$(INSTALL_DIR)/$(BUNDLE) 96 cp -r ./$(BUNDLE)/* $(DESTDIR)$(INSTALL_DIR)/$(BUNDLE) 97 @echo ". ." $(BLUE)", done"$(NONE) 98else 99 @echo ". ." $(BLUE)", you must build first"$(NONE) 100endif 101 102uninstall : 103 @rm -rf $(INSTALL_DIR)/$(BUNDLE) 104 @echo ". ." $(BLUE)", done"$(NONE) 105 106$(NAME) : clean $(RES_OBJECTS) 107 $(CXX) $(CXXFLAGS) $(OBJECTS) $(LDFLAGS) -o $(NAME).so 108 $(CC) $(CXXFLAGS) $(GUI_OBJECTS) $(RES_OBJECTS) $(GUI_LDFLAGS) -o $(NAME)_ui.so 109 $(STRIP) -s -x -X -R .comment -R .note.ABI-tag $(NAME).so 110 $(STRIP) -s -x -X -R .comment -R .note.ABI-tag $(NAME)_ui.so 111 112nogui : clean 113 $(CXX) $(CXXFLAGS) $(OBJECTS) $(LDFLAGS) -o $(NAME).so 114 $(STRIP) -s -x -X -R .comment -R .note.ABI-tag $(NAME).so 115