You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ly/makefile

72 lines
1.7 KiB
Makefile

NAME=ly
CC=gcc
#CC=gcc -O3
#CC=tcc
FLAGS=-std=c99 -pedantic -Wall -Werror=vla -Werror -g
BIND=bin
SRCD=src
SUBD=sub
OBJD=obj
RESD=res
LANG=$(RESD)/lang
INCL=-I$(SRCD) -I$(SUBD)/termbox-next/src -I$(SUBD)/inih
LINK=-lm -lpam -lpam_misc
SRCS=$(SRCD)/main.c
SRCS+=$(SRCD)/draw.c
SRCS+=$(SRCD)/util.c
SRCS+=$(SRCD)/config.c
SRCS+=$(SRCD)/widgets.c
SRCS+=$(SRCD)/desktop.c
SRCS+=$(SRCD)/inputs.c
SRCS+=$(SRCD)/login.c
SRCS+=$(SUBD)/inih/ini.c
OBJS:=$(patsubst $(SRCD)/%.c,$(OBJD)/$(SRCD)/%.o,$(SRCS))
OBJS+=$(SUBD)/termbox-next/bin/termbox.a
.PHONY:all
all:$(BIND)/$(NAME)
$(OBJD)/%.o:%.c
@echo "building source 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):$(OBJS)
@echo "compiling $@"
@mkdir -p $(BIND)
@$(CC) $(INCL) $(FLAGS) $(LINK) -o $(BIND)/$(NAME) $(OBJS)
@cp -r $(LANG) $(BIND)/lang
@cp $(RESD)/config.ini $(BIND)
run:$(BIND)/$(NAME)
@cd ./$(BIND) && ./$(NAME)
valgrind:$(BIND)/$(NAME)
@cd ./$(BIND) && valgrind --show-leak-kinds=all --track-origins=yes --leak-check=full --suppressions=../res/valgrind.supp 2> ../valgrind.log ./ly
install:$(BIND)/$(NAME)
install -dZ ${DESTDIR}/etc/ly
install -DZ $(BIND)/$(NAME) -t ${DESTDIR}/usr/bin
install -DZ xsetup.sh -t ${DESTDIR}/etc/ly
install -DZ $(RESD)/config.ini -t ${DESTDIR}/etc/ly
install -dZ ${DESTDIR}/etc/ly/lang
install -DZ $(RESD)/lang/* -t ${DESTDIR}/etc/ly/lang
install -DZ ly.service -t ${DESTDIR}/usr/lib/systemd/system
uninstall:
rm -rf ${DESTDIR}/etc/ly
rm -f ${DESTDIR}/usr/bin/ly
rm -f ${DESTDIR}/usr/lib/systemd/system/ly.service
clean:
@echo "cleaning workspace"
@rm -rf $(BIND)
@rm -rf $(OBJD)