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