diff options
Diffstat (limited to 'project/cmake/addons')
49 files changed, 619 insertions, 0 deletions
diff --git a/project/cmake/addons/CMakeLists.txt b/project/cmake/addons/CMakeLists.txt new file mode 100644 index 0000000..0afc622 --- /dev/null +++ b/project/cmake/addons/CMakeLists.txt | |||
| @@ -0,0 +1,249 @@ | |||
| 1 | project(kodi-addons) | ||
| 2 | |||
| 3 | cmake_minimum_required(VERSION 2.8) | ||
| 4 | |||
| 5 | list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) | ||
| 6 | |||
| 7 | if(NOT CMAKE_BUILD_TYPE) | ||
| 8 | set(CMAKE_BUILD_TYPE Release) | ||
| 9 | endif() | ||
| 10 | |||
| 11 | if(NOT CORE_SYSTEM_NAME) | ||
| 12 | string(TOLOWER ${CMAKE_SYSTEM_NAME} CORE_SYSTEM_NAME) | ||
| 13 | endif() | ||
| 14 | |||
| 15 | include(ExternalProject) | ||
| 16 | |||
| 17 | ### setup all the necessary paths | ||
| 18 | if(NOT APP_ROOT AND NOT XBMCROOT) | ||
| 19 | set(APP_ROOT ${PROJECT_SOURCE_DIR}/../../..) | ||
| 20 | elseif(NOT APP_ROOT) | ||
| 21 | file(TO_CMAKE_PATH "${XBMCROOT}" APP_ROOT) | ||
| 22 | else() | ||
| 23 | file(TO_CMAKE_PATH "${APP_ROOT}" APP_ROOT) | ||
| 24 | endif() | ||
| 25 | get_filename_component(APP_ROOT "${APP_ROOT}" ABSOLUTE) | ||
| 26 | |||
| 27 | if(NOT BUILD_DIR) | ||
| 28 | set(BUILD_DIR "${CMAKE_BINARY_DIR}/build") | ||
| 29 | else() | ||
| 30 | file(TO_CMAKE_PATH "${BUILD_DIR}" BUILD_DIR) | ||
| 31 | endif() | ||
| 32 | get_filename_component(BUILD_DIR "${BUILD_DIR}" ABSOLUTE) | ||
| 33 | |||
| 34 | if(NOT DEPENDS_PATH) | ||
| 35 | set(DEPENDS_PATH "${BUILD_DIR}/depends") | ||
| 36 | else() | ||
| 37 | file(TO_CMAKE_PATH "${DEPENDS_PATH}" DEPENDS_PATH) | ||
| 38 | endif() | ||
| 39 | get_filename_component(DEPENDS_PATH "${DEPENDS_PATH}" ABSOLUTE) | ||
| 40 | |||
| 41 | if(NOT PLATFORM_DIR) | ||
| 42 | set(PLATFORM_DIR ${APP_ROOT}/project/cmake/platform/${CORE_SYSTEM_NAME}) | ||
| 43 | file(TO_CMAKE_PATH "${PLATFORM_DIR}" PLATFORM_DIR) | ||
| 44 | endif() | ||
| 45 | |||
| 46 | # make sure CMAKE_PREFIX_PATH is set | ||
| 47 | if(NOT CMAKE_PREFIX_PATH) | ||
| 48 | set(CMAKE_PREFIX_PATH "${DEPENDS_PATH}") | ||
| 49 | else() | ||
| 50 | file(TO_CMAKE_PATH "${CMAKE_PREFIX_PATH}" CMAKE_PREFIX_PATH) | ||
| 51 | list(APPEND CMAKE_PREFIX_PATH "${DEPENDS_PATH}") | ||
| 52 | endif() | ||
| 53 | |||
| 54 | # check for autoconf stuff to pass on | ||
| 55 | if(AUTOCONF_FILES) | ||
| 56 | separate_arguments(AUTOCONF_FILES) | ||
| 57 | set(CROSS_AUTOCONF "yes") | ||
| 58 | endif() | ||
| 59 | |||
| 60 | if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT CMAKE_INSTALL_PREFIX) | ||
| 61 | set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/output/addons") | ||
| 62 | endif() | ||
| 63 | list(APPEND CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}) | ||
| 64 | |||
| 65 | set(BUILD_ARGS -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} | ||
| 66 | -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> | ||
| 67 | -DPACKAGE_CONFIG_PATH=${DEPENDS_PATH}/lib/pkgconfig | ||
| 68 | -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} | ||
| 69 | -DCMAKE_USER_MAKE_RULES_OVERRIDE=${CMAKE_USER_MAKE_RULES_OVERRIDE} | ||
| 70 | -DCMAKE_USER_MAKE_RULES_OVERRIDE_CXX=${CMAKE_USER_MAKE_RULES_OVERRIDE_CXX} | ||
| 71 | -DCORE_SYSTEM_NAME=${CORE_SYSTEM_NAME} | ||
| 72 | -DBUILD_SHARED_LIBS=1 | ||
| 73 | -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} | ||
| 74 | -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}) | ||
| 75 | |||
| 76 | if(PACKAGE_ZIP) | ||
| 77 | # needed for project installing | ||
| 78 | list(APPEND BUILD_ARGS -DPACKAGE_ZIP=1) | ||
| 79 | MESSAGE("package zip specified") | ||
| 80 | endif() | ||
| 81 | |||
| 82 | if(CMAKE_TOOLCHAIN_FILE) | ||
| 83 | list(APPEND BUILD_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) | ||
| 84 | MESSAGE("toolchain specified") | ||
| 85 | MESSAGE(${BUILD_ARGS}) | ||
| 86 | endif() | ||
| 87 | |||
| 88 | if(NOT ADDONS_TO_BUILD) | ||
| 89 | set(ADDONS_TO_BUILD "all") | ||
| 90 | else() | ||
| 91 | message(STATUS "Building following addons: ${ADDONS_TO_BUILD}") | ||
| 92 | separate_arguments(ADDONS_TO_BUILD) | ||
| 93 | endif() | ||
| 94 | |||
| 95 | if(NOT KODI_LIB_DIR) | ||
| 96 | set(KODI_LIB_DIR "${DEPENDS_PATH}/lib/kodi") | ||
| 97 | else() | ||
| 98 | file(TO_CMAKE_PATH "${KODI_LIB_DIR}" KODI_LIB_DIR) | ||
| 99 | endif() | ||
| 100 | |||
| 101 | # check for platform specific stuff | ||
| 102 | if(EXISTS ${PLATFORM_DIR}/defines.txt) | ||
| 103 | file(STRINGS ${PLATFORM_DIR}/defines.txt platformdefines) | ||
| 104 | |||
| 105 | if(NOT ARCH_DEFINES AND platformdefines) | ||
| 106 | set(ARCH_DEFINES ${platformdefines}) | ||
| 107 | endif() | ||
| 108 | endif() | ||
| 109 | |||
| 110 | # include check_target_platform() function | ||
| 111 | include(${APP_ROOT}/project/cmake/scripts/common/check_target_platform.cmake) | ||
| 112 | |||
| 113 | # check install permissions | ||
| 114 | set(ADDON_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}) | ||
| 115 | check_install_permissions(${CMAKE_INSTALL_PREFIX} can_write) | ||
| 116 | if(NOT ${can_write} AND NOT WIN32) | ||
| 117 | set(NEED_SUDO TRUE) | ||
| 118 | set(ADDON_INSTALL_DIR ${CMAKE_BINARY_DIR}/.install) | ||
| 119 | message(STATUS "NEED_SUDO: ${NEED_SUDO}") | ||
| 120 | endif() | ||
| 121 | |||
| 122 | ### prepare the build environment for the binary addons | ||
| 123 | # copy the prepare-env.cmake script to the depends path so that we can include it | ||
| 124 | file(COPY ${APP_ROOT}/project/cmake/scripts/common/prepare-env.cmake DESTINATION ${KODI_LIB_DIR}) | ||
| 125 | |||
| 126 | # add the location of prepare-env.cmake to CMAKE_MODULE_PATH so that it is found | ||
| 127 | list(APPEND CMAKE_MODULE_PATH ${KODI_LIB_DIR}) | ||
| 128 | |||
| 129 | # include prepare-env.cmake which contains the logic to install the addon header bindings etc | ||
| 130 | include(prepare-env) | ||
| 131 | |||
| 132 | ### add the depends subdirectory for any general dependencies | ||
| 133 | add_subdirectory(depends) | ||
| 134 | |||
| 135 | ### get and build all the binary addons | ||
| 136 | # look for all the addons to be built | ||
| 137 | file(GLOB_RECURSE addons ${PROJECT_SOURCE_DIR}/addons/*.txt) | ||
| 138 | foreach(addon ${addons}) | ||
| 139 | if(NOT (addon MATCHES platforms.txt)) | ||
| 140 | file(STRINGS ${addon} def) | ||
| 141 | separate_arguments(def) | ||
| 142 | list(GET def 0 id) | ||
| 143 | |||
| 144 | list(FIND ADDONS_TO_BUILD ${id} idx) | ||
| 145 | if(idx GREATER -1 OR ADDONS_TO_BUILD STREQUAL "all") | ||
| 146 | get_filename_component(dir ${addon} PATH) | ||
| 147 | |||
| 148 | # check if the addon has a platforms.txt | ||
| 149 | set(platform_found FALSE) | ||
| 150 | check_target_platform(${dir} ${CORE_SYSTEM_NAME} platform_found) | ||
| 151 | |||
| 152 | if (${platform_found}) | ||
| 153 | # make sure the output directory is clean | ||
| 154 | if(EXISTS "${CMAKE_INSTALL_PREFIX}/${id}") | ||
| 155 | file(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}/${id}/") | ||
| 156 | endif() | ||
| 157 | |||
| 158 | # get the URL and revision of the addon | ||
| 159 | list(LENGTH def deflength) | ||
| 160 | list(GET def 1 url) | ||
| 161 | |||
| 162 | set(archive_name ${id}) | ||
| 163 | |||
| 164 | # if there is a 3rd parameter in the file, we consider it a git revision | ||
| 165 | if(deflength GREATER 2) | ||
| 166 | list(GET def 2 revision) | ||
| 167 | |||
| 168 | # Note: downloading specific revisions via http in the format below is probably github specific | ||
| 169 | # if we ever use other repositories, this might need adapting | ||
| 170 | set(url ${url}/archive/${revision}.tar.gz) | ||
| 171 | set(archive_name ${archive_name}-${revision}) | ||
| 172 | endif() | ||
| 173 | |||
| 174 | # download and extract the addon | ||
| 175 | if(NOT EXISTS ${BUILD_DIR}/download/${archive_name}.tar.gz) | ||
| 176 | # cleanup any of the previously downloaded archives of this addon | ||
| 177 | file(GLOB archives "${BUILD_DIR}/download/${id}*.tar.gz") | ||
| 178 | if(archives) | ||
| 179 | message(STATUS "Removing old archives of ${id}: ${archives}") | ||
| 180 | file(REMOVE ${archives}) | ||
| 181 | endif() | ||
| 182 | |||
| 183 | # download the addon | ||
| 184 | file(DOWNLOAD "${url}" "${BUILD_DIR}/download/${archive_name}.tar.gz" STATUS dlstatus LOG dllog SHOW_PROGRESS) | ||
| 185 | list(GET dlstatus 0 retcode) | ||
| 186 | if(NOT ${retcode} EQUAL 0) | ||
| 187 | message(FATAL_ERROR "ERROR downloading ${url} - status: ${dlstatus} log: ${dllog}") | ||
| 188 | endif() | ||
| 189 | endif() | ||
| 190 | |||
| 191 | # remove any previously extracted version of the addon | ||
| 192 | if(EXISTS "${BUILD_DIR}/${id}") | ||
| 193 | file(REMOVE_RECURSE "${BUILD_DIR}/${id}") | ||
| 194 | endif() | ||
| 195 | |||
| 196 | # extract the addon from the archive | ||
| 197 | execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzvf ${BUILD_DIR}/download/${archive_name}.tar.gz | ||
| 198 | WORKING_DIRECTORY ${BUILD_DIR}) | ||
| 199 | file(GLOB extract_dir "${BUILD_DIR}/${archive_name}*") | ||
| 200 | if(extract_dir STREQUAL "") | ||
| 201 | message(FATAL_ERROR "Error extracting ${BUILD_DIR}/download/${archive_name}.tar.gz") | ||
| 202 | else() | ||
| 203 | file(RENAME "${extract_dir}" "${BUILD_DIR}/${id}") | ||
| 204 | endif() | ||
| 205 | |||
| 206 | list(APPEND downloaded_addons ${id}) | ||
| 207 | |||
| 208 | endif() | ||
| 209 | endif() | ||
| 210 | endif() | ||
| 211 | endforeach() | ||
| 212 | |||
| 213 | foreach(id ${downloaded_addons}) | ||
| 214 | externalproject_add(${id} | ||
| 215 | SOURCE_DIR ${BUILD_DIR}/${id} | ||
| 216 | INSTALL_DIR ${ADDON_INSTALL_DIR} | ||
| 217 | CMAKE_ARGS ${BUILD_ARGS}) | ||
| 218 | |||
| 219 | # add a custom step to the external project between the configure and the build step which will always | ||
| 220 | # be executed and therefore forces a re-build of all changed files | ||
| 221 | externalproject_add_step(${id} forcebuild | ||
| 222 | COMMAND ${CMAKE_COMMAND} -E echo "Force build of ${id}" | ||
| 223 | DEPENDEES configure | ||
| 224 | DEPENDERS build | ||
| 225 | ALWAYS 1) | ||
| 226 | |||
| 227 | # add "kodi-platform" as a dependency to every addon | ||
| 228 | add_dependencies(${id} kodi-platform) | ||
| 229 | |||
| 230 | set(${id}_DEPENDS_DIR ${BUILD_DIR}/${id}/depends) | ||
| 231 | |||
| 232 | if(EXISTS ${${id}_DEPENDS_DIR}) | ||
| 233 | include(${APP_ROOT}/project/cmake/scripts/common/handle-depends.cmake) | ||
| 234 | add_addon_depends(${id} ${${id}_DEPENDS_DIR}) | ||
| 235 | if (${id}_DEPS AND NOT "${${id}_DEPS}" STREQUAL "") | ||
| 236 | message(STATUS "${id} DEPENDENCIES: ${${id}_DEPS}") | ||
| 237 | add_dependencies(${id} ${${id}_DEPS}) | ||
| 238 | endif() | ||
| 239 | endif() | ||
| 240 | endforeach() | ||
| 241 | |||
| 242 | if(NEED_SUDO) | ||
| 243 | add_custom_target(install | ||
| 244 | COMMAND ${CMAKE_COMMAND} -E echo "\n\n" | ||
| 245 | COMMAND ${CMAKE_COMMAND} -E echo "WARNING: sudo rights needed to install to ${CMAKE_INSTALL_PREFIX}\n" | ||
| 246 | COMMAND sudo ${CMAKE_COMMAND} -E copy_directory ${ADDON_INSTALL_DIR}/ ${CMAKE_INSTALL_PREFIX}/ | ||
| 247 | COMMAND sudo ${CMAKE_COMMAND} -E remove_directory ${ADDON_INSTALL_DIR}/ | ||
| 248 | COMMAND sudo -k) | ||
| 249 | endif() | ||
diff --git a/project/cmake/addons/README b/project/cmake/addons/README new file mode 100644 index 0000000..c66e668 --- /dev/null +++ b/project/cmake/addons/README | |||
| @@ -0,0 +1,68 @@ | |||
| 1 | KODI ADDONS | ||
| 2 | =========== | ||
| 3 | This directory contains the cmake-based buildsystem for addons. It looks into | ||
| 4 | the "addons" sub-directory and parses all *.txt files recursively. Each addon | ||
| 5 | must have its own <addon-id>.txt file in a separate sub-directory which must | ||
| 6 | follow the defined format: | ||
| 7 | <addon-id> <git-url> <git-revision> | ||
| 8 | where | ||
| 9 | * <addon-id> must be identical to the addon's ID as defined in the addon's | ||
| 10 | addon.xml | ||
| 11 | * <git-url> must be the URL of the git repository containing the addon. | ||
| 12 | * <git-revision> must be a valid git tag/branch/commit in the addon's git | ||
| 13 | repository which will be used for the build. | ||
| 14 | |||
| 15 | Reserved filenames (for additional information on how to build an addon) | ||
| 16 | are: | ||
| 17 | * platforms.txt: List of platforms to build an addon for (or "all"). It is | ||
| 18 | also supported to specify negated platforms with a leading exclamation mark | ||
| 19 | (i), e.g. "!windows". | ||
| 20 | Available platforms are: linux, windows, darwin, ios, android, rbpi | ||
| 21 | |||
| 22 | The buildsystem uses the following variables (which can be passed into it when | ||
| 23 | executing cmake with the -D<variable-name>=<value> option) to e.g. access | ||
| 24 | specific paths: | ||
| 25 | * ADDONS_TO_BUILD is a quoted, space delimited list of <addon-id>s that | ||
| 26 | you want to build (default is "all"). | ||
| 27 | * CMAKE_BUILD_TYPE specifies the type of the build. This can be either "Debug" | ||
| 28 | or "Release" (default is "Release"). | ||
| 29 | * CMAKE_INSTALL_PREFIX points to the directory where the built addons and their | ||
| 30 | additional files (addon.xml, resources ...) will be installed to (defaults | ||
| 31 | to <DEPENDS_PATH>). | ||
| 32 | * CMAKE_TOOLCHAIN_FILE can be used to pass a toolchain file into the add-on | ||
| 33 | builds. | ||
| 34 | * DEPENDS_PATH points to the directory containing the "include" and "lib" | ||
| 35 | directories of the addons' dependencies. | ||
| 36 | * APP_ROOT points to the root directory of the project (default is the | ||
| 37 | absolute representation of ../../.. starting from this directory). | ||
| 38 | * BUILD_DIR points to the directory where the addons and their dependencies | ||
| 39 | will be downloaded and built. | ||
| 40 | * PACKAGE_ZIP=1 will mean the add-ons will be 'packaged' into a common folder, | ||
| 41 | rather than being placed in <CMAKE_INSTALL_PREFIX>/lib/kodi/addons and | ||
| 42 | <CMAKE_INSTALL_PREFIX>/share/kodi/addons. | ||
| 43 | * ARCH_DEFINES specifies the platform-specific C/C++ preprocessor defines | ||
| 44 | (defaults to empty). | ||
| 45 | |||
| 46 | The buildsystem makes some assumptions about the environment which must be met | ||
| 47 | by whoever uses it: | ||
| 48 | * Any dependencies of the addons must already be built and their include and | ||
| 49 | library files must be present in the path pointed to by <CMAKE_PREFIX_PATH> (in | ||
| 50 | "include" and "lib" sub-directories). | ||
| 51 | |||
| 52 | To trigger the cmake-based buildsystem the following command must be executed | ||
| 53 | with <path> being the path to this directory (absolute or relative, allowing for | ||
| 54 | in-source and out-of-source builds). | ||
| 55 | |||
| 56 | cmake <path> -G <generator> | ||
| 57 | |||
| 58 | cmake supports multiple generators, see | ||
| 59 | http://www.cmake.org/cmake/help/v2.8.8/cmake.html#section_Generators for a list. | ||
| 60 | |||
| 61 | In case of additional options the call might look like this | ||
| 62 | |||
| 63 | cmake <path> [-G <generator>] \ | ||
| 64 | -DCMAKE_BUILD_TYPE=Release \ | ||
| 65 | -DAPP_ROOT="<path-to-app-root>" \ | ||
| 66 | -DARCH_DEFINES="-DTARGET_LINUX" \ | ||
| 67 | -DDEPENDS_PATH="<path-to-built-depends>" \ | ||
| 68 | -DCMAKE_INSTALL_PREFIX="<path-to-install-directory" | ||
diff --git a/project/cmake/addons/addons/audioencoder.flac/audioencoder.flac.txt b/project/cmake/addons/addons/audioencoder.flac/audioencoder.flac.txt new file mode 100644 index 0000000..5886cfa --- /dev/null +++ b/project/cmake/addons/addons/audioencoder.flac/audioencoder.flac.txt | |||
| @@ -0,0 +1 @@ | |||
| audioencoder.flac https://github.com/xbmc/audioencoder.flac 84acb14 | |||
diff --git a/project/cmake/addons/addons/audioencoder.flac/platforms.txt b/project/cmake/addons/addons/audioencoder.flac/platforms.txt new file mode 100644 index 0000000..174a52e --- /dev/null +++ b/project/cmake/addons/addons/audioencoder.flac/platforms.txt | |||
| @@ -0,0 +1 @@ | |||
| !ios \ No newline at end of file | |||
diff --git a/project/cmake/addons/addons/audioencoder.lame/audioencoder.lame.txt b/project/cmake/addons/addons/audioencoder.lame/audioencoder.lame.txt new file mode 100644 index 0000000..a55dc44 --- /dev/null +++ b/project/cmake/addons/addons/audioencoder.lame/audioencoder.lame.txt | |||
| @@ -0,0 +1 @@ | |||
| audioencoder.lame https://github.com/xbmc/audioencoder.lame 3eb59de | |||
diff --git a/project/cmake/addons/addons/audioencoder.lame/platforms.txt b/project/cmake/addons/addons/audioencoder.lame/platforms.txt new file mode 100644 index 0000000..baa6044 --- /dev/null +++ b/project/cmake/addons/addons/audioencoder.lame/platforms.txt | |||
| @@ -0,0 +1 @@ | |||
| all \ No newline at end of file | |||
diff --git a/project/cmake/addons/addons/audioencoder.vorbis/audioencoder.vorbis.txt b/project/cmake/addons/addons/audioencoder.vorbis/audioencoder.vorbis.txt new file mode 100644 index 0000000..8decf52 --- /dev/null +++ b/project/cmake/addons/addons/audioencoder.vorbis/audioencoder.vorbis.txt | |||
| @@ -0,0 +1 @@ | |||
| audioencoder.vorbis https://github.com/xbmc/audioencoder.vorbis d556a68 | |||
diff --git a/project/cmake/addons/addons/audioencoder.vorbis/platforms.txt b/project/cmake/addons/addons/audioencoder.vorbis/platforms.txt new file mode 100644 index 0000000..baa6044 --- /dev/null +++ b/project/cmake/addons/addons/audioencoder.vorbis/platforms.txt | |||
| @@ -0,0 +1 @@ | |||
| all \ No newline at end of file | |||
diff --git a/project/cmake/addons/addons/audioencoder.wav/audioencoder.wav.txt b/project/cmake/addons/addons/audioencoder.wav/audioencoder.wav.txt new file mode 100644 index 0000000..b3209f6 --- /dev/null +++ b/project/cmake/addons/addons/audioencoder.wav/audioencoder.wav.txt | |||
| @@ -0,0 +1 @@ | |||
| audioencoder.wav https://github.com/xbmc/audioencoder.wav 40aaedf | |||
diff --git a/project/cmake/addons/addons/audioencoder.wav/platforms.txt b/project/cmake/addons/addons/audioencoder.wav/platforms.txt new file mode 100644 index 0000000..baa6044 --- /dev/null +++ b/project/cmake/addons/addons/audioencoder.wav/platforms.txt | |||
| @@ -0,0 +1 @@ | |||
| all \ No newline at end of file | |||
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 0000000..baa6044 --- /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 0000000..bb928b6 --- /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 0000000..baa6044 --- /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 0000000..71e18c0 --- /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 0000000..baa6044 --- /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 0000000..58e0d5a --- /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 0000000..baa6044 --- /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 0000000..8ebacac --- /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 0000000..baa6044 --- /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 0000000..4c8068d --- /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 0000000..baa6044 --- /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 0000000..73358b7 --- /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 0000000..baa6044 --- /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 0000000..534ede1 --- /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 0000000..baa6044 --- /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 0000000..9c77d98 --- /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 0000000..baa6044 --- /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 0000000..0d3df74 --- /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 0000000..baa6044 --- /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 0000000..e33573b --- /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 0000000..baa6044 --- /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 0000000..8d6f770 --- /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 0000000..baa6044 --- /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 0000000..e3983d8 --- /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 0000000..baa6044 --- /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 0000000..1be8ad5 --- /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 | |||
diff --git a/project/cmake/addons/depends/CMakeLists.txt b/project/cmake/addons/depends/CMakeLists.txt new file mode 100644 index 0000000..760acf4 --- /dev/null +++ b/project/cmake/addons/depends/CMakeLists.txt | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | project(kodi-addons-depends) | ||
| 2 | |||
| 3 | cmake_minimum_required(VERSION 2.8) | ||
| 4 | |||
| 5 | list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) | ||
| 6 | |||
| 7 | if(NOT CMAKE_BUILD_TYPE) | ||
| 8 | set(CMAKE_BUILD_TYPE Release) | ||
| 9 | endif() | ||
| 10 | |||
| 11 | if(NOT CORE_SYSTEM_NAME) | ||
| 12 | string(TOLOWER ${CMAKE_SYSTEM_NAME} CORE_SYSTEM_NAME) | ||
| 13 | endif() | ||
| 14 | |||
| 15 | include(ExternalProject) | ||
| 16 | |||
| 17 | if(NOT DEPENDS_PATH) | ||
| 18 | set(DEPENDS_PATH ${PROJECT_SOURCE_DIR}/../build/depends) | ||
| 19 | else() | ||
| 20 | file(TO_CMAKE_PATH "${DEPENDS_PATH}" DEPENDS_PATH) | ||
| 21 | endif() | ||
| 22 | get_filename_component(DEPENDS_PATH "${DEPENDS_PATH}" ABSOLUTE) | ||
| 23 | list(APPEND CMAKE_PREFIX_PATH ${DEPENDS_PATH}) | ||
| 24 | |||
| 25 | if(NOT BUILD_DIR) | ||
| 26 | set(BUILD_DIR "${CMAKE_BINARY_DIR}/build") | ||
| 27 | else() | ||
| 28 | file(TO_CMAKE_PATH "${BUILD_DIR}" BUILD_DIR) | ||
| 29 | endif() | ||
| 30 | get_filename_component(BUILD_DIR "${BUILD_DIR}" ABSOLUTE) | ||
| 31 | |||
| 32 | ## use add_addon_depends to handle the cmake based dependencies | ||
| 33 | include(${APP_ROOT}/project/cmake/scripts/common/handle-depends.cmake) | ||
| 34 | add_addon_depends(depends "${PROJECT_SOURCE_DIR}") | ||
| 35 | |||
| 36 | ## if there's a platform-specific sub-directory containing a CMakeLists.txt, add it to the build as well | ||
| 37 | if(EXISTS ${PROJECT_SOURCE_DIR}/${CORE_SYSTEM_NAME}/CMakeLists.txt) | ||
| 38 | message(STATUS "Processing ${CORE_SYSTEM_NAME}") | ||
| 39 | add_subdirectory(${CORE_SYSTEM_NAME}) | ||
| 40 | else() | ||
| 41 | message(STATUS "No platform specific file ${PROJECT_SOURCE_DIR}/${CORE_SYSTEM_NAME}/CMakeLists.txt found") | ||
| 42 | endif() | ||
diff --git a/project/cmake/addons/depends/README b/project/cmake/addons/depends/README new file mode 100644 index 0000000..66e924a --- /dev/null +++ b/project/cmake/addons/depends/README | |||
| @@ -0,0 +1,61 @@ | |||
| 1 | KODI ADDON DEPENDENCIES | ||
| 2 | ======================= | ||
| 3 | This directory contains the cmake-based buildsystem for addon dependencies. It | ||
| 4 | looks into the "common" and the "<platform>/cmake" sub-directories and parses | ||
| 5 | all *.txt files recursively. Each dependency must have its own <dependency>.txt | ||
| 6 | file (either in the main sub-directory or in a separate subdirectory of the main | ||
| 7 | subdirectory) which must follow one of the defined formats: | ||
| 8 | * an empty file means that no extra downloads are necessary | ||
| 9 | * <dependency> | ||
| 10 | * <dependency> <url> | ||
| 11 | * <dependency> <git-url> <git-revision> | ||
| 12 | where | ||
| 13 | * <dependency> must be identical to the filename | ||
| 14 | * <url> must be the URL to an archive that is downloaded and extracted. | ||
| 15 | * <git-url> must be the URL of the git repository containing the | ||
| 16 | dependency. | ||
| 17 | * <git-revision> must be a valid git tag/branch/commit in the dependency's git | ||
| 18 | repository which will be used for the build. | ||
| 19 | |||
| 20 | Reserved filenames (for additional information on how to build a dependency) | ||
| 21 | are: | ||
| 22 | * CMakeLists.txt: build instructions for the dependency | ||
| 23 | * install.txt: instructions on how to install the dependency's built files | ||
| 24 | * noinstall.txt: no installation step required (content is ignored) | ||
| 25 | * flags.txt: additional build flags | ||
| 26 | * deps.txt: whitespace separated list of dependencies of this dependency | ||
| 27 | |||
| 28 | The buildsystem uses the following variables (which can be passed into it when | ||
| 29 | executing cmake with the -D<variable-name>=<value> option) to e.g. access | ||
| 30 | specific paths: | ||
| 31 | * CMAKE_BUILD_TYPE specifies the type of the build. This can be either "Debug" | ||
| 32 | or "Release" (default is "Release"). | ||
| 33 | * CMAKE_TOOLCHAIN_FILE can be used to pass a toolchain file into the add-on | ||
| 34 | builds. | ||
| 35 | * CORE_SYSTEM_NAME is the name of the platform (e.g. "linux" or "android") in | ||
| 36 | lower-case (defaults to lowercase(CMAKE_SYSTEM_NAME)). | ||
| 37 | * APP_ROOT points to the root directory of the project (default is the | ||
| 38 | absolute representation of ../../.. starting from this directory). | ||
| 39 | * DEPENDS_PATH points to the directory where the built dependencies | ||
| 40 | (their include and library file) will be installed to. | ||
| 41 | * ARCH_DEFINES specifies the platform-specific C/C++ preprocessor defines | ||
| 42 | (defaults to empty). | ||
| 43 | * DEPENDS_TO_BUILD is a quoted, space delimited list of <dependency>s that | ||
| 44 | you want to build (default is "all"). | ||
| 45 | |||
| 46 | To trigger the cmake-based buildsystem the following command must be executed | ||
| 47 | with <path> being the path to this directory (absolute or relative, allowing for | ||
| 48 | in-source and out-of-source builds). | ||
| 49 | |||
| 50 | cmake <path> -G <generator> | ||
| 51 | |||
| 52 | cmake supports multiple generators, see | ||
| 53 | http://www.cmake.org/cmake/help/v2.8.8/cmake.html#section_Generators for a list. | ||
| 54 | |||
| 55 | In case of additional options the call might look like this | ||
| 56 | |||
| 57 | cmake <path> [-G <generator>] \ | ||
| 58 | -DCMAKE_BUILD_TYPE=Release \ | ||
| 59 | -DAPP_ROOT="<path-to-project-root>" \ | ||
| 60 | -DARCH_DEFINES="-DTARGET_LINUX" \ | ||
| 61 | -DCMAKE_INSTALL_PREFIX="<path-to-install-directory" | ||
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 0000000..f0e8246 --- /dev/null +++ b/project/cmake/addons/depends/common/kodi-platform/deps.txt | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | kodi | ||
| 2 | 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 0000000..fb6916a --- /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 0000000..5468bfb --- /dev/null +++ b/project/cmake/addons/depends/common/tinyxml/CMakeLists.txt | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | project(tinyxml) | ||
| 2 | |||
| 3 | cmake_minimum_required(VERSION 2.8) | ||
| 4 | |||
| 5 | set(SOURCES src/tinystr.cpp | ||
| 6 | src/tinyxml.cpp | ||
| 7 | src/tinyxmlerror.cpp | ||
| 8 | src/tinyxmlparser.cpp) | ||
| 9 | |||
| 10 | if(WIN32) | ||
| 11 | add_definitions(-DWIN32 -D_LIB) | ||
| 12 | endif() | ||
| 13 | add_definitions(-DTIXML_USE_STL) | ||
| 14 | |||
| 15 | add_library(tinyxml ${SOURCES}) | ||
| 16 | |||
| 17 | include_directories(${PROJECT_SOURCE_DIR}/include) | ||
| 18 | |||
| 19 | set(HEADERS ${PROJECT_SOURCE_DIR}/include/tinystr.h | ||
| 20 | ${PROJECT_SOURCE_DIR}/include/tinyxml.h) | ||
| 21 | |||
| 22 | install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include) | ||
| 23 | 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 0000000..456b0c5 --- /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 | |||
diff --git a/project/cmake/addons/depends/windows/CMakeLists.txt b/project/cmake/addons/depends/windows/CMakeLists.txt new file mode 100644 index 0000000..4480f1e --- /dev/null +++ b/project/cmake/addons/depends/windows/CMakeLists.txt | |||
| @@ -0,0 +1,55 @@ | |||
| 1 | project(kodi-addons-depends-windows) | ||
| 2 | |||
| 3 | cmake_minimum_required(VERSION 2.8) | ||
| 4 | |||
| 5 | list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) | ||
| 6 | |||
| 7 | if(NOT CMAKE_BUILD_TYPE) | ||
| 8 | set(CMAKE_BUILD_TYPE Release) | ||
| 9 | endif() | ||
| 10 | |||
| 11 | include(ExternalProject) | ||
| 12 | |||
| 13 | if(NOT DEPENDS_PATH) | ||
| 14 | message(FATAL_ERROR "DEPENDS_PATH (${DEPENDS_PATH}) is not a valid target directory.") | ||
| 15 | else() | ||
| 16 | file(TO_CMAKE_PATH "${DEPENDS_PATH}" DEPENDS_PATH) | ||
| 17 | endif() | ||
| 18 | get_filename_component(DEPENDS_PATH "${DEPENDS_PATH}" ABSOLUTE) | ||
| 19 | list(APPEND CMAKE_PREFIX_PATH ${DEPENDS_PATH}) | ||
| 20 | |||
| 21 | if(NOT DEPENDS_TO_BUILD) | ||
| 22 | set(DEPENDS_TO_BUILD "all") | ||
| 23 | endif() | ||
| 24 | |||
| 25 | function(add_internal id url inputfile) | ||
| 26 | externalproject_add(${id} | ||
| 27 | URL ${url} | ||
| 28 | PREFIX build/${id} | ||
| 29 | CONFIGURE_COMMAND "" | ||
| 30 | BUILD_COMMAND "" | ||
| 31 | INSTALL_COMMAND ${CMAKE_COMMAND} | ||
| 32 | -DINPUTDIR=${PROJECT_BINARY_DIR}/build/${id}/src/${id} | ||
| 33 | -DINPUTFILE=${inputfile} | ||
| 34 | -DDESTDIR=${DEPENDS_PATH} | ||
| 35 | -P ${PROJECT_SOURCE_DIR}/install.cmake | ||
| 36 | ) | ||
| 37 | endfunction() | ||
| 38 | |||
| 39 | #find_package(7Zip REQUIRED) | ||
| 40 | |||
| 41 | file(GLOB_RECURSE download_input_files prebuilt/*.txt) | ||
| 42 | foreach(file ${download_input_files}) | ||
| 43 | if(NOT file MATCHES install.txt) | ||
| 44 | file(STRINGS ${file} def) | ||
| 45 | get_filename_component(dir ${file} PATH) | ||
| 46 | separate_arguments(def) | ||
| 47 | list(GET def 0 id) | ||
| 48 | |||
| 49 | list(FIND DEPENDS_TO_BUILD ${id} idx) | ||
| 50 | if(idx GREATER -1 OR DEPENDS_TO_BUILD STREQUAL "all") | ||
| 51 | list(GET def 1 url) | ||
| 52 | add_internal(${id} ${url} ${dir}/install.txt) | ||
| 53 | endif() | ||
| 54 | endif() | ||
| 55 | endforeach() | ||
diff --git a/project/cmake/addons/depends/windows/Find7Zip.cmake b/project/cmake/addons/depends/windows/Find7Zip.cmake new file mode 100644 index 0000000..82b0902 --- /dev/null +++ b/project/cmake/addons/depends/windows/Find7Zip.cmake | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | find_program(7ZIP_EXECUTABLE NAMES 7z.exe | ||
| 2 | HINTS PATHS "c:/Program Files/7-Zip") | ||
| 3 | |||
| 4 | include(FindPackageHandleStandardArgs) | ||
| 5 | find_package_handle_standard_args(7Zip DEFAULT_MSG 7ZIP_EXECUTABLE) | ||
| 6 | |||
| 7 | mark_as_advanced(7ZIP_EXECUTABLE) | ||
diff --git a/project/cmake/addons/depends/windows/README b/project/cmake/addons/depends/windows/README new file mode 100644 index 0000000..67dc594 --- /dev/null +++ b/project/cmake/addons/depends/windows/README | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | KODI WIN32 ADDON DEPENDENCIES | ||
| 2 | ============================= | ||
| 3 | This directory contains the cmake-based buildsystem for dependencies (currently | ||
| 4 | only prebuilt) used by one or multiple addons. The buildsystem looks into the | ||
| 5 | "prebuilt" sub-directory, downloads all the specified dependencies, extracts | ||
| 6 | them and places them into the "depends" sub-directory. | ||
| 7 | |||
| 8 | To trigger the cmake-based buildsystem the following command must be executed | ||
| 9 | with <path> being the path to this directory (absolute or relative, allowing for | ||
| 10 | in-source and out-of-source builds). | ||
| 11 | |||
| 12 | cmake <path> [-G <generator>] | ||
| 13 | |||
| 14 | cmake supports multiple generators, see | ||
| 15 | http://www.cmake.org/cmake/help/v2.8.8/cmake.html#section_Generators for a list. | ||
| 16 | For win32 builds one of the "Visual Studio XX" or the "NMake Makefiles" | ||
| 17 | generators is preferred. For the "NMake Makefiles" generator to work the above | ||
| 18 | command must be called from an environment prepared for VC++ builds (see | ||
| 19 | http://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx). | ||
diff --git a/project/cmake/addons/depends/windows/extract-7z.cmake b/project/cmake/addons/depends/windows/extract-7z.cmake new file mode 100644 index 0000000..95a2672 --- /dev/null +++ b/project/cmake/addons/depends/windows/extract-7z.cmake | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | get_filename_component(file ${URL} NAME) | ||
| 2 | file(DOWNLOAD ${URL} ${DEST}/${file}) | ||
| 3 | execute_process(COMMAND ${7ZIP_EXECUTABLE} -y x ${DEST}/${file} | ||
| 4 | WORKING_DIRECTORY ${DESTDIR}) | ||
| 5 | if(${file} MATCHES .tar) | ||
| 6 | string(REPLACE ".7z" "" tarball ${file}) | ||
| 7 | string(REPLACE ".lzma" "" tarball ${file}) | ||
| 8 | execute_process(COMMAND ${7ZIP_EXECUTABLE} -y x ${DESTDIR}/${tarball} | ||
| 9 | WORKING_DIRECTORY ${DESTDIR}) | ||
| 10 | endif() | ||
diff --git a/project/cmake/addons/depends/windows/extract-direct.cmake b/project/cmake/addons/depends/windows/extract-direct.cmake new file mode 100644 index 0000000..13cb74f --- /dev/null +++ b/project/cmake/addons/depends/windows/extract-direct.cmake | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | get_filename_component(file ${URL} NAME) | ||
| 2 | file(DOWNLOAD ${URL} ${DEST}/${file}) | ||
diff --git a/project/cmake/addons/depends/windows/install.cmake b/project/cmake/addons/depends/windows/install.cmake new file mode 100644 index 0000000..9a3adbb --- /dev/null +++ b/project/cmake/addons/depends/windows/install.cmake | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | if(EXISTS "${INPUTFILE}") | ||
| 2 | # if there's an input file we use it to determine which files to copy where | ||
| 3 | file(STRINGS ${INPUTFILE} FILES) | ||
| 4 | string(REPLACE "\n" ";" FILES "${FILES}") | ||
| 5 | foreach(file ${FILES}) | ||
| 6 | string(REPLACE " " ";" file "${file}") | ||
| 7 | list(GET file 0 dir) | ||
| 8 | list(GET file 1 dest) | ||
| 9 | list(LENGTH file deflength) | ||
| 10 | if(deflength GREATER 2) | ||
| 11 | list(GET file 2 copy) | ||
| 12 | endif() | ||
| 13 | file(GLOB files ${INPUTDIR}/${dir}) | ||
| 14 | foreach(instfile ${files}) | ||
| 15 | file(COPY ${instfile} DESTINATION ${DESTDIR}/${dest}) | ||
| 16 | if(copy) | ||
| 17 | file(COPY ${instfile} DESTINATION ${DESTDIR}/${copy}) | ||
| 18 | endif() | ||
| 19 | endforeach() | ||
| 20 | endforeach() | ||
| 21 | else() | ||
| 22 | # otherwise we assume that the content of the extracted archive is already well-formed and can just be copied | ||
| 23 | file(COPY ${INPUTDIR}/${dir} DESTINATION ${DESTDIR}) | ||
| 24 | endif() \ No newline at end of file | ||
diff --git a/project/cmake/addons/depends/windows/prebuilt/README b/project/cmake/addons/depends/windows/prebuilt/README new file mode 100644 index 0000000..a0c70d6 --- /dev/null +++ b/project/cmake/addons/depends/windows/prebuilt/README | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | KODI WIN32 PREBUILT ADDON DEPENDENCIES | ||
| 2 | ====================================== | ||
| 3 | This directory contains a file or sub-directory for every prebuilt dependency | ||
| 4 | used by one of the addons being built. There are two different modes supported. | ||
| 5 | Both include a file named <library-id>.txt which must follow the defined format | ||
| 6 | <library-id> <download-url> | ||
| 7 | |||
| 8 | If the archive, which the <download-url> points at, contains | ||
| 9 | * only the necessary files and in the proper directory structure (i.e. an | ||
| 10 | "include" and a "lib" directory) then the file must be put into this | ||
| 11 | directory and nothing else is needed. | ||
| 12 | * unnecessary files and/or does not follow the defined directory structure | ||
| 13 | (i.e. an "include" and a "lib" directory) then the file must be put into a | ||
| 14 | sub-directory named <library-id>. Furthermore an additional file called | ||
| 15 | "install.txt" must be placed in that sub-directory. install.txt contains a | ||
| 16 | line for every path/directory/file with a destination where it must be copied | ||
| 17 | to. It must follow the defined format | ||
| 18 | <source> <destination> [<copy-destination>] | ||
| 19 | where <source> must be an existing file, directory or a path containing | ||
| 20 | wildcards, <destination> and the optional <copy-destination> must be existing | ||
| 21 | directories. | ||
