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