cec: use libcec as an internal lib and fetch it in "bootstrap". added --enable-extern...
authorLars Op den Kamp <lars@opdenkamp.eu>
Mon, 10 Oct 2011 22:39:21 +0000 (00:39 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Mon, 10 Oct 2011 22:59:58 +0000 (00:59 +0200)
to keep a permanent copy, remove "make download" from bootstrap
to change the location of the tarball to another mirror, change lib/libcec/Makefile.in

.gitignore
Makefile.in
bootstrap
configure.in
lib/libcec/Makefile.in [new file with mode: 0644]
xbmc/peripherals/devices/Makefile.in

index ff43a34..9287d7f 100644 (file)
@@ -175,6 +175,11 @@ lib/cmyth/Makefile
 /lib/cpluff/libcpluff/win32/Debug
 /lib/cpluff/libcpluff/win32/Release
 
+# /lib/libcec
+/lib/libcec/Makefile
+/lib/libcec/include
+/lib/libcec/libcec
+
 # /lib/enca
 /lib/enca/libenca_win32/Debug
 /lib/enca/libenca_win32/Release
@@ -230,20 +235,6 @@ lib/cmyth/Makefile
 /lib/libass/m4/ltversion.m4
 /lib/libass/m4/lt~obsolete.m4
 
-# /lib/libcec
-/lib/libcec/Makefile
-/lib/libcec/Makefile.in
-/lib/libcec/aclocal.m4
-/lib/libcec/config.guess
-/lib/libcec/config.sub
-/lib/libcec/configure
-/lib/libcec/depcomp
-/lib/libcec/install-sh
-/lib/libcec/ltmain.sh
-/lib/libcec/missing
-/lib/libcec/src/lib/Makefile.in
-/lib/libcec/src/testclient/Makefile.in
-
 # /lib/libiconv
 /lib/libiconv/libiconv_win32/Debug
 /lib/libiconv/libiconv_win32/Release
index bff37e6..28314b9 100644 (file)
@@ -364,6 +364,8 @@ lib/libapetag/.libs/libapetag.a: force
        $(MAKE) -C lib/libapetag
 lib/cpluff/libcpluff/.libs/libcpluff.a: force
        $(MAKE) -C lib/cpluff/libcpluff
+lib/libcec/libcec.a: force
+       $(MAKE) -C lib/libcec libcec.a
 system/libcpluff-@ARCH@.so: lib/cpluff/libcpluff/.libs/libcpluff.a
 ifeq ($(findstring osx,@ARCH@), osx)
   ifeq (@ARCH@, arm-osx)
@@ -541,6 +543,10 @@ DYNOBJSXBMC= \
 
 LIBS += @PYTHON_LDFLAGS@
 
+ifneq (@USE_EXTERNAL_LIBCEC@,1)
+  DYNOBJSXBMC += lib/libcec/libcec.a
+endif
+
 xbmc.bin: $(OBJSXBMC) $(DYNOBJSXBMC)
 ifeq ($(findstring osx,@ARCH@), osx)
        $(CXX) $(LDFLAGS) -o xbmc.bin -Wl,-all_load,-ObjC $(DYNOBJSXBMC) $(OBJSXBMC) $(LIBS) -rdynamic
index fb16f95..d666061 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -14,6 +14,10 @@ autoreconf -vif lib/cpluff
 autoreconf -vif lib/libdvd/libdvdread
 autoreconf -vif lib/libdvd/libdvdnav
 
+# remove the following line if we're keeping a permanent copy in our tree
+make -f Makefile.in -C lib/libcec download
+autoreconf -vif lib/libcec/libcec
+
 # Clean the generated files
 find . -depth -type d -name "autom4te.cache" -exec rm -rf {} \;
 
index f1101b3..50e0fa4 100755 (executable)
@@ -123,8 +123,10 @@ libudev_not_found="== Could not find libudev. Will use polling to check for devi
 libudev_disabled="== udev support disabled. Will use polling to check for device changes. =="
 libusb_not_found="== Could not find libusb. Plug and play USB device support will not be available. =="
 libusb_disabled="== libusb disabled. Plug and play USB device support will not be available. =="
-libcec_not_found="== Could not find libcec. CEC device support will not be available. =="
-libcec_disabled="== libcec disabled. CEC device support will not be available. =="
+libcec_enabled="== libCEC enabled. =="
+libcec_disabled="== libCEC disabled. CEC adapter support will not be available. =="
+libcec_internal="== Using internal libCEC. =="
+libcec_external_missing="== libCEC was not found on your system.  =="
 
 # External library message strings
 external_libraries_enabled="== Use of all supported external libraries enabled. =="
@@ -398,9 +400,9 @@ AC_ARG_ENABLE([libusb],
 
 AC_ARG_ENABLE([libcec],
   [AS_HELP_STRING([--enable-libcec],
-  [enable libcec support (default is auto)])],
+  [enable libcec support (default is yes)])],
   [use_libcec=$enableval],
-  [use_libcec=auto])
+  [use_libcec=yes])
 
 ### External libraries options
 AC_ARG_ENABLE([external-libraries],
@@ -409,6 +411,12 @@ AC_ARG_ENABLE([external-libraries],
   [use_external_libraries=$enableval],
   [use_external_libraries=no])
 
+AC_ARG_ENABLE([external-libcec],
+  [AS_HELP_STRING([--enable-external-libcec],
+  [external libcec support (default is no) 'Linux only'])],
+  [use_external_libcec=$enableval],
+  [use_external_libcec=no])
+
 AC_ARG_ENABLE([external-ffmpeg],
   [AS_HELP_STRING([--enable-external-ffmpeg],
   [enable use of external ffmpeg libraries (default is no) 'Linux only'])],
@@ -1120,22 +1128,27 @@ fi
 
 # libcec
 USE_LIBCEC=0
-if test "$use_libcec" = "auto"; then
-  PKG_CHECK_MODULES([CEC], [libcec],
-    use_libcec="yes"; USE_LIBCEC=1; [INCLUDES="$INCLUDES $CEC_CFLAGS"; LIBS="$LIBS $CEC_LIBS";] \
-    AC_DEFINE([HAVE_LIBCEC],[1],["Define to 1 if libcec is installed"]),
-       use_libcec="no"; AC_MSG_RESULT($libcec_not_found))
-elif test "$use_libcec" = "yes"; then
-  PKG_CHECK_MODULES([CEC], [libcec],
-    use_libcec="yes"; USE_LIBCEC=1; [INCLUDES="$INCLUDES $CEC_CFLAGS"; LIBS="$LIBS $CEC_LIBS";] \
-    AC_DEFINE([HAVE_LIBCEC],[1],["Define to 1 if libcec is installed"]),
-       use_libcec="no"; AC_MSG_ERROR($libcec_not_found))
+if test "$use_libcec" = "yes"; then
+  USE_LIBCEC=1; AC_DEFINE([HAVE_LIBCEC],[1],["Define to 1 if libCEC is installed"])
+  AC_MSG_NOTICE($libcec_enabled)
 else
   use_libcec="no"
   AC_MSG_NOTICE($libcec_disabled)
 fi
 
 ### External libraries checks
+
+# external libcec
+USE_EXTERNAL_LIBCEC=0
+if test "$use_external_libcec" = "yes"; then
+  USE_EXTERNAL_LIBCEC=1; PKG_CHECK_MODULES([CEC], [libcec],
+    [INCLUDES="$INCLUDES $CEC_CFLAGS"; LIBS="$LIBS $CEC_LIBS"],
+    AC_MSG_ERROR($libcec_external_missing))
+elif test "$use_libcec" = "yes"; then
+  [INCLUDES="$INCLUDES -I\$(abs_top_srcdir)/lib/libcec/include"]
+  AC_MSG_NOTICE($libcec_internal)
+fi
+
 # External FFmpeg
 if test "$use_external_ffmpeg" = "yes"; then
   FFMPEG_LIBNAMES="libavcodec libavfilter libavformat libavutil libpostproc libswscale"
@@ -1770,7 +1783,19 @@ else
   final_message="$final_message\n  libcec support:\tNo"
 fi
 
+if test "$use_libcec" = "yes"; then
+  final_message="$final_message\n  libCEC support:\tYes"
+else
+  final_message="$final_message\n  libCEC support:\tNo"
+fi
+
 ### External libraries messages
+if test "$use_external_libcec" = "yes"; then
+  final_message="$final_message\n  External libCEC:\tYes"
+else
+  final_message="$final_message\n  External libCEC:\tNo"
+fi
+
 if test "$use_external_ffmpeg" = "yes"; then
   final_message="$final_message\n  External FFmpeg:\tYes"
 else
@@ -1836,7 +1861,8 @@ OUTPUT_FILES="Makefile \
     tools/TexturePacker/Makefile \
     tools/EventClients/Clients/OSXRemote/Makefile \
     xbmc/peripherals/bus/Makefile \
-    xbmc/peripherals/devices/Makefile"
+    xbmc/peripherals/devices/Makefile \
+    lib/libcec/Makefile"
 
 # Line below is used so we can use AM_INIT_AUTOMAKE. The corresponding
 # .dummy.am does nothing.
@@ -1891,6 +1917,7 @@ AC_SUBST(USE_AIRTUNES)
 AC_SUBST(USE_LIBUDEV)
 AC_SUBST(USE_LIBUSB)
 AC_SUBST(USE_LIBCEC)
+AC_SUBST(USE_EXTERNAL_LIBCEC)
 
 # pushd and popd are not available in other shells besides bash, so implement
 # our own pushd/popd functions
@@ -2159,6 +2186,16 @@ XB_CONFIG_MODULE([lib/cpluff], [
     #LDFLAGS="$LDFLAGS -Wl,-read_only_relocs,suppress"    
 ], [0])
 
+XB_CONFIG_MODULE([lib/libcec], [
+  if test "$use_libcec" = "yes" ; then
+    cd libcec ; ./configure \
+      --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
+      --host=$host_alias \
+      --build=$build_alias \
+      --target=$target_alias CFLAGS="$CFLAGS" CC="$CC" CXX="$CXX"
+  fi    
+], [0])
+
 AC_OUTPUT
 
 final_message="$final_message\n  prefix:\t$prefix\n$dashes"
diff --git a/lib/libcec/Makefile.in b/lib/libcec/Makefile.in
new file mode 100644 (file)
index 0000000..4343cfb
--- /dev/null
@@ -0,0 +1,51 @@
+#  Download and build libCEC
+#
+#  Usage:
+#    make download
+#    make bootstrap
+#    make configure
+#    make
+
+# lib name, version
+LIBNAME=libcec
+VERSION=0.6
+ARCHIVE=$(LIBNAME)-$(VERSION)
+
+# download location and format
+ARCHIVE_BASE_URL=http://github.com/Pulse-Eight/$(LIBNAME)/tarball/
+ARCHIVE_EXTRACTED_DIR=Pulse-Eight-libcec-d9ba5be
+ARCHIVE_URL=$(ARCHIVE_BASE_URL)$(ARCHIVE)
+ARCHIVE_TOOL=tar
+ARCHIVE_TOOL_FLAGS=xf
+ARCHIVE_ADD_EXTENSION=.tar.gz
+RETRIEVE_TOOL=/usr/bin/curl
+RETRIEVE_TOOL_FLAGS=-Ls --create-dirs --output $(ARCHIVE)$(ARCHIVE_ADD_EXTENSION)
+
+# configuration
+PREFIX ?= @abs_top_srcdir@/lib/libcec
+LIBCEC_CONFIGOPTS ?= --prefix=$(PREFIX)
+CONFIGURE=./configure CFLAGS=-D_FILE_OFFSET_BITS=64 $(LIBCEC_CONFIGOPTS)
+
+all: libcec.a
+
+download: distclean
+       $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(ARCHIVE_URL)
+       $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(ARCHIVE)$(ARCHIVE_ADD_EXTENSION)
+       rm -f $(ARCHIVE)$(ARCHIVE_ADD_EXTENSION)
+       mv $(ARCHIVE_EXTRACTED_DIR) $(LIBNAME)
+       mkdir -p include/libcec
+       cp $(LIBNAME)/include/* include/libcec
+
+libcec.a:
+       make -C $(LIBNAME)
+       cp $(LIBNAME)/src/lib/.libs/libcec.a libcec.a
+
+clean:
+       rm -f libcec.a
+       make -C $(LIBNAME) clean
+
+distclean:
+       rm -f $(ARCHIVE) libcec.a Makefile
+       rm -rf include
+       rm -rf $(LIBNAME)
+       rm -rf $(ARCHIVE_DIR)
index e871c84..13f28cb 100644 (file)
@@ -12,5 +12,5 @@ endif
 
 LIB = peripheral-devices.a
 
-include ../../../Makefile.include
+include @abs_top_srcdir@/Makefile.include
 -include $(patsubst %.cpp,%.P,$(patsubst %.c,%.P,$(SRCS)))