AUTOGENERATED_MAKEFILES=@OUTPUT_FILES@
BIN_DIRS=	\
	guilib \
	guilib/common \
	guilib/tinyXML \
	xbmc \
	xbmc/addons \
	xbmc/cdrip \
	xbmc/cores \
	xbmc/cores/DllLoader \
	xbmc/cores/DllLoader/exports \
	xbmc/cores/DllLoader/exports/util \
	xbmc/cores/dvdplayer \
	xbmc/cores/dvdplayer/DVDCodecs \
	xbmc/cores/dvdplayer/DVDCodecs/Audio \
	xbmc/cores/dvdplayer/DVDCodecs/Overlay \
	xbmc/cores/dvdplayer/DVDCodecs/Video \
	xbmc/cores/dvdplayer/DVDCodecs/Video/CrystalHD \
	xbmc/cores/dvdplayer/DVDDemuxers/ \
	xbmc/cores/dvdplayer/DVDInputStreams/ \
	xbmc/cores/dvdplayer/DVDSubtitles/ \
	xbmc/cores/paplayer \
	xbmc/cores/AudioRenderers \
	xbmc/cores/VideoRenderers \
	xbmc/cores/VideoRenderers/VideoShaders \
	xbmc/cores/ExternalPlayer \
	xbmc/cores/playercorefactory \
	xbmc/FileSystem \
	xbmc/FileSystem/MusicDatabaseDirectory \
	xbmc/FileSystem/VideoDatabaseDirectory \
	xbmc/karaoke \
	xbmc/lib/cmyth/libcmyth \
	xbmc/lib/cmyth/librefmem \
	xbmc/lib/libhts \
	xbmc/lib/libjsonrpc \
	xbmc/lib/libhttpapi \
	xbmc/lib/libPython \
	xbmc/lib/libPython/xbmcmodule \
	xbmc/lib/libRTMP \
	xbmc/lib/libRTV \
	xbmc/lib/libscrobbler \
	xbmc/lib/libshout \
	xbmc/lib/libUPnP \
	xbmc/lib/libXBMS \
	xbmc/lib/libXDAAP \
	xbmc/lib/sqLite \
	xbmc/lib/UnrarXLib \
	xbmc/lib/libsquish \
	xbmc/visualizations \
	xbmc/screensavers \
	xbmc/utils \
	xbmc/settings \
	xbmc/linux \
	xbmc/osx \
	xbmc/posix

EC_DIRS= \
	tools/EventClients

XBMCTEX_DIRS= \
	tools/TexturePacker

DVDPCODECS_DIRS= \
	xbmc/cores/dvdplayer/Codecs \
	xbmc/cores/dvdplayer/Codecs/libdvd \
	xbmc/cores/dvdplayer/Codecs/libbdnav
ifneq (@USE_EXTERNAL_LIBASS@,1)
  DVDPCODECS_DIRS+=xbmc/lib/libass/xbmc
endif

PAPCODECS_DIRS= \
	xbmc/cores/paplayer/AC3Codec \
	xbmc/cores/paplayer/ADPCMCodec \
	xbmc/cores/paplayer/NSFCodec \
	xbmc/cores/paplayer/timidity \
	xbmc/cores/paplayer/SIDCodec \
	xbmc/cores/paplayer/GYMCodec \
	xbmc/cores/paplayer/YMCodec/StSoundLibrary \
	xbmc/cores/paplayer/SPCCodec/SNES/SNESAPU \
	xbmc/cores/paplayer/vgmstream \

ifeq (@USE_ASAP_CODEC@,1)
PAPCODEC_DIRS+= \
	xbmc/cores/paplayer/asap
endif

ifeq ($(findstring osx,$(ARCH)),osx)
PAPCODEC_DIRS+= \
	xbmc/cores/paplayer/FLACCodec
endif

LIB_DIRS=\
	xbmc/lib/cximage-6.0 \
	xbmc/lib/libexif \
	xbmc/lib/libhdhomerun \
	xbmc/lib/libid3tag \
	xbmc/lib/libapetag \
	xbmc/lib/libPython/linux \
	lib/cpluff \
	lib/libmodplug \
	lib/xbmc-dll-symbols \
	lib/jsoncpp/jsoncpp/src/lib_json

SS_DIRS=\
	xbmc/screensavers/rsxs-0.9/xbmc

VIS_DIRS=\
	xbmc/visualizations/OpenGLSpectrum \
	xbmc/visualizations/WaveForm \
	xbmc/visualizations/XBMCProjectM
ifeq ($(findstring osx,$(ARCH)), osx)
VIS_DIRS+=xbmc/visualizations/iTunes
endif
ifneq (@BUILD_GOOM@,1)
VIS_DIRS+=xbmc/visualizations/Goom
endif

CONFLUENCE_MEDIA=addons/skin.confluence/media
PM3HD_MEDIA=addons/skin.pm3-hd/media

SKIN_DIRS=\
	$(CONFLUENCE_MEDIA) \
	$(PM3HD_MEDIA)

DIRS= $(BIN_DIRS) $(EC_DIRS) $(XBMCTEX_DIRS) $(DVDPCODECS_DIRS) $(PAPCODECS_DIRS) \
	$(LIB_DIRS) $(SS_DIRS) $(VIS_DIRS) $(SKIN_DIRS)

LIBS=@LIBS@
CFLAGS=@CFLAGS@
CXXFLAGS=@CXXFLAGS@
LDFLAGS=@LDFLAGS@
INCLUDES=@INCLUDES@

CLEAN_FILES=xbmc.bin xbmc-xrandr

DISTCLEAN_FILES=config.h config.log config.status tools/Linux/xbmc.sh \
        autom4te.cache config.h.in~ \
        xbmc/lib/libPython/Python/Include/pyconfig.h \
        xbmc/lib/libPython/Python/configure.lineno \
        xbmc/lib/libPython/Python/libpython2.4.so.1.0

all : Makefile externals xbmc.bin xbmc-xrandr skins

include Makefile.include

.PHONY : dllloader exports visualizations screensavers eventclients papcodecs \
	dvdpcodecs imagelib codecs externals force skins

# hack targets to keep build system up to date
Makefile : configure $(addsuffix .in, $(AUTOGENERATED_MAKEFILES))
	@echo 'The build system is stale'
	@echo 'ATTN: Please (re)run configure...'
	@echo "The following line isn't really an error!"
	@false

configure: configure.in
	@echo 'configure is outdated, regenerating...'
	@./bootstrap
	@echo "The following line isn't really an error!"
	@false

# skin textures
skins: tools/TexturePacker/TexturePacker force
	 $(MAKE) -C $(CONFLUENCE_MEDIA)
	 $(MAKE) -C $(PM3HD_MEDIA)

guilib/guilib.a: force
	$(MAKE) -C guilib
guilib/common/gui_common.a: force
	$(MAKE) -C guilib/common
guilib/tinyXML/tinyxml.a: force
	$(MAKE) -C guilib/tinyXML
xbmc/xbmc.a: force
	$(MAKE) -C xbmc
xbmc/cdrip/cdrip.a: force
	$(MAKE) -C xbmc/cdrip
xbmc/cores/cores.a: force
	$(MAKE) -C xbmc/cores
xbmc/cores/DllLoader/dllloader.a: force
	$(MAKE) -C xbmc/cores/DllLoader/
xbmc/cores/DllLoader/exports/exports.a: force
	$(MAKE) -C xbmc/cores/DllLoader/exports
xbmc/cores/DllLoader/exports/util/exports_utils.a: force
	$(MAKE) -C xbmc/cores/DllLoader/exports/util
xbmc/cores/dvdplayer/DVDPlayer.a: force
	$(MAKE) -C xbmc/cores/dvdplayer
xbmc/cores/dvdplayer/DVDCodecs/DVDCodecs.a: force
	$(MAKE) -C xbmc/cores/dvdplayer/DVDCodecs
xbmc/cores/dvdplayer/DVDCodecs/Audio/Audio.a: force
	$(MAKE) -C xbmc/cores/dvdplayer/DVDCodecs/Audio
xbmc/cores/dvdplayer/DVDCodecs/Overlay/Overlay.a: force
	$(MAKE) -C xbmc/cores/dvdplayer/DVDCodecs/Overlay
xbmc/cores/dvdplayer/DVDCodecs/Video/Video.a: force
	$(MAKE) -C xbmc/cores/dvdplayer/DVDCodecs/Video
xbmc/cores/dvdplayer/DVDCodecs/Video/CrystalHD/CrystalHD.a: force
	$(MAKE) -C xbmc/cores/dvdplayer/DVDCodecs/Video/CrystalHD
xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxers.a: force
	$(MAKE) -C xbmc/cores/dvdplayer/DVDDemuxers
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreams.a: force
	$(MAKE) -C xbmc/cores/dvdplayer/DVDInputStreams
xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitles.a: force
	$(MAKE) -C xbmc/cores/dvdplayer/DVDSubtitles
xbmc/cores/paplayer/paplayer.a: force papcodecs
	$(MAKE) -C xbmc/cores/paplayer
xbmc/cores/AudioRenderers/audiorenderers.a: force
	$(MAKE) -C xbmc/cores/AudioRenderers
xbmc/cores/VideoRenderers/VideoRenderer.a: force
	$(MAKE) -C xbmc/cores/VideoRenderers
xbmc/cores/VideoRenderers/VideoShaders/VideoShaders.a: force
	$(MAKE) -C xbmc/cores/VideoRenderers/VideoShaders
xbmc/cores/ExternalPlayer/ExternalPlayer.a: force
	$(MAKE) -C xbmc/cores/ExternalPlayer
xbmc/cores/playercorefactory/playercorefactory.a: force
	$(MAKE) -C xbmc/cores/playercorefactory
xbmc/FileSystem/filesystem.a: force
	$(MAKE) -C xbmc/FileSystem
xbmc/FileSystem/MusicDatabaseDirectory/musicdatabasedirectory.a: force
	$(MAKE) -C xbmc/FileSystem/MusicDatabaseDirectory
xbmc/FileSystem/VideoDatabaseDirectory/videodatabasedirectory.a: force
	$(MAKE) -C xbmc/FileSystem/VideoDatabaseDirectory
xbmc/karaoke/karaoke.a: force
	$(MAKE) -C xbmc/karaoke
xbmc/lib/cmyth/libcmyth/libcmyth.a: force
	$(MAKE) -C xbmc/lib/cmyth/libcmyth
xbmc/lib/cmyth/librefmem/librefmem.a: force
	$(MAKE) -C xbmc/lib/cmyth/librefmem
xbmc/lib/libhts/libhts.a: force
	$(MAKE) -C xbmc/lib/libhts
xbmc/lib/libPython/python.a: force
	$(MAKE) -C xbmc/lib/libPython
xbmc/lib/libPython/xbmcmodule/xbmcmodule.a: force
	$(MAKE) -C xbmc/lib/libPython/xbmcmodule
xbmc/lib/libRTMP/librtmp.a: force
	$(MAKE) -C xbmc/lib/libRTMP
xbmc/lib/libscrobbler/scrobbler.a: force
	$(MAKE) -C xbmc/lib/libscrobbler
xbmc/lib/libRTV/librtv-@ARCH@.a: force
	$(MAKE) -C xbmc/lib/libRTV
xbmc/lib/libshout/libshout-@ARCH@.a: force
	$(MAKE) -C xbmc/lib/libshout
xbmc/lib/libUPnP/libupnp-@ARCH@.a: force
	$(MAKE) -C xbmc/lib/libUPnP
xbmc/lib/libXBMS/libxbms-@ARCH@.a: force
	$(MAKE) -C xbmc/lib/libXBMS
xbmc/lib/libXDAAP/libxdaap-@ARCH@.a: force
	$(MAKE) -C xbmc/lib/libXDAAP
lib/jsoncpp/jsoncpp/src/lib_json/libjsoncpp.a: force
	$(MAKE) -C lib/jsoncpp/jsoncpp/src/lib_json
xbmc/lib/libjsonrpc/libjsonrpc.a: force
	$(MAKE) -C xbmc/lib/libjsonrpc
xbmc/lib/libhttpapi/libhttpapi.a: force
	$(MAKE) -C xbmc/lib/libhttpapi
xbmc/lib/sqLite/sqllite.a: force
	$(MAKE) -C xbmc/lib/sqLite
xbmc/lib/UnrarXLib/UnrarXLib.a: force
	$(MAKE) -C xbmc/lib/UnrarXLib
xbmc/lib/libsquish/libsquish-@ARCH@.a: force
	$(MAKE) -C xbmc/lib/libsquish
xbmc/linux/linux.a: force
	$(MAKE) -C xbmc/linux
xbmc/posix/posix.a: force
	$(MAKE) -C xbmc/posix
xbmc/addons/addons.a: force
	$(MAKE) -C xbmc/addons
xbmc/settings/settings.a: force
	$(MAKE) -C xbmc/settings
xbmc/utils/utils.a: force
	$(MAKE) -C xbmc/utils
xbmc/osx/osx.a: force
	$(MAKE) -C xbmc/osx
xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/.libs/libbdnav.a: force
	$(MAKE) -C xbmc/cores/dvdplayer/Codecs/libbdnav
xbmc/lib/libapetag/.libs/libapetag.a: force
	$(MAKE) -C xbmc/lib/libapetag
lib/cpluff/libcpluff/.libs/libcpluff.a: force
	$(MAKE) -C lib/cpluff/libcpluff
system/libcpluff-$(ARCH).so: lib/cpluff/libcpluff/.libs/libcpluff.a
ifeq ($(findstring osx,$(ARCH)), osx)
  ifeq ($(ARCH), powerpc-osx)
	ld -all_load -bundle -flat_namespace -undefined suppress -arch @ARCHTYPE@ -lbundle1.o -o $@ $<
  else
	ld -all_load -bundle -flat_namespace -undefined suppress -arch @ARCHTYPE@ -o $@ $<
  endif
else
	cp lib/cpluff/libcpluff/.libs/libcpluff.so $@
endif
lib/libmodplug/src/.libs/libmodplug.a: force
	$(MAKE) -C lib/libmodplug
system/players/paplayer/libmodplug-$(ARCH).so: lib/libmodplug/src/.libs/libmodplug.a
ifeq ($(ARCH), powerpc-osx)
	ld -all_load -bundle -flat_namespace -undefined suppress -arch @ARCHTYPE@ -lbundle1.o -o $@ $<
else
	ld -all_load -bundle -flat_namespace -undefined suppress -arch @ARCHTYPE@ -o $@ $<
endif
lib/xbmc-dll-symbols/dll-symbols.a: force
	$(MAKE) -C lib/xbmc-dll-symbols
lib/libmicrohttpd/src/daemon/.libs/libmicrohttpd.a: force
	$(MAKE) -C lib/libmicrohttpd

exports:
	$(MAKE) xbmc/cores/DllLoader/exports/exports.a
	$(MAKE) xbmc/cores/DllLoader/exports/util/exports_utils.a
	$(MAKE) -C xbmc/cores/DllLoader/exports wrapper.def
dllloader: exports
	$(MAKE) xbmc/cores/DllLoader/dllloader.a
visualizations: exports
	$(MAKE) -C xbmc/visualizations/OpenGLSpectrum
	$(MAKE) -C xbmc/visualizations/WaveForm
	$(MAKE) -C xbmc/visualizations/XBMCProjectM
ifeq ($(findstring osx,$(ARCH)), osx)
	$(MAKE) -C xbmc/visualizations/iTunes
endif
ifneq (@BUILD_GOOM@,1)
ifeq ($(or $(findstring powerpc-linux,$(ARCH)),$(findstring powerpc64-linux,$(ARCH))),)
	$(MAKE) -C xbmc/visualizations/Goom
endif
endif
screensavers: exports
	$(MAKE) -C xbmc/screensavers/rsxs-0.9/xbmc
libpython: dllloader
	$(MAKE) -C xbmc/lib/libPython
	$(MAKE) -C xbmc/lib/libPython/xbmcmodule
python: dllloader
	$(MAKE) -C xbmc/lib/libPython/linux
dvdpcodecs: dllloader
	$(MAKE) -C xbmc/cores/dvdplayer/Codecs
	$(MAKE) -C xbmc/cores/dvdplayer/Codecs/libdvd
ifneq (@USE_EXTERNAL_LIBASS@,1)
	$(MAKE) -C xbmc/lib/libass/xbmc
endif
eventclients:
ifeq ($(findstring osx,$(ARCH)), osx)
	$(MAKE) -C tools/EventClients/Clients/OSXRemote
else
	$(MAKE) -C tools/EventClients
endif
libexif: dllloader
	$(MAKE) -C xbmc/lib/libexif
libhdhomerun: dllloader
	$(MAKE) -C xbmc/lib/libhdhomerun
libid3tag: dllloader
	$(MAKE) -C xbmc/lib/libid3tag
papcodecs: dllloader dvdpcodecs
	$(MAKE) -C xbmc/cores/paplayer/AC3Codec
	$(MAKE) -C xbmc/cores/paplayer/ADPCMCodec
ifeq ($(findstring osx,$(ARCH)), osx)
	$(MAKE) -C xbmc/cores/paplayer/FLACCodec
endif
	$(MAKE) -C xbmc/cores/paplayer/GYMCodec
	$(MAKE) -C xbmc/cores/paplayer/vgmstream
	$(MAKE) -C xbmc/cores/paplayer/timidity
	$(MAKE) -C xbmc/cores/paplayer/NSFCodec
	$(MAKE) -C xbmc/cores/paplayer/SIDCodec
ifeq (@USE_ASAP_CODEC@,1)
  ifneq ($(findstring osx,$(ARCH)), osx)
	  $(MAKE) -C xbmc/cores/paplayer/asap asap-xbmc
  endif
endif
	$(MAKE) -C xbmc/cores/paplayer/YMCodec/StSoundLibrary	
ifeq ($(or $(findstring powerpc,$(ARCH)),$(findstring x86_64-linux,$(ARCH))),)
	$(MAKE) -C xbmc/cores/paplayer/SPCCodec/SNES/SNESAPU
endif
imagelib: dllloader
	$(MAKE) -C xbmc/lib/cximage-6.0

codecs: papcodecs dvdpcodecs
libs: libhdhomerun libid3tag imagelib libexif python system/libcpluff-$(ARCH).so
externals: codecs libs python visualizations screensavers

xcode_depends: \
	codecs libs python visualizations screensavers eventclients \
	xbmc/lib/libsquish/libsquish-@ARCH@.a \
	skins \
	xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/.libs/libbdnav.a \
	xbmc/lib/libapetag/.libs/libapetag.a \
	system/players/paplayer/libmodplug-$(ARCH).so \
	xbmc/lib/cmyth/libcmyth/libcmyth.a \
	xbmc/lib/cmyth/librefmem/librefmem.a \
	xbmc/lib/libRTMP/librtmp.a \
	xbmc/lib/libXBMS/libxbms-@ARCH@.a \
	xbmc/lib/libRTV/librtv-@ARCH@.a \
	xbmc/lib/libXDAAP/libxdaap-@ARCH@.a \
	xbmc/lib/libshout/libshout-@ARCH@.a \
	xbmc/lib/libjsonrpc/libjsonrpc.a \
	lib/jsoncpp/jsoncpp/src/lib_json/libjsoncpp.a \
	xbmc/lib/libhttpapi/libhttpapi.a \
	lib/libmicrohttpd/src/daemon/.libs/libmicrohttpd.a

# platform independend objects
OBJSXBMC=	\
	xbmc/xbmc.a \
	xbmc/addons/addons.a \
	xbmc/cores/playercorefactory/playercorefactory.a \
	xbmc/cores/dvdplayer/DVDPlayer.a \
	xbmc/cores/paplayer/paplayer.a \
	xbmc/cores/VideoRenderers/VideoRenderer.a \
	xbmc/cores/VideoRenderers/VideoShaders/VideoShaders.a \
	guilib/guilib.a \
	guilib/common/gui_common.a \
	guilib/tinyXML/tinyxml.a \
	xbmc/cdrip/cdrip.a \
	xbmc/cores/cores.a \
	xbmc/lib/libPython/python.a \
	xbmc/cores/DllLoader/dllloader.a \
	xbmc/cores/dvdplayer/DVDCodecs/DVDCodecs.a \
	xbmc/cores/dvdplayer/DVDCodecs/Audio/Audio.a \
	xbmc/cores/dvdplayer/DVDCodecs/Overlay/Overlay.a \
	xbmc/cores/dvdplayer/DVDCodecs/Video/Video.a \
	xbmc/cores/dvdplayer/DVDCodecs/Video/CrystalHD/CrystalHD.a \
	xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxers.a \
	xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreams.a \
	xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitles.a \
	xbmc/cores/dvdplayer/Codecs/libbdnav/src/libbdnav/.libs/libbdnav.a \
	xbmc/cores/AudioRenderers/audiorenderers.a \
	xbmc/cores/ExternalPlayer/ExternalPlayer.a \
	xbmc/FileSystem/filesystem.a \
	xbmc/FileSystem/MusicDatabaseDirectory/musicdatabasedirectory.a \
	xbmc/FileSystem/VideoDatabaseDirectory/videodatabasedirectory.a \
	xbmc/karaoke/karaoke.a \
	xbmc/lib/libhts/libhts.a \
	xbmc/lib/libPython/xbmcmodule/xbmcmodule.a \
	xbmc/lib/libRTMP/librtmp.a \
	xbmc/lib/libscrobbler/scrobbler.a \
	xbmc/lib/libRTV/librtv-@ARCH@.a \
	xbmc/lib/libshout/libshout-@ARCH@.a \
	xbmc/lib/libUPnP/libupnp-@ARCH@.a \
	xbmc/lib/libXDAAP/libxdaap-@ARCH@.a \
	xbmc/lib/libjsonrpc/libjsonrpc.a \
	lib/jsoncpp/jsoncpp/src/lib_json/libjsoncpp.a \
	xbmc/lib/libhttpapi/libhttpapi.a \
	xbmc/lib/sqLite/sqllite.a \
	xbmc/lib/libsquish/libsquish-@ARCH@.a \
	xbmc/lib/libapetag/.libs/libapetag.a \
	xbmc/settings/settings.a

ifeq (@HAVE_XBMC_NONFREE@,1)
OBJSXBMC+= \
	xbmc/lib/libXBMS/libxbms-@ARCH@.a \
	xbmc/lib/UnrarXLib/UnrarXLib.a
endif

DYNOBJSXBMC= \
	xbmc/lib/cmyth/libcmyth/libcmyth.a \
	xbmc/lib/cmyth/librefmem/librefmem.a \
	xbmc/linux/linux.a \
	xbmc/utils/utils.a \
	xbmc/cores/DllLoader/exports/util/exports_utils.a \
	xbmc/cores/DllLoader/exports/exports.a

# platform dependend objects
ifeq ($(findstring osx,$(ARCH)), osx)
OBJSXBMC += \
	xbmc/osx/osx.a \
	lib/libSDL-OSX/libSDL-@ARCH@.a \
	lib/libSDL-OSX/libSDL_mixer-@ARCH@.a \
	lib/libmicrohttpd/src/daemon/.libs/libmicrohttpd.a
else
OBJSXBMC += \
	xbmc/posix/posix.a
endif

OBJSXBMC += lib/xbmc-dll-symbols/dll-symbols.a

xbmc.bin: $(OBJSXBMC) $(DYNOBJSXBMC)
ifeq ($(findstring osx,$(ARCH)), osx)
	$(CXX) $(CXXFLAGS) -o xbmc.bin -Wl,-all_load,-ObjC $(DYNOBJSXBMC) $(OBJSXBMC) $(LIBS) $(LDFLAGS) -rdynamic
else
	$(CXX) $(CXXFLAGS) -o xbmc.bin -Wl,--whole-archive $(DYNOBJSXBMC) -Wl,--no-whole-archive $(OBJSXBMC) $(LIBS) $(LDFLAGS) -rdynamic
endif

xbmc-xrandr: xbmc-xrandr.c
ifeq ($(findstring osx,$(ARCH)), osx)
	# xbmc-xrandr.c gets picked up by the default make rules
	#  so only exclude it for osx builds
	@echo "excluding xbmc-xrandr"
else
	$(CC) $(CFLAGS) -o xbmc-xrandr xbmc-xrandr.c -lXrandr -lXrender -lX11 
endif

tools/XBMCTex/XBMCTex:
ifeq ($(findstring osx,$(ARCH)), osx)
	# hack this for now
	$(MAKE) -C tools/XBMCTex -f Makefile.osx
else
	$(MAKE) -C tools/XBMCTex/
endif

tools/TexturePacker/TexturePacker:
	$(MAKE) -C tools/TexturePacker/

install-bin: xbmc.bin # developement convenience target
	sudo install -D xbmc.bin $(prefix)/share/xbmc

ifeq ($(findstring osx,$(ARCH)), osx)
	# TODO: add osx install
else
install: install-binaries install-arch install-datas install-web

install-binaries: install-scripts
	@echo "Copying XBMC binary to $(prefix)/share/xbmc/xbmc.bin"
	@install -D xbmc.bin $(prefix)/share/xbmc/xbmc.bin
	@install -D xbmc-xrandr $(prefix)/share/xbmc/xbmc-xrandr
	@echo "You can run XBMC with the command 'xbmc'"
endif

install-arch:
	@# Arch dependent files
	@find system addons -regextype posix-extended -type f -not -iregex ".*svn.*|.*win32(dx)?\.vis|.*osx\.vis" -iregex ".*$(ARCH).*|.*\.vis|.*\.xbs" -exec install -D "{}" $(prefix)/share/xbmc/"{}" \; -printf " -- %-75.75f\r"	

install-scripts:
	@install -D tools/Linux/xbmc.sh $(prefix)/bin/xbmc
	@install -D tools/Linux/xbmc-standalone.sh $(prefix)/bin/xbmc-standalone
	@install -D -m 0644 tools/Linux/FEH.py $(prefix)/share/xbmc/FEH.py
	@install -D -m 0644 tools/Linux/xbmc-xsession.desktop $(prefix)/share/xsessions/XBMC.desktop

install-datas: install-scripts
	@echo "Copying support and legal files..."
	@for FILE in `ls README.linux LICENSE.GPL *.txt`; do \
		install -D -m 0644 "$$FILE" $(prefix)/share/xbmc/; done
	@echo "Done!"
	@echo "Copying system files to $(prefix)/share/xbmc"
	@# Arch independent files
	@find addons language media scripts sounds userdata system -regextype posix-extended -type f -not -iregex ".*svn.*|.*\.so|.*\.dll|.*\.pyd|.*python/.*\.zlib" -exec install -D -m 0644 "{}" $(prefix)/share/xbmc/"{}" \; -printf " -- %-75.75f\r"
	@# Icons and links
	@mkdir -p $(prefix)/share/applications $(prefix)/share/pixmaps
	@cp -a tools/Linux/xbmc.png $(prefix)/share/pixmaps/
	@cp -a tools/Linux/xbmc.desktop $(prefix)/share/applications/

install-livedatas:
	@echo "Install Live CD datas in $(prefix) ..."
	@mkdir -p $(prefix)/bin
	@install -D tools/XBMCLive/diskmounter $(prefix)/bin
	@install -D tools/XBMCLive/installXBMC $(prefix)/bin
	@install -D tools/XBMCLive/runXBMC $(prefix)/bin
	@install -D tools/XBMCLive/setAlsaVolumes $(prefix)/bin

install-web:
	@mkdir -p $(prefix)/share/xbmc/web
	@cp -r web/poc_jsonrpc/* $(prefix)/share/xbmc/web
	@find $(prefix)/share/xbmc/web -depth -name .svn -exec rm -rf {} \;

uninstall:
	@echo "Removing XBMC..."
	@rm -rf $(prefix)/share/xbmc $(prefix)/bin/xbmc
	@rm -rf $(prefix)/bin/xbmc-standalone
	@rm -rf $(prefix)/share/xsessions/XBMC.desktop
	@echo "Done!"

reallyclean:
	@echo " This will delete ALL unversioned files in"; \
	 echo " your XBMC source tree. If you aren't sure"; \
	 echo " you want to do this, answer anything but"; \
	 echo " 'Y' (case sensitive) to the following."; \
	 echo " DISCLAIMER: Team XBMC is NOT responsible"; \
	 echo " for ANYTHING lost if you execute this command!"; \
	 echo -n " Damnserious? (Y/*) "; \
	 read -n1 PROMPT; \
	 if [[ "$$PROMPT" = "Y" ]]; then \
		SVNV=$$(svnversion -n | cut -d':' -f1); _IFS=$$IFS; IFS=$$'\t\n'; \
		for i in `svn st --no-ignore | grep ^[I\?] | cut -d' ' -f7-`; do \
			if [[ $${i:(-4)} != "diff" && $${i:(-5)} != "patch" ]]; then \
				echo "  Deleting $$i"; \
				rm -rf "$$i"; \
			fi; \
		done; \
		IFS=$$_IFS; \
		echo " Recovering any missing files."; \
		svn up -r $${SVNV/M/} | sed -e "s/.*'\(.*\)'/  \1/p" -e d; \
		echo " Done."; \
		echo " The following files may need reverted (svn revert <file>)"; \
		svn st | sed -e "s/^M */  /p" -e d; \
	 else \
	 	echo; \
	 fi

clean-xbmc.bin:
	rm -f xbmc.bin
	for d in $(BIN_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d clean; fi; done
clean-eventclients:
	for d in $(EC_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d clean; fi; done
clean-xbmctex:
	for d in $(XBMCTEX_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d clean; fi; done
clean-dvdpcodecs: 
	for d in $(DVDPCODECS_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d clean; fi; done
clean-papcodecs:
	for d in $(PAPCODECS_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d clean; fi; done
clean-libs: 
	for d in $(LIB_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d clean; fi; done
clean-screensavers: 
	for d in $(SS_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d clean; fi; done
clean-visualisations:
	for d in $(VIS_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d clean; fi; done

clean-codecs: clean-dvdpcodecs clean-papcodecs

clean-externals: clean-codecs clean-eventclients clean-xbmctex clean-libs \
	clean-screensavers clean-visualisations