X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=misc%2Fncurses-config.in;h=7b02ac27dc30faaa8c4e612a943a9c0ab8deb062;hp=a616bb648dd9de18e2dbd6138a0cb248d50607eb;hb=HEAD;hpb=ad0373780c377b7abe50c77fc9a36092972dc872 diff --git a/misc/ncurses-config.in b/misc/ncurses-config.in index a616bb64..c9f1cf80 100644 --- a/misc/ncurses-config.in +++ b/misc/ncurses-config.in @@ -1,7 +1,8 @@ #!@SHELL@ -# $Id: ncurses-config.in,v 1.32 2015/02/21 21:36:16 tom Exp $ +# $Id: ncurses-config.in,v 1.52 2022/07/26 21:36:28 tom Exp $ ############################################################################## -# Copyright (c) 2006-2012,2015 Free Software Foundation, Inc. # +# Copyright 2018-2021,2022 Thomas E. Dickey # +# Copyright 2006-2015,2017 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # # copy of this software and associated documentation files (the "Software"), # @@ -45,14 +46,16 @@ datarootdir="@datarootdir@" datadir="@datadir@" mandir="@mandir@" -THIS="@LIB_NAME@@DFT_ARG_SUFFIX@" +THIS="@LIB_NAME@@USE_LIB_SUFFIX@" TINFO_LIB="@TINFO_ARG_SUFFIX@" RPATH_LIST="@RPATH_LIST@" +includesubdir="@includedir@/${THIS}" + # Ensure that RPATH_LIST contains only absolute pathnames, if it is nonempty. # We cannot filter it out within the build-process since the variable is used # in some special cases of installation using a relative path. -if test -n "$RPATH_LIST" +if [ -n "$RPATH_LIST" ] then save_IFS="$IFS" IFS='@PATH_SEPARATOR@' @@ -63,7 +66,7 @@ then ./*|../*|*/..|*/../*) ;; *) - test -n "$filtered" && filtered="${filtered}@PATH_SEPARATOR@" + [ -n "$filtered" ] && filtered="${filtered}@PATH_SEPARATOR@" filtered="${filtered}${item}" ;; esac @@ -76,17 +79,103 @@ fi # with --disable-overwrite, we installed into a subdirectory, but transformed # the headers to include like this: # -if test x@WITH_OVERWRITE@ = xno ; then +if [ x@WITH_OVERWRITE@ = xno ]; then case $includedir in - $prefix/include/ncurses@LIB_SUFFIX@) + $prefix/include/ncurses@LIB_SUFFIX@@EXTRA_SUFFIX@) includedir=`echo "$includedir" | sed -e 's,/[^/]*$,,'` ;; esac fi -test $# = 0 && exec @SHELL@ $0 --error +LIBS="@LIBS@" +if [ "@TINFO_NAME@" = "@LIB_NAME@" ]; then + LIBS="-l${THIS} $LIBS" +else + LIBS="-l${THIS} -l${TINFO_LIB} $LIBS" +fi -while test $# -gt 0; do +# Ignore -L options which do not correspond to an actual directory, or which +# are standard library directories (i.e., the linker is supposed to search +# those directories). +# +# There is no portable way to find the list of standard library directories. +# Require a POSIX shell anyway, to keep this simple. +lib_flags= +for opt in -L$libdir @EXTRA_PKG_LDFLAGS@ $LIBS +do + case $opt in + -specs*) # ignore linker specs-files which were used to build library + continue + ;; + -Wl,-z,*) # ignore flags used to manipulate shared image + continue + ;; + -Wl,--dynamic-linker*) # ignore ELF interpreter + continue + ;; + -Wl,--as-needed|-Wl,--build-id=*|-Wl,-dT,*|-Wl,-T,*) + continue + ;; + -L*) + lib_check=`echo "x$opt" | sed -e 's/^.-L//'` + [ -d "$lib_check" ] || continue + case "$lib_check" in + @LD_SEARCHPATH@) # skip standard libdir + if [ "$lib_check" = "$libdir" ] + then + lib_first=yes + IFS_save="$IFS" + IFS='|' + LIBDIRS="@LD_SEARCHPATH@" + for lib_check in $LIBDIRS + do + if [ -d "$lib_check" ] + then + if [ "$lib_check" != "$libdir" ] + then + lib_first=no + fi + break + fi + done + IFS="$IFS_save" + [ $lib_first = yes ] && continue + found=no + for check in $lib_flags + do + if [ "x$check" = "x$opt" ] + then + found=yes + break + fi + done + [ $found = yes ] && continue + : + else + continue + fi + ;; + *) + found=no + for check in $lib_flags + do + if [ "x$check" = "x$opt" ] + then + found=yes + break + fi + done + [ $found = yes ] && continue + ;; + esac + ;; + esac + lib_flags="$lib_flags $opt" +done + +[ $# = 0 ] && exec @SHELL@ "$0" --error + +while [ $# -gt 0 ]; do case "$1" in # basic configuration --prefix) @@ -98,10 +187,10 @@ while test $# -gt 0; do # compile/link --cflags) INCS="@PKG_CFLAGS@" - if test "x@WITH_OVERWRITE@" = xno ; then - INCS="$INCS -I${includedir}/${THIS}" + if [ "x@WITH_OVERWRITE@" = xno ]; then + INCS="$INCS -I${includesubdir}" fi - if test "${includedir}" != /usr/include ; then + if [ "${includedir}" != /usr/include ]; then INCS="$INCS -I${includedir}" fi sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO @@ -109,21 +198,54 @@ while test $# -gt 0; do ENDECHO ;; --libs) - if test "$libdir" = /usr/lib - then - LIBDIR= - else - LIBDIR=-L$libdir - fi - if test @TINFO_NAME@ = @LIB_NAME@ ; then - sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO - $LIBDIR @EXTRA_LDFLAGS@ -l${THIS} @LIBS@ -ENDECHO - else - sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO - $LIBDIR @EXTRA_LDFLAGS@ -l${THIS} -l${TINFO_LIB} @LIBS@ -ENDECHO - fi + OPTS= + for opt in $lib_flags + do + [ -n "$OPTS" ] && OPTS="$OPTS " + OPTS="${OPTS}${opt}" + done + printf '%s\n' "$OPTS" + ;; + --libs-only-L) + OPTS= + for opt in $lib_flags + do + case "x$opt" in + x-L*) + [ -n "$OPTS" ] && OPTS="$OPTS " + OPTS="${OPTS}${opt}" + ;; + esac + done + printf '%s\n' "$OPTS" + ;; + --libs-only-l) + OPTS= + for opt in $lib_flags + do + case "x$opt" in + x-l*) + [ -n "$OPTS" ] && OPTS="$OPTS " + OPTS="${OPTS}${opt}" + ;; + esac + done + printf '%s\n' "$OPTS" + ;; + --libs-only-other) + OPTS= + for opt in $lib_flags + do + case "x$opt" in + x-[lL]*) + ;; + *) + [ -n "$OPTS" ] && OPTS="$OPTS " + OPTS="${OPTS}${opt}" + ;; + esac + done + printf '%s\n' "$OPTS" ;; # identification --version) @@ -143,7 +265,13 @@ ENDECHO echo "${datadir}" ;; --includedir) - echo "${includedir}" + INCS= + if [ "x@WITH_OVERWRITE@" = xno ]; then + INCS="${includesubdir}" + elif [ "${includedir}" != /usr/include ]; then + INCS="${includedir}" + fi + echo "$INCS" ;; --libdir) echo "${libdir}" @@ -163,7 +291,7 @@ ENDECHO # general info --help) cat <&2 + @SHELL@ "$0" --help 1>&2 exit 1 ;; esac