aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
blob: c0aae9a4ff2aa8111c06efa3182988b106397737 (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
##########################################################################################
#*                                                                                      *#
#*  File     : Makefile                                                   /_________/   *#
#*  Author   : Joe                                                              |       *#
#*  Date     : 04/2020                                                          |       *#
#*  Info     : BSD Makefile                                                     |       *#
#*                                                                      /       |       *#
#*                                                                      \       /       *#
#*                                                                       \_____/        *#
#*                                                                                      *#
##########################################################################################

default: all
# ====================================== DIRS ========================================== #
C_SRCS_DIR	= src
A_SRCS_DIR	= asm
# ====================================== FILES ========================================= #
C_SRCS		 = ${C_SRCS_DIR}/jo_lowbat.c
C_SRCS		+= ${C_SRCS_DIR}/jo_n_speak.c
C_SRCS		+= ${C_SRCS_DIR}/jo_n_notify.c
# -------------------------------------------------------------------------------------- #
C_OBJS		= ${C_SRCS:.c=.o}
# -------------------------------------------------------------------------------------- #
A_SRCS		 = ${A_SRCS_DIR}/jo_r_lowbat.asm
A_SRCS		+= ${A_SRCS_DIR}/jo_f_status.asm
A_SRCS		+= ${A_SRCS_DIR}/jo_f_percent.asm
# -------------------------------------------------------------------------------------- #
A_OBJS		= ${A_SRCS:.asm=.o}
# ===================================== COMPILER ======================================= #
CC			= clang
# -------------------------------------------------------------------------------------- #
CFLAGS		 = -std=c89
CFLAGS		+= -Wall
CFLAGS		+= -Wextra
CFLAGS		+= -Wno-comment
CFLAGS		+= -Wno-long-long
CFLAGS		+= -Wno-c99-extensions
CFLAGS		+= -Wno-variadic-macros
CFLAGS		+= -Werror
CFLAGS		+= -pedantic
CFLAGS		+= ${DEBUG}
# -------------------------------------------------------------------------------------- #
# CFLAGS		+= ${OPTI}
# -------------------------------------------------------------------------------------- #
OPTI		= -O2 -pipe
# -------------------------------------------------------------------------------------- #
DEBUG		 = -glldb
# DEBUG		+= -fsanitize=address
# -------------------------------------------------------------------------------------- #
CINCS		 = -Isrc/
CINCS		+= -I/usr/local/include
CINCS		+= -I/usr/local/include/glib-2.0
CINCS		+= -I/usr/local/lib/glib-2.0/include
CINCS		+= -I/usr/local/include/gdk-pixbuf-2.0
# -------------------------------------------------------------------------------------- #
LINK		 = -L/usr/local/lib
LINK		+= -L/usr/lib
LINK		+= -lnotify
LINK		+= -lespeak
LINK		+= -lc
# -------------------------------------------------------------------------------------- #
TARGET		= lowbat
# ===================================== ASSEMBLER ====================================== #
ASM			= nasm
ASMFLAGS	= -g -f
ASMARCH		= elf64
# ======================================= UNIX ========================================= #
SHELL		:= /bin/sh
RM			= rm -f
MKDIR		= mkdir -p
CP			= cp
MV			= mv
SED			= sed
# ======================================= RULES ======================================== #
.SUFFIXES: .asm .c .o
.PHONY: all clean fclean re depend
# -------------------------------------------------------------------------------------- #
.asm.o:
	${ASM} ${ASMFLAGS} ${ASMARCH} -o ${.TARGET} ${.IMPSRC}
# -------------------------------------------------------------------------------------- #
.c.o:
	${CC} -c ${CFLAGS} ${CINCS} -o ${.TARGET} ${.IMPSRC}
# -------------------------------------------------------------------------------------- #
${TARGET}: ${A_OBJS} ${C_OBJS}
	${CC} ${CFLAGS} ${CINCS} -o ${.TARGET} ${A_OBJS} ${C_OBJS} ${LINK}
# -------------------------------------------------------------------------------------- #
depend:
	${CC} ${CINCS} -E -MM ${C_SRCS} > .depend
	${SED} 's/^/${C_SRCS_DIR}\//' .depend > .depend.tmp
	${MV} .depend.tmp .depend
# -------------------------------------------------------------------------------------- #
all: depend ${TARGET}
# -------------------------------------------------------------------------------------- #
clean:
	${RM} ${C_OBJS} ${A_OBJS} ${TARGET}.core .depend .depend.tmp ${TARGET}
# -------------------------------------------------------------------------------------- #
re: clean all
# ======================================== EOF ========================================= #