feat(Makefile): USRDIR decomposed into USRLIB, USRBIN, USRINC, CFLAGS for SHARED=
This commit is contained in:
41
Makefile
41
Makefile
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
SHARED ?= false
|
SHARED ?= false
|
||||||
DEBUG ?= false
|
DEBUG ?= false
|
||||||
|
USRDIR ?= /usr
|
||||||
|
|
||||||
.PHONY: build i install uni uninstall\
|
.PHONY: build i install uni uninstall\
|
||||||
tools library tests clean
|
tools library tests clean
|
||||||
@ -24,7 +25,9 @@ TESTS =\
|
|||||||
ifeq (${origin CC}, default)
|
ifeq (${origin CC}, default)
|
||||||
CC = g++
|
CC = g++
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS = -std=c++23 -Wall -Wextra -Werror -Wno-unused-result -fPIC
|
CFLAGS = -std=c++23 -Wall -Wextra -Werror -Wno-unused-result -fPIC
|
||||||
|
|
||||||
ifneq (${DEBUG}, false)
|
ifneq (${DEBUG}, false)
|
||||||
CFLAGS += -fsanitize=address,undefined -g -O0
|
CFLAGS += -fsanitize=address,undefined -g -O0
|
||||||
-g = -g
|
-g = -g
|
||||||
@ -32,13 +35,19 @@ else
|
|||||||
CFLAGS += -O3
|
CFLAGS += -O3
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq (${SHARED}, false)
|
||||||
|
CFLAGS += -Xlinker -rpath=${BINDIR}
|
||||||
|
endif
|
||||||
|
|
||||||
SRCDIR = src
|
SRCDIR = src
|
||||||
INCDIR = include
|
INCDIR = include
|
||||||
OBJDIR = obj
|
OBJDIR = obj
|
||||||
BINDIR = bin
|
BINDIR = bin
|
||||||
LIBDIR = lib
|
LIBDIR = lib
|
||||||
TESTDIR = test
|
TESTDIR = test
|
||||||
USRDIR = /usr
|
USRLIB = ${USRDIR}/lib
|
||||||
|
USRBIN = ${USRDIR}/bin
|
||||||
|
USRINC = ${USRDIR}/include
|
||||||
DIRS =\
|
DIRS =\
|
||||||
${BINDIR}\
|
${BINDIR}\
|
||||||
${BINDIR}/hash\
|
${BINDIR}/hash\
|
||||||
@ -49,14 +58,16 @@ DIRS =\
|
|||||||
build: library tools
|
build: library tools
|
||||||
|
|
||||||
i: install
|
i: install
|
||||||
install: build ${patsubst %, ${USRDIR}/${BINDIR}/btc-%${-g}, ${TOOLS}}\
|
install: build\
|
||||||
${USRDIR}/${LIBDIR}/lib${LIB}${-g}.a ${USRDIR}/${LIBDIR}/lib${LIB}${-g}.so
|
${USRLIB}/lib${LIB}${-g}.a\
|
||||||
|
${USRLIB}/lib${LIB}${-g}.so\
|
||||||
|
${patsubst %, ${USRBIN}/%${-g}, ${TOOLS}}
|
||||||
|
|
||||||
uni: uninstall
|
uni: uninstall
|
||||||
uninstall:
|
uninstall:
|
||||||
rm -f ${USRDIR}/${LIBDIR}/lib${LIB}${-g}.a
|
rm -f ${USRLIB}/lib${LIB}${-g}.a
|
||||||
rm -f ${USRDIR}/${LIBDIR}/lib${LIB}${-g}.so
|
rm -f ${USRLIB}/lib${LIB}${-g}.so
|
||||||
rm -f ${patsubst %, ${USRDIR}/${BINDIR}/btc-%${-g}, ${TOOLS}}
|
rm -f ${patsubst %, ${USRBIN}/%${-g}, ${TOOLS}}
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf ${OBJDIR}/* ${LIBDIR}/* ${BINDIR}/*
|
rm -rf ${OBJDIR}/* ${LIBDIR}/* ${BINDIR}/*
|
||||||
@ -74,10 +85,10 @@ ${BINDIR}/lib${LIB}${-g}.so: ${patsubst %, ${OBJDIR}/%${-g}.o, ${OBJS}}
|
|||||||
${LIBDIR}/lib${LIB}${-g}.a: ${patsubst %, ${OBJDIR}/%${-g}.o, ${OBJS}}
|
${LIBDIR}/lib${LIB}${-g}.a: ${patsubst %, ${OBJDIR}/%${-g}.o, ${OBJS}}
|
||||||
ar rcs $@ $^
|
ar rcs $@ $^
|
||||||
|
|
||||||
${USRDIR}/${LIBDIR}/lib${LIB}${-g}.so: ${BINDIR}/lib${LIB}${-g}.so
|
${USRLIB}/lib${LIB}${-g}.so: ${BINDIR}/lib${LIB}${-g}.so
|
||||||
cp $< $@
|
cp $< $@
|
||||||
|
|
||||||
${USRDIR}/${LIBDIR}/lib${LIB}${-g}.a: ${LIBDIR}/lib${LIB}${-g}.a
|
${USRLIB}/lib${LIB}${-g}.a: ${LIBDIR}/lib${LIB}${-g}.a
|
||||||
cp $< $@
|
cp $< $@
|
||||||
|
|
||||||
endif
|
endif
|
||||||
@ -87,12 +98,12 @@ tools: library ${DIRS} ${patsubst %, ${BINDIR}/%${-g}, ${TOOLS}}
|
|||||||
|
|
||||||
${BINDIR}/%${-g}: ${SRCDIR}/%.cpp ${patsubst %, ${OBJDIR}/%${-g}.o, ${OBJS}}
|
${BINDIR}/%${-g}: ${SRCDIR}/%.cpp ${patsubst %, ${OBJDIR}/%${-g}.o, ${OBJS}}
|
||||||
ifneq (${SHARED}, false)
|
ifneq (${SHARED}, false)
|
||||||
${CC} -o $@ $< -I${INCDIR} -L${BINDIR} ${-l} -l${LIB}${-g} ${CFLAGS}
|
${CC} -o $@ $< -I${INCDIR} -L${BINDIR} ${-l} -l:lib${LIB}${-g}.so ${CFLAGS}
|
||||||
else
|
else
|
||||||
${CC} -o $@ $< -I${INCDIR} -L${LIBDIR} ${-l} -l${LIB}${-g} ${CFLAGS}
|
${CC} -o $@ $< -I${INCDIR} -L${LIBDIR} ${-l} -l:lib${LIB}${-g}.a ${CFLAGS}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
${USRDIR}/${BINDIR}/btc-%${-g}: ${BINDIR}/%${-g}
|
${USRBIN}/%${-g}: ${BINDIR}/%${-g}
|
||||||
cp $< $@
|
cp $< $@
|
||||||
|
|
||||||
endif
|
endif
|
||||||
@ -102,7 +113,11 @@ tests: library ${DIRS} ${patsubst %, ${BINDIR}/%${-g}, ${TESTS}}
|
|||||||
${patsubst %, ./${BINDIR}/%${-g};, ${TESTS}}
|
${patsubst %, ./${BINDIR}/%${-g};, ${TESTS}}
|
||||||
|
|
||||||
${BINDIR}/%${-g}: ${TESTDIR}/%.cpp ${patsubst %, ${OBJDIR}/%${-g}.o, ${OBJS}}
|
${BINDIR}/%${-g}: ${TESTDIR}/%.cpp ${patsubst %, ${OBJDIR}/%${-g}.o, ${OBJS}}
|
||||||
${CC} -o $@ $< -I${INCDIR} -L${LIBDIR} ${-l} -l${LIB}${-g} -lgtest ${CFLAGS}
|
ifneq (${SHARED}, false)
|
||||||
|
${CC} -o $@ $< -I${INCDIR} -L${BINDIR} ${-l} -l:lib${LIB}${-g}.so -lgtest ${CFLAGS}
|
||||||
|
else
|
||||||
|
${CC} -o $@ $< -I${INCDIR} -L${LIBDIR} ${-l} -l:lib${LIB}${-g}.a -lgtest ${CFLAGS}
|
||||||
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user