1#!@SHELL@ 2# $Id: gen-pkgconfig.in,v 1.56 2022/10/08 16:45:20 tom Exp $ 3############################################################################## 4# Copyright 2018-2021,2022 Thomas E. Dickey # 5# Copyright 2009-2015,2018 Free Software Foundation, Inc. # 6# # 7# Permission is hereby granted, free of charge, to any person obtaining a # 8# copy of this software and associated documentation files (the "Software"), # 9# to deal in the Software without restriction, including without limitation # 10# the rights to use, copy, modify, merge, publish, distribute, distribute # 11# with modifications, sublicense, and/or sell copies of the Software, and to # 12# permit persons to whom the Software is furnished to do so, subject to the # 13# following conditions: # 14# # 15# The above copyright notice and this permission notice shall be included in # 16# all copies or substantial portions of the Software. # 17# # 18# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # 19# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # 20# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # 21# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # 22# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # 23# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # 24# DEALINGS IN THE SOFTWARE. # 25# # 26# Except as contained in this notice, the name(s) of the above copyright # 27# holders shall not be used in advertising or otherwise to promote the sale, # 28# use or other dealings in this Software without prior written # 29# authorization. # 30############################################################################## 31# 32# Author: Thomas E. Dickey 33# 34# The complete configure script for ncurses is the ncurses5-config (or similar 35# name, depending on the flavor, e.g., ncursesw5-config, ncurses6-config, etc). 36# That provides more information than pkg-config, and is the portable and 37# recommended solution. 38# 39# For each library, generate a ".pc" file which depends on the base ncurses 40# library, except that the tinfo library does not depend on ncurses. 41LIB_NAME=@LIB_NAME@ 42TINFO_NAME=@TINFO_NAME@ 43PANEL_NAME=@PANEL_NAME@ 44MENU_NAME=@MENU_NAME@ 45FORM_NAME=@FORM_NAME@ 46CXX_NAME=@CXX_NAME@ 47 48DFT_DEP_SUFFIX=@DFT_DEP_SUFFIX@ 49TINFO_ARG_SUFFIX=@TINFO_ARG_SUFFIX@ 50CXX_LIB_SUFFIX=@CXX_LIB_SUFFIX@ 51 52suffix=@PC_MODULE_SUFFIX@ 53prefix="@prefix@" 54exec_prefix="@exec_prefix@" 55includedir="@includedir@@includesubdir@" 56libdir="@libdir@" 57 58RPATH_LIST=@RPATH_LIST@ 59PRIVATE_LIBS="@PRIVATE_LIBS@" 60 61show_prefix='@prefix@' 62show_exec_prefix='@exec_prefix@' 63show_includedir='@includedir@@includesubdir@' 64show_libdir='@libdir@' 65 66MAIN_LIBRARY="${LIB_NAME}@USE_ARG_SUFFIX@" 67SUB_LIBRARY="${TINFO_ARG_SUFFIX}" 68 69CXX_LIBRARY="${CXX_NAME}@USE_ARG_SUFFIX@" 70FORM_LIBRARY="${FORM_NAME}@USE_ARG_SUFFIX@" 71MENU_LIBRARY="${MENU_NAME}@USE_ARG_SUFFIX@" 72PANEL_LIBRARY="${PANEL_NAME}@USE_ARG_SUFFIX@" 73 74CFLAGS="@PKG_CFLAGS@" 75if [ "$includedir" != "/usr/include" ]; then 76 includetop=`echo "$includedir" | sed -e 's,/include/[^/]*$,/include,'` 77 [ "$includetop" = "/usr/include" ] && includetop="$includedir" 78 CFLAGS="$CFLAGS -I\${includedir}" 79 if [ "x$includetop" != "x$includedir" ] 80 then 81 CFLAGS="$CFLAGS -I${includetop}" 82 fi 83fi 84 85lib_flags= 86for opt in -L$libdir @EXTRA_PKG_LDFLAGS@ @LIBS@ 87do 88 case $opt in 89 -l*) # LIBS is handled specially below 90 continue 91 ;; 92 -specs*) # ignore linker specs-files which were used to build library 93 continue 94 ;; 95 -Wl,-z,*) # ignore flags used to manipulate shared image 96 continue 97 ;; 98 -Wl,--dynamic-linker*) # ignore ELF interpreter 99 continue 100 ;; 101 -Wl,--as-needed|-Wl,--build-id=*|-Wl,-dT,*|-Wl,-T,*) 102 continue 103 ;; 104 -L*) 105 lib_check=`echo "x$opt" | sed -e 's/^.-L//'` 106 # on a new/nonstandard install, $libdir may not yet exist at this point 107 if [ "$libdir" != "$lib_check" ] 108 then 109 [ -d "$lib_check" ] || continue 110 fi 111 case "$lib_check" in 112 @LD_SEARCHPATH@) # skip standard libdir 113 if [ "$lib_check" = "$libdir" ] 114 then 115 lib_first=yes 116 IFS_save="$IFS" 117 IFS='|' 118 LIBDIRS="@LD_SEARCHPATH@" 119 for lib_check in $LIBDIRS 120 do 121 if [ -d "$lib_check" ] 122 then 123 if [ "$lib_check" != "$libdir" ] 124 then 125 lib_first=no 126 fi 127 break 128 fi 129 done 130 IFS="$IFS_save" 131 [ $lib_first = yes ] && continue 132 found=no 133 for check in $lib_flags 134 do 135 if [ "x$check" = "x$opt" ] 136 then 137 found=yes 138 break 139 fi 140 done 141 [ $found = yes ] && continue 142 : 143 else 144 continue 145 fi 146 ;; 147 *) 148 found=no 149 for check in $lib_flags 150 do 151 if [ "x$check" = "x$opt" ] 152 then 153 found=yes 154 break 155 fi 156 done 157 [ $found = yes ] && continue 158 ;; 159 esac 160 ;; 161 esac 162 lib_flags="$lib_flags $opt" 163done 164 165# Check if we should specify the tinfo library explicitly so that terminfo 166# functions or curses variables (which also reside in tinfo) can be linked 167# using the -lncurses option. 168NEED_TINFO=no 169if [ "x@TINFO_LIBS@" != "x" ] && \ 170 [ "x$TINFO_ARG_SUFFIX" != "x$MAIN_LIBRARY" ] 171then 172 NEED_TINFO=yes 173fi 174 175# The "URL" feature came in pkg-config 0.17 176USEURL="" 177CFGVER=`${PKG_CONFIG:-pkg-config} --version 2>/dev/null |head -n 1 | awk -F. '/0.[0-9][0-9]/{print $2;}'` 178# A missing version should simply fail, but some packagers insist on building 179# packages on machines which do not actually have the tools they depend on at 180# runtime. 181[ -z "$CFGVER" ] && CFGVER=30 182[ $CFGVER -ge 17 ] || USEURL="#" 183 184for name in @PC_MODULES_TO_MAKE@ 185do 186 name="${name}" 187 case $name in 188 form*) name="$FORM_LIBRARY" ;; 189 menu*) name="$MENU_LIBRARY" ;; 190 panel*) name="$PANEL_LIBRARY" ;; 191 ncurses++*) name="$CXX_LIBRARY" ;; 192 esac 193 LIBS="-l$name" 194 195 desc="ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" 196 reqs= 197 198 if [ $name = $MAIN_LIBRARY ]; then 199 desc="$desc library" 200 [ $NEED_TINFO = yes ] && LIBS="$LIBS -l$TINFO_ARG_SUFFIX" 201 [ -n "@LIBS@" ] && LIBS="$LIBS @LIBS@" 202 elif [ $name = $SUB_LIBRARY ]; then 203 desc="$desc terminal interface library" 204 elif expr $name : ".*${CXX_NAME}.*" >/dev/null ; then 205 reqs="$PANEL_LIBRARY${suffix}, $MENU_LIBRARY${suffix}, $FORM_LIBRARY${suffix}, $MAIN_LIBRARY${suffix}" 206 desc="$desc add-on library" 207 else 208 reqs="$MAIN_LIBRARY${suffix}" 209 desc="$desc add-on library" 210 fi 211 212 if [ $name != $SUB_LIBRARY ] && \ 213 [ $SUB_LIBRARY != $MAIN_LIBRARY ] && \ 214 [ $name != $TINFO_NAME ] && \ 215 [ $NEED_TINFO != yes ] ; then 216 [ -n "$reqs" ] && reqs="$reqs, " 217 reqs="${reqs}${SUB_LIBRARY}${suffix}" 218 fi 219 220 if [ $name = $MAIN_LIBRARY ] 221 then 222 main_libs="$PRIVATE_LIBS" 223 else 224 main_libs= 225 fi 226 227 echo "** creating ${name}${suffix}.pc" 228 cat >${name}${suffix}.pc <<EOF 229# pkg-config file generated by `basename "$0"` 230# vile:makemode 231 232prefix=$show_prefix 233exec_prefix=$show_exec_prefix 234libdir=$show_libdir 235includedir=$show_includedir 236abi_version=@cf_cv_abi_version@ 237major_version=@NCURSES_MAJOR@ 238version=@NCURSES_MAJOR@.@NCURSES_MINOR@.@NCURSES_PATCH@ 239 240Name: ${name}${suffix} 241Description: $desc 242Version: \${version} 243${USEURL}URL: https://invisible-island.net/ncurses 244Requires.private: $reqs 245Libs: $lib_flags $LIBS 246Libs.private: @LIBS@ $main_libs 247Cflags: $CFLAGS 248EOF 249 250done 251# vile:shmode ts=4 sw=4 252