#!/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