summaryrefslogtreecommitdiff
path: root/Makefile
blob: 6ef27cba388f2949c4e9b678c097c57f439cc8ee (plain)
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
#
# Copyright (C) 2015 David Härdeman <david@hardeman.nu>
#

#
# Generic settings
#
CC              = gcc
GENERIC_CFLAGS	= -g -Wall -Werror -D_FILE_OFFSET_BITS=64 \
		  -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -flto
EXTRA_CFLAGS	=
GENERIC_LDFLAGS	=
EXTRA_LDFLAGS	=

COMMON_HEADERS	= linux-input-keycodes.h linux-input.h shared.h

RCM_PACKAGES	= libudev libsystemd libevdev sqlite3
RCM_CFLAGS	= ${GENERIC_CFLAGS} ${EXTRA_CFLAGS} $(shell pkg-config --cflags ${RCM_PACKAGES})
RCM_LDFLAGS	= ${GENERIC_LDFLAGS} ${EXTRA_LDFLAGS} $(shell pkg-config --libs ${RCM_PACKAGES})
RCM_COMPILE	= $(CC) $(RCM_CFLAGS)
RCM_LINK	= $(CC) $(RCM_CFLAGS) $(RCM_LDFLAGS)
RCM_OBJECTS	= rcm-server-main.o rcm-server-keymap.o rcm-server-udev.o rcm-server-lirc.o rcm-server-evdev.o rcm-server-kdb.o shared.o
RCM_HEADERS	= rcm-server-main.h rcm-server-keymap.h rcm-server-udev.h rcm-server-lirc.h rcm-server-evdev.h rcm-server-kdb.h utils.h $(COMMON_HEADERS)

RCC_PACKAGES	= gtk+-3.0 gmodule-2.0
RCC_CFLAGS	= ${GENERIC_CFLAGS} ${EXTRA_CFLAGS} $(shell pkg-config --cflags ${RCC_PACKAGES})
RCC_LDFLAGS	= ${GENERIC_LDFLAGS} ${EXTRA_LDFLAGS} $(shell pkg-config --libs ${RCC_PACKAGES})
RCC_COMPILE	= $(CC) $(RCC_CFLAGS)
RCC_LINK	= $(CC) $(RCC_CFLAGS) $(RCC_LDFLAGS)
RCC_OBJECTS	= rcm-client-main.o rcm-client-hardware-list.o rcm-client-receive.o rcm-client-advanced.o rcm-client-resources.o generated.o shared.o
RCC_HEADERS	= rcm-client-main.h rcm-client-hardware-list.h rcm-client-receive.h rcm-client-advanced.h rcm-client-resources.h generated.h $(COMMON_HEADERS)

INSTALL         = install -c
INSTALL_PROGRAM = ${INSTALL}
INSTALL_DATA    = ${INSTALL} -m 644

DESTDIR        ?=
prefix         	= /usr
usrbindir       = ${prefix}/bin
mandir          = ${prefix}/share/man

.SUFFIXES:

#
# Targets
#

all: rcm-server rcm-client
.DEFAULT: all

shared.o: shared.c shared.h
	$(CC) $(GENERIC_CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<

linux-input-keycodes.o: linux-input-keycodes.c $(COMMON_HEADERS)
	$(CC) $(GENERIC_CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<

rcm-client-resources.c: rcm-client.gresource.xml $(shell glib-compile-resources --generate-dependencies rcm-client.gresource.xml)
	glib-compile-resources --target=$@ --generate-source --c-name rcm rcm-client.gresource.xml

rcm-client-resources.h: rcm-client.gresource.xml $(shell glib-compile-resources --generate-dependencies rcm-client.gresource.xml)
	glib-compile-resources --target=$@ --generate-header --c-name rcm rcm-client.gresource.xml

rcm-client-%.o: rcm-client-%.c $(RCC_HEADERS)
	$(RCC_COMPILE) -o $@ -c $<

generated.o: generated.c generated.h
	$(RCC_COMPILE) -o $@ -c $<

generated.c generated.h: RemoteControlManager.xml
	gdbus-codegen --interface-prefix org.gnome --c-generate-object-manager --generate-c-code generated RemoteControlManager.xml

rcm-client: $(RCC_OBJECTS)
	$(RCC_LINK) -o $@ $^

rcm-server-%.o: rcm-server-%.c $(RCM_HEADERS)
	$(RCM_COMPILE) -o $@ -c $<

rcm-server: $(RCM_OBJECTS)
	$(RCM_LINK) -o $@ $^

install: all
	$(INSTALL_PROGRAM) -D rcm-server $(DESTDIR)$(usrbindir)/rcm-server

uninstall:
	- rm -f $(DESTDIR)$(usrbindir)/rcm-server

clean:
	- rm -f generated.[ch] *.o rcm-server rcm-client

.PHONY: install uninstall clean all