#!/bin/bash
# $Id: ncurses-config.in,v 1.63 2025/11/22 19:19:28 tom Exp $
##############################################################################
# Copyright 2018-2024,2025 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"), #
# to deal in the Software without restriction, including without limitation  #
# the rights to use, copy, modify, merge, publish, distribute, distribute    #
# with modifications, sublicense, and/or sell copies of the Software, and to #
# permit persons to whom the Software is furnished to do so, subject to the  #
# following conditions:                                                      #
#                                                                            #
# The above copyright notice and this permission notice shall be included in #
# all copies or substantial portions of the Software.                        #
#                                                                            #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
# DEALINGS IN THE SOFTWARE.                                                  #
#                                                                            #
# Except as contained in this notice, the name(s) of the above copyright     #
# holders shall not be used in advertising or otherwise to promote the sale, #
# use or other dealings in this Software without prior written               #
# authorization.                                                             #
##############################################################################
#
# Author: Thomas E. Dickey, 2006-on

LANG=C;		export LANG
LANGUAGE=C;	export LANGUAGE
LC_ALL=C;	export LC_ALL
LC_CTYPE=C;	export LC_CTYPE

prefix=$(dirname $(readlink -e $0))/../../usr
exec_prefix=$(dirname $(readlink -e $0))/../../usr

bindir="${exec_prefix}/bin"
includedir="${prefix}/include"
libdir="${exec_prefix}/lib"
datarootdir="${prefix}/share"
datadir="${datarootdir}"
mandir="${datarootdir}/man"

CURSES_LIB="ncurses"
TINFO_LIB="ncurses"
RPATH_LIST="${libdir}"

# 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 [ -n "$RPATH_LIST" ]
then
	save_IFS="$IFS"
	IFS=':'
	filtered=
	for item in $RPATH_LIST
	do
		case "$item" in
		./*|../*|*/..|*/../*)
			;;
		*)
			[ -n "$filtered" ] && filtered="${filtered}:"
			filtered="${filtered}${item}"
			;;
		esac
	done
	IFS="$save_IFS"
	# if the result is empty, there is little we can do to fix it
	RPATH_LIST="$filtered"
fi

# with --disable-overwrite, we installed into a subdirectory, but transformed
# the headers to include like this:
#	<ncurses/curses.h>
if [ xyes = xno ]; then
	includesubdir="${prefix}/include/${CURSES_LIB}"
	case $includedir in
	$prefix/include/ncurses)
		includedir=`echo "$includedir" | sed -e 's,/[^/]*$,,'`
		;;
	esac
else
	includesubdir="${prefix}/include"
fi

LIBS=""
if [ "ncurses" = "ncurses" ]; then
	LIBS="-l${CURSES_LIB} $LIBS"
else
	LIBS="-l${CURSES_LIB} -l${TINFO_LIB} $LIBS"
fi

CFLAGS=" -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600"
if [ "$includesubdir" != "/usr/include" ]; then
	CFLAGS="$CFLAGS -I${includesubdir}"
	if [ "$includedir" != "/usr/include" ]; then
		[ xyes = xno ] && CFLAGS="$CFLAGS -I${includedir}"
	fi
fi

# 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   $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
		/usr/lib|/lib) # skip standard libdir
			if [ "$lib_check" = "$libdir" ]
			then
				lib_first=no
				IFS_save="$IFS"
				IFS='|'
				LIBDIRS="/usr/lib|/lib"
				for lib_check in $LIBDIRS
				do
					if [ -d "$lib_check" ]
					then
						if [ "$lib_check" = "$libdir" ]
						then
							lib_first=yes
							break
						fi
					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 /bin/bash "$0" --error

while [ $# -gt 0 ]; do
	case "$1" in
	# basic configuration
	--prefix)
		echo "$prefix"
		;;
	--exec-prefix)
		echo "$exec_prefix"
		;;
	# compile/link
	--cflags)
		OPTS=
		for opt in $CFLAGS
		do
			case "x$opt" in
			x-[fgOW]*)
				opt=
				;;
			esac
			if [ -n "$opt" ]
			then
				[ -n "$OPTS" ] && OPTS="$OPTS "
				OPTS="$OPTS$opt"
			fi
		done
		printf "%s\n" "$OPTS"
		;;
	--cflags-only-I)
		OPTS=
		for opt in $CFLAGS
		do
			case "x$opt" in
			x-[I]*)
				;;
			*)
				opt=
				;;
			esac
			if [ -n "$opt" ]
			then
				[ -n "$OPTS" ] && OPTS="$OPTS "
				OPTS="$OPTS$opt"
			fi
		done
		printf "%s\n" "$OPTS"
		;;
	--cflags-only-other)
		OPTS=
		for opt in $CFLAGS
		do
			case "x$opt" in
			x-[I]*|x-[fgOW]*)
				opt=
				;;
			esac
			if [ -n "$opt" ]
			then
				[ -n "$OPTS" ] && OPTS="$OPTS "
				OPTS="$OPTS$opt"
			fi
		done
		printf "%s\n" "$OPTS"
		;;
	--libs)
		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)
		echo "6.6.20251231"
		;;
	--abi-version)
		echo "6"
		;;
	--mouse-version)
		echo "2"
		;;
	# locations
	--bindir)
		echo "${bindir}"
		;;
	--datadir)
		echo "${datadir}"
		;;
	--includedir)
		INCS=
		if [ "xyes" = xno ]; then
			INCS="${includesubdir}"
		elif [ "${includedir}" != /usr/include ]; then
			INCS="${includedir}"
		fi
		echo "$INCS"
		;;
	--libdir)
		echo "${libdir}"
		;;
	--mandir)
		echo "${mandir}"
		;;
	--terminfo)
		echo "/usr/share/terminfo"
		;;
	--terminfo-dirs)
		echo "/usr/share/terminfo"
		;;
	--termpath)
		echo ""
		;;
	# general info
	--help)
		cat <<ENDHELP
Usage: `basename "$0"` [options]

Options:
  --prefix            echoes the package-prefix of ${CURSES_LIB}
  --exec-prefix       echoes the executable-prefix of ${CURSES_LIB}

  --cflags            echoes the C compiler flags needed to compile for ${CURSES_LIB}
  --cflags-only-I     echoes only -I C compiler flags needed with ${CURSES_LIB}
  --cflags-only-other echoes only C compiler flags other than -I for ${CURSES_LIB}
  --libs              echoes the libraries needed to link with ${CURSES_LIB}

  --libs-only-L       echoes -L linker options (search path) for ${CURSES_LIB}
  --libs-only-l       echoes -l linker options (libraries) for ${CURSES_LIB}
  --libs-only-other   echoes linker options other than -L/-l

  --version           echoes the release+patchdate version of ${CURSES_LIB}
  --abi-version       echoes the ABI version of ${CURSES_LIB}
  --mouse-version     echoes the mouse-interface version of ${CURSES_LIB}

  --bindir            echoes the directory containing ${CURSES_LIB} programs
  --datadir           echoes the directory containing ${CURSES_LIB} data
  --includedir        echoes the directory containing ${CURSES_LIB} header files
  --libdir            echoes the directory containing ${CURSES_LIB} libraries
  --mandir            echoes the directory containing ${CURSES_LIB} man pages
  --terminfo          echoes the \$TERMINFO terminfo database path
  --terminfo-dirs     echoes the \$TERMINFO_DIRS directory list
  --termpath          echoes the \$TERMPATH termcap list

  --help              prints this message
ENDHELP
		;;
	--error|*)
		/bin/bash "$0" --help 1>&2
		exit 1
		;;
	esac
	shift
done
# vi:ts=4 sw=4
# vile:shmode
