From bcaf0e01761a9c3f9895526b6e631d2f6545d913 Mon Sep 17 00:00:00 2001 From: montellese Date: Wed, 18 Jun 2014 23:46:12 +0200 Subject: [PATCH 01/18] [win32] Win32DllLoader: add wrapper for fopen_s() --- xbmc/cores/DllLoader/Win32DllLoader.cpp | 1 + xbmc/cores/DllLoader/exports/emu_msvcrt.cpp | 12 ++++++++++++ xbmc/cores/DllLoader/exports/emu_msvcrt.h | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/DllLoader/Win32DllLoader.cpp b/xbmc/cores/DllLoader/Win32DllLoader.cpp index 4bc961d543f1c..bb69251bc798e 100644 --- a/xbmc/cores/DllLoader/Win32DllLoader.cpp +++ b/xbmc/cores/DllLoader/Win32DllLoader.cpp @@ -89,6 +89,7 @@ Export win32_exports[] = { "feof", -1, (void*)dll_feof, NULL }, { "fgets", -1, (void*)dll_fgets, NULL }, { "fopen", -1, (void*)dll_fopen, (void*)track_fopen}, + { "fopen_s", -1, (void*)dll_fopen_s, NULL }, { "putc", -1, (void*)dll_putc, NULL }, { "fputc", -1, (void*)dll_fputc, NULL }, { "fputs", -1, (void*)dll_fputs, NULL }, diff --git a/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp b/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp index e9674bcfb2549..9838a0a466b2d 100644 --- a/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp +++ b/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp @@ -1242,6 +1242,18 @@ extern "C" return file; } + int dll_fopen_s(FILE** pFile, const char * filename, const char * mode) + { + if (pFile == NULL || filename == NULL || mode == NULL) + return EINVAL; + + *pFile = dll_fopen(filename, mode); + if (*pFile == NULL) + return errno; + + return 0; + } + int dll_putc(int c, FILE *stream) { if (g_emuFileWrapper.StreamIsEmulatedFile(stream) || IS_STD_STREAM(stream)) diff --git a/xbmc/cores/DllLoader/exports/emu_msvcrt.h b/xbmc/cores/DllLoader/exports/emu_msvcrt.h index ae9b1c4bd46ed..de4c70ddbfdf8 100644 --- a/xbmc/cores/DllLoader/exports/emu_msvcrt.h +++ b/xbmc/cores/DllLoader/exports/emu_msvcrt.h @@ -111,7 +111,8 @@ extern "C" int dll_feof (FILE * stream); int dll_fread (void * buffer, size_t size, size_t count, FILE * stream); int dll_getc (FILE * stream); - FILE * dll_fopen (const char * filename, const char * mode); + FILE * dll_fopen(const char * filename, const char * mode); + int dll_fopen_s(FILE** pFile, const char * filename, const char * mode); int dll_fputc (int character, FILE * stream); int dll_putcchar (int character); int dll_fputs (const char * szLine , FILE* stream); From 9aa763d77ffb081fbaf72ec87d1e49f8056cb839 Mon Sep 17 00:00:00 2001 From: montellese Date: Mon, 16 Feb 2015 22:47:46 +0100 Subject: [PATCH 02/18] cmake: improve patch file/command handling for dependencies --- .../cmake/scripts/common/handle-depends.cmake | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/project/cmake/scripts/common/handle-depends.cmake b/project/cmake/scripts/common/handle-depends.cmake index 145d1242e1f42..c151fd8019420 100644 --- a/project/cmake/scripts/common/handle-depends.cmake +++ b/project/cmake/scripts/common/handle-depends.cmake @@ -74,21 +74,18 @@ function(add_addon_depends addon searchpath) endif() # if there's a CMakeLists.txt use it to prepare the build + set(PATCH_FILE ${BUILD_DIR}/${id}/tmp/patch.cmake) if(EXISTS ${dir}/CMakeLists.txt) - file(APPEND ${BUILD_DIR}/${id}/tmp/patch.cmake + file(APPEND ${PATCH_FILE} "file(COPY ${dir}/CMakeLists.txt DESTINATION ${BUILD_DIR}/${id}/src/${id})\n") - set(PATCH_COMMAND ${CMAKE_COMMAND} -P ${BUILD_DIR}/${id}/tmp/patch.cmake) - else() - set(PATCH_COMMAND "") endif() # check if we have patches to apply file(GLOB patches ${dir}/*.patch) list(SORT patches) foreach(patch ${patches}) - set(PATCH_COMMAND ${CMAKE_COMMAND} -P ${BUILD_DIR}/${id}/tmp/patch.cmake) - file(APPEND ${BUILD_DIR}/${id}/tmp/patch.cmake + file(APPEND ${PATCH_FILE} "execute_process(COMMAND patch -p1 -i ${patch})\n") endforeach() @@ -116,15 +113,20 @@ function(add_addon_depends addon searchpath) set(deps) endif() - if(CROSS_AUTOCONF) - set(PATCH_COMMAND ${CMAKE_COMMAND} -P ${BUILD_DIR}/${id}/tmp/patch.cmake) + if(CROSS_AUTOCONF AND AUTOCONF_FILES) foreach(afile ${AUTOCONF_FILES}) - file(APPEND ${BUILD_DIR}/${id}/tmp/patch.cmake + file(APPEND ${PATCH_FILE} "message(STATUS \"AUTOCONF: copying ${afile} to ${BUILD_DIR}/${id}/src/${id}\")\n file(COPY ${afile} DESTINATION ${BUILD_DIR}/${id}/src/${id})\n") endforeach() endif() + # if the patch file exists we need to set the PATCH_COMMAND + set(PATCH_COMMAND "") + if (EXISTS ${PATCH_FILE}) + set(PATCH_COMMAND ${CMAKE_COMMAND} -P ${PATCH_FILE}) + endif() + # prepare the setup of the call to externalproject_add() set(EXTERNALPROJECT_SETUP PREFIX ${BUILD_DIR}/${id} CMAKE_ARGS ${extraflags} ${BUILD_ARGS} From e9cf37c88f7873b470424dd37b5f07d75988b006 Mon Sep 17 00:00:00 2001 From: montellese Date: Mon, 16 Feb 2015 22:48:18 +0100 Subject: [PATCH 03/18] cmake: cleanup INSTALL_COMMAND/CONFIGURE_COMMAND handling for dependencies --- project/cmake/scripts/common/handle-depends.cmake | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/project/cmake/scripts/common/handle-depends.cmake b/project/cmake/scripts/common/handle-depends.cmake index c151fd8019420..f0ae25f9d79c9 100644 --- a/project/cmake/scripts/common/handle-depends.cmake +++ b/project/cmake/scripts/common/handle-depends.cmake @@ -91,6 +91,7 @@ function(add_addon_depends addon searchpath) # if there's an install.txt use it to properly install the built files + set(INSTALL_COMMAND "") if(EXISTS ${dir}/install.txt) set(INSTALL_COMMAND INSTALL_COMMAND ${CMAKE_COMMAND} -DINPUTDIR=${BUILD_DIR}/${id}/src/${id}-build/ @@ -101,8 +102,6 @@ function(add_addon_depends addon searchpath) -P ${PROJECT_SOURCE_DIR}/install.cmake) elseif(EXISTS ${dir}/noinstall.txt) set(INSTALL_COMMAND INSTALL_COMMAND "") - else() - set(INSTALL_COMMAND "") endif() # check if there's a deps.txt containing dependencies on other libraries @@ -145,9 +144,8 @@ function(add_addon_depends addon searchpath) GIT_TAG ${revision} "${EXTERNALPROJECT_SETUP}") else() - if(WIN32) - set(CONFIGURE_COMMAND "") - else() + set(CONFIGURE_COMMAND "") + if(NOT WIN32) # manually specify the configure command to be able to pass in the custom PKG_CONFIG_PATH set(CONFIGURE_COMMAND PKG_CONFIG_PATH=${OUTPUT_DIR}/lib/pkgconfig ${CMAKE_COMMAND} -DCMAKE_LIBRARY_PATH=${OUTPUT_DIR}/lib ${extraflags} ${BUILD_ARGS} From e095d04ca39f84012acfc7a36dc5629cb74364c7 Mon Sep 17 00:00:00 2001 From: wsnipex Date: Thu, 19 Feb 2015 10:35:07 +0100 Subject: [PATCH 04/18] cmake: add C++11 flag --- m4/ax_cxx_compile_stdcxx_11.m4 | 4 ++++ project/cmake/kodi-config.cmake.in | 3 +++ project/cmake/scripts/common/prepare-env.cmake | 10 +++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/m4/ax_cxx_compile_stdcxx_11.m4 b/m4/ax_cxx_compile_stdcxx_11.m4 index 2bc054d981628..cee493a1ef024 100644 --- a/m4/ax_cxx_compile_stdcxx_11.m4 +++ b/m4/ax_cxx_compile_stdcxx_11.m4 @@ -97,6 +97,8 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl CXXFLAGS="$ac_save_CXXFLAGS"]) if eval test x\$$cachevar = xyes; then CXXFLAGS="$CXXFLAGS $switch" + CXX11_SWITCH="$switch" + AC_SUBST(CXX11_SWITCH) ac_success=yes break fi @@ -117,6 +119,8 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl CXXFLAGS="$ac_save_CXXFLAGS"]) if eval test x\$$cachevar = xyes; then CXXFLAGS="$CXXFLAGS $switch" + CXX11_SWITCH="$switch" + AC_SUBST(CXX11_SWITCH) ac_success=yes break fi diff --git a/project/cmake/kodi-config.cmake.in b/project/cmake/kodi-config.cmake.in index 50e12a8a711a5..0e3b1580ad2b3 100644 --- a/project/cmake/kodi-config.cmake.in +++ b/project/cmake/kodi-config.cmake.in @@ -2,6 +2,9 @@ SET(KODI_INCLUDE_DIR @prefix@/include) SET(APP_NAME @APP_NAME@) SET(APP_VERSION_MAJOR @APP_VERSION_MAJOR@) SET(APP_VERSION_MINOR @APP_VERSION_MINOR@) +IF(NOT WIN32) + SET(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} @CXX11_SWITCH@") +ENDIF() LIST(APPEND CMAKE_MODULE_PATH @prefix@/lib/kodi) ADD_DEFINITIONS(@ARCH_DEFINES@) diff --git a/project/cmake/scripts/common/prepare-env.cmake b/project/cmake/scripts/common/prepare-env.cmake index 7edc54a78fe34..7df421cfc119e 100644 --- a/project/cmake/scripts/common/prepare-env.cmake +++ b/project/cmake/scripts/common/prepare-env.cmake @@ -41,6 +41,14 @@ if(NOT EXISTS "${XBMC_INCLUDE_DIR}/") file(MAKE_DIRECTORY ${XBMC_INCLUDE_DIR}) endif() +# make sure C++11 is always set +if(NOT WIN32) + string(REGEX MATCH "-std=(gnu|c)\\+\\+11" cxx11flag "${CMAKE_CXX_FLAGS}") + if(NOT cxx11flag) + set(CXX11_SWITCH "-std=c++11") + endif() +endif() + # kodi-config.cmake.in (further down) expects a "prefix" variable get_filename_component(prefix "${DEPENDS_PATH}" ABSOLUTE) @@ -77,4 +85,4 @@ foreach(binding ${bindings}) #endif #include \"kodi/${headerfile}\"") endif() -endforeach() \ No newline at end of file +endforeach() From aaa9f23e7b3bd28bdfad29661ea2b987f8426611 Mon Sep 17 00:00:00 2001 From: wsnipex Date: Mon, 16 Feb 2015 19:53:28 +0100 Subject: [PATCH 05/18] cmake: don't install binary addon dependencies in unified deps prefix path and make sure unified deps are not used for building bin addons --- tools/depends/xbmc-addons.include | 45 ++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/tools/depends/xbmc-addons.include b/tools/depends/xbmc-addons.include index abd9f2a21a0cd..af0589be320d5 100644 --- a/tools/depends/xbmc-addons.include +++ b/tools/depends/xbmc-addons.include @@ -1,3 +1,15 @@ +ADDON_DEPS_DIR := $(BUILDDIR)/$(PLATFORM)/build/depends +TOOLCHAIN_FILE = $(ADDON_DEPS_DIR)/share/Toolchain_binaddons.cmake + +ifeq ($(CROSS_COMPILING),yes) + DEPS = $(TOOLCHAIN_FILE) $(abs_top_srcdir)/target/config-binaddons.site $(abs_top_srcdir)/target/Toolchain_binaddons.cmake $(CONFIG_SUB) $(CONFIG_GUESS) + ifeq ($(OS),linux) + ifneq ($(TARGET_PLATFORM),raspberry-pi) + DEPS += linux-system-libs + endif + endif +endif + ifeq ($(PLATFORM),) PLATFORM = native endif @@ -16,9 +28,10 @@ ifneq ($(PREFIX),) INSTALL_PREFIX = $(PREFIX) endif - CMAKE_EXTRA += -DDEPENDS_PATH=$(PREFIX) -DAUTOCONF_FILES="$(CONFIG_SUB) $(CONFIG_GUESS)" + CMAKE_EXTRA += -DAUTOCONF_FILES="$(CONFIG_SUB) $(CONFIG_GUESS)" endif + all: .installed-$(PLATFORM) @@ -28,16 +41,40 @@ clean: distclean: rm -rf $(PLATFORM) .installed-$(PLATFORM) native -.installed-$(PLATFORM): +.installed-$(PLATFORM): $(DEPS) ifeq ($(PREFIX),) @echo @echo "ERROR: please set PREFIX to the xbmc install path e.g. make PREFIX=/usr/local" @exit 1 endif cd ../../../../project/cmake/addons/ && (git clean -xfd || rm -rf CMakeCache.txt CMakeFiles cmake_install.cmake build/*) - mkdir -p $(PLATFORM); \ + mkdir -p $(PLATFORM)/build/depends/share; \ + cp -f $(abs_top_srcdir)/target/config-binaddons.site $(PLATFORM)/build/depends/share/config.site ;\ cd $(PLATFORM); \ - $(CMAKE) -DCMAKE_INSTALL_PREFIX=$(INSTALL_PREFIX) $(CMAKE_EXTRA) \ + $(NATIVEPREFIX)/bin/cmake -DCMAKE_INSTALL_PREFIX=$(INSTALL_PREFIX) $(CMAKE_EXTRA) \ + -DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \ -DADDONS_TO_BUILD=$(ADDONS) ../../../../../project/cmake/addons/ -DBUILD_DIR=$(BUILDDIR)/$(PLATFORM)/build ;\ $(MAKE); touch $@ + +$(TOOLCHAIN_FILE): $(abs_top_srcdir)/target/Toolchain_binaddons.cmake + mkdir -p $(ADDON_DEPS_DIR)/share + sed "s|@CMAKE_FIND_ROOT_PATH@|$(ADDON_DEPS_DIR)|g" $(abs_top_srcdir)/target/Toolchain_binaddons.cmake > $@ + +linux-system-libs: + mkdir -p $(ADDON_DEPS_DIR)/lib/pkgconfig + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/x11.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/x11.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/x11.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/xproto.pc ] || ln -s /usr/share/pkgconfig/xproto.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/xproto.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/kbproto.pc ] || ln -s /usr/share/pkgconfig/kbproto.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/kbproto.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/xcb.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/xcb.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/xcb.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/pthread-stubs.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/pthread-stubs.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/pthread-stubs.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/xau.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/xau.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/xau.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/xdmcp.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/xdmcp.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/xdmcp.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/xext.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/xext.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/xext.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/xextproto.pc ] || ln -s /usr/share/pkgconfig/xextproto.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/xextproto.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/xt.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/xt.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/xt.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/ice.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/ice.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/ice.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/sm.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/sm.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/sm.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/xmu.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/xmu.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/xmu.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/libdrm.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/libdrm.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/libdrm.pc + From 64c52f1f45c49dce2a0a6d61e22d05baa1d53db1 Mon Sep 17 00:00:00 2001 From: montellese Date: Thu, 19 Feb 2015 17:15:36 +0100 Subject: [PATCH 06/18] cmake: add custom build step for addons between configure and build to force re-building changed files (thanks manuelm) --- project/cmake/addons/CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/project/cmake/addons/CMakeLists.txt b/project/cmake/addons/CMakeLists.txt index f355aeebc2f7a..6bab78f672b20 100644 --- a/project/cmake/addons/CMakeLists.txt +++ b/project/cmake/addons/CMakeLists.txt @@ -205,6 +205,14 @@ foreach(id ${downloaded_addons}) INSTALL_DIR ${CMAKE_INSTALL_PREFIX} CMAKE_ARGS ${BUILD_ARGS}) + # add a custom step to the external project between the configure and the build step which will always + # be executed and therefore forces a re-build of all changed files + externalproject_add_step(${id} forcebuild + COMMAND ${CMAKE_COMMAND} -E echo "Force build of ${id}" + DEPENDEES configure + DEPENDERS build + ALWAYS 1) + set(${id}_DEPENDS_DIR ${BUILD_DIR}/${id}/depends) if(EXISTS ${${id}_DEPENDS_DIR}) From 05f6bb379276746f96c79908e93be685fb44534d Mon Sep 17 00:00:00 2001 From: montellese Date: Thu, 26 Feb 2015 22:54:59 +0100 Subject: [PATCH 07/18] cmake: fix handling/passing of CMAKE_C_FLAGS/CMAKE_CXX_FLAGS --- project/cmake/addons/CMakeLists.txt | 4 +++- project/cmake/scripts/common/handle-depends.cmake | 11 ++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/project/cmake/addons/CMakeLists.txt b/project/cmake/addons/CMakeLists.txt index 6bab78f672b20..13cfe1ab6c57c 100644 --- a/project/cmake/addons/CMakeLists.txt +++ b/project/cmake/addons/CMakeLists.txt @@ -69,7 +69,9 @@ set(BUILD_ARGS -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DCMAKE_USER_MAKE_RULES_OVERRIDE=${CMAKE_USER_MAKE_RULES_OVERRIDE} -DCMAKE_USER_MAKE_RULES_OVERRIDE_CXX=${CMAKE_USER_MAKE_RULES_OVERRIDE_CXX} -DCORE_SYSTEM_NAME=${CORE_SYSTEM_NAME} - -DBUILD_SHARED_LIBS=1) + -DBUILD_SHARED_LIBS=1 + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}) if(PACKAGE_ZIP) # needed for project installing diff --git a/project/cmake/scripts/common/handle-depends.cmake b/project/cmake/scripts/common/handle-depends.cmake index f0ae25f9d79c9..b3bf3cd531abb 100644 --- a/project/cmake/scripts/common/handle-depends.cmake +++ b/project/cmake/scripts/common/handle-depends.cmake @@ -60,11 +60,12 @@ function(add_addon_depends addon searchpath) -DENABLE_STATIC=1 -DBUILD_SHARED_LIBS=0) # if there are no make rules override files available take care of manually passing on ARCH_DEFINES - # TODO: figure out if we should use -DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} ${ARCH_DEFINES}" and why it doesn't work - # TODO: figure out why this doesn't work for OSX32 and IOS/ATV2 - if(NOT CMAKE_USER_MAKE_RULES_OVERRIDE AND NOT CMAKE_USER_MAKE_RULES_OVERRIDE_CXX AND NOT APPLE) - list(APPEND BUILD_ARGS -DCMAKE_C_FLAGS=${ARCH_DEFINES} - -DCMAKE_CXX_FLAGS=${ARCH_DEFINES}) + if(NOT CMAKE_USER_MAKE_RULES_OVERRIDE AND NOT CMAKE_USER_MAKE_RULES_OVERRIDE_CXX) + # make sure we create strings, not lists + set(TMP_C_FLAGS "${CMAKE_C_FLAGS} ${ARCH_DEFINES}") + set(TMP_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARCH_DEFINES}") + list(APPEND BUILD_ARGS -DCMAKE_C_FLAGS=${TMP_C_FLAGS} + -DCMAKE_CXX_FLAGS=${TMP_CXX_FLAGS}) endif() if(CMAKE_TOOLCHAIN_FILE) From 5649f73c9682f12be43fe6272810c3124e642529 Mon Sep 17 00:00:00 2001 From: montellese Date: Tue, 27 Jan 2015 08:36:26 +0100 Subject: [PATCH 08/18] binary addons: add kodi-platform (and its dependency tinyxml) as a common dependency --- .../depends/common/kodi-platform/deps.txt | 2 ++ .../common/kodi-platform/kodi-platform.txt | 1 + .../depends/common/tinyxml/CMakeLists.txt | 23 +++++++++++++++++++ .../addons/depends/common/tinyxml/tinyxml.txt | 1 + 4 files changed, 27 insertions(+) create mode 100644 project/cmake/addons/depends/common/kodi-platform/deps.txt create mode 100644 project/cmake/addons/depends/common/kodi-platform/kodi-platform.txt create mode 100644 project/cmake/addons/depends/common/tinyxml/CMakeLists.txt create mode 100644 project/cmake/addons/depends/common/tinyxml/tinyxml.txt diff --git a/project/cmake/addons/depends/common/kodi-platform/deps.txt b/project/cmake/addons/depends/common/kodi-platform/deps.txt new file mode 100644 index 0000000000000..f0e8246220f4d --- /dev/null +++ b/project/cmake/addons/depends/common/kodi-platform/deps.txt @@ -0,0 +1,2 @@ +kodi +tinyxml \ No newline at end of file diff --git a/project/cmake/addons/depends/common/kodi-platform/kodi-platform.txt b/project/cmake/addons/depends/common/kodi-platform/kodi-platform.txt new file mode 100644 index 0000000000000..fb6916adf2858 --- /dev/null +++ b/project/cmake/addons/depends/common/kodi-platform/kodi-platform.txt @@ -0,0 +1 @@ +kodi-platform https://github.com/xbmc/kodi-platform 68315f0 diff --git a/project/cmake/addons/depends/common/tinyxml/CMakeLists.txt b/project/cmake/addons/depends/common/tinyxml/CMakeLists.txt new file mode 100644 index 0000000000000..5468bfb9d2de1 --- /dev/null +++ b/project/cmake/addons/depends/common/tinyxml/CMakeLists.txt @@ -0,0 +1,23 @@ +project(tinyxml) + +cmake_minimum_required(VERSION 2.8) + +set(SOURCES src/tinystr.cpp + src/tinyxml.cpp + src/tinyxmlerror.cpp + src/tinyxmlparser.cpp) + +if(WIN32) + add_definitions(-DWIN32 -D_LIB) +endif() +add_definitions(-DTIXML_USE_STL) + +add_library(tinyxml ${SOURCES}) + +include_directories(${PROJECT_SOURCE_DIR}/include) + +set(HEADERS ${PROJECT_SOURCE_DIR}/include/tinystr.h + ${PROJECT_SOURCE_DIR}/include/tinyxml.h) + +install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include) +install(TARGETS tinyxml DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) diff --git a/project/cmake/addons/depends/common/tinyxml/tinyxml.txt b/project/cmake/addons/depends/common/tinyxml/tinyxml.txt new file mode 100644 index 0000000000000..456b0c59e50c2 --- /dev/null +++ b/project/cmake/addons/depends/common/tinyxml/tinyxml.txt @@ -0,0 +1 @@ +tinyxml http://mirrors.xbmc.org/build-deps/sources/tinyxml-2.6.2_2.tar.gz From 7a7f000dde5934996339a9fe9a97688a8323220d Mon Sep 17 00:00:00 2001 From: montellese Date: Tue, 27 Jan 2015 08:36:58 +0100 Subject: [PATCH 09/18] cmake: always add kodi-platform as a dependency to all binary addons --- project/cmake/addons/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/project/cmake/addons/CMakeLists.txt b/project/cmake/addons/CMakeLists.txt index 13cfe1ab6c57c..0993a103289c8 100644 --- a/project/cmake/addons/CMakeLists.txt +++ b/project/cmake/addons/CMakeLists.txt @@ -215,6 +215,9 @@ foreach(id ${downloaded_addons}) DEPENDERS build ALWAYS 1) + # add "kodi-platform" as a dependency to every addon + add_dependencies(${id} kodi-platform) + set(${id}_DEPENDS_DIR ${BUILD_DIR}/${id}/depends) if(EXISTS ${${id}_DEPENDS_DIR}) From fb9ecec15f29e1ac32978d08d6d987396a943a7f Mon Sep 17 00:00:00 2001 From: montellese Date: Fri, 20 Jun 2014 09:34:55 +0200 Subject: [PATCH 10/18] addons: add pvr addons as a binary addon Add pvr.argustv, pvr.demo, pvr.dvblink, pvr.dvbviewer, pvr.hts, pvr.iptvsimple, pvr.mediaportal.tvserver, pvr.mythtv, pvr.nextpvr, pvr.njoy, pvr.vdr.vnsi, pvr.vuplus and pvr.wmc as binary addons. --- project/cmake/addons/addons/pvr.argustv/platforms.txt | 1 + project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt | 1 + project/cmake/addons/addons/pvr.demo/platforms.txt | 1 + project/cmake/addons/addons/pvr.demo/pvr.demo.txt | 1 + project/cmake/addons/addons/pvr.dvblink/platforms.txt | 1 + project/cmake/addons/addons/pvr.dvblink/pvr.dvblink.txt | 1 + project/cmake/addons/addons/pvr.dvbviewer/platforms.txt | 1 + project/cmake/addons/addons/pvr.dvbviewer/pvr.dvbviewer.txt | 1 + project/cmake/addons/addons/pvr.hts/platforms.txt | 1 + project/cmake/addons/addons/pvr.hts/pvr.hts.txt | 1 + project/cmake/addons/addons/pvr.iptvsimple/platforms.txt | 1 + project/cmake/addons/addons/pvr.iptvsimple/pvr.iptvsimple.txt | 1 + .../cmake/addons/addons/pvr.mediaportal.tvserver/platforms.txt | 1 + .../addons/pvr.mediaportal.tvserver/pvr.mediaportal.tvserver.txt | 1 + project/cmake/addons/addons/pvr.mythtv/platforms.txt | 1 + project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt | 1 + project/cmake/addons/addons/pvr.nextpvr/platforms.txt | 1 + project/cmake/addons/addons/pvr.nextpvr/pvr.nextpvr.txt | 1 + project/cmake/addons/addons/pvr.njoy/platforms.txt | 1 + project/cmake/addons/addons/pvr.njoy/pvr.njoy.txt | 1 + project/cmake/addons/addons/pvr.vdr.vnsi/platforms.txt | 1 + project/cmake/addons/addons/pvr.vdr.vnsi/pvr.vdr.vnsi.txt | 1 + project/cmake/addons/addons/pvr.vuplus/platforms.txt | 1 + project/cmake/addons/addons/pvr.vuplus/pvr.vuplus.txt | 1 + project/cmake/addons/addons/pvr.wmc/platforms.txt | 1 + project/cmake/addons/addons/pvr.wmc/pvr.wmc.txt | 1 + 26 files changed, 26 insertions(+) create mode 100644 project/cmake/addons/addons/pvr.argustv/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt create mode 100644 project/cmake/addons/addons/pvr.demo/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.demo/pvr.demo.txt create mode 100644 project/cmake/addons/addons/pvr.dvblink/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.dvblink/pvr.dvblink.txt create mode 100644 project/cmake/addons/addons/pvr.dvbviewer/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.dvbviewer/pvr.dvbviewer.txt create mode 100644 project/cmake/addons/addons/pvr.hts/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.hts/pvr.hts.txt create mode 100644 project/cmake/addons/addons/pvr.iptvsimple/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.iptvsimple/pvr.iptvsimple.txt create mode 100644 project/cmake/addons/addons/pvr.mediaportal.tvserver/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.mediaportal.tvserver/pvr.mediaportal.tvserver.txt create mode 100644 project/cmake/addons/addons/pvr.mythtv/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt create mode 100644 project/cmake/addons/addons/pvr.nextpvr/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.nextpvr/pvr.nextpvr.txt create mode 100644 project/cmake/addons/addons/pvr.njoy/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.njoy/pvr.njoy.txt create mode 100644 project/cmake/addons/addons/pvr.vdr.vnsi/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.vdr.vnsi/pvr.vdr.vnsi.txt create mode 100644 project/cmake/addons/addons/pvr.vuplus/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.vuplus/pvr.vuplus.txt create mode 100644 project/cmake/addons/addons/pvr.wmc/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.wmc/pvr.wmc.txt diff --git a/project/cmake/addons/addons/pvr.argustv/platforms.txt b/project/cmake/addons/addons/pvr.argustv/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.argustv/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt b/project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt new file mode 100644 index 0000000000000..bb928b6f64890 --- /dev/null +++ b/project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt @@ -0,0 +1 @@ +pvr.argustv https://github.com/kodi-pvr/pvr.argustv b6a58d3 \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.demo/platforms.txt b/project/cmake/addons/addons/pvr.demo/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.demo/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.demo/pvr.demo.txt b/project/cmake/addons/addons/pvr.demo/pvr.demo.txt new file mode 100644 index 0000000000000..71e18c0513ff3 --- /dev/null +++ b/project/cmake/addons/addons/pvr.demo/pvr.demo.txt @@ -0,0 +1 @@ +pvr.demo https://github.com/kodi-pvr/pvr.demo e457cf4 \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.dvblink/platforms.txt b/project/cmake/addons/addons/pvr.dvblink/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.dvblink/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.dvblink/pvr.dvblink.txt b/project/cmake/addons/addons/pvr.dvblink/pvr.dvblink.txt new file mode 100644 index 0000000000000..58e0d5a43c8dc --- /dev/null +++ b/project/cmake/addons/addons/pvr.dvblink/pvr.dvblink.txt @@ -0,0 +1 @@ +pvr.dvblink https://github.com/kodi-pvr/pvr.dvblink 10b9c1d \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.dvbviewer/platforms.txt b/project/cmake/addons/addons/pvr.dvbviewer/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.dvbviewer/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.dvbviewer/pvr.dvbviewer.txt b/project/cmake/addons/addons/pvr.dvbviewer/pvr.dvbviewer.txt new file mode 100644 index 0000000000000..8ebacac18bcd9 --- /dev/null +++ b/project/cmake/addons/addons/pvr.dvbviewer/pvr.dvbviewer.txt @@ -0,0 +1 @@ +pvr.dvbviewer https://github.com/kodi-pvr/pvr.dvbviewer 3420504 \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.hts/platforms.txt b/project/cmake/addons/addons/pvr.hts/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.hts/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.hts/pvr.hts.txt b/project/cmake/addons/addons/pvr.hts/pvr.hts.txt new file mode 100644 index 0000000000000..4c8068db0026b --- /dev/null +++ b/project/cmake/addons/addons/pvr.hts/pvr.hts.txt @@ -0,0 +1 @@ +pvr.hts https://github.com/kodi-pvr/pvr.hts 3bc77ae \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.iptvsimple/platforms.txt b/project/cmake/addons/addons/pvr.iptvsimple/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.iptvsimple/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.iptvsimple/pvr.iptvsimple.txt b/project/cmake/addons/addons/pvr.iptvsimple/pvr.iptvsimple.txt new file mode 100644 index 0000000000000..73358b76c9dc6 --- /dev/null +++ b/project/cmake/addons/addons/pvr.iptvsimple/pvr.iptvsimple.txt @@ -0,0 +1 @@ +pvr.iptvsimple https://github.com/kodi-pvr/pvr.iptvsimple f6ca894 \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.mediaportal.tvserver/platforms.txt b/project/cmake/addons/addons/pvr.mediaportal.tvserver/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.mediaportal.tvserver/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.mediaportal.tvserver/pvr.mediaportal.tvserver.txt b/project/cmake/addons/addons/pvr.mediaportal.tvserver/pvr.mediaportal.tvserver.txt new file mode 100644 index 0000000000000..534ede17b4a08 --- /dev/null +++ b/project/cmake/addons/addons/pvr.mediaportal.tvserver/pvr.mediaportal.tvserver.txt @@ -0,0 +1 @@ +pvr.mediaportal.tvserver https://github.com/kodi-pvr/pvr.mediaportal.tvserver 87422e6 \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.mythtv/platforms.txt b/project/cmake/addons/addons/pvr.mythtv/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.mythtv/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt b/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt new file mode 100644 index 0000000000000..9c77d989335b0 --- /dev/null +++ b/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt @@ -0,0 +1 @@ +pvr.mythtv https://github.com/kodi-pvr/pvr.mythtv 6e9cf98 \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.nextpvr/platforms.txt b/project/cmake/addons/addons/pvr.nextpvr/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.nextpvr/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.nextpvr/pvr.nextpvr.txt b/project/cmake/addons/addons/pvr.nextpvr/pvr.nextpvr.txt new file mode 100644 index 0000000000000..0d3df74776bc1 --- /dev/null +++ b/project/cmake/addons/addons/pvr.nextpvr/pvr.nextpvr.txt @@ -0,0 +1 @@ +pvr.nextpvr https://github.com/kodi-pvr/pvr.nextpvr 79557b2 \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.njoy/platforms.txt b/project/cmake/addons/addons/pvr.njoy/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.njoy/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.njoy/pvr.njoy.txt b/project/cmake/addons/addons/pvr.njoy/pvr.njoy.txt new file mode 100644 index 0000000000000..e33573b950e22 --- /dev/null +++ b/project/cmake/addons/addons/pvr.njoy/pvr.njoy.txt @@ -0,0 +1 @@ +pvr.njoy https://github.com/kodi-pvr/pvr.njoy dee3094 \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.vdr.vnsi/platforms.txt b/project/cmake/addons/addons/pvr.vdr.vnsi/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.vdr.vnsi/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.vdr.vnsi/pvr.vdr.vnsi.txt b/project/cmake/addons/addons/pvr.vdr.vnsi/pvr.vdr.vnsi.txt new file mode 100644 index 0000000000000..8d6f7707a4a42 --- /dev/null +++ b/project/cmake/addons/addons/pvr.vdr.vnsi/pvr.vdr.vnsi.txt @@ -0,0 +1 @@ +pvr.vdr.vnsi https://github.com/FernetMenta/pvr.vdr.vnsi 3cc618e \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.vuplus/platforms.txt b/project/cmake/addons/addons/pvr.vuplus/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.vuplus/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.vuplus/pvr.vuplus.txt b/project/cmake/addons/addons/pvr.vuplus/pvr.vuplus.txt new file mode 100644 index 0000000000000..e3983d824f7c8 --- /dev/null +++ b/project/cmake/addons/addons/pvr.vuplus/pvr.vuplus.txt @@ -0,0 +1 @@ +pvr.vuplus https://github.com/kodi-pvr/pvr.vuplus 6acc177 \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.wmc/platforms.txt b/project/cmake/addons/addons/pvr.wmc/platforms.txt new file mode 100644 index 0000000000000..baa6044435591 --- /dev/null +++ b/project/cmake/addons/addons/pvr.wmc/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.wmc/pvr.wmc.txt b/project/cmake/addons/addons/pvr.wmc/pvr.wmc.txt new file mode 100644 index 0000000000000..1be8ad5c8d907 --- /dev/null +++ b/project/cmake/addons/addons/pvr.wmc/pvr.wmc.txt @@ -0,0 +1 @@ +pvr.wmc https://github.com/kodi-pvr/pvr.wmc e4b5285 \ No newline at end of file From dae7f07607f1be6e708d0763e7a81089453491bf Mon Sep 17 00:00:00 2001 From: montellese Date: Sun, 22 Feb 2015 14:25:10 +0100 Subject: [PATCH 11/18] [win32] cmake: fix installation of binary addon DLLs when using Visual Studio --- project/cmake/scripts/common/addon-helpers.cmake | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/project/cmake/scripts/common/addon-helpers.cmake b/project/cmake/scripts/common/addon-helpers.cmake index 3f42ffa595707..e5a9abdfdf510 100644 --- a/project/cmake/scripts/common/addon-helpers.cmake +++ b/project/cmake/scripts/common/addon-helpers.cmake @@ -53,8 +53,14 @@ macro (build_addon target prefix libs) # Pack files together to create an archive INSTALL(DIRECTORY ${target} DESTINATION ./ COMPONENT ${target}-${${prefix}_VERSION}) IF(WIN32) - INSTALL(PROGRAMS ${CMAKE_BINARY_DIR}/${target}.dll - DESTINATION ${target} + # get the installation location for the addon's target + get_property(dll_location TARGET ${target} PROPERTY LOCATION) + # in case of a VC++ project the installation location contains a $(Configuration) VS variable + # we replace it with ${CMAKE_BUILD_TYPE} (which doesn't cover the case when the build configuration + # is changed within Visual Studio) + string(REPLACE "$(Configuration)" "${CMAKE_BUILD_TYPE}" dll_location "${dll_location}") + + INSTALL(PROGRAMS ${dll_location} DESTINATION ${target} COMPONENT ${target}-${${prefix}_VERSION}) ELSE(WIN32) INSTALL(TARGETS ${target} DESTINATION ${target} From cab87179465efa6bec5b8e6c0198ecc3cd2293a9 Mon Sep 17 00:00:00 2001 From: montellese Date: Wed, 25 Feb 2015 09:49:57 +0100 Subject: [PATCH 12/18] [win32] also install the PDB file for debug builds --- project/cmake/scripts/common/addon-helpers.cmake | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/project/cmake/scripts/common/addon-helpers.cmake b/project/cmake/scripts/common/addon-helpers.cmake index e5a9abdfdf510..b94df2aebd748 100644 --- a/project/cmake/scripts/common/addon-helpers.cmake +++ b/project/cmake/scripts/common/addon-helpers.cmake @@ -60,8 +60,16 @@ macro (build_addon target prefix libs) # is changed within Visual Studio) string(REPLACE "$(Configuration)" "${CMAKE_BUILD_TYPE}" dll_location "${dll_location}") + # install the generated DLL file INSTALL(PROGRAMS ${dll_location} DESTINATION ${target} COMPONENT ${target}-${${prefix}_VERSION}) + + IF(CMAKE_BUILD_TYPE MATCHES Debug) + # for debug builds also install the PDB file + get_filename_component(dll_directory ${dll_location} DIRECTORY) + INSTALL(FILES ${dll_directory}/${target}.pdb DESTINATION ${target} + COMPONENT ${target}-${${prefix}_VERSION}) + ENDIF() ELSE(WIN32) INSTALL(TARGETS ${target} DESTINATION ${target} COMPONENT ${target}-${${prefix}_VERSION}) From f4d3a84797c70bc227a97ccc31c8edaf86f7cf9b Mon Sep 17 00:00:00 2001 From: montellese Date: Sun, 27 Jul 2014 14:01:55 +0200 Subject: [PATCH 13/18] [win32] get rid of buildpvraddons.bat and update BuildSetup.bat --- project/Win32BuildSetup/BuildSetup.bat | 14 --- project/Win32BuildSetup/buildpvraddons.bat | 104 --------------------- 2 files changed, 118 deletions(-) delete mode 100644 project/Win32BuildSetup/buildpvraddons.bat diff --git a/project/Win32BuildSetup/BuildSetup.bat b/project/Win32BuildSetup/BuildSetup.bat index 8114e64af92f0..0455fa83e29b3 100644 --- a/project/Win32BuildSetup/BuildSetup.bat +++ b/project/Win32BuildSetup/BuildSetup.bat @@ -30,7 +30,6 @@ rem CONFIG START SET buildmode=ask SET promptlevel=prompt SET buildmingwlibs=true -SET buildpvraddons=true SET buildbinaryaddons=true SET exitcode=0 SET useshell=rxvt @@ -40,7 +39,6 @@ FOR %%b in (%1, %2, %3, %4, %5) DO ( IF %%b==noclean SET buildmode=noclean IF %%b==noprompt SET promptlevel=noprompt IF %%b==nomingwlibs SET buildmingwlibs=false - IF %%b==nopvraddons SET buildpvraddons=false IF %%b==nobinaryaddons SET buildbinaryaddons=false IF %%b==sh SET useshell=sh ) @@ -215,18 +213,6 @@ set WORKSPACE=%CD%\..\.. xcopy ..\..\sounds BUILD_WIN32\application\sounds /E /Q /I /Y /EXCLUDE:exclude.txt > NUL SET build_path=%CD% - IF %buildpvraddons%==true ( - ECHO ------------------------------------------------------------ - ECHO Building pvr addons... - call buildpvraddons.bat - IF %errorlevel%==1 ( - set DIETEXT="failed to build pvr addons" - goto DIE - ) - - IF EXIST error.log del error.log > NUL - ) - IF %buildbinaryaddons%==true ( ECHO ------------------------------------------------------------ ECHO Building addons... diff --git a/project/Win32BuildSetup/buildpvraddons.bat b/project/Win32BuildSetup/buildpvraddons.bat deleted file mode 100644 index 8fdc4e4db4360..0000000000000 --- a/project/Win32BuildSetup/buildpvraddons.bat +++ /dev/null @@ -1,104 +0,0 @@ -@ECHO OFF - -REM Batch file to download and build pvr-addons and place them in application's add-ons folder - -SET CUR_DIR=%CD% -SET EXITCODE=0 - -SET DEPS_DIR=..\BuildDependencies -SET TMP_DIR=%DEPS_DIR%\tmp - -SET LIBNAME=xbmc-pvr-addons -SET VERSION=2fb0fc22668b1efdec05e66161d6c419844ee9cd -SET SOURCE=%LIBNAME% -SET GIT_URL=git://github.com/opdenkamp/%LIBNAME%.git -SET SOURCE_DIR=%TMP_DIR%\%SOURCE% -SET BUILT_ADDONS_DIR=%SOURCE_DIR%\addons - -REM check if MSBuild.exe is used because it requires different command line switches -IF "%msbuildemitsolution%" == "1" ( - set OPTS_EXE=%SOURCE_DIR%\project\VS2010Express\xbmc-pvr-addons.sln /t:Build /p:Configuration="Release" /property:VCTargetsPath="%MSBUILDROOT%Microsoft.Cpp\v4.0\V120\\" /m -) ELSE ( - set OPTS_EXE=%SOURCE_DIR%\project\VS2010Express\xbmc-pvr-addons.sln /build Release -) - -REM Try wrapped msysgit - must be in the path -SET GITEXE=git.cmd -CALL %GITEXE% --help > NUL 2>&1 -IF errorlevel 1 GOTO nowrapmsysgit -GOTO work - -:nowrapmsysgit - -REM Fallback on regular msysgit - must be in the path -SET GITEXE=git.exe -%GITEXE% --help > NUL -IF errorlevel 9009 IF NOT errorlevel 9010 GOTO nomsysgit -GOTO work - -:nomsysgit - -REM Fallback on tgit.exe of TortoiseGit if available -SET GITEXE=tgit.exe -%GITEXE% --version > NUL 2>&1 -IF errorlevel 9009 IF NOT errorlevel 9010 GOTO error -GOTO work - - -:work -IF NOT EXIST "%TMP_DIR%" MD "%TMP_DIR%" - -REM clone the git repository into SOURCE_DIR -CALL %GITEXE% clone %GIT_URL% "%SOURCE_DIR%" > NUL 2>&1 -CD "%SOURCE_DIR%" -REM get the proper revision -CALL %GITEXE% checkout %VERSION% > NUL 2>&1 - -:build -REM run DownloadBuildDeps.bat of pvr-addons -CD "project\BuildDependencies" -CALL DownloadBuildDeps.bat > NUL 2>&1 -CD "%CUR_DIR%" - -REM build xbmc-pvr-addons.sln -ECHO Building PVR addons -"%MSBUILDROOT%12.0\bin\MSBuild.exe" %OPTS_EXE% - -IF %errorlevel%==1 ( - goto fail -) - -REM copy the built pvr addons into ADDONS_DIR -CD "%BUILT_ADDONS_DIR%" -SET ADDONS_DIR=..\..\..\..\Win32BuildSetup\BUILD_WIN32\addons\ - -REM exclude some files -ECHO addon.xml.in > exclude.txt -ECHO _win32.exp >> exclude.txt -ECHO _win32.lib >> exclude.txt -ECHO _win32.pdb >> exclude.txt -FOR /D %%A IN ("pvr.*") DO ( - IF EXIST "%%A\addon" ( - ECHO Installing %%A - XCOPY "%%A\addon\*" "%ADDONS_DIR%\%%A" /E /Q /I /Y /EXCLUDE:exclude.txt > NUL - ) -) -DEL exclude.txt > NUL -CD "%CUR_DIR%" - -REM cleanup temporary directories -RMDIR "%TMP_DIR%" /S /Q > NUL - -GOTO done - -:error -ECHO No git command available. Unable to fetch and build pvr-addons. -SET EXITCODE=1 - -:fail -ECHO Failed to build one or more pvr addons -SET EXITCODE=1 - -:done -SET GITEXE= -EXIT /B %EXITCODE% From 996b6a37f7381d6928eea7bd7332a05042b38ec2 Mon Sep 17 00:00:00 2001 From: montellese Date: Fri, 13 Feb 2015 22:40:25 +0100 Subject: [PATCH 14/18] [depends] add RBPI's firmware directory to CMAKE_FIND_ROOT_PATH and CMAKE_LIBRARY_PATH --- tools/depends/configure.in | 1 + tools/depends/target/Toolchain.cmake.in | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/tools/depends/configure.in b/tools/depends/configure.in index fb9f7760cb4e2..8e4607300d58b 100644 --- a/tools/depends/configure.in +++ b/tools/depends/configure.in @@ -498,6 +498,7 @@ AC_SUBST(use_toolchain) AC_SUBST(use_build_toolchain) AC_SUBST(use_tarballs) AC_SUBST(use_platform) +AC_SUBST(use_firmware) AC_SUBST(cross_compiling) AC_SUBST(platform_cflags) AC_SUBST(platform_cxxflags) diff --git a/tools/depends/target/Toolchain.cmake.in b/tools/depends/target/Toolchain.cmake.in index 857c21bf80251..943be731d3b17 100644 --- a/tools/depends/target/Toolchain.cmake.in +++ b/tools/depends/target/Toolchain.cmake.in @@ -29,6 +29,12 @@ SET(CMAKE_LINKER @LD@ CACHE FILEPATH "Linker") SET(CMAKE_FIND_ROOT_PATH @prefix@/@deps_dir@ @use_toolchain@ @use_toolchain@/usr @use_sdk_path@ @use_sdk_path@/usr @use_toolchain@/sysroot/usr) SET(CMAKE_LIBRARY_PATH @prefix@/@deps_dir@/lib:@use_toolchain@/usr/lib/@use_host@:@use_toolchain@/lib/@use_host@) +# add RBPI's firmware directories +IF("${CORE_SYSTEM_NAME}" STREQUAL "rbpi") + LIST(APPEND CMAKE_FIND_ROOT_PATH @use_firmware@/opt/vc) + LIST(APPEND CMAKE_LIBRARY_PATH @use_firmware@/opt/vc/lib) +ENDIF() + SET(CMAKE_C_FLAGS "@platform_cflags@ @platform_includes@ -isystem @prefix@/@deps_dir@/include") SET(CMAKE_CXX_FLAGS "@platform_cxxflags@ @platform_includes@ -isystem @prefix@/@deps_dir@/include") SET(CMAKE_CPP_FLAGS "@platform_cflags@ @platform_includes@ -isystem @prefix@/@deps_dir@/include") From b39251254de5fe8e4a9f00ebab21931c6fd3f5c6 Mon Sep 17 00:00:00 2001 From: wsnipex Date: Tue, 17 Feb 2015 13:37:31 +0100 Subject: [PATCH 15/18] [depends] add binary addon specific cmake Toolchain and autotools config.site --- tools/depends/configure.in | 3 +- .../target/Toolchain_binaddons.cmake.in | 53 ++++++ tools/depends/target/config-binaddons.site.in | 175 ++++++++++++++++++ tools/depends/xbmc-addons.include | 6 +- 4 files changed, 235 insertions(+), 2 deletions(-) create mode 100644 tools/depends/target/Toolchain_binaddons.cmake.in create mode 100644 tools/depends/target/config-binaddons.site.in diff --git a/tools/depends/configure.in b/tools/depends/configure.in index 8e4607300d58b..4a0553630ff45 100644 --- a/tools/depends/configure.in +++ b/tools/depends/configure.in @@ -2,7 +2,8 @@ AC_PREREQ(2.59) AC_INIT([xbmc-depends], [2.00], [http://trac.xbmc.org]) :${CFLAGS=""} AC_CONFIG_AUX_DIR([build-aux]) -AC_CONFIG_FILES([target/config.site native/config.site.native Makefile.include target/Toolchain.cmake]) +AC_CONFIG_FILES([target/config.site native/config.site.native Makefile.include target/Toolchain.cmake + target/config-binaddons.site target/Toolchain_binaddons.cmake]) AC_CANONICAL_HOST m4_include([../../m4/xbmc_arch.m4]) m4_include([../../m4/ax_cxx_compile_stdcxx_11.m4]) diff --git a/tools/depends/target/Toolchain_binaddons.cmake.in b/tools/depends/target/Toolchain_binaddons.cmake.in new file mode 100644 index 0000000000000..cdc2fe4f6cbec --- /dev/null +++ b/tools/depends/target/Toolchain_binaddons.cmake.in @@ -0,0 +1,53 @@ +set(CMAKE_SYSTEM_VERSION 1) +set(OS "@platform_os@") +set(CPU "@use_cpu@") +set(PLATFORM "@use_platform@") +if("${OS}" STREQUAL "linux" OR "${OS}" STREQUAL "android") + set(CMAKE_SYSTEM_NAME Linux) +endif() + +set(CMAKE_FIND_ROOT_PATH @CMAKE_FIND_ROOT_PATH@) + +# set special CORE_SYSTEM_NAME +if("${OS}" STREQUAL "android") + set(CORE_SYSTEM_NAME android) + list(APPEND CMAKE_FIND_ROOT_PATH @use_toolchain@/sysroot/usr) +elseif("${OS}" STREQUAL "ios") + set(CORE_SYSTEM_NAME ios) +elseif("${PLATFORM}" STREQUAL "raspberry-pi") + set(CORE_SYSTEM_NAME rbpi) + list(APPEND CMAKE_FIND_ROOT_PATH @use_firmware@/opt/vc) + set(CMAKE_LIBRARY_PATH @CMAKE_FIND_ROOT_PATH@/lib:@use_firmware@/opt/vc/lib) + set(CMAKE_INCLUDE_PATH @CMAKE_FIND_ROOT_PATH@/include:@use_firmware@/opt/vc/include) +endif() + + +if("${OS}" STREQUAL "ios" OR "${OS}" STREQUAL "osx") + set(CMAKE_OSX_SYSROOT @use_sdk_path@) + list(APPEND CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT} ${CMAKE_OSX_SYSROOT}/usr) + set(CMAKE_LIBRARY_PATH @CMAKE_FIND_ROOT_PATH@/lib:@use_sdk_path@/lib) + set(CMAKE_INCLUDE_PATH @CMAKE_FIND_ROOT_PATH@/include:@use_sdk_path@/include) +endif() + +# specify the cross compiler +set(CMAKE_C_COMPILER @CC@) +set(CMAKE_CXX_COMPILER @CXX@) +set(CMAKE_AR @AR@ CACHE FILEPATH "Archiver") +set(CMAKE_LINKER @LD@ CACHE FILEPATH "Linker") +set(CMAKE_C_FLAGS "@platform_cflags@ @platform_includes@") +set(CMAKE_CXX_FLAGS "@platform_cxxflags@ @platform_includes@") +set(CMAKE_CPP_FLAGS "@platform_cflags@ @platform_includes@") +set(ENV{CFLAGS} ${CMAKE_C_FLAGS}) +set(ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS}) +set(ENV{CPPFLAGS} ${CMAKE_CPP_FLAGS}) +SET(ENV{LDFLAGS} "@platform_ldflags@") + +# search for programs in the build host directories +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +# for libraries and headers in the target directories +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +if(NOT OS STREQUAL "linux") + set(ADDONS_PREFER_STATIC_LIBS ON) +endif() diff --git a/tools/depends/target/config-binaddons.site.in b/tools/depends/target/config-binaddons.site.in new file mode 100644 index 0000000000000..4248501146414 --- /dev/null +++ b/tools/depends/target/config-binaddons.site.in @@ -0,0 +1,175 @@ +if test "@cross_compiling@" = "yes"; then +cross_compiling=yes +host=@use_host@ +host_alias=@use_host@ +fi + +LD="@LD@" +CC="@CC@" +CXX="@CXX@" +CPP="@CPP@" +AR="@AR@" +AS="@AS@" +NM="@NM@" +STRIP="@STRIP@" +RANLIB="@RANLIB@" +OBJDUMP="@OBJDUMP@" + +if test "@platform_os@" = "ios" ; then + export AS="@prefix@/@tool_dir@/bin/gas-preprocessor.pl @CC@ -arch @use_cpu@" + export CCAS="--tag CC @prefix@/@tool_dir@/bin/gas-preprocessor.pl @CC@ -arch @use_cpu@" +fi + +CFLAGS="@platform_cflags@ @platform_includes@ $CFLAGS" +LDFLAGS="@platform_ldflags@ $LDFLAGS" +CXXFLAGS="@platform_cxxflags@ @platform_includes@ $CXXFLAGS" +CPPFLAGS="@platform_cflags@ @platform_includes@ $CPPFLAGS" + +export PKG_CONFIG=@prefix@/@tool_dir@/bin/pkg-config +export YASM=@prefix@/@tool_dir@/bin/yasm +export NASM=@prefix@/@tool_dir@/bin/yasm + +PATH=@prefix@/@tool_dir@/bin:@use_toolchain@/usr/bin:@use_toolchain@/bin:$PATH +LD_LIBRARY_PATH=@prefix@/@tool_dir@/lib:$LD_LIBRARY_PATH + +NATIVE_ROOT=@prefix@/@tool_dir@ + +#afps-ng and libomxil-bellagio +ac_cv_func_malloc_0_nonnull=yes + +#curl +ac_cv_file__dev_urandom=yes +ac_cv_lib_ssl_SSL_connect=yes + +#gettext and libiconv +gl_cv_header_working_stdint_h=yes + +#libcec +ac_cv_search_dlopen=-ldl + +#libgcrypt +if test "${PACKAGE_NAME}" = "libgcrypt"; then + ac_cv_path_GPG_ERROR_CONFIG=@prefix@/@deps_dir@/bin/gpg-error-config + ac_cv_sys_symbol_underscore=no + CFLAGS="$CFLAGS -std=gnu99" +fi + +#python +ac_cv_func_gethostbyname_r=no +ac_cv_header_sys_un_h=yes + +#rsxs/projectm +jm_cv_func_gettimeofday_clobber=no +mac_cv_pkg_ldflags=-lz +if test "@platform_os@" = "osx"; then + ac_cv_func_strnlen_working=no + ac_cv_header_stdbool_h=yes +fi + +#gnutls +gl_cv_func_gettimeofday_clobber=no + + +#samba +SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes +samba_cv_CC_NEGATIVE_ENUM_VALUES=yes +libreplace_cv_HAVE_C99_VSNPRINTF=yes +samba_cv_HAVE_C99_VSNPRINTF=yes +ac_cv_header_standards_h=no + +ac_cv_file__proc_sys_kernel_core_pattern=no +samba_cv_SYSCONF_SC_NPROCESSORS_ONLN=no +libreplace_cv_HAVE_GETADDRINFO=no + +if test "${PACKAGE_NAME}" = "Samba" -a "@platform_os@" = "ios"; then + # disable python support + export PYTHON_VER=0.0 + # ios/osx-10.6 issue with collision of _MD5 exported from a system lib + export LDFLAGS="${LDFLAGS} -Wl,-unexported_symbol,_MD5* -lc" +fi + +if test "${PACKAGE_NAME}" = "Samba" -a "@platform_os@" = "osx"; then + # disable python support + export PYTHON_VER=0.0 + # ios/osx-10.6 issue with collision of _MD5 exported from a system lib + export LDFLAGS="${LDFLAGS} -Wl,-unexported_symbol,_MD5* -lc" + # uses OPT instead of CFLAGS + export OPT="${CFLAGS}" + # various configure overrides + ac_cv_header_libunwind_h=no + ac_cv_header_execinfo_h=no + # fixes crash on 10.6 if xbmc is built using 10.7 SDK with 10.6 min + ac_cv_func_vdprintf=no +fi + +if test "@platform_os@" = "android"; then + #samba + SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes + libreplace_cv_READDIR_GETDIRENTRIES=no + libreplace_cv_READDIR_GETDENTS=no + samba_cv_REPLACE_READDIR=no + samba_cv_HAVE_WRFILE_KEYTAB=yes + samba_cv_HAVE_GETTIMEOFDAY_TZ=yes + samba_cv_USE_SETREUID=yes + samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes + samba_cv_HAVE_IFACE_IFCONF=yes + samba_cv_HAVE_MMAP=yes + samba_cv_HAVE_FCNTL_LOCK=yes + samba_cv_HAVE_SECURE_MKSTEMP=yes + samba_cv_CC_NEGATIVE_ENUM_VALUES=yes + samba_cv_fpie=no + samba_cv_have_longlong=yes + samba_cv_HAVE_OFF64_T=yes + samba_cv_HAVE_UT_UT_TYPE=no + ac_cv_func_srand=yes + ac_cv_func_rand=yes + + #python: android doesn't have libutil + PYTHON_LDFLAGS="-L@prefix@/@deps_dir@/lib -lpython${PYTHON_VERSION} -lc -ldl -lm -lexpat -lffi -lintl -lssl -lcrypto" + +fi + +if test "@platform_os@" = "ios"; then + # tweaks for libffi (ios must use llvm-gcc-4.2) + if test "${PACKAGE_NAME}" = "libffi" ; then + case "@use_xcode@" in + 3.*.* | 4.* | 4.*.*) + export CC="@use_toolchain@/usr/bin/llvm-gcc-4.2" + export CPP="@use_toolchain@/usr/bin/llvm-gcc-4.2 -E" + ;; + *) + export CC="@use_toolchain@/usr/bin/clang" + export CPP="@use_toolchain@/usr/bin/clang -E" + ;; + esac + unset AS + unset CCAS + fi + + # tweaks for flac + if test "${ac_unique_file}" = "src/flac/main.c" ; then + # compiler barfs if we use -O3/O2 for flac + export CFLAGS=`echo ${CFLAGS} | sed 's/-O3/-Os/'` + export CPPFLAGS=`echo ${CPPFLAGS} | sed 's/-O3/-Os/'` + fi + + # tweaks for libmpeg2 + if test "${PACKAGE_NAME}" = "libmpeg2" ; then + export LDFLAGS="${LDFLAGS} -Wl,-read_only_relocs,suppress" + fi +fi + +#Fix for older, broken android toolchains +if test "${PACKAGE_NAME}" = "FreeType" -a "@platform_os@" = "android"; then + CFLAGS="$CFLAGS -std=gnu99" +fi + +# These libs do not correctly export their symbols. Force them in case +# -fvisibility=hidden is set. +if test "${ac_unique_file}" = "src/flac/main.c" || \ + test "${ac_unique_file}" = "src/framing.c" || \ + test "${ac_unique_file}" = "src/libdvdcss.c" || \ + test "${PACKAGE_NAME}" = "libmpeg2" || \ + test "${PACKAGE_NAME}" = "libssh2" ; then + CFLAGS="$CFLAGS -fvisibility=default" +fi diff --git a/tools/depends/xbmc-addons.include b/tools/depends/xbmc-addons.include index af0589be320d5..adb440a19dae7 100644 --- a/tools/depends/xbmc-addons.include +++ b/tools/depends/xbmc-addons.include @@ -62,7 +62,7 @@ $(TOOLCHAIN_FILE): $(abs_top_srcdir)/target/Toolchain_binaddons.cmake sed "s|@CMAKE_FIND_ROOT_PATH@|$(ADDON_DEPS_DIR)|g" $(abs_top_srcdir)/target/Toolchain_binaddons.cmake > $@ linux-system-libs: - mkdir -p $(ADDON_DEPS_DIR)/lib/pkgconfig + mkdir -p $(ADDON_DEPS_DIR)/lib/pkgconfig $(ADDON_DEPS_DIR)/include [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/x11.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/x11.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/x11.pc [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/xproto.pc ] || ln -s /usr/share/pkgconfig/xproto.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/xproto.pc [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/kbproto.pc ] || ln -s /usr/share/pkgconfig/kbproto.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/kbproto.pc @@ -77,4 +77,8 @@ linux-system-libs: [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/sm.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/sm.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/sm.pc [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/xmu.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/xmu.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/xmu.pc [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/libdrm.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/libdrm.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/libdrm.pc + [ -f $(ADDON_DEPS_DIR)/lib/pkgconfig/gl.pc ] || ln -s /usr/lib/$(HOST)/pkgconfig/gl.pc $(ADDON_DEPS_DIR)/lib/pkgconfig/gl.pc + [ -f $(ADDON_DEPS_DIR)/lib/libGL.so ] || \ + (ln -s /usr/lib/$(HOST)/mesa $(ADDON_DEPS_DIR)/lib/mesa && ln -s $(ADDON_DEPS_DIR)/lib/mesa/libGL.so $(ADDON_DEPS_DIR)/lib/libGL.so) + [ -f $(ADDON_DEPS_DIR)/include/GL ] || ln -s /usr/include/GL $(ADDON_DEPS_DIR)/include/GL From ceeed0505ce9efebb6c1ecf46c17cc8df3525f99 Mon Sep 17 00:00:00 2001 From: montellese Date: Mon, 19 Jan 2015 21:11:40 +0100 Subject: [PATCH 16/18] [depends] build PVR addons as binary addons --- tools/depends/target/xbmc-pvr-addons/Makefile | 73 +------------------ 1 file changed, 4 insertions(+), 69 deletions(-) diff --git a/tools/depends/target/xbmc-pvr-addons/Makefile b/tools/depends/target/xbmc-pvr-addons/Makefile index b981edc3f71c9..f76160fae9014 100644 --- a/tools/depends/target/xbmc-pvr-addons/Makefile +++ b/tools/depends/target/xbmc-pvr-addons/Makefile @@ -1,70 +1,5 @@ -include ../../Makefile.include -#DEPS= ../../Makefile.include Makefile - -LIBNAME=xbmc-pvr-addons -VERSION=2fb0fc22668b1efdec05e66161d6c419844ee9cd -GIT_DIR=$(PREFIX)/gitrepos/$(LIBNAME).git -BASE_URL=git://github.com/opdenkamp/$(LIBNAME).git -DYLIB=$(PLATFORM)/addons/pvr.demo/.libs/libpvrdemo-addon.so -XBMC_ADDONSDIR=../../../../addons - -#tell git to use the addons repo rather than xbmc's repo -export GIT_DIR -export GIT_WORK_TREE=$(PLATFORM) - -#mysql_config is remarkably useless. Help configure find the right one. -export MYSQL_CONFIG=$(PREFIX)/bin/mysql_config - -# configuration settings -VERSION.TXT := $(XBMCROOT)/version.txt -APP_NAME=$(shell awk '/APP_NAME/ {print tolower($$2)}' $(VERSION.TXT)) -CONFIGURE=./configure --prefix=$(PREFIX) --libdir=$(PREFIX)/lib/$(APP_NAME)/addons --datadir=$(PREFIX)/share/$(APP_NAME)/addons --enable-addons-with-dependencies - -all: .installed-$(PLATFORM) - -$(GIT_DIR)/HEAD: - mkdir -p $(PREFIX)/gitrepos/ - cd $(PREFIX)/gitrepos/; git clone --bare $(BASE_URL) - -$(GIT_DIR)/current/$(VERSION): $(GIT_DIR)/HEAD $(DEPS) - git rev-list -1 $(VERSION) >/dev/null || git fetch origin "+refs/heads/*:refs/remotes/origin/*" - git rev-list -1 $(VERSION) >/dev/null - rm -rf $(GIT_DIR)/current; mkdir -p $(GIT_DIR)/current - touch $@ - -$(PLATFORM)/bootstrap: $(GIT_DIR)/current/$(VERSION) - rm -rf $(PLATFORM); mkdir -p $(PLATFORM) - git checkout $(VERSION) -- . - -$(PLATFORM)/configure: $(PLATFORM)/bootstrap - cd $(PLATFORM); ./bootstrap - -$(PLATFORM)/Makefile: $(PLATFORM)/configure - cd $(PLATFORM); $(CONFIGURE) - -$(DYLIB): $(PLATFORM)/Makefile - make -C $(PLATFORM) - touch $@ - -.installed-$(PLATFORM): $(DYLIB) -ifeq (darwin, $(findstring darwin, $(HOST))) - for ADDON in `find $(PLATFORM)/addons -type d -name "pvr.*"`; do \ - ADDON=`basename $$ADDON` ; \ - mkdir -p $(XBMC_ADDONSDIR)/$$ADDON ; \ - cp -PRf $(PLATFORM)/addons/$$ADDON/addon/* $(XBMC_ADDONSDIR)/$$ADDON ; \ - cp -Pf $(PLATFORM)/addons/$$ADDON/*.pvr $(XBMC_ADDONSDIR)/$$ADDON ; \ - install_name_tool -id "$$ADDON" `find "$(XBMC_ADDONSDIR)/$$ADDON" -type f -name "*.pvr"` ; \ - done -else - $(MAKE) -C $(PLATFORM) install -endif - touch $@ - -clean: - -make -C $(PLATFORM) clean - rm -f .installed-$(PLATFORM) - -distclean:: - rm -rf $(PLATFORM) .installed-$(PLATFORM) - rm -rf $(GIT_DIR)/current +BUILDDIR := $(shell pwd) +ADDONS = "pvr.argustv pvr.demo pvr.dvblink pvr.dvbviewer pvr.hts pvr.iptvsimple pvr.mediaportal.tvserver pvr.mythtv pvr.nextpvr pvr.njoy pvr.vdr.vnsi pvr.vuplus pvr.wmc" +-include ../../Makefile.include +include ../../xbmc-addons.include From efaf6f1c9ad13523cf0278c5cfaca1f76b83dc34 Mon Sep 17 00:00:00 2001 From: wsnipex Date: Sun, 22 Feb 2015 10:50:06 +0100 Subject: [PATCH 17/18] [depends] fix standalone building of binary addons --- tools/depends/xbmc-addons.include | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tools/depends/xbmc-addons.include b/tools/depends/xbmc-addons.include index adb440a19dae7..b010279cb20a9 100644 --- a/tools/depends/xbmc-addons.include +++ b/tools/depends/xbmc-addons.include @@ -3,6 +3,7 @@ TOOLCHAIN_FILE = $(ADDON_DEPS_DIR)/share/Toolchain_binaddons.cmake ifeq ($(CROSS_COMPILING),yes) DEPS = $(TOOLCHAIN_FILE) $(abs_top_srcdir)/target/config-binaddons.site $(abs_top_srcdir)/target/Toolchain_binaddons.cmake $(CONFIG_SUB) $(CONFIG_GUESS) + TOOLCHAIN = -DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) ifeq ($(OS),linux) ifneq ($(TARGET_PLATFORM),raspberry-pi) DEPS += linux-system-libs @@ -42,17 +43,20 @@ distclean: rm -rf $(PLATFORM) .installed-$(PLATFORM) native .installed-$(PLATFORM): $(DEPS) + cd ../../../../project/cmake/addons/ && (git clean -xfd || rm -rf CMakeCache.txt CMakeFiles cmake_install.cmake build/*) + mkdir -p $(PLATFORM) ifeq ($(PREFIX),) @echo @echo "ERROR: please set PREFIX to the xbmc install path e.g. make PREFIX=/usr/local" @exit 1 endif - cd ../../../../project/cmake/addons/ && (git clean -xfd || rm -rf CMakeCache.txt CMakeFiles cmake_install.cmake build/*) +ifeq ($(CROSS_COMPILING),yes) mkdir -p $(PLATFORM)/build/depends/share; \ - cp -f $(abs_top_srcdir)/target/config-binaddons.site $(PLATFORM)/build/depends/share/config.site ;\ - cd $(PLATFORM); \ - $(NATIVEPREFIX)/bin/cmake -DCMAKE_INSTALL_PREFIX=$(INSTALL_PREFIX) $(CMAKE_EXTRA) \ - -DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \ + cp -f $(abs_top_srcdir)/target/config-binaddons.site $(PLATFORM)/build/depends/share/config.site +endif + cd $(PLATFORM); \ + $(CMAKE) -DCMAKE_INSTALL_PREFIX=$(INSTALL_PREFIX) $(CMAKE_EXTRA) \ + $(TOOLCHAIN) \ -DADDONS_TO_BUILD=$(ADDONS) ../../../../../project/cmake/addons/ -DBUILD_DIR=$(BUILDDIR)/$(PLATFORM)/build ;\ $(MAKE); touch $@ From 98bf72d090d374a0b164e73c18aec7e5d06f7f0f Mon Sep 17 00:00:00 2001 From: wsnipex Date: Sun, 22 Feb 2015 22:21:29 +0100 Subject: [PATCH 18/18] cmake: ask for sudo rights on addon install to system dirs --- project/cmake/addons/CMakeLists.txt | 20 +++++++++++++++++- .../common/check_target_platform.cmake | 21 +++++++++++++++++++ tools/depends/xbmc-addons.include | 3 +++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/project/cmake/addons/CMakeLists.txt b/project/cmake/addons/CMakeLists.txt index 0993a103289c8..0afc622aeb566 100644 --- a/project/cmake/addons/CMakeLists.txt +++ b/project/cmake/addons/CMakeLists.txt @@ -110,6 +110,15 @@ endif() # include check_target_platform() function include(${APP_ROOT}/project/cmake/scripts/common/check_target_platform.cmake) +# check install permissions +set(ADDON_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}) +check_install_permissions(${CMAKE_INSTALL_PREFIX} can_write) +if(NOT ${can_write} AND NOT WIN32) + set(NEED_SUDO TRUE) + set(ADDON_INSTALL_DIR ${CMAKE_BINARY_DIR}/.install) + message(STATUS "NEED_SUDO: ${NEED_SUDO}") +endif() + ### prepare the build environment for the binary addons # copy the prepare-env.cmake script to the depends path so that we can include it file(COPY ${APP_ROOT}/project/cmake/scripts/common/prepare-env.cmake DESTINATION ${KODI_LIB_DIR}) @@ -204,7 +213,7 @@ endforeach() foreach(id ${downloaded_addons}) externalproject_add(${id} SOURCE_DIR ${BUILD_DIR}/${id} - INSTALL_DIR ${CMAKE_INSTALL_PREFIX} + INSTALL_DIR ${ADDON_INSTALL_DIR} CMAKE_ARGS ${BUILD_ARGS}) # add a custom step to the external project between the configure and the build step which will always @@ -229,3 +238,12 @@ foreach(id ${downloaded_addons}) endif() endif() endforeach() + +if(NEED_SUDO) + add_custom_target(install + COMMAND ${CMAKE_COMMAND} -E echo "\n\n" + COMMAND ${CMAKE_COMMAND} -E echo "WARNING: sudo rights needed to install to ${CMAKE_INSTALL_PREFIX}\n" + COMMAND sudo ${CMAKE_COMMAND} -E copy_directory ${ADDON_INSTALL_DIR}/ ${CMAKE_INSTALL_PREFIX}/ + COMMAND sudo ${CMAKE_COMMAND} -E remove_directory ${ADDON_INSTALL_DIR}/ + COMMAND sudo -k) +endif() diff --git a/project/cmake/scripts/common/check_target_platform.cmake b/project/cmake/scripts/common/check_target_platform.cmake index 19a9d1410c015..fc8b4036dfedb 100644 --- a/project/cmake/scripts/common/check_target_platform.cmake +++ b/project/cmake/scripts/common/check_target_platform.cmake @@ -38,3 +38,24 @@ function(check_target_platform dir target_platform build) # make the ${build} variable available to the calling script set(${build} "${${build}}" PARENT_SCOPE) endfunction() + +function(check_install_permissions install_dir have_perms) + # param[in] install_dir directory to check for write permissions + # param[out] have_perms wether we have permissions to install to install_dir + + set(${have_perms} TRUE) + execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${install_dir}/lib/kodi + COMMAND ${CMAKE_COMMAND} -E make_directory ${install_dir}/share/kodi + COMMAND ${CMAKE_COMMAND} -E touch ${install_dir}/lib/kodi/.cmake-inst-test ${install_dir}/share/kodi/.cmake-inst-test + RESULT_VARIABLE permtest) + + if(${permtest} GREATER 0) + message(STATUS "check_install_permissions: ${permtest}") + set(${have_perms} FALSE) + endif() + set(${have_perms} "${${have_perms}}" PARENT_SCOPE) + + if(EXISTS ${install_dir}/lib/kodi/.cmake-inst-test OR EXISTS ${install_dir}/share/kodi/.cmake-inst-test) + file(REMOVE ${install_dir}/lib/kodi/.cmake-inst-test ${install_dir}/share/kodi/.cmake-inst-test) + endif() +endfunction() diff --git a/tools/depends/xbmc-addons.include b/tools/depends/xbmc-addons.include index b010279cb20a9..d0662de9f9b33 100644 --- a/tools/depends/xbmc-addons.include +++ b/tools/depends/xbmc-addons.include @@ -59,6 +59,9 @@ endif $(TOOLCHAIN) \ -DADDONS_TO_BUILD=$(ADDONS) ../../../../../project/cmake/addons/ -DBUILD_DIR=$(BUILDDIR)/$(PLATFORM)/build ;\ $(MAKE); +ifneq ($(CROSS_COMPILING),yes) + @[ -w $(INSTALL_PREFIX) ] || $(MAKE) -C $(PLATFORM) install +endif touch $@ $(TOOLCHAIN_FILE): $(abs_top_srcdir)/target/Toolchain_binaddons.cmake