# # Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 LucĂ­a Andrea Illanes Albornoz # set +o errexit -o noglob -o nounset is assumed. # # # # ex_rtl_fixup_pkgconfig_paths() - fixup pathname prefixes in pkg-config(1) files # @_dname_base: base directory pathname # # Returns: zero (0) on success, non-zero (>0) on failure # ex_rtl_fixup_pkgconfig_paths() { local _erfpp_dname_base="${1}" \ _erfpp_pc_path=""; for _erfpp_pc_path in $(find "${_erfpp_dname_base=}" -name \*.pc); do if [ -n "$(sed -ne '/^libdir=[^$]*$/p' "${_erfpp_pc_path}")" ] \ && ! sed -i"" -e '/^libdir=[^$]*$/s/^libdir=\(.*\)$/libdir=${exec_prefix}\1/' \ -e '/^exec_prefix=$/s/^.*$/exec_prefix=${prefix}/' \ "${_erfpp_pc_path}"; then return 1; fi; if [ -n "$(sed -ne '/^includedir=[^$]*$/p' "${_erfpp_pc_path}")" ] \ && ! sed -i"" -e '/^includedir=[^$]*$/s/^includedir=\(.*\)$/includedir=${prefix}\1/' \ "${_erfpp_pc_path}"; then return 1; fi; done; return 0; }; # # ex_rtl_purge_la_files() - purge .la files in tree # @_dname_base: base directory pathname # # Returns: zero (0) on success, non-zero (>0) on failure # ex_rtl_purge_la_files() { local _erplf_dname_base="${1}" \ _erplf_la_path=""; for _erplf_la_path in $(find \ "${_erplf_dname_base}" \ -type f \ -name \*.la); do if ! rtl_fileop rm "${_erplf_la_path}"; then return 1; fi; done; return 0; }; # # ex_rtl_strip_files() - strip files of debugging information # @_strip_cmd: strip(1) command name # @_tree_root: pathname to tree root # @--: (ignored) # @_log_fn: logging function name; called with @... and pathname of each file stripped # @...: @_fn initial arguments list as positional parameters # # Returns: zero (0) on success, non-zero (>0) on failure # ex_rtl_strip_files() { local _ersf_strip_cmd="${1}" _ersf_tree_root="${2}" \ _ersf_ignored="${3}" _ersf_log_fn="${4}" \ _ersf_bin_path=""; shift 4; if [ -e "${_ersf_tree_root}" ]; then for _ersf_bin_path in $(find \ "${_ersf_tree_root}" \ -perm /a=x \ -type f); do if objdump \ -sj .debug_frame \ -j .debug_info \ "${_ersf_bin_path}" \ >/dev/null 2>&1; then if ! "${_ersf_strip_cmd}" "${_ersf_bin_path}"; then return 1; else "${_ersf_log_fn}" "${@}" "${_ersf_bin_path}"; fi; fi; done; fi; return 0; }; # vim:filetype=sh textwidth=0