]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - misc/gen-pkgconfig.in
ncurses 6.4 - patch 20240420
[ncurses.git] / misc / gen-pkgconfig.in
index 0c0506371f734bfdd0117b14d1c20f9a49570b00..89a5cd4a3180b6b88233cb6ae2bb2d4256485cc0 100644 (file)
@@ -1,7 +1,8 @@
 #!@SHELL@
-# $Id: gen-pkgconfig.in,v 1.42 2019/12/25 23:09:13 tom Exp $
+# $Id: gen-pkgconfig.in,v 1.56 2022/10/08 16:45:20 tom Exp $
 ##############################################################################
-# Copyright (c) 2009-2018,2019 Free Software Foundation, Inc.                #
+# Copyright 2018-2021,2022 Thomas E. Dickey                                  #
+# Copyright 2009-2015,2018 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"), #
@@ -43,6 +44,7 @@ PANEL_NAME=@PANEL_NAME@
 MENU_NAME=@MENU_NAME@
 FORM_NAME=@FORM_NAME@
 CXX_NAME=@CXX_NAME@
+
 DFT_DEP_SUFFIX=@DFT_DEP_SUFFIX@
 TINFO_ARG_SUFFIX=@TINFO_ARG_SUFFIX@
 CXX_LIB_SUFFIX=@CXX_LIB_SUFFIX@
@@ -63,9 +65,11 @@ show_libdir='@libdir@'
 
 MAIN_LIBRARY="${LIB_NAME}@USE_ARG_SUFFIX@"
 SUB_LIBRARY="${TINFO_ARG_SUFFIX}"
-PANEL_LIBRARY="${PANEL_NAME}@USE_ARG_SUFFIX@"
-MENU_LIBRARY="${MENU_NAME}@USE_ARG_SUFFIX@"
+
+CXX_LIBRARY="${CXX_NAME}@USE_ARG_SUFFIX@"
 FORM_LIBRARY="${FORM_NAME}@USE_ARG_SUFFIX@"
+MENU_LIBRARY="${MENU_NAME}@USE_ARG_SUFFIX@"
+PANEL_LIBRARY="${PANEL_NAME}@USE_ARG_SUFFIX@"
 
 CFLAGS="@PKG_CFLAGS@"
 if [ "$includedir" != "/usr/include" ]; then
@@ -79,7 +83,7 @@ if [ "$includedir" != "/usr/include" ]; then
 fi
 
 lib_flags=
-for opt in -L$libdir @LDFLAGS@ @EXTRA_LDFLAGS@ @LIBS@
+for opt in -L$libdir @EXTRA_PKG_LDFLAGS@ @LIBS@
 do
        case $opt in
        -l*) # LIBS is handled specially below
@@ -91,11 +95,54 @@ do
        -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*)
-               [ -d ${opt##-L} ] || continue
-               case ${opt##-L} in
+               lib_check=`echo "x$opt" | sed -e 's/^.-L//'`
+               # on a new/nonstandard install, $libdir may not yet exist at this point
+               if [ "$libdir" != "$lib_check" ]
+               then
+                       [ -d "$lib_check" ] || continue
+               fi
+               case "$lib_check" in
                @LD_SEARCHPATH@) # skip standard libdir
-                       continue
+                       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
@@ -125,9 +172,24 @@ then
        NEED_TINFO=yes
 fi
 
+# The "URL" feature came in pkg-config 0.17
+USEURL=""
+CFGVER=`${PKG_CONFIG:-pkg-config} --version 2>/dev/null |head -n 1 | awk -F. '/0.[0-9][0-9]/{print $2;}'`
+# A missing version should simply fail, but some packagers insist on building
+# packages on machines which do not actually have the tools they depend on at
+# runtime.
+[ -z "$CFGVER" ] && CFGVER=30
+[ $CFGVER -ge 17 ] || USEURL="#"
+
 for name in @PC_MODULES_TO_MAKE@
 do
        name="${name}"
+       case $name in
+       form*)          name="$FORM_LIBRARY"    ;;
+       menu*)          name="$MENU_LIBRARY"    ;;
+       panel*)         name="$PANEL_LIBRARY"   ;;
+       ncurses++*)     name="$CXX_LIBRARY"             ;;
+       esac
        LIBS="-l$name"
 
        desc="ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@"
@@ -164,7 +226,7 @@ do
 
        echo "** creating ${name}${suffix}.pc"
        cat >${name}${suffix}.pc <<EOF
-# pkg-config file generated by `basename $0`
+# pkg-config file generated by `basename "$0"`
 # vile:makemode
 
 prefix=$show_prefix
@@ -178,7 +240,7 @@ version=@NCURSES_MAJOR@.@NCURSES_MINOR@.@NCURSES_PATCH@
 Name: ${name}${suffix}
 Description: $desc
 Version: \${version}
-URL: https://invisible-island.net/ncurses
+${USEURL}URL: https://invisible-island.net/ncurses
 Requires.private: $reqs
 Libs: $lib_flags $LIBS
 Libs.private: @LIBS@ $main_libs