/
Makefile
148 lines (129 loc) · 4.62 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# check CPU and supported optimization flags
ifeq ($(UNAME), Linux)
ifneq ($(shell cat /proc/cpuinfo | grep sse3 ) , )
SSE_CFLAGS = -msse3 -mfpmath=sse
else ifneq ($(shell cat /proc/cpuinfo | grep sse2 ) , )
SSE_CFLAGS = -msse2 -mfpmath=sse
else ifneq ($(shell cat /proc/cpuinfo | grep sse ) , )
SSE_CFLAGS = -msse -mfpmath=sse
else ifneq ($(shell cat /proc/cpuinfo | grep ARM ) , )
ifneq ($(shell cat /proc/cpuinfo | grep ARMv7 ) , )
ifneq ($(shell cat /proc/cpuinfo | grep vfpd32 ) , )
SSE_CFLAGS = -march=armv7-a -mfpu=vfpv3
else ifneq ($(shell cat /proc/cpuinfo | grep vfpv3 ) , )
SSE_CFLAGS = -march=armv7-a -mfpu=vfpv3
endif
else
ARMCPU = "YES"
endif
else
SSE_CFLAGS =
endif
endif
# set bundle name
NAME = XUiDesigner
EXEC_NAME = $(shell echo $(NAME) | tr A-Z a-z)
BUILD_DIR = build
VER = 0.4
LIB_DIR := ../libxputty/libxputty/
HEADER_DIR := $(LIB_DIR)include/
LOCALIZE_DIR := ../libxputty/xputty/dialogs/
PREFIX ?= /usr
BIN_DIR ?= $(PREFIX)/bin
SHARE_DIR ?= $(PREFIX)/share
DESKAPPS_DIR ?= $(SHARE_DIR)/applications
PIXMAPS_DIR ?= $(SHARE_DIR)/pixmaps
MAN_DIR ?= $(SHARE_DIR)/man/man1
LOCAL_DIR ?= $(SHARE_DIR)/locale
# set compile flags
LDFLAGS += -fPIC -Wl,-z,noexecstack -Wl,--no-undefined -I./ -I../libxputty/libxputty/include/ \
`pkg-config --cflags --libs cairo x11 lilv-0` -lm
CXXFLAGS += -O2 -D_FORTIFY_SOURCE=2 -Wall -fstack-protector
DEBUG_CXXFLAGS += -g -D DEBUG
# invoke build files
OBJECTS = $(wildcard *.c)
LOCALIZE = $(LOCALIZE_DIR)xfile-dialog.c $(LOCALIZE_DIR)xmessage-dialog.c $(LOCALIZE_DIR)xsavefile-dialoge.c
## output style (bash colours)
BLUE = "\033[1;34m"
RED = "\033[1;31m"
NONE = "\033[0m"
.PHONY : $(HEADER_DIR)*.h all debug nls gettext updatepot po clean install uninstall
all : check $(NAME)
@cd ../libxputty/Build && $(MAKE) shared
@mkdir -p ./$(BUILD_DIR)
@mv ./$(EXEC_NAME) ./$(BUILD_DIR)
@#if [ -f ./$(BUILD_DIR)/$(EXEC_NAME) ]; then echo $(BLUE)"build finish, now run make install"; \
#else echo $(RED)"sorry, build failed"; fi
@#echo $(NONE)
debug: CXXFLAGS = $(DEBUG_CXXFLAGS)
debug: all
nls: LDFLAGS += -DENABLE_NLS -DGETTEXT_PACKAGE=\"$(EXEC_NAME)\" -DLOCAL_DIR=\"$(LOCAL_DIR)\"
nls: gettext all
#@localisation
MSGLANGS=$(notdir $(wildcard po/*po))
MSGOBJS=$(addprefix locale/,$(MSGLANGS:.po=/LC_MESSAGES/$(EXEC_NAME).mo))
LANGS=$(addprefix locale/,$(MSGLANGS:.po=/LC_MESSAGES/))
LANGW=$(words $(MSGLANGS))
gettext: $(MSGOBJS)
locale/%/LC_MESSAGES/$(EXEC_NAME).mo: po/%.po
mkdir -p $(dir $@)
msgfmt -c -o $@ po/$*.po
updatepot:
@mkdir -p ./po/
xgettext --keyword=_ --language=C++ --add-comments --sort-output --package-name=$(EXEC_NAME) --package-version=$(VER) -o po/$(EXEC_NAME).pot $(OBJECTS) $(LOCALIZE)
for POFILE in $(MSGLANGS) ; do msgmerge --update po/$$POFILE po/$(EXEC_NAME).pot ; done
po:
msginit --input=po/$(EXEC_NAME).pot --locale=$(LANG) --output=po/$(basename $(LANG)).po
echo $(LANG)
check :
ifdef ARMCPU
@echo $(RED)ARM CPU DEDECTED, please check the optimization flags
@echo $(NONE)
endif
clean :
@rm -f ./$(BUILD_DIR)/$(EXEC_NAME)
@rm -rf ./$(BUILD_DIR)
@echo ". ." $(BLUE)", clean up"$(NONE)
install :
ifneq ("$(wildcard ./$(BUILD_DIR))","")
@cd ../libxputty/Build && make install
@mkdir -p $(DESTDIR)$(BIN_DIR)
@cp ./$(BUILD_DIR)/$(EXEC_NAME) $(DESTDIR)$(BIN_DIR)/$(EXEC_NAME)
@cp ../tools/dsp2cc $(DESTDIR)$(BIN_DIR)/dsp2cc
@mkdir -p $(DESTDIR)$(DESKAPPS_DIR)
@cp $(NAME).desktop $(DESTDIR)$(DESKAPPS_DIR)
@mkdir -p $(DESTDIR)$(PIXMAPS_DIR)
@cp ../$(NAME).svg $(DESTDIR)$(PIXMAPS_DIR)
@mkdir -p $(DESTDIR)/usr/share/XUiDesigner/wrapper
@cp -r ../Bundle/wrapper/* $(DESTDIR)/usr/share/XUiDesigner/wrapper
@if [ ${LANGW} -gt 1 ]; then \
for lang in $(LANGS) ; \
do \
if [ -f $$lang/$(EXEC_NAME).mo ]; then \
mkdir -p $(DESTDIR)$(SHARE_DIR)/$$lang; \
cp $$lang/$(EXEC_NAME).mo $(DESTDIR)$(SHARE_DIR)/$$lang; \
fi \
done \
elif [ ${LANGW} -gt 0 ]; then \
if [ -f $(LANGS)/$(EXEC_NAME).mo ]; then \
mkdir -p $(DESTDIR)$(SHARE_DIR)/$(LANGS); \
cp $(LANGS)/$(EXEC_NAME).mo $(DESTDIR)$(SHARE_DIR)/$(LANGS); \
fi \
fi
@update-desktop-database || true
@echo ". ." $(BLUE)", done"$(NONE)
else
@echo ". ." $(BLUE)", you must build first"$(NONE)
endif
uninstall :
@rm -rf $(DESTDIR)$(BIN_DIR)/$(EXEC_NAME)
@rm -rf $(DESTDIR)$(BIN_DIR)/dsp2cc
@rm -rf $(DESTDIR)$(DESKAPPS_DIR)/$(NAME).desktop
@rm -rf $(DESTDIR)$(PIXMAPS_DIR)/$(NAME).svg
@rm -rf $(DESTDIR)$(SHARE_DIR)/XUiDesigner
@rm -rf $(addprefix $(SHARE_DIR)/, $(MSGOBJS))
@echo ". ." $(BLUE)", done"$(NONE)
$(NAME) :
$(CC) $(CXXFLAGS) $(OBJECTS) -L. ../libxputty/libxputty/libxputty.a -o $(EXEC_NAME) $(LDFLAGS)
doc:
#pass