blob: 3a5cd670d7e78635da4213fbf4c32930f8e3b34f (
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
|
# rmtop - read-only ncurses GPU dashboard (Open-IOV).
#
# Reuses rmtool's RM query layer (../rmtool/src) so there is exactly one
# ioctl implementation. Requires ncursesw; falls back to -lncursesw when
# pkg-config is unavailable.
CC ?= gcc
CFLAGS ?= -O2 -Wall -Wextra
RMTOOL = ../rmtool
CPPFLAGS += -Iinclude -I$(RMTOOL)/include
NCURSES_CFLAGS := $(shell pkg-config --cflags ncursesw 2>/dev/null)
NCURSES_LIBS := $(shell pkg-config --libs ncursesw 2>/dev/null || echo -lncursesw)
CFLAGS += $(NCURSES_CFLAGS)
OBJS = src/main.o src/panel.o
SHARED = build/rm_api.o build/query.o build/output.o
PREFIX ?= /usr/local
all: rmtop
rmtop: $(OBJS) $(SHARED)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(NCURSES_LIBS)
build:
@mkdir -p build
build/rm_api.o: $(RMTOOL)/src/rm_api.c $(RMTOOL)/include/rm_api.h | build
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
build/query.o: $(RMTOOL)/src/query.c $(RMTOOL)/include/rm_api.h $(RMTOOL)/include/rmtool.h | build
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
build/output.o: $(RMTOOL)/src/output.c $(RMTOOL)/include/rmtool.h | build
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
src/%.o: src/%.c include/rmtop.h $(RMTOOL)/include/rm_api.h $(RMTOOL)/include/rmtool.h | build
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
install: rmtop
install -d $(DESTDIR)$(PREFIX)/bin
install -m 0755 rmtop $(DESTDIR)$(PREFIX)/bin/rmtop
clean:
rm -f $(OBJS) $(SHARED) rmtop
rmdir build 2>/dev/null || true
.PHONY: all install clean
|