install_target='install/strip'
build_type='Release'
-if [ "$(uname -s)" = 'FreeBSD' ]
-then
- install_target='install'
-fi
+case "$(uname -s)" in
+ # Stripping is known to make non-PIE Linux netradiant binary unusable.
+ # Maybe that's related to the way we patch rpath?
+ #
+ # Building NetRadiant as non-PIE is required because of
+ # a mistake in the mimetype-library that prevents users
+ # to run the application from file managers on Linux.
+ #
+ # See: https://gitlab.freedesktop.org/xdg/shared-mime-info/-/issues/11
+ #
+ # After installation it's possible to strip manually all binaries except
+ # the netradiant one.
+ 'Linux')
+ install_target='install'
+ ;;
+ # Stripping is known to make FreeBSD binaries unusable.
+ # Maybe that's related to the way we patch rpath?
+ 'FreeBSD')
+ install_target='install'
+ ;;
+esac
_job_count=4
done
declare -a fetch_submodules_cmd
-for submodule_file in 'libs/crunch/inc/crn_decomp.h' \
- 'tools/unvanquished/daemonmap/tools/quake3/q3map2/main.c'
+for submodule_file in 'libs/crunch/inc/crn_decomp.h'
do
if ! [ -f "${project_source_dir}/${submodule_file}" ]
then
esac
task_enter_build_dir () {
+ sync
mkdir -pv "${build_dir}"
cd "${build_dir}"
}
task_fetch_submodules () {
+ sync
"${fetch_submodules_cmd[@]}"
}
task_configure () {
+ sync
cmake \
-G'Unix Makefiles' \
-D'CMAKE_INSTALL_PREFIX'="${install_dir}" \
}
task_build_builtins () {
- cmake \
- --build "${build_dir}" \
- -- \
- -j"${job_count}" \
- 'builtins'
+ sync
+ make -j"${job_count}" builtins
+}
+
+task_discover_builtins () {
+ sync
+ cmake "${project_source_dir}"
}
task_build () {
- cmake \
- --build "${build_dir}" \
- -- \
- -j"${job_count}" \
- "${install_target}"
+ sync
+ make -j"${job_count}"
+}
+
+task_install () {
+ sync
+ make "${install_target}"
}
set -x
task_build_builtins
-# Sometime linking fails on macOS with this message:
-# ld: symbol(s) not found for architecture x86_64
-# and restarting the build process just work.
-task_build || task_build
+task_discover_builtins
+
+task_build
+
+task_install