#!/bin/bash CURRENT_DIR=$(dirname "$0") CURRENT_DIR=$(realpath ${CURRENT_DIR}) . "${CURRENT_DIR}/env.sh" "$1" "$2" "$3" "$4" "$5" mkdir -p "${PROJECT_BUILD_DIR}/build" if [ -d "${PROJECT_DIST_DIR}" ]; then rm -rf "${PROJECT_DIST_DIR}" mkdir -p "${PROJECT_DIST_DIR}" fi if [ -f "${SOURCE_DIR}/pre_build.sh" ]; then "${SOURCE_DIR}/pre_build.sh" fi if [ "${PROJECT_IS_MINGW}" == "1" ]; then APP_BINARY_EXT=.exe fi pushd "${PROJECT_BUILD_DIR}" cmake "${SOURCE_DIR}" -G"Unix Makefiles" ${PROJECT_CMAKE_OPTS} \ -DPROJECT_COMPANY_NAME="${PROJECT_COMPANY_NAME}" \ -DPROJECT_COPYRIGHT="${PROJECT_COPYRIGHT}" \ -DPROJECT_DESCRIPTION="${PROJECT_DESCRIPTION}" || exit 1 if [ "${PROJECT_BUILD_CLEAN}" == "clean" ]; then make clean pushd build make clean popd fi make -j${NUM_JOBS} || exit 1 pushd build make -j${NUM_JOBS} || exit 1 popd popd if [ "${PROJECT_IS_MINGW}" != "1" ] && [ "${PROJECT_REQUIRE_ALPINE}" == "ON" ]; then rsync -av --progress /usr/share/icu/74.2/ "${PROJECT_DIST_DIR}/icu/" fi if [ "${PROJECT_BUILD_SHARED_LIBS}" == "ON" ] && [ "${PROJECT_IS_MINGW}" != "1" ]; then rsync -av --progress ${PROJECT_EXTERNAL_BUILD_ROOT}/ "${PROJECT_DIST_DIR}/" pushd "${PROJECT_DIST_DIR}" rm lib64 ln -sf lib lib64 popd fi for APP in ${PROJECT_APP_LIST[@]}; do if [ "${PROJECT_BUILD_SHARED_LIBS}" == "ON" ]; then if [ "${PROJECT_IS_MINGW}" != "1" ]; then rm "${PROJECT_DIST_DIR}/${APP}${APP_BINARY_EXT}" if [ "${PROJECT_ENABLE_CURL}" == "ON" ]; then mv "${PROJECT_DIST_DIR}/cacert.pem" "${PROJECT_DIST_DIR}/bin/cacert.pem" fi rsync -av --progress "${PROJECT_BUILD_DIR}/build/${APP}${APP_BINARY_EXT}" "${PROJECT_DIST_DIR}/bin/" cat <>"${PROJECT_DIST_DIR}/${APP}${APP_BINARY_EXT}" #!/bin/sh CURRENT_DIR=\$(dirname "\$0") CURRENT_DIR=\$(realpath \${CURRENT_DIR}) export LD_LIBRARY_PATH="\${CURRENT_DIR}/lib:\${CURRENT_DIR}/lib64:\${LD_LIBRARY_PATH}" \${CURRENT_DIR}/bin/${APP}${APP_BINARY_EXT} \$* EOF chmod +x "${PROJECT_DIST_DIR}/${APP}${APP_BINARY_EXT}" else rsync -av --progress "${PROJECT_BUILD_DIR}/build/${APP}${APP_BINARY_EXT}" "${PROJECT_DIST_DIR}/" fi else rsync -av --progress "${PROJECT_BUILD_DIR}/build/${APP}${APP_BINARY_EXT}" "${PROJECT_DIST_DIR}/" fi done if [ "${PROJECT_IS_MINGW}" == "1" ]; then . "${CURRENT_DIR}/copy_mingw64_deps.sh" "$1" "$2" "$3" "$4" "$5" fi ln -sf "${PROJECT_BUILD_DIR}/build/compile_commands.json" "${SOURCE_DIR}/compile_commands.json" if [ -f "${SOURCE_DIR}/post_build.sh" ]; then "${SOURCE_DIR}/post_build.sh" fi pushd "${PROJECT_DIST_DIR}" IFS=$'\n' set -f FILE_LIST=$(find . -type f) for FILE in ${FILE_LIST}; do sha256sum ${FILE} >${FILE}.sha256 if [ "${PROJECT_PRIVATE_KEY}" != "" ]; then openssl dgst -sha256 -sign "${PROJECT_PRIVATE_KEY}" -out "${FILE}.sig" "${FILE}" openssl dgst -sha256 -verify "${PROJECT_PUBLIC_KEY}" -signature "${FILE}.sig" "${FILE}" || exit 1 fi done unset IFS set +f popd