Files
cpp-build-system/scripts/common.sh
Scott E. Graves 60eec05fab
All checks were successful
sgraves/cpp-build-system/pipeline/head This commit looks good
sgraves/cpp-build-system_mac/pipeline/head This commit looks good
Add Windows MSYS2 Jenkins build and testing support #1
2025-10-18 11:26:39 -05:00

96 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
SCRIPTS_DIR=$(dirname "$0")
SCRIPTS_DIR=$(realpath ${SCRIPTS_DIR})
SOURCE_DIR=${SCRIPTS_DIR}/..
SOURCE_DIR=$(realpath "${SOURCE_DIR}")
TEST_DIR=${SOURCE_DIR}/build
PLATFORM=$1
BUILD_TYPE=$2
WITH_TYPE=$3
BUILD_ARCH=$4
if [ "$(uname -s)" == "Darwin" ]; then
export SED=gsed
else
export SED=sed
fi
function error_exit() {
echo $1
exit $2
}
if [ "${BUILD_TYPE}" != "shared" ] && [ "${BUILD_TYPE}" != "static" ]; then
error_exit "must specify 'shared' or 'static'" 1
fi
if [ "${TEST_DIR}" == "" ]; then
error_exit "TEST_DIR is not set" 1
fi
mkdir -p "${TEST_DIR}"
NAME=${PLATFORM}_${BUILD_TYPE}
if [ "${WITH_TYPE}" == "1" ]; then
NAME=${NAME}_crypto
elif [ "${WITH_TYPE}" == "2" ]; then
NAME=${NAME}_dsm
elif [ "${WITH_TYPE}" == "3" ]; then
NAME=${NAME}_sqlite
elif [ "${WITH_TYPE}" == "4" ]; then
NAME=${NAME}_errors_v1
elif [ "${WITH_TYPE}" == "5" ]; then
NAME=${NAME}_fmt
elif [ "${WITH_TYPE}" == "6" ]; then
NAME=${NAME}_libevent
elif [ "${WITH_TYPE}" == "7" ]; then
NAME=${NAME}_crypto_no_boost
fi
if [ "${BUILD_ARCH}" != "" ]; then
NAME=${NAME}_${BUILD_ARCH}
fi
rm -rf "${TEST_DIR}/${NAME}"
pushd "${SOURCE_DIR}"
./create_project.sh ${NAME} ${TEST_DIR} || error_exit "failed to create ${PLATFORM} project" 2
popd
pushd "${TEST_DIR}/${NAME}"
if [ "${WITH_TYPE}" == "1" ]; then
${SED} -i "s/PROJECT_ENABLE_LIBSODIUM=OFF/PROJECT_ENABLE_LIBSODIUM=ON/g" ./config.sh
${SED} -i "s/PROJECT_ENABLE_BOOST=OFF/PROJECT_ENABLE_BOOST=ON/g" ./config.sh
${SED} -i "s/PROJECT_ENABLE_JSON=OFF/PROJECT_ENABLE_JSON=ON/g" ./config.sh
elif [ "${WITH_TYPE}" == "2" ]; then
${SED} -i "s/PROJECT_ENABLE_LIBDSM=OFF/PROJECT_ENABLE_LIBDSM=ON/g" ./config.sh
elif [ "${WITH_TYPE}" == "3" ]; then
${SED} -i "s/PROJECT_ENABLE_SQLITE=OFF/PROJECT_ENABLE_SQLITE=ON/g" ./config.sh
elif [ "${WITH_TYPE}" == "4" ]; then
${SED} -i "s/PROJECT_ENABLE_V2_ERRORS=ON/PROJECT_ENABLE_V2_ERRORS=OFF/g" ./config.sh
elif [ "${WITH_TYPE}" == "5" ]; then
${SED} -i "s/PROJECT_ENABLE_FMT=OFF/PROJECT_ENABLE_FMT=ON/g" ./config.sh
elif [ "${WITH_TYPE}" == "6" ]; then
${SED} -i "s/PROJECT_ENABLE_LIBEVENT=OFF/PROJECT_ENABLE_LIBEVENT=ON/g" ./config.sh
elif [ "${WITH_TYPE}" == "7" ]; then
${SED} -i "s/PROJECT_ENABLE_LIBSODIUM=OFF/PROJECT_ENABLE_LIBSODIUM=ON/g" ./config.sh
fi
if [ "${BUILD_TYPE}" == "shared" ]; then
${SED} -i "s/PROJECT_STATIC_LINK=ON/PROJECT_STATIC_LINK=OFF/g" ./config.sh
fi
./scripts/make_${PLATFORM}.sh "${BUILD_ARCH}" || error_exit "build ${PLATFORM} ${BUILD_ARCH} failed" 3
if [ "${PLATFORM}" == "win32" ]; then
./scripts/run_tests.sh "${BUILD_ARCH}" "" "" 1 1 || error_exit "testing ${PLATFORM} failed" 4
else
./scripts/run_tests.sh "${BUILD_ARCH}" || error_exit "testing ${PLATFORM} ${BUILD_ARCH} failed" 4
fi
popd
rm -rf "${TEST_DIR}/${NAME}"