summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorjlam <jlam>2008-02-27 04:47:02 +0000
committerjlam <jlam>2008-02-27 04:47:02 +0000
commitbc7b9de0ba3c83b4f8e35e422e18aded2129e5a7 (patch)
tree56928d0e8dbf992555dfd701e1f90d6e512a5196 /mk
parent6b0a3f74233d319872c9ee41969988a261ac65f9 (diff)
downloadpkgsrc-bc7b9de0ba3c83b4f8e35e422e18aded2129e5a7.tar.gz
+ The termlib.buildlink3.mk file is meant to be included by packages
that need basic termlib functionality, i.e. tgetent(), tgoto(), tputs(), etc. Together with the termlib.builtin.mk file, they will use either a built-in termcap library, a built-in X/Open "enhanced" curses library, or ncurses to provide these functions. + Add BUILDLINK_LIBNAME.* definitions to the various curses buildlink3.mk and builtin.mk files that give the "base" library name of the curses library, e.g. curses, ncurses, etc. These are used by the termlib files to set BUILDLINK_LIBNAME.termlib.
Diffstat (limited to 'mk')
-rw-r--r--mk/curses.buildlink3.mk4
-rw-r--r--mk/curses.builtin.mk5
-rw-r--r--mk/termlib.buildlink3.mk48
-rw-r--r--mk/termlib.builtin.mk44
4 files changed, 98 insertions, 3 deletions
diff --git a/mk/curses.buildlink3.mk b/mk/curses.buildlink3.mk
index 673dc05305a..84a4c8116dd 100644
--- a/mk/curses.buildlink3.mk
+++ b/mk/curses.buildlink3.mk
@@ -1,4 +1,4 @@
-# $NetBSD: curses.buildlink3.mk,v 1.7 2008/02/27 02:26:07 jlam Exp $
+# $NetBSD: curses.buildlink3.mk,v 1.8 2008/02/27 04:47:02 jlam Exp $
#
# This Makefile fragment is meant to be included by packages that require
# any curses implementation instead of one particular one. The available
@@ -91,8 +91,10 @@ BUILDLINK_BUILTIN_MK.curses= ../../mk/curses.builtin.mk
.elif ${CURSES_TYPE} == "ncurses"
USE_NCURSES= yes
. include "../../devel/ncurses/buildlink3.mk"
+BUILDLINK_LIBNAME.curses?= ${BUILDLINK_LIBNAME.ncurses}
BUILDLINK_LDADD.curses?= ${BUILDLINK_LDADD.ncurses}
.elif ${CURSES_TYPE} == "pdcurses"
. include "../../devel/pdcurses/buildlink3.mk"
+BUILDLINK_LIBNAME.curses?= ${BUILDLINK_LIBNAME.pdcurses}
BUILDLINK_LDADD.curses?= ${BUILDLINK_LDADD.pdcurses}
.endif
diff --git a/mk/curses.builtin.mk b/mk/curses.builtin.mk
index 8e4a67a94db..e35b4ee4da3 100644
--- a/mk/curses.builtin.mk
+++ b/mk/curses.builtin.mk
@@ -1,4 +1,4 @@
-# $NetBSD: curses.builtin.mk,v 1.2 2008/02/27 02:26:07 jlam Exp $
+# $NetBSD: curses.builtin.mk,v 1.3 2008/02/27 04:47:02 jlam Exp $
BUILTIN_PKG:= curses
@@ -58,7 +58,8 @@ CHECK_BUILTIN.curses?= no
BUILDLINK_INCDIRS.curses?= ${H_CURSES:H:S/^${BUILDLINK_PREFIX.curses}\///}
. endif
. if !empty(BUILTIN_LIB_FOUND.curses:M[yY][eE][sS])
-BUILDLINK_LDADD.curses?= -lcurses
+BUILDLINK_LIBNAME.curses= curses
+BUILDLINK_LDADD.curses?= -l${BUILDLINK_LIBNAME.curses}
. endif
. endif
diff --git a/mk/termlib.buildlink3.mk b/mk/termlib.buildlink3.mk
new file mode 100644
index 00000000000..352e1512c48
--- /dev/null
+++ b/mk/termlib.buildlink3.mk
@@ -0,0 +1,48 @@
+# $NetBSD: termlib.buildlink3.mk,v 1.1 2008/02/27 04:47:02 jlam Exp $
+#
+# This Makefile fragment is meant to be included by packages that require
+# a basic termlib implementation.
+#
+# === Variables set by this file ===
+#
+# TERMLIB_TYPE
+# The name of the selected termlib implementation.
+
+TERMLIB_BUILDLINK3_MK:= ${TERMLIB_BUILDLINK3_MK}+
+
+.include "bsd.fast.prefs.mk"
+
+.if !empty(TERMLIB_BUILDLINK3_MK:M+)
+
+CHECK_BUILTIN.termlib:= yes
+. include "termlib.builtin.mk"
+CHECK_BUILTIN.termlib:= no
+
+. if !empty(USE_BUILTIN.termlib:M[yY][eE][sS])
+. if defined(BUILTIN_LIBNAME.termlib)
+TERMLIB_TYPE= ${BUILTIN_LIBNAME.termlib}
+. else
+TERMLIB_TYPE= none
+. endif
+. else
+TERMLIB_TYPE= curses
+. endif
+
+BUILD_DEFS+= TERMLIB_TYPE
+
+.endif # TERMLIB_BUILDLINK3_MK
+
+.if ${TERMLIB_TYPE} == "none"
+PKG_FAIL_REASON= "No usable terminal library found on the system."
+.elif (${TERMLIB_TYPE} == "termcap")
+BUILDLINK_PACKAGES:= ${BUILDLINK_PACKAGES:Ntermlib}
+BUILDLINK_PACKAGES+= termlib
+BUILDLINK_ORDER:= ${BUILDLINK_ORDER} ${BUILDLINK_DEPTH}termlib
+BUILDLINK_LIBNAME.termlib?= termcap
+BUILDLINK_LDADD.termlib?= -l${BUILDLINK_LIBNAME.termlib}
+BUILDLINK_BUILTIN_MK.termlib= ../../mk/termlib.builtin.mk
+.elif ${TERMLIB_TYPE} == "curses"
+. include "../../mk/curses.buildlink3.mk"
+BUILDLINK_LIBNAME.termlib?= ${BUILDLINK_LIBNAME.curses}
+BUILDLINK_LDADD.termlib?= ${BUILDLINK_LDADD.curses}
+.endif
diff --git a/mk/termlib.builtin.mk b/mk/termlib.builtin.mk
new file mode 100644
index 00000000000..5af985bd75d
--- /dev/null
+++ b/mk/termlib.builtin.mk
@@ -0,0 +1,44 @@
+# $NetBSD: termlib.builtin.mk,v 1.1 2008/02/27 04:47:02 jlam Exp $
+
+BUILTIN_PKG:= termlib
+
+BUILTIN_FIND_LIBS:= termcap curses
+
+.include "buildlink3/bsd.builtin.mk"
+
+###
+### Determine if there is a built-in implementation of the package and
+### set IS_BUILTIN.<pkg> appropriately ("yes" or "no").
+###
+.if !defined(IS_BUILTIN.termlib)
+IS_BUILTIN.termlib= no
+. if !empty(BUILTIN_LIB_FOUND.termcap:M[yY][eE][sS]) || \
+ !empty(BUILTIN_LIB_FOUND.curses:M[yY][eE][sS])
+IS_BUILTIN.termlib= yes
+. endif
+.endif
+MAKEVARS+= IS_BUILTIN.termlib
+
+###
+### Determine whether we should use the built-in implementation if it
+### exists, and set USE_BUILTIN.<pkg> appropriate ("yes" or "no").
+###
+.if !defined(USE_BUILTIN.termlib)
+. if ${PREFER.termlib} == "pkgsrc"
+USE_BUILTIN.termlib= no
+. else
+USE_BUILTIN.termlib= ${IS_BUILTIN.termlib}
+. endif # PREFER.termlib
+.endif
+MAKEVARS+= USE_BUILTIN.termlib
+
+# Define BUILTIN_LIBNAME.termlib to be the built-in terminal library
+# only if we're using the built-in termlib.
+#
+.if !empty(USE_BUILTIN.termlib:M[yY][eE][sS])
+. if !empty(BUILTIN_LIB_FOUND.termcap:M[yY][eE][sS])
+BUILTIN_LIBNAME.termlib= termcap
+. elif !empty(BUILTIN_LIB_FOUND.curses:M[yY][eE][sS])
+BUILTIN_LIBNAME.termlib= curses
+. endif
+.endif