libzmq/builds/zos/cxxall
2014-07-24 14:13:59 +12:00

63 lines
1.6 KiB
Bash
Executable File

#! /bin/sh
# Attempt to compile all *.cpp files in the current directory, that are
# not already compiled. Uses zc++ wrapper around C++ compiler, to add
# additional compile arguments.
#
# Written by Ewen McNeill <ewen@imatix.com>, 2014-07-19
# Updated by Ewen McNeill <ewen@imatix.com>, 2014-07-24
#---------------------------------------------------------------------------
VERBOSE="${VERBOSE:-}" # Set to non-empty for already done status
export VERBOSE
# Locate compiler wrapper
BIN_DIR=$(dirname $0)
if [ -z "${BIN_DIR}" ]; then BIN_DIR="."; fi
case "${BIN_DIR}" in
.) BIN_DIR="$(pwd)"; ;;
/*) ;;
*) BIN_DIR="$(pwd)/${BIN_DIR}"; ;;
esac
ZCXX="${BIN_DIR}/zc++"
# Determine compile flags
CPPFLAGS="-D_XOPEN_SOURCE_EXTENDED=1 -D_OPEN_THREADS=3 -D_OPEN_SYS_SOCK_IPV6"
CXXFLAGS="-DZMQ_HAVE_ZOS -DHAVE_CONFIG_H -D_REENTRANT -D_THREAD_SAFE -DZMQ_USE_POLL"
case $(pwd) in
*src) CXXFLAGS="${CXXFLAGS} -I."
;;
*tests) CXXFLAGS="${CXXFLAGS} -I. -I../src -I../include"
;;
*) echo "Currently only builds in src/ and tests/" >&2
exit 1
;;
esac
skip() {
SRC="$1"
OBJ="$2"
if [ -n "${VERBOSE}" ]; then
echo " ${SRC} compiled already"
fi
}
compile() {
SRC="$1"
OBJ="$2"
echo "CXX ${SRC}"
"${ZCXX}" ${CXXFLAGS} ${CPPFLAGS} -+ -c -o "${OBJ}" "${SRC}"
}
for SRC in *.cpp; do
OBJ=$(echo $SRC | sed 's/\.cpp/.o/;')
if [ -f "${OBJ}" ]; then
if [ "${OBJ}" -nt "${SRC}" ]; then
skip "${SRC}" "${OBJ}"
else
compile "${SRC}" "${OBJ}"
fi
else
compile "${SRC}" "${OBJ}"
fi
done