diff --git a/src/Makefile.am b/src/Makefile.am index c74baae..03e0b68 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,358 +1,358 @@ # Makefile.am for libgpg-error. # Copyright (C) 2003, 2004, 2014 g10 Code GmbH # # This file is part of libgpg-error. # # libgpg-error is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation; either version 2.1 of the # License, or (at your option) any later version. # # libgpg-error is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, see . # SPDX-License-Identifier: LGPL-2.1+ # # We distribute the generated sources err-sources.h and err-codes.h, # because they are needed to build the po directory, and they don't # depend on the configuration anyway. # if HAVE_W32CE_SYSTEM gpg_extra_headers = gpg-extra/errno.h extra_cppflags = -idirafter gpg-extra else gpg_extra_headers = extra_cppflags = endif localedir = $(datadir)/locale bin_PROGRAMS = gpg-error if HAVE_W32_SYSTEM noinst_PROGRAMS = gen-w32-lock-obj else noinst_PROGRAMS = gen-posix-lock-obj endif # Distributed lock object definitions for cross compilation. lock_obj_pub = \ syscfg/lock-obj-pub.aarch64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.aarch64-apple-darwin.h \ syscfg/lock-obj-pub.alpha-unknown-linux-gnu.h \ syscfg/lock-obj-pub.arm-unknown-linux-androideabi.h \ syscfg/lock-obj-pub.arm-unknown-linux-gnueabi.h \ syscfg/lock-obj-pub.arm-apple-darwin.h \ syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h \ syscfg/lock-obj-pub.i386-apple-darwin.h \ syscfg/lock-obj-pub.i686-unknown-gnu.h \ syscfg/lock-obj-pub.i686-unknown-kfreebsd-gnu.h \ syscfg/lock-obj-pub.i686-unknown-linux-gnu.h \ syscfg/lock-obj-pub.m68k-unknown-linux-gnu.h \ syscfg/lock-obj-pub.mips-unknown-linux-gnu.h \ syscfg/lock-obj-pub.mips64el-unknown-linux-gnuabi64.h \ syscfg/lock-obj-pub.mipsel-unknown-linux-gnu.h \ syscfg/lock-obj-pub.nios2-unknown-linux-gnu.h \ syscfg/lock-obj-pub.or1k-unknown-linux-gnu.h \ syscfg/lock-obj-pub.powerpc-unknown-linux-gnu.h \ syscfg/lock-obj-pub.powerpc64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.powerpc64le-unknown-linux-gnu.h \ syscfg/lock-obj-pub.powerpc-unknown-linux-gnuspe.h \ syscfg/lock-obj-pub.riscv64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.s390x-unknown-linux-gnu.h \ syscfg/lock-obj-pub.sh3-unknown-linux-gnu.h \ syscfg/lock-obj-pub.sh4-unknown-linux-gnu.h \ syscfg/lock-obj-pub.sparc-unknown-linux-gnu.h \ syscfg/lock-obj-pub.sparc64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.x86_64-apple-darwin.h \ syscfg/lock-obj-pub.x86_64-unknown-kfreebsd-gnu.h \ syscfg/lock-obj-pub.x86_64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.x86_64-unknown-linux-gnux32.h \ syscfg/lock-obj-pub.x86_64-unknown-linux-musl.h \ syscfg/lock-obj-pub.tilegx-unknown-linux-gnu.h \ syscfg/lock-obj-pub.ia64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.mingw32.h lib_LTLIBRARIES = libgpg-error.la nodist_include_HEADERS = gpg-error.h gpgrt.h bin_SCRIPTS = gpg-error-config nodist_bin_SCRIPTS = gpgrt-config m4datadir = $(datadir)/aclocal m4data_DATA = gpg-error.m4 gpgrt.m4 -pkgconfigdir = $(datadir)/pkgconfig +pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = gpg-error.pc EXTRA_DIST = mkstrtable.awk err-sources.h.in err-codes.h.in \ mkerrnos.awk errnos.in README \ mkerrcodes.awk mkerrcodes1.awk mkerrcodes2.awk mkerrcodes.c \ mkheader.c gpg-error.h.in mkw32errmap.c w32-add.h w32ce-add.h \ err-sources.h err-codes.h gpg-error-config.in gpg-error.m4 gpgrt.m4 \ gpg-error.vers gpg-error.def.in \ versioninfo.rc.in gpg-error.w32-manifest.in \ gpg-error-config-new.in gpg-error-config-test.sh gpg-error.pc.in \ $(lock_obj_pub) BUILT_SOURCES = $(srcdir)/err-sources.h $(srcdir)/err-codes.h \ code-to-errno.h code-from-errno.h \ err-sources-sym.h err-codes-sym.h errnos-sym.h gpg-error.h gpgrt.h \ gpgrt-config gpg-error.def mkw32errmap.map.c tmp_files = _mkerrcodes.h _gpg-error.def.h mkw32errmap.tab.h mkw32errmap.map.c CLEANFILES = code-to-errno.h code-from-errno.h \ gpg-error.h gpgrt.h gpgrt-config \ mkerrcodes$(EXEEXT_FOR_BUILD) mkerrcodes.h gpg-error.def mkw32errmap.tab.h \ mkw32errmap.map.c err-sources-sym.h err-codes-sym.h errnos-sym.h \ gpg-extra/errno.h mkheader$(EXEEXT_FOR_BUILD) \ gpg-error-config gpg-error-config-test.log \ $(tmp_files) lock-obj-pub.native.h MAINTAINERCLEANFILES = $(srcdir)/err-sources.h $(srcdir)/err-codes.h TESTS = gpg-error-config-test.sh # # {{{ Begin Windows part # if HAVE_W32_SYSTEM arch_sources = w32-gettext.c w32-lock.c w32-lock-obj.h w32-thread.c \ w32-iconv.c w32-estream.c w32-reg.c spawn-w32.c RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ -DLOCALEDIR=\"$(localedir)\" $(AM_CPPFLAGS) $(CPPFLAGS) LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE) SUFFIXES = .rc .lo .rc.lo: $(LTRCCOMPILE) -i "$<" -o "$@" gpg_error_res = versioninfo.lo no_undefined = -no-undefined export_symbols = -export-symbols gpg-error.def # i686-w64-mingw32.gcc version 4.9.1 takes the long long helper # functions from libgcc_s_sjlj-1.dll and not from a static libgcc. As # a plain C program we do not use exception handler and thus there is # no need to use this DLL. Thus we force gcc to link that statically. extra_ltoptions = -XCClinker -static-libgcc versioninfo.lo : gpg-error.w32-manifest install-def-file: gpg-error.def -$(INSTALL) -d $(DESTDIR)$(libdir) $(INSTALL) gpg-error.def $(DESTDIR)$(libdir)/gpg-error.def uninstall-def-file: -rm $(DESTDIR)$(libdir)/gpg-error.def libgpg_error_la_DEPENDENCIES = $(gpg_error_res) gpg-error.def intllibs = socklibs = -lws2_32 # # }}} End Windows part # else # # {{{ Begin Unix part # arch_sources = posix-lock.c posix-lock-obj.h posix-thread.c spawn-posix.c gpg_error_res = no_undefined = export_symbols = extra_ltoptions = install-def-file: uninstall-def-file: intllibs = @LTLIBINTL@ socklibs = endif # # }}} End Unix part # if HAVE_LD_VERSION_SCRIPT libgpg_error_vers_opt = -Wl,--version-script=$(srcdir)/gpg-error.vers else libgpg_error_vers_opt = endif libgpg_error_la_LDFLAGS = \ $(no_undefined) $(export_symbols) $(libgpg_error_vers_opt) \ $(extra_ltoptions) -version-info \ @LIBGPG_ERROR_LT_CURRENT@:@LIBGPG_ERROR_LT_REVISION@:@LIBGPG_ERROR_LT_AGE@ libgpg_error_la_SOURCES = gettext.h $(arch_sources) \ gpgrt-int.h init.c init.h version.c lock.h thread.h \ estream.c estream-printf.c estream-printf.h \ strsource.c strerror.c code-to-errno.c code-from-errno.c \ visibility.c visibility.h \ sysutils.c \ syscall-clamp.c \ logging.c \ b64dec.c b64enc.c \ argparse.c nodist_libgpg_error_la_SOURCES = gpg-error.h # libgpg_error_la_DEPENDENCIES = \ # $(srcdir)/gpg-error.vers # Note that RCCOMPILE needs the same defines as ..._la_CPPFLAGS but # without the extra_cppflags because they may include am -idirafter # which is not supported by the RC compiler. libgpg_error_la_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" $(extra_cppflags) libgpg_error_la_LIBADD = $(gpg_error_res) $(intllibs) $(socklibs) $(LIBTHREAD) gpg_error_SOURCES = strsource-sym.c strerror-sym.c gpg-error.c gpg_error_CPPFLAGS = -DPKGDATADIR=\"$(pkgdatadir)\" \ -DLOCALEDIR=\"$(localedir)\" $(extra_cppflags) gpg_error_LDADD = libgpg-error.la $(LTLIBINTL) # We build err-sources.h and err-codes.h in the source directory. # This is needed because gettext does only look into the source # directory to find the files listed in po/POTFILE.in. To make these # rules work we also need to depend on Makefile.am and not on the # generated files Makefile.in or Makefile. $(srcdir)/err-sources.h: Makefile.am mkstrtable.awk err-sources.h.in $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=3 \ $(srcdir)/err-sources.h.in >$@ err-sources-sym.h: Makefile mkstrtable.awk err-sources.h.in $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=2 -v nogettext=1 \ $(srcdir)/err-sources.h.in >$@ $(srcdir)/err-codes.h: Makefile.am mkstrtable.awk err-codes.h.in $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=3 \ $(srcdir)/err-codes.h.in >$@ err-codes-sym.h: Makefile mkstrtable.awk err-codes.h.in $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=2 -v nogettext=1 \ $(srcdir)/err-codes.h.in >$@ code-to-errno.h: Makefile mkerrnos.awk errnos.in $(AWK) -f $(srcdir)/mkerrnos.awk $(srcdir)/errnos.in >$@ # It is correct to use $(CPP). We want the host's idea of the error codes. mkerrcodes.h: Makefile mkerrcodes.awk $(gpg_extra_headers) $(AWK) -f $(srcdir)/mkerrcodes1.awk $(srcdir)/errnos.in >_$@ $(CPP) $(CPPFLAGS) $(extra_cppflags) -P _$@ | grep GPG_ERR_ | \ $(AWK) -f $(srcdir)/mkerrcodes.awk >$@ -rm _$@ if HAVE_W32CE_SYSTEM # It is correct to use $(CPP). We want the host's idea of the error codes. mkw32errmap.tab.h: Makefile mkw32errmap.c $(CPP) -DRESOLVE_MACROS $(srcdir)/mkw32errmap.c | \ grep '{&mkw32errmap_marker' >$@ mkw32errmap.map.c: mkw32errmap$(EXEEXT_FOR_BUILD) ./mkw32errmap$(EXEEXT_FOR_BUILD) --map > $@ gpg-extra/errno.h: mkw32errmap$(EXEEXT_FOR_BUILD) -$(MKDIR_P) gpg-extra ./mkw32errmap$(EXEEXT_FOR_BUILD) > $@ else mkw32errmap.map.c: echo "/*dummy*/" > $@ endif # We use CC proper for preprocessing thus we have to convince it that # the data is really to be preprocessed. gpg-error.def: Makefile gpg-error.def.in cat $(srcdir)/gpg-error.def.in >_$@.h $(CPP) $(DEFAULT_INCLUDES) $(INCLUDES) $(extra_cppflags) _$@.h | \ grep -v '^#' >$@ -rm _$@.h # It is correct to use $(CC_FOR_BUILD) here. We want to run the # program at build time. mkerrcodes$(EXEEXT_FOR_BUILD): mkerrcodes.c mkerrcodes.h Makefile $(CC_FOR_BUILD) -I. -I$(srcdir) -o $@ $(srcdir)/mkerrcodes.c if HAVE_W32CE_SYSTEM # It is correct to use $(CC_FOR_BUILD) here. We want to run the # program at build time. mkw32errmap$(EXEEXT_FOR_BUILD): mkw32errmap.c mkw32errmap.tab.h Makefile $(CC_FOR_BUILD) -I. -I$(srcdir) -o $@ $(srcdir)/mkw32errmap.c endif code-from-errno.h: mkerrcodes$(EXEEXT_FOR_BUILD) Makefile ./mkerrcodes$(EXEEXT_FOR_BUILD) | $(AWK) -f $(srcdir)/mkerrcodes2.awk >$@ errnos-sym.h: Makefile mkstrtable.awk errnos.in $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=2 -v nogettext=1 \ -v prefix=GPG_ERR_ -v namespace=errnos_ \ $(srcdir)/errnos.in >$@ mkheader$(EXEEXT_FOR_BUILD): mkheader.c Makefile $(CC_FOR_BUILD) -g -O0 -I. -I$(srcdir) -o $@ $(srcdir)/mkheader.c parts_of_gpg_error_h = \ gpg-error.h.in \ err-sources.h.in \ err-codes.h.in \ errnos.in \ w32-add.h \ w32ce-add.h \ $(lock_obj_pub) # If we are cross-compiling or building on Windows we better make sure # that no stale native lock include file will be found by mkheader. if FORCE_USE_SYSCFG pre_mkheader_cmds = if test -f lock-obj-pub.native.h; \ then rm lock-obj-pub.native.h; fi mkheader_opts = --cross else pre_mkheader_cmds = : mkheader_opts = parts_of_gpg_error_h += ./lock-obj-pub.native.h ./lock-obj-pub.native.h: Makefile gen-posix-lock-obj$(EXEEXT) posix-lock-obj.h ./gen-posix-lock-obj >$@ endif # We also depend on versioninfo.rc because that is build by # config.status and thus has up-to-date version numbers. gpg-error.h: Makefile mkheader$(EXEEXT_FOR_BUILD) $(parts_of_gpg_error_h) \ versioninfo.rc ../config.h $(pre_mkheader_cmds) ./mkheader$(EXEEXT_FOR_BUILD) $(mkheader_opts) \ $(host_triplet) $(srcdir)/gpg-error.h.in \ ../config.h $(PACKAGE_VERSION) $(VERSION_NUMBER) >$@ gpgrt.h: gpg-error.h cp gpg-error.h gpgrt.h gpgrt-config: gpg-error-config cp gpg-error-config gpgrt-config gpg-error-config: gpg-error-config-new gpg-error-config-old @echo $(ECHO_N) "Confirm gpg-error-config works... $(ECHO_C)" @if $(srcdir)/gpg-error-config-test.sh --old-new; then \ echo "good"; \ cp gpg-error-config-new $@; \ else \ echo "no"; \ echo "*** Please report to with gpg-error-config-test.log"; \ cp gpg-error-config-old $@; \ fi install-data-local: if HAVE_W32CE_SYSTEM -$(MKDIR_P) "$(DESTDIR)$(includedir)/gpg-extra" $(INSTALL_DATA) gpg-extra/errno.h \ "$(DESTDIR)$(includedir)/gpg-extra/errno.h" else : endif diff --git a/src/gpg-error-config-new.in b/src/gpg-error-config-new.in index 8bf92cf..e16e753 100644 --- a/src/gpg-error-config-new.in +++ b/src/gpg-error-config-new.in @@ -1,572 +1,572 @@ #!/bin/sh # Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc. # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This file is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # SPDX-License-Identifier: FSFULLR prefix=@prefix@ -datarootdir=@datarootdir@ -datadir=@datadir@ -PKG_CONFIG_PATH="$PKG_CONFIG_PATH${PKG_CONFIG_PATH:+:}${datadir}/pkgconfig" +exec_prefix=@exec_prefix@ +libdir=@libdir@ +PKG_CONFIG_PATH="$PKG_CONFIG_PATH${PKG_CONFIG_PATH:+:}${libdir}/pkgconfig" # #### start of functions for this script # # Bourne shell functions for config file in pkg-config style, so that # we can share such a config file between pkg-config and script # # # get_var: Get the variable value of NAME # # Variables are recorded in the shell variables named "VAR_" # get_var () { ___name=$1 eval echo \$VAR_$___name } # # get_attr: Get the attribute value of KEY # # Attributes are recorded in the shell variables named "ATTR_" # get_attr () { ___name=$1 eval echo \$ATTR_$___name } # Remove ${varname} part in the beginning of a string. remove_var_expr () { ___varname=$1 shift expr "$*" : "\${$___varname}\\(.*\\)" } # Given a string, substitute variables. substitute_vars () { __string="$1" __varname="" __result="" while [ -n "$__string" ]; do case "$__string" in \$\$*) __result="$__result\$" __string="${__string#\$\$}" ;; \${*}*) __varname="${__string#\$\{}" __varname="${__varname%%\}*}" __result="$__result$(get_var $__varname)" __string=$(remove_var_expr $__varname $__string) ;; *) __result="$__result$(printf %c "$__string")" __string="${__string#$(printf %c "$__string")}" ;; esac done echo "$__result" } # # Read a config from stdin # # Variables: # For VAR=VALUE, value is stored in the shell variable VAR_*. # # Attributes: # For KEY: VALUE, value is stored in the shell variable ATTR_*. # read_config_from_stdin () { _filename=$1 _line="" _varname="" _value="" _key="" _reading_attrs="" while read _line; do if [ -z "$_line" ]; then _reading_attrs=yes continue elif [ -z "$_reading_attrs" ]; then case "$_line" in *=*) _varname="${_line%%=*}" _value="${_line#*=}" VAR_list="$VAR_list${VAR_list:+ }VAR_$_varname" read VAR_$_varname <&2 exit 1 ;; esac fi done } find_file_in_path () { _f=$1 _p=$2 _saved_IFS="$IFS" _arg="" IFS=":" # On Windows it should be ";"??? for _arg in $_p; do if [ -r $_arg/$_f ]; then RESULT="$_arg/$_f" IFS="$_saved_IFS" return 0 fi done IFS="$_saved_IFS" RESULT="" return 1 } read_config_file () { if ! find_file_in_path $1.pc $2; then echo "Can't find $1.pc" 1>&2 exit 1 fi read_config_from_stdin $RESULT < $RESULT } cleanup_vars_attrs () { eval unset $VAR_list VAR_list eval unset $ATTR_list ATTR_list } not_listed_yet () { ___m=$1 ___arg="" shift for ___arg; do if [ $___m = $___arg ]; then return 1 fi done return 0 } list_only_once () { __result="" __arg="" for __arg; do if not_listed_yet $__arg $__result; then __result="$__result${__result:+ }$__arg" fi done echo $__result } list_only_once_for_libs () { __result="" __rev_list="" __arg="" # Scan the list and eliminate duplicates for non-"-lxxx" # the resulted list is in reverse order for __arg; do case "$__arg" in -l*) # As-is __rev_list="$__arg${__rev_list:+ }$__rev_list" ;; *) if not_listed_yet $__arg $__rev_list; then __rev_list="$__arg${__rev_list:+ }$__rev_list" fi ;; esac done # Scan again for __arg in $__rev_list; do case "$__arg" in -l*) if not_listed_yet $__arg $__result; then __result="$__arg${__result:+ }$__result" fi ;; *) # As-is __result="$__arg${__result:+ }$__result" ;; esac done echo $__result } arg1_is_same () { [ "$1" = "=" -o "$1" = ">=" -o "$1" = "<=" ] } arg1_is_less () { [ "$1" = "!=" -o "$1" = "<" -o "$1" = "<=" ] } arg1_is_great () { [ "$1" = "!=" -o "$1" = ">" -o "$1" = ">=" ] } # # Evaluate comparison between versions in RPM way # eval_compare_version () { ___str1="$1" ___cmp="$2" ___str2="$3" ___char1="" ___char2="" ___chunk1="" ___chunk2="" while [ -n "$___str1" -a -n "$___str2" ]; do # Trim anything that's not alnum or tilde from the front ___str1="$(expr "$___str1" : '[^0-9A-Za-z~]*\(.*\)')" ___str2="$(expr "$___str2" : '[^0-9A-Za-z~]*\(.*\)')" # Get the first character ___char1=${___str1%${___str1#?}} ___char2=${___str2%${___str2#?}} if [ "$___char1" = ~ -o "$___char2" = ~ ]; then if [ "$___char1" != ~ ]; then arg1_is_great $___cmp return fi if [ "$___char2" != ~ ]; then arg1_is_less $___cmp return fi ___str1=${___str1#~} ___str2=${___str2#~} continue fi if [ -z "$___char1" -o -z "$___char2" ]; then break fi case "$___char1$___char2" in [0-9][A-Za-z]) arg1_is_great $___cmp return ;; [A-Za-z][0-9]) arg1_is_less $___cmp return ;; [0-9][0-9]) ___chunk1="$(expr "$___str1" : '\([0-9]*\)')" ___chunk2="$(expr "$___str2" : '\([0-9]*\)')" ;; [A-Za-z][A-Za-z]) ___chunk1="$(expr "$___str1" : '\([A-Za-z]*\)')" ___chunk2="$(expr "$___str2" : '\([A-Za-z]*\)')" ;; esac # Compare chunks numerically if digits, or lexicographically if expr "$___chunk1" "!=" "$___chunk2" >/dev/null; then if expr "$___chunk1" ">" "$___chunk2" >/dev/null; then arg1_is_great $___cmp return else arg1_is_less $___cmp return fi fi # Remove the chunk ___str1="${___str1#$___chunk1}" ___str2="${___str2#$___chunk2}" done # Either STR1, STR2 or both is empty here if [ -n "$___str1" ]; then case "$___str1" in ~*) arg1_is_less $___cmp ;; *) arg1_is_great $___cmp ;; esac elif [ -n "$___str2" ]; then case "$___str2" in ~*) arg1_is_great $___cmp ;; *) arg1_is_less $___cmp ;; esac else arg1_is_same $___cmp fi } # # Recursively solve package dependencies # # Result is in the PKG_LIST variable # all_required_config_files () { all_list="" new_list="" p="" pkg="" cmp="" list=$* while [ -n "$list" ]; do for p in $list; do if [ -z "$pkg" ]; then pkg=$p elif [ -z "$cmp" ]; then case "$p" in "="|"!="|"<"|">"|"<="|">=") cmp=$p ;; *) read_config_file $pkg $PKG_CONFIG_PATH all_list="$all_list${all_list:+ }$pkg" new_list="$new_list${new_list:+ }$(get_attr Requires)" cleanup_vars_attrs pkg=$p ;; esac else read_config_file $pkg $PKG_CONFIG_PATH if ! eval_compare_version "$(get_attr Version)" $cmp $p; then echo "Version mismatch for $pkg $cmp $p: $(get_attr Version)" 1>&2 exit 1 fi all_list="$all_list${all_list:+ }$pkg" new_list="$new_list${new_list:+ }$(get_attr Requires)" cleanup_vars_attrs pkg="" cmp="" fi done if [ -n "$cmp" ]; then echo "No version after comparison operator ($cmp): $pkg" 1>&2 exit 1 elif [ -n "$pkg" ]; then read_config_file $pkg $PKG_CONFIG_PATH all_list="$all_list${all_list:+ }$pkg" new_list="$new_list${new_list:+ }$(get_attr Requires)" cleanup_vars_attrs fi list="$new_list" new_list="" done PKG_LIST=$(list_only_once $all_list) } # # Modify -I or -L by PKG_CONFIG_SYSROOT_DIR variable # sysroot () { _opt="$1" _result="" shift while [ $# -gt 0 ]; do if [ $1 = $_opt ]; then _result="$_result${_result:+ }$_opt" shift _result="$_result $PKG_CONFIG_SYSROOT_DIR$1" elif expr "$1" : "^$_opt" >/dev/null; then _result="$_result${_result:+ }$_opt$PKG_CONFIG_SYSROOT_DIR$(expr "$1" : "^$_opt\(.*\)")" else _result="$_result${_result:+ }$1" fi shift done echo "$_result" } #### end of functions for this script myname=${0##*/} # Just for a while for testing myname=${myname%-new} ############################## if [ $myname = gpgrt-config ]; then myname="gpg-error-config" fi usage() { cat <&2 fi if [ "$1" != "--mt" ]; then mt=no else # In future, use --variable=mtcflags or --variable=mtlibs mt=yes shift fi module_list="" want_var="" want_attr="" want_cflags="" want_libs="" cflags="" libs="" mtcflags="" mtlibs="" delimiter=" " output="" VAR_list=VAR_pc_sysrootdir if [ -z "$PKG_CONFIG_SYSROOT_DIR" ]; then VAR_pc_sysrootdir="/" else VAR_pc_sysrootdir="$PKG_CONFIG_SYSROOT_DIR" fi while test $# -gt 0; do case $1 in --prefix) # In future, use --variable=prefix instead. want_var=prefix ;; --exec-prefix) # In future, use --variable=exec_prefix instead. want_var=exec_prefix ;; --version) # In future, use --modversion instead. want_attr=Version delimiter=" " ;; --modversion) want_attr=Version delimiter=" " ;; --cflags) want_cflags=yes ;; --libs) want_libs=yes ;; --variable=*) want_var=${1#*=} ;; --host) # In future, use --variable=host instead. want_var=host ;; --help) usage 0 ;; --*) usage 1 1>&2 ;; *) # Modules module_list="$module_list${module_list:+ }$1" ;; esac shift done if [ -z "$module_list" ]; then module_list=${myname%-config} elif expr match "$module_list" "=\|!=\|<\|>\|<=\|>=" >/dev/null; then module_list="${myname%-config} $module_list" fi all_required_config_files $module_list for p in $PKG_LIST; do read_config_file $p $PKG_CONFIG_PATH if [ -n "$want_var" ]; then output="$output${output:+$delimiter}$(get_var $want_var)" elif [ -n "$want_attr" ]; then output="$output${output:+$delimiter}$(get_attr $want_attr)" else cflags="$cflags${cflags:+ }$(get_attr Cflags)" libs="$libs${libs:+ }$(get_attr Libs)" if [ $p = "gpg-error" ]; then mtcflags="$(get_var mtcflags)" mtlibs="$(get_var mtlibs)" fi fi cleanup_vars_attrs done if [ -z "$want_var" -a -z "$want_attr" ]; then if [ -n "$want_cflags" ]; then output="$output${output:+ }$(sysroot -I $(list_only_once $cflags))" # Backward compatibility to old gpg-error-config if [ $mt = yes -a -n "$mtcflags" ]; then output="$output${output:+ }$mtcflags" fi fi if [ -n "$want_libs" ]; then output="$output${output:+ }$(sysroot -L $(list_only_once_for_libs $libs))" # Backward compatibility to old gpg-error-config if [ $mt = yes -a -n "$mtlibs" ]; then output="$output${output:+ }$mtlibs" fi fi fi echo "$output"