1 2 UNAME := $(shell uname) 3 STRIP ?= strip 4 # check if user is root 5 user = $(shell whoami) 6 ifeq ($(user),root) 7 INSTALL_DIR ?= /usr/lib/lv2 8 else 9 INSTALL_DIR ?= ~/.lv2 10 endif 11 12 # check CPU and supported optimization flags 13 ifeq ($(UNAME), Linux) 14 ifneq ($(shell cat /proc/cpuinfo | grep sse3 ) , ) 15 SSE_CFLAGS = -msse3 -mfpmath=sse 16 else ifneq ($(shell cat /proc/cpuinfo | grep sse2 ) , ) 17 SSE_CFLAGS = -msse2 -mfpmath=sse 18 else ifneq ($(shell cat /proc/cpuinfo | grep sse ) , ) 19 SSE_CFLAGS = -msse -mfpmath=sse 20 else ifneq ($(shell cat /proc/cpuinfo | grep ARM ) , ) 21 ifneq ($(shell cat /proc/cpuinfo | grep ARMv7 ) , ) 22 ifneq ($(shell cat /proc/cpuinfo | grep vfpd32 ) , ) 23 SSE_CFLAGS = -march=armv7-a -mfpu=vfpv3 24 else ifneq ($(shell cat /proc/cpuinfo | grep vfpv3 ) , ) 25 SSE_CFLAGS = -march=armv7-a -mfpu=vfpv3 26 endif 27 else 28 ARMCPU = "YES" 29 endif 30 else 31 SSE_CFLAGS = 32 endif 33 endif 34 35 # set bundle name 36 NAME = FatFrog 37 BUNDLE = $(NAME).lv2 38 VER = 1.0 39 40 LIB_DIR := ../libxputty/libxputty/ 41 HEADER_DIR := $(LIB_DIR)include/ 42 INCLUDE_DIR := $(LIB_DIR)/lv2_plugin/ 43 44 # set compile flags 45 CXXFLAGS += -O2 -D_FORTIFY_SOURCE=2 -I. -I./dsp -I./plugin -fPIC -DPIC -O2 -Wall -fstack-protector -funroll-loops \ 46 -ffast-math -fomit-frame-pointer -fstrength-reduce -fdata-sections \ 47 -Wl,--gc-sections -Wl,-z,relro,-z,now -Wl,--exclude-libs,ALL -Wl,-z,defs $(SSE_CFLAGS) 48 LDFLAGS += -I. -shared -lm -Wl,-z,noexecstack -fvisibility=hidden 49 GUI_LDFLAGS += -I./gui -I$(HEADER_DIR) -I$(INCLUDE_DIR) -Wl,-z,noexecstack -fvisibility=hidden \ 50 -L. $(LIB_DIR)libxputty.a -shared `pkg-config --cflags --libs cairo x11` -lm 51 # invoke build files 52 OBJECTS = plugin/$(NAME).cpp 53 GUI_OBJECTS = gui/$(NAME)_x11ui.c 54 ## output style (bash colours) 55 BLUE = "\033[1;34m" 56 RED = "\033[1;31m" 57 NONE = "\033[0m" 58 59.PHONY : $(HEADER_DIR)*.h mod all clean install uninstall 60 61all : check $(NAME) 62 @mkdir -p ./$(BUNDLE) 63 @cp ./plugin/*.ttl ./$(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 69mod : 70 @echo "Not implemented for $(NAME)" 71 72check : 73ifdef ARMCPU 74 @echo $(RED)ARM CPU DEDECTED, please check the optimization flags 75 @echo $(NONE) 76endif 77 78clean : 79 @rm -f $(NAME).so 80 @rm -rf ./$(BUNDLE) 81 @echo ". ." $(BLUE)", clean up"$(NONE) 82 83dist-clean : 84 @rm -f $(NAME).so 85 @rm -rf ./$(BUNDLE) 86 @echo ". ." $(BLUE)", clean up"$(NONE) 87 88install : 89ifneq ("$(wildcard ./$(BUNDLE))","") 90 @mkdir -p $(DESTDIR)$(INSTALL_DIR)/$(BUNDLE) 91 cp -r ./$(BUNDLE)/* $(DESTDIR)$(INSTALL_DIR)/$(BUNDLE) 92 @echo ". ." $(BLUE)", done"$(NONE) 93else 94 @echo ". ." $(BLUE)", you must build first"$(NONE) 95endif 96 97uninstall : 98 @rm -rf $(INSTALL_DIR)/Xmonc.lv2 99 @rm -rf $(INSTALL_DIR)/$(BUNDLE) 100 @echo ". ." $(BLUE)", done"$(NONE) 101 102$(NAME) : 103 $(CXX) $(CXXFLAGS) $(OBJECTS) $(LDFLAGS) -o $(NAME).so 104 $(CXX) $(CXXFLAGS) -Wl,-z,nodelete $(GUI_OBJECTS) $(GUI_LDFLAGS) -o $(NAME)_ui.so 105 $(STRIP) -s -x -X -R .comment -R .note.ABI-tag $(NAME).so 106 $(STRIP) -s -x -X -R .comment -R .note.ABI-tag $(NAME)_ui.so 107 108nogui : 109 $(CXX) $(CXXFLAGS) $(OBJECTS) $(LDFLAGS) -o $(NAME).so 110 $(STRIP) -s -x -X -R .comment -R .note.ABI-tag $(NAME).so 111 112doc: 113 #pass 114