JD2022-TU1/main/extern/UbiServices/upstream/build/build_ubiservices.command

148 lines
7.8 KiB
Bash

#!/bin/bash
#GENERATE
generate () {
if [[ -z ${CMD_LINE_PARAM} ]]; then
# Without parameter, we ask choice for modules activation
read -p "Enter TRUE or FALSE to define the default state(ON or OFF) for Ubiservices SDK's modules: " MODULES_ACTIVATION
elif [ "${CMD_LINE_PARAM}" == "modules_all_on" ]; then
MODULES_ACTIVATION=TRUE
elif [ "${CMD_LINE_PARAM}" == "modules_all_off" ]; then
MODULES_ACTIVATION=FALSE
else
# Provided parameter is invalid !!!
echo There was an error with the input. The only command line accepted parameter are modules_all_on or modules_all_off.
echo Ex: build_ubiservices.cmd modules_all_on
echo
echo "... Exit build process (5)"
echo
exit 5
fi
if [ "${MODULES_ACTIVATION}" != "TRUE" ] && [ "${MODULES_ACTIVATION}" != "FALSE" ]; then
echo There was an error with the input. The only values accepted are TRUE or FALSE.
echo
echo "... Exit build process (5)"
echo
exit 5
fi
mkdir -m 777 $CONFIGURATION_DIR
if [ "$(uname)" == "Darwin" ]; then
cp -n ${0%/*}/private/platformsConfigurationApple $CONFIGURATION_DIR
else
cp -n ${0%/*}/private/platformsConfigurationLinux $CONFIGURATION_DIR
fi
cp -n ${0%/*}/private/cmake/productConfiguration.template.cmake $CONFIGURATION_DIR/productConfiguration.cmake
cp -n ${0%/*}/private/cmake/harbourConfiguration.template.cmake $CONFIGURATION_DIR/harbourConfiguration.cmake
chmod 777 $CONFIGURATION_DIR/*
pushd $CONFIGURATION_DIR
# The following options are flags for the _configuration/productConfiguration.cmake file
sed -ibak "s/\${US_USE_PRIVATE_EXTERNAL_HARBOUR_CONFIGURATION}//g" productConfiguration.cmake
sed -ibak "s/\${US_PRIVATE_HARBOUR_CONFIGURATION_PATH}//g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_LOG_ENABLED_RETAIL}/FALSE/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_HIDE_DEBUG_INFO_IN_RETAIL}/FALSE/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_STEAM_AUTHENTICATION}/FALSE/g" productConfiguration.cmake
sed -ibak "s/\${US_PC_USES_UNMANAGED_PRIMARY_STORE}/FALSE/g" productConfiguration.cmake
# The following options are flags for the unity configuration inside the configuration/productConfiguration.cmake file
sed -ibak "s/\${US_USE_PRIVATE_UNITY3D_PATH}/FALSE/g" productConfiguration.cmake
sed -ibak "s/\${US_PRIVATE_UNIY3D_PATH}//g" productConfiguration.cmake
# The following options are flags for the module configuration inside the _configuration/productConfiguration.cmake file
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_APPLICATION}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_BATTLEPASS}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_BLOCKLIST}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_CHALLENGE}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_CLUB}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_ENTITY}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_FRIEND}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_GAMESPLAYED}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_LEADERBOARD}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_LOCALIZATION}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_MATCHMAKING}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_MODERATION}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_NEWS}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_PERSONA}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_PLAYER_ONLINE_STATUS}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_PLAYERREPORTS}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_PROFILE}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_RECOMMENDATIONS}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_SECONDARYSTORE_INSTANTIATION}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_STATS}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_STORE}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_TLOG}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_UGC}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_UPLAY}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_USER}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
sed -ibak "s/\${US_USE_PRIVATE_US_MODULE_VOICECHAT}/${MODULES_ACTIVATION}/g" productConfiguration.cmake
# The following options are flags for the _configuration/harbourConfiguration.cmake file
# ---- EAL configuration ----
sed -ibak 's/\${HARBOUR_PRIVATE_BUILD_HARBOUR_EAL}//g' harbourConfiguration.cmake
sed -ibak 's/\${HARBOUR_PRIVATE_EAL_INCLUDE_DIRECTORY}//g' harbourConfiguration.cmake
# ---- libraries(ubiservices, rdv, harbourEal, etc) outputs ----
sed -ibak 's/\${HARBOUR_PRIVATE_LIB_OUTPUT_DIRECTORY}/.\/../g' harbourConfiguration.cmake
# ---- sharpmake configuration ----
sed -ibak 's/\${HARBOUR_PRIVATE_GENERATE_SHARPMAKE_INTERFACES}//g' harbourConfiguration.cmake
# ---- OpenSSL configuration ----
sed -i -e 's/\${HARBOUR_PRIVATE_USE_DEPRECATED_OPENSSL_1_0_2}//g' harbourConfiguration.cmake
sed -i -e 's/\${HARBOUR_PRIVATE_USE_LATEST_OPENSSL_WITH_QUIC_SUPPORT}//g' harbourConfiguration.cmake
# ---- blob and unicode configuration ----
sed -ibak 's/\${HARBOUR_PRIVATE_USE_BLOB}/TRUE/g' harbourConfiguration.cmake
sed -ibak 's/\${HARBOUR_PRIVATE_USE_UNICODE}/FALSE/g' harbourConfiguration.cmake
# ---- XBoxOne C++11 live sdk ----
sed -ibak 's/${HARBOUR_PRIVATE_XBOXLIVESDKCPP_INCLUDE_DIR}//g' harbourConfiguration.cmake
sed -ibak 's/${HARBOUR_PRIVATE_XBOXLIVESDKCPP_CPPRESTSDK_INCLUDE_DIR}//g' harbourConfiguration.cmake
# Using -ibak syntax here is a trick to avoid a conflict between linux and mac sed syntax.
# -ibak creates a backup file with suffix "bak", before applying the modification in the original file.
# As this is just a workaround to make it work both on linux and mac, we delete those backup files after the modification.
rm -f *bak
popd
echo ##############################################################################
echo
echo Generating platformsConfiguration, productConfiguration.cmake, harbourConfiguration.cmake
echo at location : $CONFIGURATION_DIR
echo To run this build script again , these configuration files must be edited properly.
echo
echo ##############################################################################
}
US_PACKAGE_ROOT=$(cd "${0%/*}/.." ; pwd)
export US_PACKAGE_ROOT
CMD_LINE_PARAM="$1"
echo Command line argument: ${CMD_LINE_PARAM}
CONFIGURATION_DIR=$US_PACKAGE_ROOT/_configurations
#CLEAN
rm -f $US_PACKAGE_ROOT/build/build.*.out
#BUILD
if [ -d $CONFIGURATION_DIR ]; then
if [ "$(uname)" == "Darwin" ]; then
$CONFIGURATION_DIR/platformsConfigurationApple
else
$CONFIGURATION_DIR/platformsConfigurationLinux
fi
else
generate
fi
echo
echo ... Exit build process
echo