pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/mk Move the logic for testing if system curses support...
details: https://anonhg.NetBSD.org/pkgsrc/rev/ec64aa7e49f4
branches: trunk
changeset: 631510:ec64aa7e49f4
user: roy <roy%pkgsrc.org@localhost>
date: Sun Mar 09 10:15:32 2014 +0000
description:
Move the logic for testing if system curses supports the needed functions
from devel/ncurses to the mk infrastructure.
FAKE_NCURSES=yes
Provides the system curses as ncurses.h and libncurses.
USE_CURSES=wide
Links to system curses if they provide wide support, otherwise ncursesw.
wide-curses in the package options also triggers this.
diffstat:
mk/curses.buildlink3.mk | 45 ++++++++++++++++++++--
mk/curses.builtin.mk | 94 ++++++++++++++++++++++++++++++++++++++++++++++-
mk/terminfo.buildlink3.mk | 7 ++-
3 files changed, 138 insertions(+), 8 deletions(-)
diffs (255 lines):
diff -r 319447c1b642 -r ec64aa7e49f4 mk/curses.buildlink3.mk
--- a/mk/curses.buildlink3.mk Sun Mar 09 10:11:20 2014 +0000
+++ b/mk/curses.buildlink3.mk Sun Mar 09 10:15:32 2014 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: curses.buildlink3.mk,v 1.17 2010/02/07 10:28:13 roy Exp $
+# $NetBSD: curses.buildlink3.mk,v 1.18 2014/03/09 10:15:32 roy Exp $
#
# This Makefile fragment is meant to be included by packages that require
# any curses implementation instead of one particular one. The available
@@ -16,7 +16,7 @@
# system. Setting this to "curses" means that the system curses
# implementation is fine.
#
-# Possible: curses, ncurses, pdcurses
+# Possible: curses, ncurses, ncursesw, pdcurses
# Default: (depends)
#
# === Variables set by this file ===
@@ -29,10 +29,14 @@
.if !empty(CURSES_BUILDLINK3_MK:M+)
+.if !defined(USE_CURSES) && !empty(PKG_OPTIONS:Mwide-curses)
+USE_CURSES?= wide
+.endif
+
# _CURSES_PKGS is an exhaustive list of all of the curses implementations
# that may be used with curses.buildlink3.mk.
#
-_CURSES_PKGS?= curses ncurses pdcurses
+_CURSES_PKGS?= curses ncurses ncursesw pdcurses
CHECK_BUILTIN.curses:= yes
. include "curses.builtin.mk"
@@ -43,6 +47,8 @@
#
.if defined(USE_BUILTIN.curses) && !empty(USE_BUILTIN.curses:M[yY][eE][sS])
CURSES_DEFAULT?= curses
+.elif !empty(USE_CURSES:Mwide) || !empty(PKG_OPTIONS:Mwide-curses)
+CURSES_DEFAULT?= ncursesw
.else
CURSES_DEFAULT?= ncurses
.endif
@@ -51,7 +57,11 @@
.if defined(USE_BUILTIN.curses) && !empty(USE_BUILTIN.curses:M[yY][eE][sS])
_CURSES_ACCEPTED+= curses # system curses exists
.endif
+.if defined(USE_BUILTIN.cursesw) && !empty(USE_BUILTIN.cursesw:M[yY][eE][sS])
+_CURSES_ACCEPTED+= curses # system curses exists
+.endif
_CURSES_ACCEPTED+= ncurses # pkgsrc ncurses
+_CURSES_ACCEPTED+= ncursesw # pkgsrc ncursesw
_CURSES_ACCEPTED+= pdcurses # pkgsrc pdcurses
_CURSES_TYPE= ${CURSES_DEFAULT}
@@ -70,21 +80,48 @@
#
_PKG_USE_CURSES= yes
+.PHONY: buildlink-curses-ncurses-h
+buildlink-curses-ncurses-h:
+ ${RUN} \
+ src="${H_CURSES}"; \
+ dest=${BUILDLINK_DIR}"/include/ncurses.h"; \
+ if ${TEST} ! -f "$$dest" -a -f "$$src"; then \
+ ${ECHO_BUILDLINK_MSG} "Linking ${H_CURSES} -> ncurses.h.";\
+ ${MKDIR} `${DIRNAME} "$$dest"`; \
+ ${LN} -s "$$src" "$$dest"; \
+ fi
+
+
.endif # CURSES_BUILDLINK3_MK
.if ${CURSES_TYPE} == "none"
PKG_FAIL_REASON= \
"${_CURSES_TYPE} is not an acceptable curses type for ${PKGNAME}."
.elif ${CURSES_TYPE} == "curses"
+. include "curses.builtin.mk"
BUILDLINK_TREE+= curses -curses
BUILDLINK_LDADD.curses?= ${BUILDLINK_LIBNAME.curses:S/^/-l/:S/^-l$//}
-BUILDLINK_BUILTIN_MK.curses= ../../mk/curses.builtin.mk
+BUSILDLINK_BUILTIN_MK.curses= ../../mk/curses.builtin.mk
+# Some packages only look for ncurses
+# The correct action would be to write a patch and pass it upstream
+# but by setting FAKE_NCURSES=yes in the package we can temporarily work
+# around the short-coming.
+. if !empty(FAKE_NCURSES:M[yY][eE][sS])
+BUILDLINK_TARGETS+= buildlink-curses-ncurses-h
+BUILDLINK_TRANSFORM+= l:ncurses:${BUILDLINK_LIBNAME.curses}
+BUILDLINK_TRANSFORM+= l:ncursesw:${BUILDLINK_LIBNAME.curses}
+. endif
.elif ${CURSES_TYPE} == "ncurses"
USE_NCURSES= yes
. include "../../devel/ncurses/buildlink3.mk"
BUILDLINK_PREFIX.curses?= ${BUILDLINK_PREFIX.ncurses}
BUILDLINK_LIBNAME.curses?= ${BUILDLINK_LIBNAME.ncurses}
BUILDLINK_LDADD.curses?= ${BUILDLINK_LDADD.ncurses}
+.elif ${CURSES_TYPE} == "ncursesw"
+. include "../../devel/ncursesw/buildlink3.mk"
+BUILDLINK_PREFIX.curses?= ${BUILDLINK_PREFIX.ncursesw}
+BUILDLINK_LIBNAME.curses?= ${BUILDLINK_LIBNAME.ncursesw}
+BUILDLINK_LDADD.curses?= ${BUILDLINK_LDADD.ncursesw}
.elif ${CURSES_TYPE} == "pdcurses"
. include "../../devel/pdcurses/buildlink3.mk"
BUILDLINK_PREFIX.curses?= ${BUILDLINK_PREFIX.pdcurses}
diff -r 319447c1b642 -r ec64aa7e49f4 mk/curses.builtin.mk
--- a/mk/curses.builtin.mk Sun Mar 09 10:11:20 2014 +0000
+++ b/mk/curses.builtin.mk Sun Mar 09 10:15:32 2014 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: curses.builtin.mk,v 1.7 2013/11/23 09:10:14 obache Exp $
+# $NetBSD: curses.builtin.mk,v 1.8 2014/03/09 10:15:32 roy Exp $
BUILTIN_PKG:= curses
@@ -6,6 +6,34 @@
BUILTIN_FIND_HEADERS_VAR:= H_CURSES
BUILTIN_FIND_HEADERS.H_CURSES= curses.h
+BUILTIN_FIND_FILES_VAR+= H_CURSES_HALFDELAY
+BUILTIN_FIND_FILES.H_CURSES_HALFDELAY= ${BUILTIN_FIND_FILES.H_CURSES}
+BUILTIN_FIND_GREP.H_CURSES_HALFDELAY= halfdelay
+
+BUILTIN_FIND_FILES_VAR+= H_CURSES_RESIZETERM
+BUILTIN_FIND_FILES.H_CURSES_RESIZETERM= ${BUILTIN_FIND_FILES.H_CURSES}
+BUILTIN_FIND_GREP.H_CURSES_RESIZETERM= resizeterm
+
+BUILTIN_FIND_FILES_VAR+= H_CURSES_PUTWIN
+BUILTIN_FIND_FILES.H_CURSES_PUTWIN= ${BUILTIN_FIND_FILES.H_CURSES}
+BUILTIN_FIND_GREP.H_CURSES_PUTWIN= putwin
+
+BUILTIN_FIND_FILES_VAR+= H_CURSES_WA_NORMAL
+BUILTIN_FIND_FILES.H_CURSES_WA_NORMAL= ${BUILTIN_FIND_FILES.H_CURSES}
+BUILTIN_FIND_GREP.H_CURSES_WA_NORMAL= WA_NORMAL
+
+BUILTIN_FIND_FILES_VAR+= H_CURSES_WGETNSTR
+BUILTIN_FIND_FILES.H_CURSES_WGETNSTR= ${BUILTIN_FIND_FILES.H_CURSES}
+BUILTIN_FIND_GREP.H_CURSES_WGETNSTR= wgetnstr
+
+BUILTIN_FIND_FILES_VAR+= H_CURSES_WSYNCUP
+BUILTIN_FIND_FILES.H_CURSES_WSYNCUP= ${BUILTIN_FIND_FILES.H_CURSES}
+BUILTIN_FIND_GREP.H_CURSES_WSYNCUP= wsyncup
+
+BUILTIN_FIND_FILES_VAR+= H_CURSES_MVWCHGAT
+BUILTIN_FIND_FILES.H_CURSES_MVWCHGAT= ${BUILTIN_FIND_FILES.H_CURSES}
+BUILTIN_FIND_GREP.H_CURSES_MVWCHGAT= mvwchgat
+
.include "buildlink3/bsd.builtin.mk"
###
@@ -44,6 +72,68 @@
. endif
. endif # PREFER.curses
.endif
+
+# If it is set to chgat, a curses implementation with chgat(3) support
+# is considered good enough.
+.if defined(USE_CURSES) && empty(USE_CURSES:M[yY][eE][sS])
+. if !empty(USE_CURSES:Mchgat) && !empty(H_CURSES_MVWCHGAT:M__nonexistent__)
+USE_BUILTIN.curses= no
+. endif
+# same for halfdelay(3)
+. if !empty(USE_CURSES:Mhalfdelay)
+. if !empty(H_CURSES_HALFDELAY:M__nonexistent__)
+USE_BUILTIN.curses= no
+. endif
+. endif
+## same for putwin(3)
+. if !empty(USE_CURSES:Mputwin) && !empty(H_CURSES_PUTWIN:M__nonexistent__)
+USE_BUILTIN.curses= no
+. endif
+# same for resizeterm(3)
+. if !empty(USE_CURSES:Mresizeterm)
+. if !empty(H_CURSES_RESIZETERM:M__nonexistent__)
+USE_BUILTIN.curses= no
+. endif
+. endif
+## same for WA_NORMAL
+. if !empty(USE_CURSES:MWA_NORMAL)
+. if !empty(H_CURSES_WA_NORMAL:M__nonexistent__)
+USE_BUILTIN.curses= no
+. endif
+. endif
+## same for wgetnstr(3)
+. if !empty(USE_CURSES:Mwgetnstr) && !empty(H_CURSES_WGETNSTR:M__nonexistent__)
+USE_BUILTIN.curses= no
+. endif
+# same for wsyncup(3)
+. if !empty(USE_CURSES:Mwsyncup) && !empty(H_CURSES_WSYNCUP:M__nonexistent__)
+USE_BUILTIN.curses= no
+. endif
+# AFAIK there is no way of working out if a system curses library has wide
+# character support. So be safe and say no unless we know for sure.
+. if !empty(USE_CURSES:Mwide)
+. if ${OPSYS} == "NetBSD"
+. if !empty(MACHINE_PLATFORM:MNetBSD-[0-4].*-*)
+USE_BUILTIN.curses= no
+. endif
+. else
+USE_BUILTIN.curses= no
+. endif
+. endif
+.endif
+
+# Even if the package requested tests above pass,
+# some system curses just are not good enough.
+# If your system is one, add it here so a suitable
+# curses from pkgsrc can be installed.
+_INCOMPAT_CURSES?= NetBSD-0.*-* NetBSD-1.[0123]*-* \
+ NetBSD-1.4.*-* NetBSD-1.4[A-X]-*
+.for _pattern_ in ${_INCOMPAT_CURSES} ${INCOMPAT_CURSES}
+. if !empty(MACHINE_PLATFORM:M${_pattern_})
+USE_BUILTIN.curses= no
+. endif
+.endfor
+
MAKEVARS+= USE_BUILTIN.curses
# Define BUILTIN_LIBNAME.curses to be the base name of the built-in
@@ -53,6 +143,8 @@
BUILTIN_LIBNAME.curses= curses
.endif
+BUILTIN_LIBNAME.curses= curses
+
###
### The section below only applies if we are not including this file
### solely to determine whether a built-in implementation exists.
diff -r 319447c1b642 -r ec64aa7e49f4 mk/terminfo.buildlink3.mk
--- a/mk/terminfo.buildlink3.mk Sun Mar 09 10:11:20 2014 +0000
+++ b/mk/terminfo.buildlink3.mk Sun Mar 09 10:15:32 2014 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: terminfo.buildlink3.mk,v 1.4 2013/11/19 11:43:19 obache Exp $
+# $NetBSD: terminfo.buildlink3.mk,v 1.5 2014/03/09 10:15:32 roy Exp $
#
# This Makefile fragment is meant to be included by packages that require
# any terminfo implementation instead of one particular one. The available
@@ -33,7 +33,7 @@
# that may be used with terminfo.buildlink3.mk.
#
_TERMINFO_PKGS?= terminfo ncurses pdcurses
-_TERMINFO_TYPES?= terminfo tinfo
+_TERMINFO_TYPES?= terminfo tinfo curses ncurses
CHECK_BUILTIN.terminfo:= yes
. include "terminfo.builtin.mk"
@@ -73,7 +73,8 @@
#
.if empty(TERMINFO_TYPE:Mnone)
. for _tcap_ in ${_TERMINFO_TYPES}
-. if empty(TERMINFO_TYPE:M${_tcap_})
+. if empty(TERMINFO_TYPE:M${_tcap_}) \
+ && (!defined(CURSES_TYPE) || empty(CURSES_TYPE:M${_tcap_}))
BUILDLINK_TRANSFORM+= l:${_tcap_}:${BUILDLINK_LIBNAME.terminfo}
. endif
. endfor
Home |
Main Index |
Thread Index |
Old Index