#!/usr/bin/env bash # Copyright (C) Viktor Szakats # # SPDX-License-Identifier: curl # Sort list of libs, libpaths, cflags found in libcurl.pc and curl-config files, # then diff the autotools and cmake generated ones. sort_lists() { prevline='' section='' while IFS= read -r l; do if [[ "${prevline}" =~ (--cc|--configure) ]]; then # curl-config echo "" else # libcurl.pc if [[ "${l}" =~ ^(Requires|Libs|Cflags)(\.private)?:\ (.+)$ ]]; then if [ "${BASH_REMATCH[1]}" = 'Requires' ]; then # Spec does not allow duplicates here: # https://manpages.debian.org/unstable/pkg-config/pkg-config.1.en.html#Requires: # "You may only mention the same package one time on the Requires: line" val="$(printf '%s' "${BASH_REMATCH[3]}" | tr ',' '\n' | sort | tr '\n' ' ')" else val="$(printf '%s' "${BASH_REMATCH[3]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')" fi l="${BASH_REMATCH[1]}${BASH_REMATCH[2]}: ${val}" # curl-config elif [[ "${section}" =~ (--libs|--static-libs) && "${l}" =~ ^( *echo\ \")(.+)(\")$ ]]; then val="$(printf '%s' "${BASH_REMATCH[2]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')" l="${BASH_REMATCH[1]}${val}${BASH_REMATCH[3]}" section='' fi echo "${l}" fi # curl-config prevline="${l}" if [[ "${l}" =~ --[a-z-]+\) ]]; then section="${BASH_REMATCH[0]}" fi done < "$1" } am=$(mktemp -t autotools.XXX); sort_lists "$1" > "${am}" cm=$(mktemp -t cmake.XXX) ; sort_lists "$2" > "${cm}" diff -u "${am}" "${cm}" res="$?" rm -r -f "${am}" "${cm}" exit "${res}"