forked from lda/telodendria
Add support for building static and shared libraries.
This commit is contained in:
parent
cb7ee91908
commit
3d9a7664b1
1 changed files with 13 additions and 2 deletions
15
tools/bin/td
15
tools/bin/td
|
@ -29,6 +29,7 @@ fi
|
||||||
: "${DEFINES:=-D_DEFAULT_SOURCE -DTELODENDRIA_VERSION=\"${TELODENDRIA_VERSION}-$(uname)\"}"
|
: "${DEFINES:=-D_DEFAULT_SOURCE -DTELODENDRIA_VERSION=\"${TELODENDRIA_VERSION}-$(uname)\"}"
|
||||||
|
|
||||||
: "${CC:=cc}"
|
: "${CC:=cc}"
|
||||||
|
: "${AR:=ar}"
|
||||||
: "${CFLAGS:=-Wall -Wextra -pedantic -std=c89 -O3 -pipe}"
|
: "${CFLAGS:=-Wall -Wextra -pedantic -std=c89 -O3 -pipe}"
|
||||||
: "${STATIC:=-static -Wl,-static}"
|
: "${STATIC:=-static -Wl,-static}"
|
||||||
: "${LD_EXTRA:=-flto -fdata-sections -ffunction-sections -s -Wl,-gc-sections}"
|
: "${LD_EXTRA:=-flto -fdata-sections -ffunction-sections -s -Wl,-gc-sections}"
|
||||||
|
@ -157,7 +158,7 @@ recipe_build() {
|
||||||
echo "CC $(basename $obj)"
|
echo "CC $(basename $obj)"
|
||||||
obj_dir=$(dirname "../$obj")
|
obj_dir=$(dirname "../$obj")
|
||||||
mkdir -p "$obj_dir"
|
mkdir -p "$obj_dir"
|
||||||
if ! $CC $CFLAGS -Iinclude -c -o "../$obj" "$src"; then
|
if ! $CC $CFLAGS -fPIC -Iinclude -c -o "../$obj" "$src"; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
do_rebuild=1
|
do_rebuild=1
|
||||||
|
@ -170,6 +171,16 @@ recipe_build() {
|
||||||
$CC -o "build/$PROG" $objs ${LDFLAGS} "build/$MAIN.o"
|
$CC -o "build/$PROG" $objs ${LDFLAGS} "build/$MAIN.o"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ $do_rebuild -eq 1 ] || [ ! -f "build/lib${PROG}.a" ]; then
|
||||||
|
echo "AR lib${PROG}.a"
|
||||||
|
$AR rcs "build/lib${PROG}.a" $objs
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $do_rebuild -eq 1 ] || [ ! -f "build/lib${PROG}.so" ]; then
|
||||||
|
echo "LD lib${PROG}.so"
|
||||||
|
$CC -shared -o "build/lib${PROG}.so" $objs
|
||||||
|
fi
|
||||||
|
|
||||||
for src in $(find tools/src -name '*.c'); do
|
for src in $(find tools/src -name '*.c'); do
|
||||||
out=$(basename "$src" .c)
|
out=$(basename "$src" .c)
|
||||||
out="build/tools/$out"
|
out="build/tools/$out"
|
||||||
|
@ -177,7 +188,7 @@ recipe_build() {
|
||||||
if [ $(mod_time "$src") -ge $(mod_time "$out") ] || [ $do_rebuild -eq 1 ]; then
|
if [ $(mod_time "$src") -ge $(mod_time "$out") ] || [ $do_rebuild -eq 1 ]; then
|
||||||
echo "CC $(basename $out)"
|
echo "CC $(basename $out)"
|
||||||
mkdir -p "$(dirname $out)"
|
mkdir -p "$(dirname $out)"
|
||||||
if ! $CC $CFLAGS -Isrc/include -o "$out" $objs ${LDFLAGS} "$src"; then
|
if ! $CC $CFLAGS -Isrc/include -Lbuild -ltelodendria -o "$out" ${LDFLAGS} "$src"; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue