forked from MahaKoala/kit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
65 lines (56 loc) · 1.87 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
DEBUG ?= 0
PREFIX := /usr
CXX := g++
CXXFLAGS := -std=c++14 -Wall -Wextra -Wpedantic -Wno-unused-parameter -fPIC
LDFLAGS := -ldl -pthread -shared
REQLIBS := glfw3 freetype2 chaiscript gl
LIBS := $(shell pkg-config --libs $(REQLIBS))
DEPFLAGS := $(shell pkg-config --cflags $(REQLIBS))
BUILDDIR := build
OUT_LIBRARY := libkit.so
SOURCEDIR := src
INCLUDEDIR := include
SOURCES := $(shell find $(SOURCEDIR) -name '*.cpp')
OBJECTS := $(addprefix $(BUILDDIR)/,$(SOURCES:%.cpp=%.o))
PCFILE := pkgconfig/kit.pc
ifeq ($(DEBUG), 1)
CXXFLAGS += -DKIT_DEBUG -g -O0
else
CXXFLAGS += -O2 -g
endif
$(OUT_LIBRARY): $(OBJECTS) $(PCFILE)
$(shell mkdir lib)
$(CXX) $(CXXFLAGS) $(DEPFLAGS) $(LDFLAGS) $(LIBS) $(OBJECTS) -o lib/$(OUT_LIBRARY)
$(BUILDDIR)/%.o: %.cpp
@echo 'Building ${notdir $@} ...'
$(shell mkdir -p "${dir $@}")
$(CXX) $(CXXFLAGS) $(DEPFLAGS) -I$(INCLUDEDIR) -c $< -o $@
$(PCFILE):
$(shell mkdir pkgconfig)
echo 'prefix=$(PREFIX)' > $(PCFILE)
echo 'exec_prefix=$${prefix}' >> $(PCFILE)
echo 'libdir=$${exec_prefix}/lib' >> $(PCFILE)
echo 'includedir=$${prefix}/include' >> $(PCFILE)
echo '' >> $(PCFILE)
echo 'Name: kit' >> $(PCFILE)
echo 'Description: The Kit framework' >> $(PCFILE)
echo 'Version: 0.3.7' >> $(PCFILE)
echo 'Requires: $(REQLIBS)' >> $(PCFILE)
echo 'Libs: -L$${libdir} -lkit' >> $(PCFILE)
echo 'Cflags: -I$${includedir}' >> $(PCFILE)
install:
cp -r $(INCLUDEDIR)/* $(PREFIX)/include
cp lib/$(OUT_LIBRARY) $(PREFIX)/lib/
cp $(PCFILE) $(PREFIX)/lib/pkgconfig/kit.pc
mkdir -p /usr/share/kit
cp -r ./dist/static /usr/share/kit/
uninstall:
rm -r $(PREFIX)/include/Kit
rm $(PREFIX)/lib/$(OUT_LIBRARY)
rm $(PREFIX)/lib/pkgconfig/kit.pc
rm -r /opt/kit/
clean:
$(shell rm -rf ./build)
$(shell rm -rf ./lib)
$(shell rm -rf ./pkgconfig)
$(shell rm -f $(OBJECTS) lib/$(OUT_LIBRARY) $(PCFILE))