diff options
| author | yuzu-eva <cafebabe@disroot.org> | 2025-06-08 19:10:30 +0200 |
|---|---|---|
| committer | yuzu-eva <cafebabe@disroot.org> | 2025-06-08 19:10:30 +0200 |
| commit | 3438bb45053b30c69eb96fc2476f7d7ba4189906 (patch) | |
| tree | a9861498c0775805416418efc8e1b66cc7b7673a /Makefile | |
| parent | a029d434b3f67c37bb4663be8e9b4d6623a32955 (diff) | |
rearranged project structure and adjusted Makefiles
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 83 |
1 files changed, 65 insertions, 18 deletions
@@ -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} |
