55 lines
1.3 KiB
Bash
Executable File
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}
|