From 0b9dd5668f1c090b820708b7b6144a3bd9b49729 Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 23 Mar 2015 16:03:05 +0100 Subject: sync with upstream --- project/cmake/addons/CMakeLists.txt | 12 ++++++- .../addons/addons/pvr.argustv/pvr.argustv.txt | 2 +- .../addons/addons/pvr.dvblink/pvr.dvblink.txt | 2 +- .../cmake/addons/addons/pvr.filmon/pvr.filmon.txt | 2 +- project/cmake/addons/addons/pvr.hts/pvr.hts.txt | 2 +- .../pvr.mediaportal.tvserver.txt | 2 +- .../cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt | 2 +- .../addons/addons/pvr.nextpvr/pvr.nextpvr.txt | 2 +- project/cmake/addons/addons/pvr.njoy/pvr.njoy.txt | 2 +- project/cmake/addons/addons/pvr.pctv/platforms.txt | 1 + project/cmake/addons/addons/pvr.pctv/pvr.pctv.txt | 1 + .../addons/addons/pvr.vdr.vnsi/pvr.vdr.vnsi.txt | 2 +- project/cmake/addons/addons/pvr.wmc/pvr.wmc.txt | 2 +- project/cmake/scripts/common/handle-depends.cmake | 20 ++++++++++- project/cmake/scripts/common/prepare-env.cmake | 41 ++++++++++++++++++++++ 15 files changed, 83 insertions(+), 12 deletions(-) create mode 100644 project/cmake/addons/addons/pvr.pctv/platforms.txt create mode 100644 project/cmake/addons/addons/pvr.pctv/pvr.pctv.txt (limited to 'project/cmake') diff --git a/project/cmake/addons/CMakeLists.txt b/project/cmake/addons/CMakeLists.txt index 83f424a..0773713 100644 --- a/project/cmake/addons/CMakeLists.txt +++ b/project/cmake/addons/CMakeLists.txt @@ -245,10 +245,13 @@ foreach(addon ${addons}) endif() if(NOT "${SOURCE_DIR}" STREQUAL "" AND EXISTS ${SOURCE_DIR}) + # create a list of addons we are building + list(APPEND ALL_ADDONS_BUILDING ${id}) + # setup the buildsystem for the addon externalproject_add(${id} SOURCE_DIR ${SOURCE_DIR} - 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 @@ -275,6 +278,9 @@ foreach(addon ${addons}) else() message(FATAL_ERROR "${id}: invalid or missing addon source directory at ${SOURCE_DIR}") endif() + else() + # add a dummy target for addons that are unsupported on this platform + add_custom_target(${id} COMMAND ${CMAKE_COMMAND} -E echo "IGNORED ${id} - not supported on ${CORE_SYSTEM_NAME}\n") endif() endif() endif() @@ -288,3 +294,7 @@ if(NEED_SUDO) COMMAND sudo ${CMAKE_COMMAND} -E remove_directory ${ADDON_INSTALL_DIR}/ COMMAND sudo -k) endif() + +# add custom target "supported_addons" that returns all addons that are supported on this platform +string(REPLACE ";" " " ALL_ADDONS_BUILDING "${ALL_ADDONS_BUILDING}") +add_custom_target(supported_addons COMMAND ${CMAKE_COMMAND} -E echo "ALL_ADDONS_BUILDING: ${ALL_ADDONS_BUILDING}" VERBATIM) diff --git a/project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt b/project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt index bb928b6..43df697 100644 --- a/project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt +++ b/project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt @@ -1 +1 @@ -pvr.argustv https://github.com/kodi-pvr/pvr.argustv b6a58d3 \ No newline at end of file +pvr.argustv https://github.com/kodi-pvr/pvr.argustv 6d1f1dd diff --git a/project/cmake/addons/addons/pvr.dvblink/pvr.dvblink.txt b/project/cmake/addons/addons/pvr.dvblink/pvr.dvblink.txt index 58e0d5a..ce9e369 100644 --- a/project/cmake/addons/addons/pvr.dvblink/pvr.dvblink.txt +++ b/project/cmake/addons/addons/pvr.dvblink/pvr.dvblink.txt @@ -1 +1 @@ -pvr.dvblink https://github.com/kodi-pvr/pvr.dvblink 10b9c1d \ No newline at end of file +pvr.dvblink https://github.com/kodi-pvr/pvr.dvblink 342a299 diff --git a/project/cmake/addons/addons/pvr.filmon/pvr.filmon.txt b/project/cmake/addons/addons/pvr.filmon/pvr.filmon.txt index 21e5f3a..afd4ba4 100644 --- a/project/cmake/addons/addons/pvr.filmon/pvr.filmon.txt +++ b/project/cmake/addons/addons/pvr.filmon/pvr.filmon.txt @@ -1 +1 @@ -pvr.filmon https://github.com/kodi-pvr/pvr.filmon a0ee270 +pvr.filmon https://github.com/kodi-pvr/pvr.filmon 0e5bad6 diff --git a/project/cmake/addons/addons/pvr.hts/pvr.hts.txt b/project/cmake/addons/addons/pvr.hts/pvr.hts.txt index fbdac0b..4b5530d 100644 --- a/project/cmake/addons/addons/pvr.hts/pvr.hts.txt +++ b/project/cmake/addons/addons/pvr.hts/pvr.hts.txt @@ -1 +1 @@ -pvr.hts https://github.com/kodi-pvr/pvr.hts abceaf8 +pvr.hts https://github.com/kodi-pvr/pvr.hts cc1b511 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 index 534ede1..f113fab 100644 --- a/project/cmake/addons/addons/pvr.mediaportal.tvserver/pvr.mediaportal.tvserver.txt +++ b/project/cmake/addons/addons/pvr.mediaportal.tvserver/pvr.mediaportal.tvserver.txt @@ -1 +1 @@ -pvr.mediaportal.tvserver https://github.com/kodi-pvr/pvr.mediaportal.tvserver 87422e6 \ No newline at end of file +pvr.mediaportal.tvserver https://github.com/kodi-pvr/pvr.mediaportal.tvserver 51e68c4 diff --git a/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt b/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt index 9c77d98..fb37936 100644 --- a/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt +++ b/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt @@ -1 +1 @@ -pvr.mythtv https://github.com/kodi-pvr/pvr.mythtv 6e9cf98 \ No newline at end of file +pvr.mythtv https://github.com/kodi-pvr/pvr.mythtv ae577ad diff --git a/project/cmake/addons/addons/pvr.nextpvr/pvr.nextpvr.txt b/project/cmake/addons/addons/pvr.nextpvr/pvr.nextpvr.txt index 0d3df74..95a56b9 100644 --- a/project/cmake/addons/addons/pvr.nextpvr/pvr.nextpvr.txt +++ b/project/cmake/addons/addons/pvr.nextpvr/pvr.nextpvr.txt @@ -1 +1 @@ -pvr.nextpvr https://github.com/kodi-pvr/pvr.nextpvr 79557b2 \ No newline at end of file +pvr.nextpvr https://github.com/kodi-pvr/pvr.nextpvr 7c6f1f8 diff --git a/project/cmake/addons/addons/pvr.njoy/pvr.njoy.txt b/project/cmake/addons/addons/pvr.njoy/pvr.njoy.txt index e33573b..967d5b9 100644 --- a/project/cmake/addons/addons/pvr.njoy/pvr.njoy.txt +++ b/project/cmake/addons/addons/pvr.njoy/pvr.njoy.txt @@ -1 +1 @@ -pvr.njoy https://github.com/kodi-pvr/pvr.njoy dee3094 \ No newline at end of file +pvr.njoy https://github.com/kodi-pvr/pvr.njoy 583f1cc diff --git a/project/cmake/addons/addons/pvr.pctv/platforms.txt b/project/cmake/addons/addons/pvr.pctv/platforms.txt new file mode 100644 index 0000000..baa6044 --- /dev/null +++ b/project/cmake/addons/addons/pvr.pctv/platforms.txt @@ -0,0 +1 @@ +all \ No newline at end of file diff --git a/project/cmake/addons/addons/pvr.pctv/pvr.pctv.txt b/project/cmake/addons/addons/pvr.pctv/pvr.pctv.txt new file mode 100644 index 0000000..8ba7d9c --- /dev/null +++ b/project/cmake/addons/addons/pvr.pctv/pvr.pctv.txt @@ -0,0 +1 @@ +pvr.pctv https://github.com/kodi-pvr/pvr.pctv 7929c6b 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 index 1d8e086..72b4954 100644 --- a/project/cmake/addons/addons/pvr.vdr.vnsi/pvr.vdr.vnsi.txt +++ b/project/cmake/addons/addons/pvr.vdr.vnsi/pvr.vdr.vnsi.txt @@ -1 +1 @@ -pvr.vdr.vnsi https://github.com/kodi-pvr/pvr.vdr.vnsi 9bebee1 \ No newline at end of file +pvr.vdr.vnsi https://github.com/kodi-pvr/pvr.vdr.vnsi 3a28e39 diff --git a/project/cmake/addons/addons/pvr.wmc/pvr.wmc.txt b/project/cmake/addons/addons/pvr.wmc/pvr.wmc.txt index 1be8ad5..1455925 100644 --- a/project/cmake/addons/addons/pvr.wmc/pvr.wmc.txt +++ b/project/cmake/addons/addons/pvr.wmc/pvr.wmc.txt @@ -1 +1 @@ -pvr.wmc https://github.com/kodi-pvr/pvr.wmc e4b5285 \ No newline at end of file +pvr.wmc https://github.com/kodi-pvr/pvr.wmc cf28e4c diff --git a/project/cmake/scripts/common/handle-depends.cmake b/project/cmake/scripts/common/handle-depends.cmake index b3bf3cd..4d78928 100644 --- a/project/cmake/scripts/common/handle-depends.cmake +++ b/project/cmake/scripts/common/handle-depends.cmake @@ -86,8 +86,26 @@ function(add_addon_depends addon searchpath) file(GLOB patches ${dir}/*.patch) list(SORT patches) foreach(patch ${patches}) + if(NOT PATCH_PROGRAM OR "${PATCH_PROGRAM}" STREQUAL "") + if(NOT PATCH_EXECUTABLE) + # find the path to the patch executable + find_program(PATCH_EXECUTABLE NAMES patch) + + if(NOT PATCH_EXECUTABLE) + message(FATAL_ERROR "Missing patch command (we looked in ${CMAKE_PREFIX_PATH})") + endif() + endif() + + # on windows "patch.exe" can only handle CR-LF line-endings so we + # need to force it to also handle LF-only line endings + set(PATCH_PROGRAM ${PATCH_EXECUTABLE}) + if(WIN32) + set(PATCH_PROGRAM "\"${PATCH_PROGRAM}\" --binary") + endif() + endif() + file(APPEND ${PATCH_FILE} - "execute_process(COMMAND patch -p1 -i ${patch})\n") + "execute_process(COMMAND ${PATCH_PROGRAM} -p1 -i \"${patch}\")\n") endforeach() diff --git a/project/cmake/scripts/common/prepare-env.cmake b/project/cmake/scripts/common/prepare-env.cmake index 7df421c..3413c45 100644 --- a/project/cmake/scripts/common/prepare-env.cmake +++ b/project/cmake/scripts/common/prepare-env.cmake @@ -86,3 +86,44 @@ foreach(binding ${bindings}) #include \"kodi/${headerfile}\"") endif() endforeach() + +### on windows we need a "patch" binary to be able to patch 3rd party sources +if(WIN32) + find_program(PATCH_FOUND NAMES patch patch.exe) + if(PATCH_FOUND) + message(STATUS "patch utility found at ${PATCH_FOUND}") + else() + set(PATCH_ARCHIVE_NAME "patch-2.5.9-7-bin-1") + set(PATCH_ARCHIVE "${PATCH_ARCHIVE_NAME}.zip") + set(PATCH_URL "http://mirrors.xbmc.org/build-deps/win32/${PATCH_ARCHIVE}") + set(PATCH_DOWNLOAD ${BUILD_DIR}/download/${PATCH_ARCHIVE}) + + # download the archive containing patch.exe + message(STATUS "Downloading patch utility from ${PATCH_URL}...") + file(DOWNLOAD "${PATCH_URL}" "${PATCH_DOWNLOAD}" STATUS PATCH_DL_STATUS LOG PATCH_LOG SHOW_PROGRESS) + list(GET PATCH_DL_STATUS 0 PATCH_RETCODE) + if(NOT ${PATCH_RETCODE} EQUAL 0) + message(FATAL_ERROR "ERROR downloading ${PATCH_URL} - status: ${PATCH_DL_STATUS} log: ${PATCH_LOG}") + endif() + + # extract the archive containing patch.exe + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzvf ${PATCH_DOWNLOAD} + WORKING_DIRECTORY ${BUILD_DIR}) + + # make sure the extraction worked and that patch.exe is there + set(PATCH_PATH ${BUILD_DIR}/${PATCH_ARCHIVE_NAME}) + set(PATCH_BINARY_PATH ${PATCH_PATH}/bin/patch.exe) + if(NOT EXISTS ${PATCH_PATH} OR NOT EXISTS ${PATCH_BINARY_PATH}) + message(FATAL_ERROR "ERROR extracting patch utility from ${PATCH_DOWNLOAD_DIR}") + endif() + + # copy patch.exe into the output directory + file(INSTALL ${PATCH_BINARY_PATH} DESTINATION ${DEPENDS_PATH}/bin) + + # make sure that cmake can find the copied patch.exe + find_program(PATCH_FOUND NAMES patch patch.exe) + if(NOT PATCH_FOUND) + message(FATAL_ERROR "ERROR installing patch utility from ${PATCH_BINARY_PATH} to ${DEPENDS_PATH}/bin") + endif() + endif() +endif() -- cgit v1.2.3