pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/mk (1) Split out the native (built-in) pthread detecti...
details: https://anonhg.NetBSD.org/pkgsrc/rev/81d9c5f96512
branches: trunk
changeset: 483428:81d9c5f96512
user: jlam <jlam%pkgsrc.org@localhost>
date: Fri Nov 12 05:20:01 2004 +0000
description:
(1) Split out the native (built-in) pthread detection in
pthread.buildlink3.mk into a separate file, pthread.builtin.mk,
that is handled using the usual builtin.mk logic.
(2) If pthread.buildlink3.mk is included by a package Makefile, then
automatically add the necessary compiler and linker flags to
compile and link pthread-enabled/reentrant code. For native
pthreads, this means passing -pthread to the compiler and linker.
For the userland pthread replacement, we pass -D_REENTRANT and
-lpthread instead.
(3) Add PTHREAD_{CFLAGS,LDFLAGS,LIBS} in both CONFIGURE_ENV and MAKE_ENV
when pthread.buildlink3.mk is included so that the configure and
build processes can use these values. Remove these definitions
from bsd.pkg.mk since PTHREAD_* variables are all declared within
pthread.buildlink3.mk.
XXX For now, PTHREAD_LDFLAGS is a superset of PTHREAD_LIBS until
XXX packages that use use PTHREAD_LDFLAGS can be fixed.
diffstat:
mk/bsd.pkg.mk | 6 +---
mk/pthread.buildlink3.mk | 71 ++++++++++++++++-----------------------------
mk/pthread.builtin.mk | 74 ++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 101 insertions(+), 50 deletions(-)
diffs (207 lines):
diff -r 30f4b40760f0 -r 81d9c5f96512 mk/bsd.pkg.mk
--- a/mk/bsd.pkg.mk Fri Nov 12 05:02:41 2004 +0000
+++ b/mk/bsd.pkg.mk Fri Nov 12 05:20:01 2004 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.pkg.mk,v 1.1534 2004/11/12 02:05:20 tv Exp $
+# $NetBSD: bsd.pkg.mk,v 1.1535 2004/11/12 05:20:01 jlam Exp $
#
# This file is in the public domain.
#
@@ -475,10 +475,6 @@
MAKE_ENV+= CXXFLAGS="${CXXFLAGS}"
.endif
-# export the flags needed to compile and link pthreaded code
-MAKE_ENV+= PTHREAD_CFLAGS="${PTHREAD_CFLAGS}"
-MAKE_ENV+= PTHREAD_LDFLAGS="${PTHREAD_LDFLAGS}"
-
TOUCH_FLAGS?= -f
# determine if we need a working patch(1).
diff -r 30f4b40760f0 -r 81d9c5f96512 mk/pthread.buildlink3.mk
--- a/mk/pthread.buildlink3.mk Fri Nov 12 05:02:41 2004 +0000
+++ b/mk/pthread.buildlink3.mk Fri Nov 12 05:20:01 2004 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: pthread.buildlink3.mk,v 1.13 2004/11/10 18:46:07 jlam Exp $
+# $NetBSD: pthread.buildlink3.mk,v 1.14 2004/11/12 05:20:01 jlam Exp $
#
# The pthreads strategy for pkgsrc is to "bless" a particular pthread
# package as the Official Pthread Replacement (OPR). A package that uses
@@ -118,7 +118,8 @@
#
.undef PTHREAD_TYPE
PREFER_NATIVE_PTHREADS?= YES
-.if exists(/usr/include/pthread.h) && ${PREFER_NATIVE_PTHREADS} == "YES"
+.if exists(/usr/include/pthread.h) && \
+ !empty(PREFER_NATIVE_PTHREADS:M[yY][eE][sS])
PTHREAD_TYPE= native
.else
. if !empty(PTHREAD_OPTS:Mnative)
@@ -141,52 +142,22 @@
.endif
.if ${PTHREAD_TYPE} == "native"
-#
-# Link the native pthread libraries and headers into ${BUILDLINK_DIR}.
-#
-BUILDLINK_PREFIX.pthread= /usr
-BUILDLINK_LDFLAGS.pthread= # empty
-
-# only pass -pthread on platforms known to support it.
-. if ${OPSYS} == "FreeBSD" || ${OPSYS} == "Linux" || ${OPSYS} == "NetBSD"
-BUILDLINK_CFLAGS.pthread= -pthread
-. else
-BUILDLINK_CFLAGS.pthread= # empty
-. endif
-
-#
-# Handle systems which have pthreads functions in libc_r such as
-# FreeBSD 5.x, or fall back to libc if we don't find libc_r.
-#
-. if exists(/usr/lib/libpthread.so) || exists(/lib/libpthread.so)
-BUILDLINK_LDADD.pthread= -lpthread
-. elif exists(/usr/lib/libc_r.so)
-BUILDLINK_LDADD.pthread= -lc_r
-# In OpenBSD there is no libpthread.so, just libpthread.so.X.X.
-. elif ${OPSYS} == "OpenBSD"
-_CHECK_LIBPTH!= \
- if ${TEST} -f /usr/lib/libpthread.so.*; then \
- ${ECHO} "yes"; \
- else \
- ${ECHO} "no"; \
- fi
-. if ${_CHECK_LIBPTH} == "yes"
-BUILDLINK_LDADD.pthread= -lpthread
-. endif
-. else
-BUILDLINK_LDADD.pthread= # empty
-. endif
-
+BUILDLINK_PACKAGES:= ${BUILDLINK_PACKAGES:Npthread}
+BUILDLINK_PACKAGES+= pthread
+BUILDLINK_BUILTIN_MK.pthread= ../../mk/pthread.builtin.mk
.elif ${PTHREAD_TYPE} == "${_PKG_PTHREAD}"
. if exists(${_PKG_PTHREAD_BUILDLINK3_MK})
. if !empty(_PKG_PTHREAD_DEPENDS)
BUILDLINK_DEPENDS.${_PKG_PTHREAD}+= ${_PKG_PTHREAD_DEPENDS}
. endif
-BUILDLINK_PREFIX.pthread= ${BUILDLINK_PREFIX.${_PKG_PTHREAD}}
-BUILDLINK_CFLAGS.pthread= ${BUILDLINK_CFLAGS.${_PKG_PTHREAD}}
-BUILDLINK_LDFLAGS.pthread= ${BUILDLINK_LDFLAGS.${_PKG_PTHREAD}}
-BUILDLINK_LDADD.pthread= -lpthread
. include "${_PKG_PTHREAD_BUILDLINK3_MK}"
+BUILDLINK_PREFIX.pthread= ${BUILDLINK_PREFIX.${_PKG_PTHREAD}}
+BUILDLINK_CFLAGS.pthread= ${BUILDLINK_CFLAGS.${_PKG_PTHREAD}}
+BUILDLINK_CPPFLAGS.${_PKG_PTHREAD}?= -D_REENTRANT
+BUILDLINK_CPPFLAGS.pthread= ${BUILDLINK_CPPFLAGS.${_PKG_PTHREAD}}
+BUILDLINK_LDFLAGS.pthread= ${BUILDLINK_LDFLAGS.${_PKG_PTHREAD}}
+BUILDLINK_LIBS.${_PKG_PTHREAD}?= -lpthread
+BUILDLINK_LIBS.pthread= ${BUILDLINK_LIBS.${_PKG_PTHREAD}}
. else
PKG_SKIP_REASON= "${PKGNAME} needs pthreads, but ${_PKG_PTHREAD_BUILDLINK3_MK} is missing."
. endif
@@ -194,13 +165,23 @@
.if !empty(PTHREAD_BUILDLINK3_MK:M+)
#
-# Define user-visible PTHREAD_CFLAGS and PTHREAD_LDFLAGS as compiler
-# options used to compile/link pthreaded code.
+# Define user-visible PTHREAD_{CFLAGS,LDFLAGS,LIBS} as compiler options
+# used to compile/link pthreaded code.
#
PTHREAD_CFLAGS= ${BUILDLINK_CFLAGS.pthread}
-PTHREAD_LDFLAGS= ${BUILDLINK_LDFLAGS.pthread} ${BUILDLINK_LDADD.pthread}
+PTHREAD_CFLAGS+= ${BUILDLINK_CPPFLAGS.pthread}
+PTHREAD_LDFLAGS= ${BUILDLINK_LDFLAGS.pthread}
+PTHREAD_LDFLAGS+= ${PTHREAD_LIBS} # XXX This should be removed!
+PTHREAD_LIBS= ${BUILDLINK_LIBS.pthread}
+CONFIGURE_ENV+= PTHREAD_CFLAGS="${PTHREAD_CFLAGS}"
+CONFIGURE_ENV+= PTHREAD_LDFLAGS="${PTHREAD_LDFLAGS}"
+CONFIGURE_ENV+= PTHREAD_LIBS="${PTHREAD_LIBS}"
+MAKE_ENV+= PTHREAD_CFLAGS="${PTHREAD_CFLAGS}"
+MAKE_ENV+= PTHREAD_LDFLAGS="${PTHREAD_LDFLAGS}"
+MAKE_ENV+= PTHREAD_LIBS="${PTHREAD_LIBS}"
PTHREADBASE= ${BUILDLINK_PREFIX.pthread}
CONFIGURE_ENV+= PTHREADBASE=${PTHREADBASE}
MAKE_ENV+= PTHREADBASE=${PTHREADBASE}
+
.endif # PTHREAD_BUILDLINK3_MK
diff -r 30f4b40760f0 -r 81d9c5f96512 mk/pthread.builtin.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mk/pthread.builtin.mk Fri Nov 12 05:20:01 2004 +0000
@@ -0,0 +1,74 @@
+# $NetBSD: pthread.builtin.mk,v 1.1 2004/11/12 05:20:02 jlam Exp $
+
+.if !defined(_BLNK_LIBPTHREAD_FOUND)
+_BLNK_LIBPTHREAD_FOUND!= \
+ if ${TEST} "`${ECHO} /usr/lib/libpthread.*`" = "/usr/lib/libpthread.*"; then \
+ ${ECHO} "no"; \
+ elif ${TEST} "`${ECHO} /lib/libpthread.*`" = "/lib/libpthread.*"; then \
+ ${ECHO} "no"; \
+ else \
+ ${ECHO} "yes"; \
+ fi
+BUILDLINK_VARS+= _BLNK_LIBPTHREAD_FOUND
+.endif
+.if !defined(_BLNK_LIBC_R_FOUND)
+_BLNK_LIBC_R_FOUND!= \
+ if ${TEST} "`${ECHO} /usr/lib/libc_r.*`" = "/usr/lib/libc_r.*"; then \
+ ${ECHO} "no"; \
+ else \
+ ${ECHO} "yes"; \
+ fi
+BUILDLINK_VARS+= _BLNK_LIBC_R_FOUND
+.endif
+
+.if !defined(IS_BUILTIN.pthread)
+IS_BUILTIN.pthread= no
+. if exists(/usr/include/pthread.h)
+IS_BUILTIN.pthread= yes
+. endif
+BUILDLINK_VARS+= IS_BUILTIN.pthread
+.endif # IS_BUILTIN.pthread
+
+# We ignore the value of PREFER_PKGSRC and PREFER_NATIVE. Whether we
+# prefer one or the other is dependent on the value of
+# PREFER_NATIVE_PTHREADS, which is yes/no.
+#
+.if !empty(PREFER_NATIVE_PTHREADS:M[yY][eE][sS])
+USE_BUILTIN.pthread= ${IS_BUILTIN.pthread}
+.else
+USE_BUILTIN.pthread= no
+.endif
+
+CHECK_BUILTIN.pthread?= no
+.if !empty(CHECK_BUILTIN.pthread:M[nN][oO])
+
+.if !empty(USE_BUILTIN.pthread:M[yY][eE][sS])
+BUILDLINK_PREFIX.pthread= /usr
+BUILDLINK_LDFLAGS.pthread= # empty
+
+# only pass -pthread on platforms known to support it.
+# XXX
+# XXX This should really be a check for GCC!
+# XXX
+. if ${OPSYS} == "FreeBSD" || ${OPSYS} == "Linux" || ${OPSYS} == "NetBSD"
+BUILDLINK_CFLAGS.pthread+= -pthread
+BUILDLINK_LDFLAGS.pthread+= -pthread
+. else
+BUILDLINK_CPPFLAGS.pthread+= -D_REENTRANT
+. endif
+
+# Handle systems which have pthreads functions in libc_r such as
+# FreeBSD 5.x, or fall back to libc if we don't find libc_r.
+#
+. if ${OPSYS} == "NetBSD"
+BUILDLINK_LIBS.pthread= # empty
+. elif !empty(_BLNK_LIBPTHREAD_FOUND:M[yY][eE][sS])
+BUILDLINK_LIBS.pthread= -lpthread
+. elif !empty(_BLNK_LIBC_R_FOUND:M[yY][eE][sS])
+BUILDLINK_LIBS.pthread= -lc_r
+. else
+BUILDLINK_LIBS.pthread= # empty
+. endif
+.endif # USE_BUILTIN.pthread
+
+.endif # CHECK_BUILTIN.pthread
Home |
Main Index |
Thread Index |
Old Index