[tags] Add Makefile and taglib dependency, add taglib to xcode, android, linux and...
authorChris Roberts <croberts@bongle.co.uk>
Tue, 3 Jul 2012 16:32:20 +0000 (00:32 +0800)
committerChris Roberts <croberts@bongle.co.uk>
Mon, 10 Sep 2012 11:23:38 +0000 (19:23 +0800)
14 files changed:
XBMC.xcodeproj/project.pbxproj
configure.in
docs/README.linux
docs/README.ubuntu
lib/taglib/Makefile [new file with mode: 0644]
project/BuildDependencies/scripts/0_package.list
project/BuildDependencies/scripts/taglib_d.bat [new file with mode: 0644]
project/BuildDependencies/scripts/taglib_d.txt [new file with mode: 0644]
project/VS2010Express/XBMC.vcxproj
tools/android/depends/Makefile.in
tools/android/depends/taglib/Makefile [new file with mode: 0644]
tools/android/packaging/Makefile
tools/darwin/depends/Makefile.in
tools/darwin/depends/taglib/Makefile [new file with mode: 0644]

index 6e0792a..f2bc349 100644 (file)
                                        "-lpython2.6",
                                        "-L$XBMC_DEPENDS/lib/mysql",
                                        "-lmysqlclient",
+                                       "-ltag",
                                );
                                PRODUCT_NAME = XBMC;
                                USER_HEADER_SEARCH_PATHS = "$XBMC_DEPENDS/include $XBMC_DEPENDS/include/libcec $XBMC_DEPENDS/include/mysql $XBMC_DEPENDS/include/freetype2 $XBMC_DEPENDS/include/python2.6";
                                        "-lpython2.6",
                                        "-L$XBMC_DEPENDS/lib/mysql",
                                        "-lmysqlclient",
+                                       "-ltag",
                                );
                                PRODUCT_NAME = XBMC;
                                USER_HEADER_SEARCH_PATHS = "$XBMC_DEPENDS/include $XBMC_DEPENDS/include/libcec $XBMC_DEPENDS/include/mysql $XBMC_DEPENDS/include/freetype2 $XBMC_DEPENDS/include/python2.6";
index 933e76e..85bf004 100644 (file)
@@ -970,6 +970,9 @@ PKG_CHECK_MODULES([SAMPLERATE], [samplerate],
 PKG_CHECK_MODULES([FREETYPE2],  [freetype2],
   [INCLUDES="$INCLUDES $FREETYPE2_CFLAGS"; LIBS="$LIBS $FREETYPE2_LIBS"],
   AC_MSG_ERROR($missing_library))
+PKG_CHECK_MODULES([TAGLIB],  [taglib >= 1.8],
+  [INCLUDES="$INCLUDES $TAGLIB_CFLAGS"; LIBS="$LIBS $TAGLIB_LIBS"],
+  AC_MSG_ERROR($missing_library))
 
 if test "$target_platform" = "target_android" ; then
 PKG_CHECK_MODULES([ZIP],       [libzip],
index f31da61..42c7fbc 100644 (file)
@@ -57,7 +57,7 @@ Build-Depends: autoconf, automake, autopoint, autotools-dev, cmake, curl,
   libswscale-dev, libtinyxml-dev, libtool, libudev-dev, libusb-dev, libva-dev,
   libvdpau-dev, libvorbis-dev, libxinerama-dev, libxmu-dev, libxrandr-dev,
   libxt-dev, libyajl-dev, lsb-release, nasm [!amd64], python-dev,
-  python-support, unzip, yasm, zip, zlib1g-dev, libcap-dev
+  python-support, unzip, yasm, zip, zlib1g-dev, libcap-dev, taglib(>= 1.8)
 
 *** For developers and anyone else who compiles frequently it is recommended to
 use ccache
index 12afda2..dcb0437 100644 (file)
@@ -58,6 +58,12 @@ In this case you will have to manually compile the latest version.
    # make
    # sudo make install
 
+We currently need an unreleased version of taglib. We supply a Makefile in
+lib/taglib to make it easy to install into /usr/local until taglib makes a release.
+
+   # make -C lib/taglib
+   # sudo make -C lib/taglib install
+
 --------------------------------------------------------------
 3.2. Use a single command to get all build dependencies
 --------------------------------------------------------------
diff --git a/lib/taglib/Makefile b/lib/taglib/Makefile
new file mode 100644 (file)
index 0000000..6b524c4
--- /dev/null
@@ -0,0 +1,37 @@
+# lib name, version
+LIBNAME=taglib
+VERSION=1.8
+SOURCE=$(LIBNAME)-$(VERSION)
+ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz
+TARBALLS_LOCATION=.
+BASE_URL=http://mirrors.xbmc.org/build-deps/darwin-libs
+RETRIEVE_TOOL=/usr/bin/curl
+RETRIEVE_TOOL_FLAGS=-Ls --create-dirs --output $(TARBALLS_LOCATION)/$(ARCHIVE)
+ARCHIVE_TOOL=tar
+ARCHIVE_TOOL_FLAGS=zxf
+
+SO_NAME=libtaglib.so
+
+all: $(SO_NAME)
+
+$(TARBALLS_LOCATION)/$(ARCHIVE):
+       $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
+
+$(SOURCE): $(TARBALLS_LOCATION)/$(ARCHIVE)
+       rm -rf $(SOURCE)
+       $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
+       echo $(SOURCE) > .gitignore
+       cd $(SOURCE); rm -rf build; mkdir -p build
+       cd $(SOURCE)/build; cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_STATIC=1
+$(SO_NAME): $(SOURCE)
+       make -C $(SOURCE)/build
+
+install:
+       make -C $(SOURCE)/build install
+
+clean:
+       make -C $(SOURCE)/build clean
+       rm -f .installed
+
+distclean::
+       rm -rf $(SOURCE) .installed
index fa68512..d20c040 100644 (file)
@@ -10,4 +10,5 @@ sqlite-3.7.12.1-win32
 libnfs-1.3.0-win32
 libshairplay-d689c6-win32
 libjpeg-turbo-1.2.0-win32
-libbluray-0.2.3-win32
\ No newline at end of file
+libbluray-0.2.3-win32
+taglib-1.8beta-win32
diff --git a/project/BuildDependencies/scripts/taglib_d.bat b/project/BuildDependencies/scripts/taglib_d.bat
new file mode 100644 (file)
index 0000000..b702309
--- /dev/null
@@ -0,0 +1,13 @@
+@ECHO OFF
+
+SET LOC_PATH=%CD%
+SET FILES=%LOC_PATH%\taglib_d.txt
+
+CALL dlextract.bat taglib %FILES%
+
+cd %TMP_PATH%
+
+del taglib-1.8-win32\readme.txt
+xcopy taglib-1.8-win32\* "%XBMC_PATH%\" /E /Q /I /Y
+
+cd %LOC_PATH%
diff --git a/project/BuildDependencies/scripts/taglib_d.txt b/project/BuildDependencies/scripts/taglib_d.txt
new file mode 100644 (file)
index 0000000..5651953
--- /dev/null
@@ -0,0 +1,2 @@
+; filename                          source of the file
+taglib-1.8-win32.7z                    http://mirrors.xbmc.org/build-deps/win32/
index 6eaacb5..560d9a1 100644 (file)
       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
       <OmitFramePointers>true</OmitFramePointers>
       <AdditionalIncludeDirectories>..\..\;..\..\xbmc\;..\..\xbmc\cores\dvdplayer;..\..\xbmc\win32;..\..\lib;..\..\lib\ffmpeg;..\..\lib\ffmpeg\include-xbmc-win32;..\..\lib\liblame\include;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Neptune\Source\System\Win32;..\..\lib\win32\pcre;..\..\lib\win32;..\..\xbmc\cores\AudioEngine\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;NDEBUG;_WIN32_WINNT=0x0501;NTDDI_VERSION=0x05010300;NOMINMAX;_USE_32BIT_TIME_T;HAS_GL;__STDC_CONSTANT_MACROS;XMD_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;NDEBUG;_WIN32_WINNT=0x0501;NTDDI_VERSION=0x05010300;NOMINMAX;_USE_32BIT_TIME_T;HAS_GL;__STDC_CONSTANT_MACROS;XMD_H;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>false</StringPooling>
       <MinimalRebuild>false</MinimalRebuild>
       <ExceptionHandling>Async</ExceptionHandling>
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\;..\..\xbmc\;..\..\xbmc\cores\dvdplayer;..\..\xbmc\win32;..\..\lib;..\..\lib\ffmpeg;..\..\lib\ffmpeg\include-xbmc-win32;..\..\lib\liblame\include;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Platinum\Source\Extras;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Neptune\Source\System\Win32;..\..\lib\win32\pcre;..\..\lib\win32;..\..\xbmc\cores\AudioEngine\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;_DEBUG;_WIN32_WINNT=0x0501;NTDDI_VERSION=0x05010300;NOMINMAX;_USE_32BIT_TIME_T;HAS_DX;D3D_DEBUG_INFO;__STDC_CONSTANT_MACROS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;_DEBUG;_WIN32_WINNT=0x0501;NTDDI_VERSION=0x05010300;NOMINMAX;_USE_32BIT_TIME_T;HAS_DX;D3D_DEBUG_INFO;__STDC_CONSTANT_MACROS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>false</MinimalRebuild>
       <ExceptionHandling>Async</ExceptionHandling>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
       <OmitFramePointers>true</OmitFramePointers>
       <AdditionalIncludeDirectories>..\..\;..\..\xbmc\;..\..\xbmc\cores\dvdplayer;..\..\xbmc\win32;..\..\lib;..\..\lib\ffmpeg;..\..\lib\ffmpeg\include-xbmc-win32;..\..\lib\liblame\include;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Platinum\Source\Extras;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Neptune\Source\System\Win32;..\..\lib\win32\pcre;..\..\lib\win32;..\..\xbmc\cores\AudioEngine\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;NDEBUG;_WIN32_WINNT=0x0501;NTDDI_VERSION=0x05010300;NOMINMAX;_USE_32BIT_TIME_T;HAS_DX;__STDC_CONSTANT_MACROS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;NDEBUG;_WIN32_WINNT=0x0501;NTDDI_VERSION=0x05010300;NOMINMAX;_USE_32BIT_TIME_T;HAS_DX;__STDC_CONSTANT_MACROS;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>false</StringPooling>
       <MinimalRebuild>false</MinimalRebuild>
       <ExceptionHandling>Async</ExceptionHandling>
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\;..\..\xbmc\;..\..\xbmc\cores\dvdplayer;..\..\xbmc\win32;..\..\lib;..\..\lib\ffmpeg;..\..\lib\ffmpeg\include-xbmc-win32;..\..\lib\liblame\include;..\..\lib\libUPnP\Platinum\Source\Devices\MediaRenderer;..\..\lib\libUPnP\Platinum\Source\Devices\MediaConnect;..\..\lib\libUPnP\Platinum\Source\Devices\MediaServer;..\..\lib\libUPnP\Platinum\Source\Platinum;..\..\lib\libUPnP\Platinum\Source\Core;..\..\lib\libUPnP\Neptune\Source\Core;..\..\lib\libUPnP\Neptune\Source\System\Win32;..\..\lib\win32\pcre;..\..\lib\win32;..\..\xbmc\cores\AudioEngine\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;_DEBUG;_WIN32_WINNT=0x0501;NTDDI_VERSION=0x05010300;NOMINMAX;_USE_32BIT_TIME_T;HAS_GL;__STDC_CONSTANT_MACROS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>TARGET_WINDOWS;_WINDOWS;_MSVC;WIN32;_DEBUG;_WIN32_WINNT=0x0501;NTDDI_VERSION=0x05010300;NOMINMAX;_USE_32BIT_TIME_T;HAS_GL;__STDC_CONSTANT_MACROS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;TAGLIB_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>false</MinimalRebuild>
       <ExceptionHandling>Async</ExceptionHandling>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
     </VisualStudio>
   </ProjectExtensions>
   <Import Project="$(SolutionDir)\$(ProjectFileName).targets.user" Condition="Exists('$(SolutionDir)\$(ProjectFileName).targets.user')" />
-</Project>
\ No newline at end of file
+</Project>
index 4027fb2..e109914 100644 (file)
@@ -13,7 +13,7 @@ SUBDIRS = \
        python26-native python26 samba alsa-lib libcdio afpfs-ng libshairport \
        libplist libcec libbluray boost tinyxml dummy-libxbmc libsdl \
        liblzo2-native libjpeg-turbo-native libpng-native tiff-native libsdl_image rpl \
-       libamplayer libssh
+       libamplayer libssh taglib
 
 .PHONY: buildtools $(BUILDTOOLS) subdirs $(SUBDIRS) arm
 
@@ -59,6 +59,7 @@ libpng-native: buildtools
 tiff-native: buildtools libjpeg-turbo-native 
 liblzo2-native: buildtools
 libssh: openssl cmake rpl
+taglib: cmake
 
 
 X86OVERRIDES=XBMC_OVERRIDE_HOST=i686-android-linux XBMC_OVERRIDE_TOOLCHAIN=$(XBMC_X86_TOOLCHAIN)
diff --git a/tools/android/depends/taglib/Makefile b/tools/android/depends/taglib/Makefile
new file mode 100644 (file)
index 0000000..beac040
--- /dev/null
@@ -0,0 +1,44 @@
+include ../Makefile.include
+DEPS= ../Makefile.include Makefile
+
+LIBNAME=taglib
+VERSION=1.8
+SOURCE=$(LIBNAME)-$(VERSION)
+ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz
+
+LIBDYLIB=$(PLATFORM)/build/$(LIBNAME)/libtag.so
+all: .installed-$(PLATFORM)
+
+$(TARBALLS_LOCATION)/$(ARCHIVE):
+       $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
+
+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE)
+       rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
+       $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
+       cd $(PLATFORM); rm -rf build; mkdir -p build
+       cd $(PLATFORM)/build; CC=$(CC) CXX=$(CXX) cmake        \
+         -DCMAKE_C_FLAGS:STRING="$(CPPFLAGS) $(CFLAGS)"     \
+         -DCMAKE_CXX_FLAGS:STRING="$(CPPFLAGS) $(CXXFLAGS)" \
+         -DCMAKE_INCLUDE_PATH=$(PREFIX)/include             \
+         -DCMAKE_LIBRARY_PATH=$(PREFIX)/lib                 \
+         -DCMAKE_INSTALL_NAME_DIR=$(PREFIX)/lib             \
+         -DCMAKE_INSTALL_PREFIX=$(PREFIX)                   \
+         -DCMAKE_FIND_ROOT_PATH="$(TOOLCHAIN)/sysroot/usr;$(PREFIX)" ..
+
+$(LIBDYLIB): $(PLATFORM)
+       $(MAKE) -C $(PLATFORM)/build
+       touch $@
+.installed-$(PLATFORM): $(LIBDYLIB)
+       $(MAKE) -C $(PLATFORM)/build install
+       rm -f $(PREFIX)/lib/libtag_c.* $(PREFIX)/lib/libtag.so $(PREFIX)/lib/libtag.so.1
+       mv -f $(PREFIX)/lib/libtag.so.1.11.0 $(PREFIX)/lib/libxbtag.so
+       ln -sf $(PREFIX)/lib/libxbtag.so $(PREFIX)/lib/libtag.so
+       $(RPL) -e "libtag.so.1" "libxbtag.so" $(PREFIX)/lib/libxbtag.so
+       -$(READELF) --dynamic $(PREFIX)/lib/libxbtag.so | grep ibrary
+       touch $@
+
+clean:
+       $(MAKE) -C $(PLATFORM)/build clean
+
+distclean::
+       rm -rf $(PLATFORM) .installed-$(PLATFORM)
index fff2cfd..0fa40d6 100644 (file)
@@ -5,7 +5,7 @@ OBJS = libcurl.so \
   libafpclient.so  \
   libshairport.so libplist.so \
   libxbogg.so libxbvorbis.so libxbvorbisfile.so libxbFLAC.so libxbmpeg2.so \
-  libxbmpeg2convert.so
+  libxbmpeg2convert.so libxbtag.so
 
 PLATFORM_OBJS =
 
index fa66085..3560460 100644 (file)
@@ -14,7 +14,7 @@ SUBDIRS := \
        libgpg-error libgcrypt afpfs-ng \
        libplist libshairport libcec tinyxml \
         samba python26 distribute distutilscross \
-       mysqlclient boost \
+       mysqlclient boost taglib \
 
 ifeq ($(DARWIN), ios)
   EXCLUDED = libcec libcrystalhd libGLEW libsdl libsdl_mixer libsdl_image
diff --git a/tools/darwin/depends/taglib/Makefile b/tools/darwin/depends/taglib/Makefile
new file mode 100644 (file)
index 0000000..709566b
--- /dev/null
@@ -0,0 +1,43 @@
+include ../Makefile.include
+include ../config.site.mk
+
+# lib name, version
+LIBNAME=taglib
+VERSION=1.8
+SOURCE=$(LIBNAME)-$(VERSION)
+ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz
+
+LIBDYLIB=$(SOURCE)/build/src/$(LIBNAME).dylib
+
+all: $(LIBDYLIB) .installed
+
+$(TARBALLS_LOCATION)/$(ARCHIVE):
+       $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
+
+$(SOURCE): $(TARBALLS_LOCATION)/$(ARCHIVE)
+       rm -rf $(SOURCE)
+       $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
+       echo $(SOURCE) > .gitignore
+       cd $(SOURCE); rm -rf build; mkdir -p build
+       cd $(SOURCE)/build; CC=$(CC) CXX=$(CXX) cmake        \
+         -DCMAKE_C_FLAGS:STRING="$(CPPFLAGS) $(CFLAGS)"     \
+         -DCMAKE_CXX_FLAGS:STRING="$(CPPFLAGS) $(CXXFLAGS)" \
+         -DCMAKE_INCLUDE_PATH=$(PREFIX)/include             \
+         -DCMAKE_LIBRARY_PATH=$(PREFIX)/lib                 \
+         -DCMAKE_INSTALL_NAME_DIR=$(PREFIX)/lib             \
+         -DCMAKE_INSTALL_PREFIX=$(PREFIX)                   \
+         -DCMAKE_FIND_ROOT_PATH=$(platform_sdk_path) ..
+
+$(LIBDYLIB): $(SOURCE)
+       make -j $(MAKE_JOBS) -C $(SOURCE)/build
+
+.installed:
+       make -C $(SOURCE)/build install
+       touch $@
+
+clean:
+       make -C $(SOURCE)/build clean
+       rm -f .installed
+
+distclean::
+       rm -rf $(SOURCE) .installed