-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
70 lines (49 loc) · 1.65 KB
/
Makefile
File metadata and controls
70 lines (49 loc) · 1.65 KB
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
# DSJAS-CLI
# Tool to interact with a DSJAS site from the command line
# Copyright 2021 - Ethan Marshall
# Variables to be modified by subdirectories
export SRC
export HDR
DIRS = src src/util src/conf src/ext src/cmd
include $(addsuffix /Makefile.inc, ${DIRS})
LIB_INIPATH = vendor/iniparser
LIB_INI = vendor/iniparser/libiniparser.a
LIB_JSONPPATH = vendor/json/parser
LIB_JSONP = ${LIB_JSONPPATH}/libjsonparser.a
LIB_JSONBPATH = vendor/json/builder
LIB_JSONB = ${LIB_JSONBPATH}/libjsonbuilder.a
LIBS = ${LIB_INI} ${LIB_JSONP} ${LIB_JSONB}
OBJ = ${SRC:.c=.o}
EXE = dsjas
INSDIR = /usr/local/bin
CC = cc
CFLAGS = -Wall -Wpedantic -O2
MCFLAGS = -D_POSIX_C_SOURCE=1 -Isrc/ -I${LIB_INIPATH}/src -I${LIB_JSONPPATH}
MLDFLAGS = -lm
${EXE}: ${OBJ} ${LIB_INI} ${LIB_JSONP} ${LIB_JSONB}
${CC} ${LDFLAGS} ${MLDFLAGS} -o ${EXE} ${OBJ} ${LIBS}
${OBJ}: ${HDR}
${LIB_INI}:
${MAKE} -C ${LIB_INIPATH}
${LIB_JSONP}: ${LIB_JSONPPATH}/Makefile
${MAKE} -C ${LIB_JSONPPATH} CFLAGS=-O2
${LIB_JSONB}: ${LIB_JSONBPATH}/json-builder.c ${LIB_JSONBPATH}/json-builder.h
${CC} ${CFLAGS} ${MCFLAGS} -c -o ${LIB_JSONBPATH}/json-builder.o ${LIB_JSONBPATH}/json-builder.c
${AR} rcs ${LIB_JSONB} ${LIB_JSONBPATH}/json-builder.o
${LIB_JSONPPATH}/Makefile:
cd ${LIB_JSONPPATH} && ./configure
%.o: %.c
${CC} ${CFLAGS} ${MCFLAGS} -o $@ -c $<
install: ${EXE}
mkdir -p ${INSDIR}
cp -f ${EXE} ${INSDIR}
chmod 775 ${INSDIR}/${EXE}
uninstall:
rm -f ${INSDIR}/${EXE}
clean:
rm -f ${OBJ} ${EXE}
libclean: clean
rm -f ${LIB_INIPATH}/src/*.o ${LIB_INI}
rm -f ${LIB_JSONPPATH}/*.o ${LIB_JSONPPATH}/Makefile ${LIB_JSONP}
rm -f ${LIB_JSONBPATH}/*.o ${LIB_JSONB}
.PHONY: clean libclean install uninstall