summaryrefslogtreecommitdiff
path: root/Makefile
blob: 6d3224584039fed20f489002e2c3a0086a132757 (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
92
93
94
95
96
97
98
99
SHELL = /bin/sh
CC = gcc

SRC_DIR = src
BUILD_DIR = build
SHARE_DIR = share
FONT_DIR = ${SHARE_DIR}/fonts
SHADER_DIR = ${SHARE_DIR}/shaders

PREFIX=/usr/local
BINDIR=/bin
LIBDIR=/lib64
SHADERDIR=/share/shaders
FONTDIR=/share/fonts

INSTALL_PROGRAM = install
INSTALL_DATA = install -m 644

SO_FLAGS = -fPIC -shared
COMMON_CFLAGS = -Wall -Wextra -O2 -ggdb
CFLAGS = `pkg-config --cflags raylib` $(COMMON_CFLAGS)
LDFLAGS = `pkg-config --libs raylib` -lm -lpthread -ldl -L${BUILD_DIR} -lplug -Wl,-R,'$$ORIGIN'
FONTS = ${wildcard ${FONT_DIR}/*.ttf}
SHADERS = ${wildcard ${SHADER_DIR}/*.fs}
SRC = ${SRC_DIR}/main.c
LIB = ${SRC_DIR}/plug.c
OBJ = ${SRC:${SRC_DIR}/%.c=${BUILD_DIR}/%.o}
SOBJ = ${LIB:${SRC_DIR}/%.c=${BUILD_DIR}/lib%.so}
BIN = mvis

all: options ${BIN}

options:
	@echo ${BIN} build options:
	@echo "SO_FLAGS = ${SO_FLAGS}"
	@echo "CFLAGS   = ${CFLAGS}"
	@echo "LDFLAGS  = ${LDFLAGS}"

${BUILD_DIR}/%.so: ${LIB} | ${BUILD_DIR}
	${CC} ${SO_FLAGS} ${CFLAGS} -Wl,-soname,libplug.so $< -o $@

${BUILD_DIR}/%.o: ${SRC} | ${BUILD_DIR}
	${CC} ${CFLAGS} -c $< -o $@

mvis: ${OBJ} ${SOBJ} | ${BUILD_DIR}
	${CC} ${OBJ} ${LDFLAGS} -o ${BUILD_DIR}/${BIN}

dev: ${SRC} ${SOBJ} | ${BUILD_DIR}
	${CC} -c ${SRC} ${CFLAGS} -DHOTRELOAD -o ${OBJ}
	${CC} ${OBJ} ${LDFLAGS} -o ${BUILD_DIR}/${BIN}

${BUILD_DIR}:
	mkdir -p ${PREFIX}$@

${BINDIR}:
	mkdir -p ${PREFIX}$@

${LIBDIR}:
	mkdir -p ${PREFIX}$@

${SHADERDIR}:
	mkdir -p ${PREFIX}$@

${FONTDIR}:
	mkdir -p ${PREFIX}$@

install: ${BINDIR} ${LIBDIR} ${SHADERDIR} ${FONTDIR}
	${INSTALL_PROGRAM} ${BUILD_DIR}/${BIN} ${PREFIX}${BINDIR}/${BIN}
	${INSTALL_PROGRAM} ${SOBJ} ${PREFIX}${LIBDIR}/${subst ${BUILD_DIR}/,,${SOBJ}}
	${INSTALL_DATA} ${FONTS} ${subst ${FONT_DIR},${PREFIX}${FONTDIR},${FONTS}}
	@for font in ${FONTS}; do \
		dest="${PREFIX}${FONTDIR}/$$(basename $$font)"; \
		echo "install -m 644 $$font $$dest"; \
		${INSTALL_DATA} $$font $$dest; \
	done
	@for shader in ${SHADERS}; do \
		dest="${PREFIX}${SHADERDIR}/$$(basename $$shader)"; \
		echo "install -m 644 $$shader $$dest"; \
		${INSTALL_DATA} $$shader $$dest; \
	done

uninstall:
	${RM} ${PREFIX}${BINDIR}/${BIN}
	${RM} ${PREFIX}${LIBDIR}/${subst ${BUILD_DIR}/,,${SOBJ}}
	@for font in ${FONTS}; do \
		dest="${PREFIX}${FONTDIR}/$$(basename $$font)"; \
		echo "rm -f $$dest"; \
		${RM} $$dest; \
	done
	@for shader in ${SHADERS}; do \
		dest="${PREFIX}${SHADERDIR}/$$(basename $$shader)"; \
		echo "rm -f $$dest"; \
		${RM} $$dest; \
	done

clean:
	${RM} ${BUILD_DIR}/${BIN}
	${RM} ${OBJ}
	${RM} ${SOBJ}