feat: add lib compilation to makefile

This commit is contained in:
Nemo D'ACREMONT 2025-03-14 19:28:49 +01:00
parent e61a82c617
commit eba22fb721
No known key found for this signature in database
GPG Key ID: 85F245EC3BB1E022

View File

@ -32,7 +32,7 @@ check_targets=$(addprefix check_,${bins})
src_dirs=$(sort $(dir $(wildcard ${src_dir}/**/))) src_dirs=$(sort $(dir $(wildcard ${src_dir}/**/)))
includes=$(patsubst %,-I%,${src_dirs}) includes=$(patsubst %,-I%,${src_dirs})
CFLAGS+=-g -O0 -std=c99 ${includes} CFLAGS+=-g -O0 ${includes} -fPIC
LDFLAGS+= LDFLAGS+=
ifdef _USE_PTHREAD ifdef _USE_PTHREAD
LDFLAGS+=-lpthread LDFLAGS+=-lpthread
@ -55,7 +55,15 @@ all: ${all_targets}
${RM} .lastpthread # Set that the last build was without pthread ${RM} .lastpthread # Set that the last build was without pthread
.PHONY: install .PHONY: install
install: build ${install_bins_targets} install: build ${install_bins_targets} ${install_dir}/lib/libthread.so ${install_dir}/lib/libthread.a
${install_dir}/lib/libthread.so: ${build_dir}/libthread.so
@mkdir -p $(dir $@)
cp $^ $@
${install_dir}/lib/libthread.a: ${build_dir}/libthread.a
@mkdir -p $(dir $@)
cp $^ $@
${install_bins_targets}: ${install_dir}/bin/%: ${build_dir}/% ${install_bins_targets}: ${install_dir}/bin/%: ${build_dir}/%
@mkdir -p $(dir $@) @mkdir -p $(dir $@)
@ -73,7 +81,7 @@ ${valgrind_targets}: valgrind_%: ${build_dir}/%
valgrind $^ --leak-check=full --show-reachable=yes --track-origins=yes valgrind $^ --leak-check=full --show-reachable=yes --track-origins=yes
.PHONY: build .PHONY: build
build: ${bins_target} build: ${bins_target} ${build_dir}/libthread.so ${build_dir}/libthread.a
.PHONY: pthreads .PHONY: pthreads
pthreads: pthreads:
@ -90,6 +98,12 @@ ${check_targets}: check_%: ${build_dir}/%
${bins_target}: ${build_dir}/%: ${objs} ${build_dir}/${tst_dir}/%.o ${bins_target}: ${build_dir}/%: ${objs} ${build_dir}/${tst_dir}/%.o
${CC} -o $@ $^ ${CFLAGS} ${LDFLAGS} ${CC} -o $@ $^ ${CFLAGS} ${LDFLAGS}
${build_dir}/libthread.so: ${objs}
${CC} -o $@ -shared $^ ${CFLAGS} ${LDFLAGS}
${build_dir}/libthread.a: ${objs}
ar rcs $@ $^
${build_dir}/%.o: %.c ${build_dir}/%.o: %.c
@mkdir -p $(dir $@) @mkdir -p $(dir $@)
${CC} -o $@ -c $^ ${CFLAGS} ${CC} -o $@ -c $^ ${CFLAGS}