cpp_launchpad/command/linux/rebuild.sh

55 lines
1.3 KiB
Bash
Executable File

#Global definitions.
F_ROOT=$(readlink -f "$0")
D_ROOT=$(dirname "${F_ROOT}")/../../.
D_COMPILE=${D_ROOT}/compile
D_LINK=${D_ROOT}/link
D_PACK=${D_ROOT}/pack
D_RUN=${D_ROOT}/run
F_COMPILE_LIST=${D_PACK}/cpp_files.txt
F_LINK_LIST=${D_LINK}/object_files.txt
F_OBJ_LIST=${D_PACK}/obj_files.txt
echo "" > ${F_LINK_LIST}
# Compile.
LINE=0
LINE_COUNT=$(cat ${F_COMPILE_LIST} | wc -l)
while true
do
if [ ${LINE} -ge ${LINE_COUNT} ]; then
break
fi
LINE=$((LINE+1))
F_COMPILE=$(head -n ${LINE} ${F_COMPILE_LIST} | tail -n 1)
I_COMPILE=${D_COMPILE}/${F_COMPILE}
O_COMPILE=${D_LINK}/${F_COMPILE}.o
mkdir -p "${O_COMPILE%/*}"
clang++ -I ${D_COMPILE} \
-D ROOT_DIRECTORY_MV=\"${D_ROOT}\" \
-c ${I_COMPILE} -o ${O_COMPILE}
echo ${O_COMPILE} >> ${F_LINK_LIST}
done
# Libraries.
F_LIBRARY_LIST=${D_PACK}/libraries.txt
F_LIBRARY_OPTIONS=${D_LINK}/library_options.txt
echo "" > ${F_LIBRARY_OPTIONS}
LINE=0
LINE_COUNT=$(cat ${F_LIBRARY_LIST} | wc -l)
while true
do
if [ ${LINE} -ge ${LINE_COUNT} ]; then
break
fi
LINE=$((LINE+1))
LIBRARY="-l$(head -n ${LINE} ${F_LIBRARY_LIST} | tail -n 1)"
echo $LIBRARY >> ${F_LIBRARY_OPTIONS}
done
# Link.
I_LINK=$(cat ${F_LINK_LIST})
I_LIBRARIES=$(cat ${F_LIBRARY_OPTIONS})
O_LINK=${D_RUN}/executable
clang++ ${I_LIBRARIES} ${I_LINK} -o ${O_LINK}