aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 7727df9c033dd304a5a5573a1057b6ef24de0e44 (plain) (blame)
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
# if $CXX is not set, guess default `cc'. It has to be in system
CXX ?= c++
# compile options
CXXFLAGS += -std=c++17
# link options
LDFLAGS ?= -lrt

# INSTALL binary
INSTALL ?= install

# install path is: $(DESTDIR)$(PREFIX)/$(BINDIR)/system-stats
DESTDIR    ?=
BINARY     ?= system-stats
PREFIX     ?= /usr/local
BINDIR     ?= $(PREFIX)/bin
LIBDIR     ?= $(PREFIX)/lib
SYSCONFDIR ?= $(PREFIX)/etc
DATADIR    ?= $(PREFIX)/share

IS_CLANG = $(shell $(CXX) -v 2>&1 | grep -q clang && echo true)

ifeq ($(IS_CLANG),true)
	CXXFLAGS += -Wno-gnu-zero-variadic-macro-arguments
	CXXFLAGS += -Wno-empty-translation-unit
endif

# Echo function
<< := @echo
ifneq ($(shell eval 'echo -e'),-e)
	<< += -e
endif

<<sources>> := $(wildcard src/system-stats/*.cpp)
<<objects>> := $(<<sources>>:src/%.cpp=obj/%.o)

all: system-stats

obj/%.o: src/%.cpp
	$(<<) " CXX\t" $(<:src/%=%)
	@mkdir -p $(shell dirname $(@))
	@$(CXX) -c $(<) -o $(@) $(CXXFLAGS)

system-stats: $(<<objects>>)
	$(<<) "LINK\t" "system-stats$(^:obj/%=\\n\\t + %)"
	@$(CXX) $(^) -o $(@) $(LDFLAGS)

install: system-stats
	$(INSTALL) -Dm0755 system-stats            -s "$(DESTDIR)$(LIBDIR)/system-stats/system-stats"
	install    -Dm0755 src/bin/watcher            "$(DESTDIR)$(BINDIR)/watcher"
	install    -Dm0755 data/scripts/sync-stats    "$(DESTDIR)$(LIBDIR)/system-stats/sync-stats"
	install    -Dm0644 data/scripts/common        "$(DESTDIR)$(LIBDIR)/system-stats/common"
	install    -Dm0755 data/scripts/sync-logs     "$(DESTDIR)$(LIBDIR)/system-stats/sync-logs"
	install    -Dm0644 data/shopno-os-log.desktop "$(DESTDIR)$(SYSCONFDIR)/xdg/autostart/shopno-os-log.desktop"
	install    -dm0755 "$(DESTDIR)$(DATADIR)/Watcher/"
	install    -Dm0644 -t "$(DESTDIR)$(DATADIR)/Watcher/" src/Watcher/*

uninstall:
	@$(RM) -rfv \
		"$(DESTDIR)$(BINDIR)/watcher" \
		"$(DESTDIR)$(LIBDIR)/system-stats" \
		"$(DESTDIR)$(BINDIR)/watcher" \
		"$(DESTDIR)$(DATADIR)/Watcher" \
		"$(DESTDIR)$(SYSCONFDIR)/xdg/autostart/shopno-os-log.desktop"

clean:
	$(<<) "  RM\t" "system-stats$(<<objects>>:obj/%=\\n\\t + %)"
	@$(RM) -f $(<<objects>>) system-stats
	@$(RM) -r obj

.PHONY: all clean install uninstall test