-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
99 lines (81 loc) · 3.26 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
SHELL=/bin/bash
DESTDIR=/
LIBDIR=/lib/
SERVICE=openrc
library_files = $(patsubst %.c, %.o, $(wildcard library/*.c))
service_files = $(patsubst %.c, %.o, $(wildcard service/*.c))
gtk_files = $(patsubst %.c, %.o, $(wildcard gtk/*.c))
GTK_FLAGS = `pkg-config --libs --cflags gtk+-3.0 gio-2.0` -g3
all: clean build
%.o: %.c
$(CC) -c $< -o $@ -Ilibrary -Ibuild -fPIC $(CFLAGS) $(GTK_FLAGS) -Igtk
main: $(service_files)
mkdir -p build
$(CC) $(service_files) \
-Ilibrary -nostdlib -lukbd -Lbuild -lc -o build/main
strip build/main
libukbd: $(library_files)
mkdir -p build
$(CC) $(library_files) -o build/libukbd.so \
-shared -fPIC -Ilibrary -nostdlib -lc
strip build/libukbd.so
gui-gtk: libukbd $(gtk_files)
mkdir -p build
$(CC) atspi/atspi.c -o build/atspi $(shell pkg-config --cflags --cflags --libs atspi-2 gtk+-3.0)
bash gtk/generate_keytab.sh > build/str.c
$(CC) $(gtk_files) -Ibuild build/str.c $(GTK_FLAGS) \
-lX11 \
-Ilibrary -lukbd -Lbuild -o build/gui-gtk
run: build
LD_LIBRARY_PATH=$$PWD/build build/main
run-gtk: gui-gtk
LD_LIBRARY_PATH=$$PWD/build build/gui-gtk
test:
valac data/test.vala -o build/test-vala --vapidir=./library/ --pkg libukbd -X -I./library -X -L./build -X -lukbd || true
$(CC) data/test.c -o build/test-c -Ilibrary -lukbd -Lbuild || true
@echo -ne "\033[33mPython test\033[;0m\n"
LD_LIBRARY_PATH=$$PWD/build python3 data/test.py || true
@echo -ne "\033[33mC test\033[;0m\n"
LD_LIBRARY_PATH=$$PWD/build build/test-c || true
@echo -ne "\033[33mVala test\033[;0m\n"
LD_LIBRARY_PATH=$$PWD/build build/test-vala || true
@if [[ `uname -m` == "x86_64" ]]; then \
make test-x86 || true ;\
fi
test-x86:
$(CC) data/test.s -o build/test-asm -Ilibrary -lukbd -Lbuild -nostdlib
@echo -ne "\033[33mx86_64 Assembly test\033[;0m\n"
LD_LIBRARY_PATH=$$PWD/build build/test-asm
build: libukbd main gui-gtk
install:
mkdir -p $(DESTDIR)/usr/bin
mkdir -p $(DESTDIR)/usr/libexec
mkdir -p $(DESTDIR)/usr/$(LIBDIR)
mkdir -p $(DESTDIR)/etc/xdg/autostart/
mkdir -p $(DESTDIR)/usr/share/applications/
mkdir -p $(DESTDIR)/usr/share/icons/hicolor/scalable/apps/
mkdir -p $(DESTDIR)/usr/share/icons/hicolor/scalable/actions/
mkdir -p $(DESTDIR)/usr/share/glib-2.0/schemas/
install build/main $(DESTDIR)/usr/libexec/ukbd
install build/libukbd.so $(DESTDIR)/usr/$(LIBDIR)
install build/gui-gtk $(DESTDIR)/usr/bin/ukbd-gtk
install build/atspi $(DESTDIR)/usr/bin/ukbd-atspi
install data/ukbd.desktop $(DESTDIR)/usr/share/applications/
install data/ukbd-atspi.desktop $(DESTDIR)/etc/xdg/autostart/
install data/icon.svg $(DESTDIR)/usr/share/icons/hicolor/scalable/apps/ukbd.svg
install data/gsettings.xml $(DESTDIR)/usr/share/glib-2.0/schemas/org.turkman.ukbd.gschema.xml
make install_$(SERVICE) DESTDIR=$(DESTDIR)
for file in data/icons/*.svg ; do \
install $$file $(DESTDIR)/usr/share/icons/hicolor/scalable/actions/ ;\
done
install_systemd:
mkdir -p $(DESTDIR)/lib/systemd/system/
install data/systemd.service $(DESTDIR)/lib/systemd/system/ukbd.service
install_openrc:
mkdir -p $(DESTDIR)/etc/init.d
install data/openrc.service $(DESTDIR)/etc/init.d/ukbd
install_sysvinit:
mkdir -p $(DESTDIR)/etc/init.d
install data/sysvinit.service $(DESTDIR)/etc/init.d/ukbd
clean:
rm -vfr $(service_files) $(gtk_files) $(library_files) build */__pycache__