if USE_ASSRENDER
ASSRENDER_DIR = assrender
else
ASSRENDER_DIR =
endif

if USE_VOAMRWBENC
VOAMRWBENC_DIR = voamrwbenc
else
VOAMRWBENC_DIR =
endif

if USE_APEXSINK
APEXSINK_DIR = apexsink
else
APEXSINK_DIR =
endif

# if USE_ARTS
# ARTS_DIR=arts
# else
ARTS_DIR=
# endif

# if USE_ARTSC
# ARTSC_DIR=artsd
# else
ARTSC_DIR=
# endif

# if USE_AUDIOFILE
# AUDIOFILE_DIR=audiofile
# else
AUDIOFILE_DIR=
# endif

# if USE_AUDIORESAMPLE
# AUDIORESAMPLE_DIR=audioresample
# else
AUDIORESAMPLE_DIR=
# endif

if USE_BZ2
BZ2_DIR=bz2
else
BZ2_DIR=
endif

if USE_CDAUDIO
CDAUDIO_DIR=cdaudio
else
CDAUDIO_DIR=
endif

if USE_CELT
CELT_DIR=celt
else
CELT_DIR=
endif

if USE_COG
COG_DIR=cog
else
COG_DIR=
endif

if USE_CURL
CURL_DIR=curl
else
CURL_DIR=
endif

if USE_DC1394
DC1394_DIR=dc1394
else
DC1394_DIR=
endif

if USE_DIRAC
DIRAC_DIR=dirac
else
DIRAC_DIR=
endif

if USE_DIRECTFB
DIRECTFB_DIR=directfb
else
DIRECTFB_DIR=
endif

if USE_DIVX
DIVX_DIR=divx
else
DIVX_DIR=
endif

if USE_DTS
DTS_DIR=dts
else
DTS_DIR=
endif

if USE_RESINDVD
 RESINDVD_DIR = resindvd
else
 RESINDVD_DIR =
endif

if USE_FAAC
FAAC_DIR=faac
else
FAAC_DIR=
endif

if USE_FAAD
 FAAD_DIR=faad
else
 FAAD_DIR=
endif

if USE_VOAACENC
 VOAACENC_DIR=voaacenc
else
 VOAACENC_DIR=
endif

if USE_FLITE
FLITE_DIR=flite
else
FLITE_DIR=
endif

#if USE_G729
#G729_DIR=g729
#else
G729_DIR=
#endif

if USE_GSM
GSM_DIR=gsm
else
GSM_DIR=
endif

# if USE_HERMES
# HERMES_DIR=hermes
# else
HERMES_DIR=
# endif

if USE_JP2K
JP2K_DIR = jp2k
else
JP2K_DIR =
endif

if USE_KATE
KATE_DIR=kate
else
KATE_DIR=
endif

if USE_LADSPA
LADSPA_DIR = ladspa
else
LADSPA_DIR =
endif

if USE_LV2
LV2_DIR = lv2
else
LV2_DIR =
endif

# if USE_LCS
# LCS_DIR=lcs
# else
LCS_DIR=
# endif

# if USE_LIBFAME
# LIBFAME_DIR=libfame
# else
LIBFAME_DIR=
# endif

if USE_LIBMMS
LIBMMS_DIR=libmms
else 
LIBMMS_DIR=
endif

if USE_MODPLUG
MODPLUG_DIR=modplug
else
MODPLUG_DIR=
endif

if USE_MPEG2ENC
MPEG2ENC_DIR=mpeg2enc
else
MPEG2ENC_DIR=
endif

if USE_MIMIC
MIMIC_DIR=mimic
else
MIMIC_DIR=
endif

if USE_MPLEX
MPLEX_DIR=mplex
else
MPLEX_DIR=
endif

if USE_MUSEPACK
MUSEPACK_DIR=musepack
else
MUSEPACK_DIR=
endif

if USE_MUSICBRAINZ
MUSICBRAINZ_DIR=musicbrainz
else
MUSICBRAINZ_DIR=
endif

if USE_MYTHTV
MYTHTV_DIR=mythtv
else
MYTHTV_DIR=
endif

if USE_NAS
NAS_DIR=nas
else
NAS_DIR=
endif

if USE_NEON
NEON_DIR=neon
else
NEON_DIR=
endif

if USE_OFA
OFA_DIR=ofa
else
OFA_DIR=
endif

if USE_OPENAL
OPENAL_DIR=openal
else
OPENAL_DIR=
endif

if USE_OPENCV
OPENCV_DIR=opencv
else
OPENCV_DIR=
endif

if USE_OPUS
OPUS_DIR=opus
else
OPUS_DIR=
endif

if USE_RSVG
RSVG_DIR=rsvg
else
RSVG_DIR=
endif

if USE_TIMIDITY
TIMIDITY_DIR=timidity
endif

if USE_WILDMIDI
TIMIDITY_DIR=timidity
endif

if !USE_WILDMIDI
if !USE_TIMIDITY
TIMIDITY_DIR=
endif
endif

if USE_SCHRO
SCHRO_DIR=schroedinger
else
SCHRO_DIR=
endif

if USE_SDL
SDL_DIR=sdl
else
SDL_DIR=
endif

# if USE_SHOUT
# SHOUT_DIR=shout
# else
SHOUT_DIR=
# endif

# if USE_SMOOTHWAVE
# SMOOTHWAVE_DIR=smoothwave
# else
SMOOTHWAVE_DIR=
# endif

if USE_SNDFILE
SNDFILE_DIR=sndfile
else
SNDFILE_DIR=
endif

if USE_SOUNDTOUCH
SOUNDTOUCH_DIR=soundtouch
else
SOUNDTOUCH_DIR=
endif

if USE_SPANDSP
SPANDSP_DIR = spandsp
else
SPANDSP_DIR =
endif

if USE_SPC
SPC_DIR=spc
else
SPC_DIR=
endif

if USE_GME
GME_DIR=gme
else
GME_DIR=
endif

if USE_SWFDEC
#SWFDEC_DIR=swfdec
else
SWFDEC_DIR=
endif

if USE_TELETEXTDEC
TELETEXT_DIR=teletextdec
else
TELETEXT_DIR=
endif

if USE_VP8
VP8_DIR=vp8
else
VP8_DIR=
endif

if USE_GSETTINGS
GSETTINGS_DIR=gsettings
else
GSETTINGS_DIR=
endif

if USE_XVID
XVID_DIR=xvid
else
XVID_DIR=
endif

if USE_ZBAR
ZBAR_DIR=zbar
else
ZBAR_DIR=
endif

if USE_RTMP
RTMP_DIR = rtmp
else
RTMP_DIR =
endif


SUBDIRS=\
	$(VOAACENC_DIR) \
	$(ASSRENDER_DIR) \
	$(VOAMRWBENC_DIR) \
	$(APEXSINK_DIR) \
	$(ARTS_DIR) \
	$(ARTSC_DIR) \
	$(AUDIOFILE_DIR) \
	$(AUDIORESAMPLE_DIR) \
	$(BZ2_DIR) \
	$(CDAUDIO_DIR) \
	$(CELT_DIR) \
	$(COG_DIR) \
	$(CURL_DIR) \
	$(DC1394_DIR) \
	$(DIRAC_DIR) \
	$(DIRECTFB_DIR) \
	$(DIVX_DIR) \
	$(DTS_DIR) \
	$(RESINDVD_DIR) \
	$(FAAC_DIR) \
	$(FAAD_DIR) \
	$(FLITE_DIR) \
	$(GSETTINGS_DIR) \
	$(GSM_DIR) \
	$(G729_DIR) \
	$(HERMES_DIR) \
	$(JP2K_DIR) \
	$(KATE_DIR) \
	$(LADSPA_DIR) \
	$(LV2_DIR) \
	$(LCS_DIR) \
	$(LIBFAME_DIR) \
	$(LIBMMS_DIR) \
	$(MODPLUG_DIR) \
	$(MPEG2ENC_DIR) \
	$(MIMIC_DIR) \
	$(MPLEX_DIR) \
	$(MUSEPACK_DIR) \
	$(MUSICBRAINZ_DIR) \
	$(MYTHTV_DIR) \
	$(NAS_DIR) \
	$(NEON_DIR) \
	$(OFA_DIR) \
	$(OPENAL_DIR) \
	$(OPENCV_DIR) \
	$(OPUS_DIR) \
	$(RSVG_DIR) \
	$(SCHRO_DIR) \
	$(SDL_DIR) \
	$(SHOUT_DIR) \
	$(SMOOTHWAVE_DIR) \
	$(SNDFILE_DIR) \
	$(SOUNDTOUCH_DIR) \
	$(SPANDSP_DIR) \
	$(GME_DIR) \
	$(SPC_DIR) \
	$(SWFDEC_DIR) \
	$(TELETEXTDEC_DIR) \
	$(TIMIDITY_DIR) \
	$(VP8_DIR) \
	$(XVID_DIR) \
	$(ZBAR_DIR) \
	$(RTMP_DIR)

DIST_SUBDIRS = \
	assrender \
	apexsink \
	bz2 \
	cdaudio \
	celt \
	cog \
	curl \
	dc1394 \
	dirac \
	directfb \
	faac \
	faad \
	flite \
	gsettings \
	gsm \
	ladspa \
	jp2k \
	kate \
	libmms \
	lv2 \
	dts \
	divx \
	modplug \
	mimic \
	mpeg2enc \
	mplex \
	musepack \
	musicbrainz \
	mythtv \
	nas \
	neon \
	ofa \
	openal \
	opencv \
	opus \
	rsvg \
	resindvd \
	schroedinger \
	sdl \
	sndfile \
	soundtouch \
	spandsp \
	spc \
	gme \
	swfdec \
	teletextdec \
	timidity \
	voaacenc \
	voamrwbenc \
	vp8 \
	xvid \
	zbar \
	rtmp

include $(top_srcdir)/common/parallel-subdirs.mak
