forked from mcuringa/numptyphysics
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
99 lines (69 loc) · 2.29 KB
/
makefile
File metadata and controls
99 lines (69 loc) · 2.29 KB
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
CXXFLAGS = -g -Wall
APP = numptyphysics
DESTDIR ?=
PREFIX = /usr
# Standard directories
BINDIR = $(PREFIX)/bin
DATAROOTDIR = $(PREFIX)/share
DESKTOPDIR = $(DATAROOTDIR)/applications
MANDIR = $(DATAROOTDIR)/man
PIXMAPDIR = $(DATAROOTDIR)/pixmaps
# App-specific directories
DATADIR = $(DATAROOTDIR)/$(APP)
CXXFLAGS += -DINSTALL_BASE_PATH=\"$(DATADIR)\"
SOURCES = $(wildcard *.cpp)
SOURCES_TEST = $(wildcard test/*.cpp)
all: $(APP)
# Required modules (uses pkg-config)
PKGS = box2d sdl2 SDL2_image SDL2_ttf x11 zlib
CXXFLAGS += $(shell pkg-config --cflags $(PKGS))
LIBS += $(shell pkg-config --libs $(PKGS))
GTEST_DIR = /usr/src/gtest
# Pick the right OS-specific module here
SOURCES_OS = os/OsFreeDesktop.cpp
CXXFLAGS += -I.
# Dependency tracking
DEPENDENCIES = $(SOURCES:.cpp=.d) $(SOURCES_TEST:.cpp=.d)
CXXFLAGS += -MD
-include $(DEPENDENCIES)
OBJECTS = $(SOURCES:.cpp=.o)
OBJECTS_OS = $(SOURCES_OS:.cpp=.o)
OBJECTS_OS_TEST = $(subst os,test,$(OBJECTS_OS))
OBJECTS_TEST = $(SOURCES_TEST:.cpp=.o) $(OBJECTS) $(OBJECTS_OS_TEST) gtest-all.o gtest_main.o
Dialogs.cpp: help_text_html.h
%_html.h: %.html
xxd -i $< $@
$(APP): $(OBJECTS) $(OBJECTS_OS)
$(CXX) -o $@ $^ $(LIBS)
check: $(APP) tester
./tester
leak-check: tester
valgrind --leak-check=full ./tester
gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc
$(CXX) -c -I$(GTEST_DIR) -o $@ $^ $(LIBS) -lpthread
gtest_main.o: $(GTEST_DIR)/src/gtest_main.cc
$(CXX) -c -I$(GTEST_DIR) -o $@ $^ $(LIBS) -lpthread
$(OBJECTS_OS_TEST): $(SOURCES_OS)
$(CXX) $(CXXFLAGS) -DTEST -c -o $@ $^
tester: $(OBJECTS_TEST)
$(CXX) -o $@ $^ $(LIBS) -lpthread
clean:
rm -f $(APP) $(OBJECTS) $(OBJECTS_OS) $(OBJECTS_TEST) $(OBJECTS_OS_TEST)
rm -f $(DEPENDENCIES)
rm -f help_text_html.h
distclean: clean
rm -f $(APP) tester
install: $(APP)
mkdir -p $(DESTDIR)$(BINDIR)
install -m 755 $(APP) $(DESTDIR)$(BINDIR)
mkdir -p $(DESTDIR)$(DESKTOPDIR)
install -m 644 $(APP).desktop $(DESTDIR)$(DESKTOPDIR)
mkdir -p $(DESTDIR)$(DATADIR)
install -m 644 data/*.png data/*.ttf data/*.npz $(DESTDIR)$(DATADIR)
install -m 644 data/NP-complete/*/*.npz $(DESTDIR)$(DATADIR)
mkdir -p $(DESTDIR)$(MANDIR)/man6
install -m 644 $(APP).6 $(DESTDIR)$(MANDIR)/man6
mkdir -p $(DESTDIR)$(PIXMAPDIR)
install -m 644 data/numptyphysics.png $(DESTDIR)$(PIXMAPDIR)
.PHONY: all clean distclean
.DEFAULT: all