X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=easy-builder;h=d9f7336a64630b19c90d7037cc055f31af991de2;hp=fb7cabc83bbeec7fab0089b8bfd6d0412bc80d09;hb=927a5d469d9734e014815b3c1897886cbb4f0638;hpb=20989b89af18c9d3e26de1c8bd50a8f43fed19b4 diff --git a/easy-builder b/easy-builder index fb7cabc8..d9f7336a 100755 --- a/easy-builder +++ b/easy-builder @@ -14,6 +14,28 @@ install_dir="${project_source_dir}/install${SUBDIR:+/${SUBDIR}}" install_target='install/strip' build_type='Release' +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 _nproc () { @@ -87,28 +109,52 @@ case "$(uname -s)" in ;; 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}" \ + -D'CMAKE_BUILD_TYPE'="${build_type}" \ + "${cmake_user_opts[@]}" \ + "${project_source_dir}" +} + +task_build_builtins () { + sync + make -j"${job_count}" builtins +} + +task_build () { + sync + make -j"${job_count}" +} + +task_install () { + sync + make "${install_target}" +} + set -x -"${fetch_submodules_cmd[@]}" - -mkdir -pv "${build_dir}" -cd "${build_dir}" - -cmake \ - -G'Unix Makefiles' \ - -D'CMAKE_INSTALL_PREFIX'="${install_dir}" \ - -D'CMAKE_BUILD_TYPE'="${build_type}" \ - "${cmake_user_opts[@]}" \ - "${project_source_dir}" - -cmake \ - --build "${build_dir}" \ - -- \ - -j"${job_count}" \ - 'builtins' - -cmake \ - --build "${build_dir}" \ - -- \ - -j"${job_count}" \ - "${install_target}" +task_enter_build_dir + +task_fetch_submodules + +task_configure + +task_build_builtins + +task_build + +task_install