From 6fca7234041b580f5e5b0d65a55ee47294b1e028 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sun, 25 May 2025 19:08:40 -0500 Subject: [PATCH] Setup script cleanup for Linux --- tools/configure-environment.sh | 39 +++++++++++++++++++++++++++++++ tools/lib/common-paths.sh | 0 tools/lib/run-cmake-configure.bat | 15 +++++++----- tools/lib/run-cmake-configure.sh | 6 +++++ tools/lib/setup-common.sh | 22 ++++++++++++----- tools/lib/setup-conan.sh | 0 tools/setup-debug.sh | 4 ++-- tools/setup-multi-ninja.bat | 2 +- tools/setup-multi.sh | 8 ++++--- tools/setup-release.sh | 4 ++-- 10 files changed, 80 insertions(+), 20 deletions(-) create mode 100755 tools/configure-environment.sh mode change 100644 => 100755 tools/lib/common-paths.sh mode change 100644 => 100755 tools/lib/run-cmake-configure.sh mode change 100644 => 100755 tools/lib/setup-common.sh mode change 100644 => 100755 tools/lib/setup-conan.sh mode change 100644 => 100755 tools/setup-debug.sh mode change 100644 => 100755 tools/setup-multi.sh mode change 100644 => 100755 tools/setup-release.sh diff --git a/tools/configure-environment.sh b/tools/configure-environment.sh new file mode 100755 index 00000000..86d8caaf --- /dev/null +++ b/tools/configure-environment.sh @@ -0,0 +1,39 @@ +#!/bin/bash +script_dir="$(dirname "$(readlink -f "$0")")" + +IN_VENV=$(python -c 'import sys; print(sys.prefix != getattr(sys, "base_prefix", sys.prefix))') + +if [ "${IN_VENV}" = "True" ]; then + # In a virtual environment, don't use --user + PIP_FLAGS="--upgrade" +else + # Not in a virtual environment, use --user + PIP_FLAGS="--upgrade --user" +fi + +# Install Python packages +pip install ${PIP_FLAGS} -r "${script_dir}/../requirements.txt" + +# Configure default Conan profile +conan profile detect -e + +# Conan profiles +conan_profiles=( + "scwx-linux_clang-17" + "scwx-linux_clang-17_armv8" + "scwx-linux_clang-18" + "scwx-linux_clang-18_armv8" + "scwx-linux_gcc-11" + "scwx-linux_gcc-11_armv8" + "scwx-linux_gcc-12" + "scwx-linux_gcc-12_armv8" + "scwx-linux_gcc-13" + "scwx-linux_gcc-13_armv8" + "scwx-linux_gcc-14" + "scwx-linux_gcc-14_armv8" + ) + +# Install Conan profiles +for profile_name in "${conan_profiles[@]}"; do + conan config install "${script_dir}/conan/profiles/${profile_name}" -tf profiles +done diff --git a/tools/lib/common-paths.sh b/tools/lib/common-paths.sh old mode 100644 new mode 100755 diff --git a/tools/lib/run-cmake-configure.bat b/tools/lib/run-cmake-configure.bat index 6dfdd7ba..4c25589c 100644 --- a/tools/lib/run-cmake-configure.bat +++ b/tools/lib/run-cmake-configure.bat @@ -1,19 +1,22 @@ -@echo off -set script_dir=%~dp0 +@set script_dir=%~dp0 -set cmake_args=-B "%build_dir%" -S "%script_dir%\..\.." ^ +@set cmake_args=-B "%build_dir%" -S "%script_dir%\..\.." ^ -G "%generator%" ^ -DCMAKE_PREFIX_PATH="%qt_base%/%qt_version%/%qt_arch%" ^ -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES="%script_dir%\..\..\external\cmake-conan\conan_provider.cmake" ^ -DCONAN_HOST_PROFILE=%conan_profile% ^ -DCONAN_BUILD_PROFILE=%conan_profile% -if defined build_type ( +@if defined build_type ( set cmake_args=%cmake_args% ^ -DCMAKE_BUILD_TYPE=%build_type% ^ -DCMAKE_CONFIGURATION_TYPES=%build_type% +) else ( + :: CMAKE_BUILD_TYPE isn't used to build, but is required by the Conan CMakeDeps generator + set cmake_args=%cmake_args% ^ + -DCMAKE_BUILD_TYPE=Release ^ + -DCMAKE_CONFIGURATION_TYPES=Debug;Release ) -@echo on -mkdir "%build_dir%" +@mkdir "%build_dir%" cmake %cmake_args% diff --git a/tools/lib/run-cmake-configure.sh b/tools/lib/run-cmake-configure.sh old mode 100644 new mode 100755 index 24e31c1f..a0961385 --- a/tools/lib/run-cmake-configure.sh +++ b/tools/lib/run-cmake-configure.sh @@ -17,6 +17,12 @@ if [[ -n "${build_type}" ]]; then -DCMAKE_CONFIGURATION_TYPES="${build_type}" -DCMAKE_INSTALL_PREFIX="${build_dir}/${build_type}/supercell-wx" ) +else + # CMAKE_BUILD_TYPE isn't used to build, but is required by the Conan CMakeDeps generator + cmake_args+=( + -DCMAKE_BUILD_TYPE="Release" + -DCMAKE_CONFIGURATION_TYPES="Debug;Release" + ) fi mkdir -p "${build_dir}" diff --git a/tools/lib/setup-common.sh b/tools/lib/setup-common.sh old mode 100644 new mode 100755 index 48c6b6c6..3eacfa08 --- a/tools/lib/setup-common.sh +++ b/tools/lib/setup-common.sh @@ -2,26 +2,36 @@ script_dir="$(dirname "$(readlink -f "$0")")" # Import common paths -source ./common-paths.sh +source ${script_dir}/common-paths.sh + +IN_VENV=$(python -c 'import sys; print(sys.prefix != getattr(sys, "base_prefix", sys.prefix))') + +if [ "${IN_VENV}" = "True" ]; then + # In a virtual environment, don't use --user + PIP_FLAGS="--upgrade" +else + # Not in a virtual environment, use --user + PIP_FLAGS="--upgrade --user" +fi # Install Python packages -pip install --upgrade --user ${script_dir}/../../requirements.txt +pip install ${PIP_FLAGS} -r ${script_dir}/../../requirements.txt if [[ -n "${build_type}" ]]; then # Install Conan profile and packages - ./setup-conan.sh + ${script_dir}/setup-conan.sh else # Install Conan profile and debug packages export build_type=Debug - ./setup-conan.sh + ${script_dir}/setup-conan.sh # Install Conan profile and release packages export build_type=Release - ./setup-conan.sh + ${script_dir}/setup-conan.sh # Unset build_type unset build_type fi # Run CMake Configure -./run-cmake-configure.sh +${script_dir}/run-cmake-configure.sh diff --git a/tools/lib/setup-conan.sh b/tools/lib/setup-conan.sh old mode 100644 new mode 100755 diff --git a/tools/setup-debug.sh b/tools/setup-debug.sh old mode 100644 new mode 100755 index bcbec034..ae0f5d07 --- a/tools/setup-debug.sh +++ b/tools/setup-debug.sh @@ -1,7 +1,7 @@ #!/bin/bash script_dir="$(dirname "$(readlink -f "$0")")" -export build_dir=${1:-${script_dir}/../build-debug} +export build_dir="${1:-${script_dir}/../build-debug}" export build_type=Debug export conan_profile=${2:-scwx-linux_gcc-11} export generator=Ninja @@ -9,4 +9,4 @@ export qt_base=/opt/Qt export qt_arch=gcc_64 # Perform common setup -./lib/setup-common.sh +${script_dir}/lib/setup-common.sh diff --git a/tools/setup-multi-ninja.bat b/tools/setup-multi-ninja.bat index e7a424ca..9e2565e6 100644 --- a/tools/setup-multi-ninja.bat +++ b/tools/setup-multi-ninja.bat @@ -2,7 +2,7 @@ @set build_dir=%script_dir%\..\build-ninja @set conan_profile=scwx-win64_msvc2022 -@set generator=Ninja +@set generator=Ninja Multi-Config @set qt_base=C:/Qt @set qt_arch=msvc2022_64 diff --git a/tools/setup-multi.sh b/tools/setup-multi.sh old mode 100644 new mode 100755 index 35661767..6a9bc46f --- a/tools/setup-multi.sh +++ b/tools/setup-multi.sh @@ -1,9 +1,11 @@ #!/bin/bash -export build_dir=${1:-build-release} +script_dir="$(dirname "$(readlink -f "$0")")" + +export build_dir="${1:-${script_dir}/../build}" export conan_profile=${2:-scwx-linux_gcc-11} -export generator=Ninja +export generator="Ninja Multi-Config" export qt_base=/opt/Qt export qt_arch=gcc_64 # Perform common setup -./lib/setup-common.sh +${script_dir}/lib/setup-common.sh diff --git a/tools/setup-release.sh b/tools/setup-release.sh old mode 100644 new mode 100755 index 3889983b..989e387d --- a/tools/setup-release.sh +++ b/tools/setup-release.sh @@ -1,7 +1,7 @@ #!/bin/bash script_dir="$(dirname "$(readlink -f "$0")")" -export build_dir=${1:-${script_dir}/../build-release} +export build_dir="${1:-${script_dir}/../build-release}" export build_type=Release export conan_profile=${2:-scwx-linux_gcc-11} export generator=Ninja @@ -9,4 +9,4 @@ export qt_base=/opt/Qt export qt_arch=gcc_64 # Perform common setup -./lib/setup-common.sh +${script_dir}/lib/setup-common.sh