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