]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - easy-builder
radiant/texwindow: use TextureBrowser_showWads when possible
[xonotic/netradiant.git] / easy-builder
index b360b2dba4d67630f3a6d43b4a4f1c109f0885fd..82c08d90836a84dc99d4b832d77f780d554bceff 100755 (executable)
@@ -14,56 +14,38 @@ install_dir="${project_source_dir}/install${SUBDIR:+/${SUBDIR}}"
 install_target='install/strip'
 build_type='Release'
 
-declare -a cmake_opts
-case "$(uname -s)" in
-       'Linux')
-               nproc='egrep "^processor" /proc/cpuinfo | wc -l'
-               ;;
-       'FreeBSD')
-               nproc='sysctl -n hw.ncpu'
-
-               if [ -f "$(ls '/usr/local/bin/g++'* | sort | tail -n1)" ]
-               then
-                       gcc_version="$(ls '/usr/local/bin/g++'* | sort | tail -n1 | sed -e 's/.*[^0-9]\([0-9][0-9]*\)$/\1/')"
-                       cmake_opts[${#cmake_opts[@]}]="-DCMAKE_C_COMPILER=/usr/local/bin/gcc${gcc_version}"
-                       cmake_opts[${#cmake_opts[@]}]="-DCMAKE_CXX_COMPILER=/usr/local/bin/g++${gcc_version}"
-               else
-                       printf "WARNING: GCC is recommended: if build fails, install GCC and retry\n" >&2
-               fi
-               ;;
-       'Darwin')
-               nproc='sysctl -n hw.ncpu'
-
-               if [ -f "$(ls '/usr/local/bin/g++-'* | sort | tail -n1)" ]
-               then
-                       gcc_version="$(ls '/usr/local/bin/g++-'* | sort | tail -n1 | sed -e 's/.*[^0-9]\([0-9][0-9]*\)$/\1/')"
-                       cmake_opts[${#cmake_opts[@]}]="-DCMAKE_C_COMPILER=/usr/local/bin/gcc-${gcc_version}"
-                       cmake_opts[${#cmake_opts[@]}]="-DCMAKE_CXX_COMPILER=/usr/local/bin/g++-${gcc_version}"
-               else
-                       printf "WARNING: GCC is recommended: if build fails, install GCC and retry\n" >&2
-               fi
-               ;;
-       'MSYS_NT-'*)
-               nproc='echo "${NUMBER_OF_PROCESSORS}"'
-               ;;
-       'CYGWIN_NT-'*|'MINGW'*'_NT-'*)
-               nproc='echo "${NUMBER_OF_PROCESSORS}"'
-               printf "WARNING: system is not tested: if build fails, use MSYS2 instead\n" >&2
-               ;;
-       *)
-               nproc='true'
-               printf "WARNING: system is not tested\n" >&2
-               ;;
-esac
-
-if command -v 'nproc' >/dev/null
-then
-       job_count="$(nproc)"
-else
-       job_count="$(sh -c "${nproc}")"
-fi
-
-job_count="${job_count:-4}"
+_job_count=4
+
+_nproc () {
+       if command -v 'nproc' >/dev/null
+       then
+               nproc
+       else
+               case "$(uname -s)" in
+                       'Linux')
+                               egrep "^processor" /proc/cpuinfo | wc -l
+                               ;;
+                       'FreeBSD'|'Darwin')
+                               sysctl -n hw.ncpu
+                               ;;
+                       'MSYS_NT-'*|'CYGWIN_NT-'*|'MINGW'*'_NT-'*)
+                               if command -v 'wmic' >/dev/null
+                               then
+                                       wmic cpu get NumberOfLogicalProcessors/Format:List \
+                                               | grep -m1 '=' | cut -f2 -d'='
+                               else
+                                       echo "${NUMBER_OF_PROCESSORS:-${_job_count}}"
+                               fi
+                               ;;
+                       *)
+                               echo "${_job_count}"
+                               ;;
+               esac
+       fi
+}
+
+job_count="$(_nproc)" 2>/dev/null
+job_count="${job_count:-${_job_count}}"
 
 declare -a cmake_user_opts
 while [ ! -z "${1}" ]
@@ -86,22 +68,26 @@ do
 done
 
 declare -a fetch_submodules_cmd
-if ! [ -f "${project_source_dir}/libs/crunch/inc/crn_decomp.h" ]
-then
-       fetch_submodules_cmd=(git -C "${project_source_dir}" submodule update --init --recursive)
-fi
+for submodule_file in 'libs/crunch/inc/crn_decomp.h' \
+       'tools/unvanquished/daemonmap/tools/quake3/q3map2/main.c'
+do
+       if ! [ -f "${project_source_dir}/${submodule_file}" ]
+       then
+               fetch_submodules_cmd=(git -C "${project_source_dir}" submodule update --init --recursive)
+       fi
+done
 
 set -x
 
 "${fetch_submodules_cmd[@]}"
 
+mkdir -pv "${build_dir}"
+cd "${build_dir}"
+
 cmake \
        -G'Unix Makefiles' \
-       -S"${project_source_dir}" \
-       -B"${build_dir}" \
        -D'CMAKE_INSTALL_PREFIX'="${install_dir}" \
        -D'CMAKE_BUILD_TYPE'="${build_type}" \
-       "${cmake_opts[@]}" \
        "${cmake_user_opts[@]}" \
        "${project_source_dir}"