NAME = ly CC = gcc FLAGS = -std=c99 -pedantic -g FLAGS+= -Wall -Wextra -Werror=vla -Wno-unused-parameter #FLAGS+= -DDEBUG FLAGS+= -DGIT_VERSION_STRING=\"$(shell git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g')\" LINK = -lpam -lxcb VALGRIND = --show-leak-kinds=all --track-origins=yes --leak-check=full --suppressions=../res/valgrind.supp CMD = ./$(NAME) OS:= $(shell uname -s) ifeq ($(OS), Linux) FLAGS+= -D_DEFAULT_SOURCE endif BIND = bin OBJD = obj SRCD = src SUBD = sub RESD = res TESTD = tests DATADIR ?= ${DESTDIR}/etc/ly FLAGS+= -DDATADIR=\"$(DATADIR)\" INCL = -I$(SRCD) INCL+= -I$(SUBD)/ctypes INCL+= -I$(SUBD)/argoat/src INCL+= -I$(SUBD)/configator/src INCL+= -I$(SUBD)/dragonfail/src INCL+= -I$(SUBD)/termbox_next/src SRCS = $(SRCD)/main.c SRCS += $(SRCD)/config.c SRCS += $(SRCD)/draw.c SRCS += $(SRCD)/inputs.c SRCS += $(SRCD)/login.c SRCS += $(SRCD)/utils.c SRCS += $(SUBD)/argoat/src/argoat.c SRCS += $(SUBD)/configator/src/configator.c SRCS += $(SUBD)/dragonfail/src/dragonfail.c SRCS_OBJS:= $(patsubst %.c,$(OBJD)/%.o,$(SRCS)) SRCS_OBJS+= $(SUBD)/termbox_next/bin/termbox.a .PHONY: final final: $(BIND)/$(NAME) $(OBJD)/%.o: %.c @echo "building object $@" @mkdir -p $(@D) @$(CC) $(INCL) $(FLAGS) -c -o $@ $< $(SUBD)/termbox_next/bin/termbox.a: @echo "building static object $@" @(cd $(SUBD)/termbox_next && $(MAKE)) $(BIND)/$(NAME): $(SRCS_OBJS) @echo "compiling executable $@" @mkdir -p $(@D) @$(CC) -o $@ $^ $(LINK) run: @cd $(BIND) && $(CMD) leak: leakgrind leakgrind: $(BIND)/$(NAME) @rm -f valgrind.log @cd $(BIND) && valgrind $(VALGRIND) 2> ../valgrind.log $(CMD) @less valgrind.log install: $(BIND)/$(NAME) @echo "installing" @install -dZ ${DESTDIR}/etc/ly @install -DZ $(BIND)/$(NAME) -t ${DESTDIR}/usr/bin @install -DZ $(RESD)/config.ini -t ${DESTDIR}/etc/ly @install -DZ $(RESD)/xsetup.sh -t $(DATADIR) @install -DZ $(RESD)/wsetup.sh -t $(DATADIR) @install -dZ $(DATADIR)/lang @install -DZ $(RESD)/lang/* -t $(DATADIR)/lang @install -DZ $(RESD)/ly.service -m 644 -t ${DESTDIR}/usr/lib/systemd/system @install -DZ $(RESD)/pam.d/ly -m 644 -t ${DESTDIR}/etc/pam.d installnoconf: $(BIND)/$(NAME) @echo "installing without the configuration file" @install -dZ ${DESTDIR}/etc/ly @install -DZ $(BIND)/$(NAME) -t ${DESTDIR}/usr/bin @install -DZ $(RESD)/xsetup.sh -t $(DATADIR) @install -DZ $(RESD)/wsetup.sh -t $(DATADIR) @install -dZ $(DATADIR)/lang @install -DZ $(RESD)/lang/* -t $(DATADIR)/lang @install -DZ $(RESD)/ly.service -m 644 -t ${DESTDIR}/usr/lib/systemd/system @install -DZ $(RESD)/pam.d/ly -m 644 -t ${DESTDIR}/etc/pam.d uninstall: @echo "uninstalling" @rm -rf ${DESTDIR}/etc/ly @rm -rf $(DATADIR) @rm -f ${DESTDIR}/usr/bin/ly @rm -f ${DESTDIR}/usr/lib/systemd/system/ly.service @rm -f ${DESTDIR}/etc/pam.d/ly clean: @echo "cleaning" @rm -rf $(BIND) $(OBJD) valgrind.log @(cd $(SUBD)/termbox_next && $(MAKE) clean) remotes: @echo "registering remotes" @git remote add github git@github.com:nullgemm/$(NAME).git @git remote add gitea ssh://git@git.nullgem.fr:2999/nullgemm/$(NAME).git gitea: github github: @echo "sourcing submodules" @git submodule sync @git submodule update --init --remote @cd $(SUBD)/argoat && make github @git submodule update --init --recursive --remote