pkgsrc/mk/ossaudio.buildlink3.mk
jlam 7db11b582a Fix serious bug where BUILDLINK_PACKAGES wasn't being ordered properly
by moving the inclusion of buildlink3.mk files outside of the protected
region.  This bug would be seen by users that have set PREFER_PKGSRC
or PREFER_NATIVE to non-default values.

BUILDLINK_PACKAGES should be ordered so that for any package in the
list, that package doesn't depend on any packages to the left of it
in the list.  This ordering property is used to check for builtin
packages in the correct order.  The problem was that including a
buildlink3.mk file for <pkg> correctly ensured that <pkg> was removed
from BUILDLINK_PACKAGES and appended to the end.  However, since the
inclusion of any other buildlink3.mk files within that buildlink3.mk
was in a region that was protected against multiple inclusion, those
dependencies weren't also moved to the end of BUILDLINK_PACKAGES.
2004-03-18 09:12:08 +00:00

84 lines
2.8 KiB
Makefile

# $NetBSD: ossaudio.buildlink3.mk,v 1.2 2004/03/18 09:12:13 jlam Exp $
#
# This file should be included by Makefiles for packages that use OSS.
# By checking the value of HAVE_OSS after including this file, it's possible
# to check whether audio/oss is installed, or if ossaudio OSS emulation
# should be used instead:
#
# .include "../../mk/ossaudio.buildlink3.mk"
#
# .if defined(HAVE_OSS) && (${HAVE_OSS} == "YES")
# CONFIGURE_ENV+= ac_cv_libossaudio__oss_ioctl=no
# .endif
#
OSSAUDIO_BUILDLINK3_MK:= ${OSSAUDIO_BUILDLINK3_MK}+
.include "../../mk/bsd.prefs.mk"
.if !empty(OSSAUDIO_BUILDLINK3_MK:M+)
. if defined(USE_OSS)
BUILD_DEFS+= USE_OSS
. endif
. if !defined(_HAVE_OSS)
_HAVE_OSS!= if ${PKG_INFO} -qe oss; then ${ECHO} YES; else ${ECHO} NO; fi
MAKEFLAGS+= _HAVE_OSS=${_HAVE_OSS}
. endif
HAVE_OSS?= ${_HAVE_OSS}
.endif # OSSAUDIO_BUILDLINK3_MK
.if defined(HAVE_OSS) && (${HAVE_OSS} == "YES")
. include "../../audio/oss/buildlink3.mk"
.else
BUILDLINK_PREFIX.oss= /usr
. if ${OPSYS} == "NetBSD"
LIBOSSAUDIO?= -lossaudio
DEVOSSAUDIO?= /dev/audio
DEVOSSSOUND?= /dev/sound
. elif ${OPSYS} == "Linux"
LIBOSSAUDIO?= # empty
DEVOSSAUDIO?= /dev/dsp
DEVOSSSOUND?= /dev/dsp
. else
LIBOSSAUDIO?= # empty
DEVOSSAUDIO?= /dev/audio
DEVOSSSOUND?= /dev/sound
. endif
.endif
.if !empty(OSSAUDIO_BUILDLINK3_MK:M+)
CONFIGURE_ENV+= LIBOSSAUDIO="${LIBOSSAUDIO}"
CONFIGURE_ENV+= DEVOSSAUDIO="${DEVOSSAUDIO}"
CONFIGURE_ENV+= DEVOSSSOUND="${DEVOSSSOUND}"
MAKE_ENV+= LIBOSSAUDIO="${LIBOSSAUDIO}"
MAKE_ENV+= DEVOSSAUDIO="${DEVOSSAUDIO}"
MAKE_ENV+= DEVOSSSOUND="${DEVOSSSOUND}"
BUILDLINK_TARGETS+= buildlink-ossaudio-soundcard-h
# Many programs expect <soundcard.h> to be found as <sys/soundcard.h>.
# Also include <sys/ioctl.h> prior to include <soundcard.h> since we need
# definitions for _IOWR and friends.
#
.PHONY: buildlink-ossaudio-soundcard-h
buildlink-ossaudio-soundcard-h:
${_PKG_SILENT}${_PKG_DEBUG} \
sys_soundcard_h=${BUILDLINK_DIR}/include/sys/soundcard.h; \
soundcard_h=${BUILDLINK_PREFIX.oss}/include/soundcard.h; \
if [ ! -f $${sys_soundcard_h} -a -f $${soundcard_h} ]; then \
${ECHO_BUILDLINK_MSG} "Creating $${sys_soundcard_h}."; \
${MKDIR} `${DIRNAME} $${sys_soundcard_h}`; \
( ${ECHO} "#ifndef BUILDLINK_SYS_SOUNDCARD_H"; \
${ECHO} "#define BUILDLINK_SYS_SOUNDCARD_H"; \
${ECHO} "#include <sys/ioctl.h>"; \
${ECHO} "#include <soundcard.h>"; \
${ECHO} "#endif"; \
) > $${sys_soundcard_h}; \
fi; \
mach_soundcard_h=${BUILDLINK_DIR}/include/machine/soundcard.h; \
if [ ! -f $${mach_soundcard_h} -a -f $${sys_soundcard_h} ]; then \
${ECHO_BUILDLINK_MSG} "Creating $${mach_soundcard_h}."; \
${MKDIR} `${DIRNAME} $${mach_soundcard_h}`; \
${LN} -s $${sys_soundcard_h} $${mach_soundcard_h}; \
fi
.endif # OSSAUDIO_BUILDLINK3_MK