summaryrefslogtreecommitdiff
path: root/mk/dlopen.builtin.mk
diff options
context:
space:
mode:
authorjlam <jlam>2004-11-26 07:05:19 +0000
committerjlam <jlam>2004-11-26 07:05:19 +0000
commit670ad77d92d70d9f271b3b5f518ae4645ce9a984 (patch)
treee90c32f5bfe7fcc686d323ddfdc28bb7e004e5a4 /mk/dlopen.builtin.mk
parent5fa01ba7b488d562f07ed410f5a5c9edea861d06 (diff)
downloadpkgsrc-670ad77d92d70d9f271b3b5f518ae4645ce9a984.tar.gz
Split dlopen.buildlink3.mk into two files: dlopen.buildlink3.mk, which
is included by packages that use dlopen(), and dlopen.builtin.mk, which checks for the presence of built-in dl*() functions. On Darwin, including dlopen.buildlink3.mk will cause the devel/dlcompat package to be used if the base system lacks a dlcompat library.
Diffstat (limited to 'mk/dlopen.builtin.mk')
-rw-r--r--mk/dlopen.builtin.mk79
1 files changed, 79 insertions, 0 deletions
diff --git a/mk/dlopen.builtin.mk b/mk/dlopen.builtin.mk
new file mode 100644
index 00000000000..09600d6b6d2
--- /dev/null
+++ b/mk/dlopen.builtin.mk
@@ -0,0 +1,79 @@
+# $NetBSD: dlopen.builtin.mk,v 1.1 2004/11/26 07:05:19 jlam Exp $
+
+.for _lib_ in dl
+. if !defined(_BLNK_LIB_FOUND.${_lib_})
+_BLNK_LIB_FOUND.${_lib_}!= \
+ if ${TEST} "`${ECHO} /usr/lib/lib${_lib_}.*`" = "/usr/lib/lib${_lib_}.*"; then \
+ ${ECHO} "no"; \
+ elif ${TEST} "`${ECHO} /lib/lib${_lib_}.*`" = "/lib/lib${_lib_}.*"; then \
+ ${ECHO} "no"; \
+ else \
+ ${ECHO} "yes"; \
+ fi
+BUILDLINK_VARS+= _BLNK_LIB_FOUND.${_lib_}
+. endif
+.endfor
+.undef _lib_
+
+.if !defined(IS_BUILTIN.dl)
+IS_BUILTIN.dl= no
+. if exists(/usr/include/dlfcn.h)
+IS_BUILTIN.dl= yes
+. endif
+BUILDLINK_VARS+= IS_BUILTIN.dl
+.endif # IS_BUILTIN.pthread
+
+.if !defined(USE_BUILTIN.dl)
+USE_BUILTIN.dl= ${IS_BUILTIN.dl}
+. if ${OPSYS} == "Darwin"
+USE_BUILTIN.dl= no # Darwin uses devel/dlcompat
+. endif
+.endif
+
+CHECK_BUILTIN.dl?= no
+.if !empty(CHECK_BUILTIN.dl:M[nN][oO])
+
+. if !empty(USE_BUILTIN.dl:M[yY][eE][sS])
+BUILDLINK_PREFIX.dl= /usr
+. if !empty(_BLNK_LIB_FOUND.dl:M[yY][eE][sS])
+BUILDLINK_LIBS.dl= -ldl
+. endif
+#
+# The following platforms require pthreads to be linked into the
+# application if it uses dlopen() or else the applications will core
+# dump when they dlopen a shared module that _is_ linked with pthread
+# support.
+#
+_DLOPEN_REQUIRE_PTHREAD_PLATFORMS= \
+ NetBSD-2.[0-9]-* NetBSD-2.[0-8][0-9]*-* NetBSD-2.9[0-8]*-* \
+ NetBSD-2.99.[0-9]-* NetBSD-2.99.10-*
+
+_DLOPEN_REQUIRE_PTHREADS?= no
+. for _pattern_ in ${_DLOPEN_REQUIRE_PTHREAD_PLATFORMS}
+. if !empty(MACHINE_PLATFORM:M${_pattern_})
+. if !empty(PREFER_NATIVE_PTHREADS:M[yY][eE][sS])
+_DLOPEN_REQUIRE_PTHREADS= yes
+. endif
+. endif
+. endfor
+#
+# DLOPEN_REQUIRE_PTHREADS is a user- and package-settable yes/no variable
+# whose value decides whether pthread.buildlink3.mk is automatically
+# included or not. Its default value depends on whether native
+# pthreads exist.
+#
+# Including pthread.buildlink3.mk is deferred until bsd.pkg.mk.
+#
+. if defined(DLOPEN_REQUIRE_PTHREADS)
+_DLOPEN_REQUIRE_PTHREADS:= ${DLOPEN_REQUIRE_PTHREADS}
+. else
+DLOPEN_REQUIRE_PTHREADS= ${_DLOPEN_REQUIRE_PTHREADS}
+. endif
+. if !empty(_DLOPEN_REQUIRE_PTHREADS:M[yY][eE][sS])
+BUILDLINK_CFLAGS.dl+= ${PTHREAD_CFLAGS}
+BUILDLINK_LDFLAGS.dl+= ${PTHREAD_LDFLAGS}
+BUILDLINK_LIBS.dl+= ${PTHREAD_LIBS}
+. endif
+. endif # USE_BUILTIN.dl == yes
+
+.endif # CHECK_BUILTIN.dl