summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile83
1 files changed, 65 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index c401a65..6d32245 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,17 @@
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
@@ -11,11 +19,13 @@ 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
-SRC = main.c
-LIB = plug.c
-OBJ = main.o
-SOBJ = libplug.so
+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}
@@ -26,27 +36,64 @@ options:
@echo "CFLAGS = ${CFLAGS}"
@echo "LDFLAGS = ${LDFLAGS}"
-.c.so:
- ${CC} ${LIB} ${SO_FLAGS} ${CFLAGS} -o ${SOBJ}
+${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}$@
-.c.o:
- ${CC} -c ${CFLAGS} ${SRC}
+${LIBDIR}:
+ mkdir -p ${PREFIX}$@
-mvis: .c.o .c.so
- ${CC} ${OBJ} ${SOBJ} ${CFLAGS} ${LDFLAGS} -o ${BIN}
+${SHADERDIR}:
+ mkdir -p ${PREFIX}$@
-dev: .c.o .c.so
- ${CC} ${OBJ} ${SOBJ} ${CFLAGS} -DHOTRELOAD ${LDFLAGS} -o ${BIN}
+${FONTDIR}:
+ mkdir -p ${PREFIX}$@
-install:
- ${INSTALL_PROGRAM} ${BIN} ${PREFIX}${BINDIR}/${BIN}
- ${INSTALL_DATA} ${SOBJ} ${PREFIX}${LIBDIR}/${SOBJ}
+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}/${SOBJ}
+ ${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} ${BIN}
+ ${RM} ${BUILD_DIR}/${BIN}
${RM} ${OBJ}
${RM} ${SOBJ}