aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
blob: 737127c6bb7449fb694f6dce3fadfeaf803180d3 (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
# ========================
# =====    ===============
# ======  ================
# ======  ================
# ======  ====   ====   ==
# ======  ===     ==  =  =
# ======  ===  =  ==     =
# =  ===  ===  =  ==  ====
# =  ===  ===  =  ==  =  =
# ==     =====   ====   ==
# ========================
#
# unixize: Makefile
# Fri Nov 27 22:53:29 CET 2020
# Joe
#
# GNU Makefile

.DEFAULT_GOAL	:= all
SHELL			:= /bin/sh

DESTDIR			:=
SRCS_DIR		:= src/
OBJS_DIR		:= obj/
MAN_DIR			:= man/

CC				?= cc
CFLAGS			+= -std=c89
CFLAGS			+= -Wall
CFLAGS			+= -Wextra
CFLAGS			+= -Werror
CFLAGS			+= -pedantic
CFLAGS			+= -march=native -O2 -pipe

MKDIR			:= mkdir -p
RM				:= rm -f
INSTALL			:= install
GZIP			:= gzip
GUNZIP			:= gunzip

SRCS_NAME		:= c_lfiles
SRCS_NAME		+= c_opts
SRCS_NAME		+= c_subst
SRCS_NAME		+= c_unixize
SRCS_NAME		+= u_utils

SRCS			 = $(addprefix ${SRCS_DIR}, $(addsuffix .c, ${SRCS_NAME}))
INCS			 = $(addprefix ${SRCS_DIR}, $(addsuffix .h, ${SRCS_NAME}))
OBJS			 = $(patsubst ${SRCS_DIR}%.c, ${OBJS_DIR}%.c.o, ${SRCS})

TARGET			:= unixize
MAN				:= unixize.1.gz

${OBJS_DIR}%.c.o: ${SRCS_DIR}%.c ${INCS} Makefile
	@${MKDIR} ${OBJS_DIR}
	${CC} -c ${CFLAGS} -o $@ $<

${TARGET}: ${OBJS}
	${CC} ${CFLAGS} -o ${TARGET} ${OBJS}

${MAN_DIR}${MAN}:
	${GZIP} ${MAN_DIR}${TARGET}.1

all: ${TARGET}

clean:
	${RM} -R ${OBJS} ${OBJS_DIR}
	${RM} ${TARGET}

install-bin: ${TARGET}
	${MKDIR} ${DESDIR}/usr/local/bin
	${INSTALL} -m0555 ${TARGET} ${DESTDIR}/usr/local/bin/${TARGET}

install-doc: ${MAN_DIR}${MAN}
	${MKDIR} ${DESDIR}/usr/local/man/man1
	${INSTALL} -m0444 ${MAN_DIR}${TARGET}.1.gz ${DESTDIR}/usr/local/man/man1/${TARGET}.1.gz
	${GUNZIP} ${MAN_DIR}${TARGET}.1.gz

install: install-bin install-doc


uninstall:
	${RM} ${DESTDIR}/usr/local/bin/${TARGET}
	${RM} ${DESTDIR}/usr/local/man/man1/${TARGET}.1.gz

debug: CFLAGS += -g3
debug: all

asan: CFLAGS += -g3
asan: CFLAGS += -fsanitize=address
asan: all

msan: CFLAGS += -g3
msan: CFLAGS += -fsanitize=memory
msan: CFLAGS += -fsanitize-memory-track-origins
msan: all

.PHONY:	all clean install uninstall debug asan msan