From 4830f27a40323fe859dc166337a2b861877b7121 Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 1 Jan 2018 13:40:09 +0100 Subject: sync with upstream --- cmake/addons/CMakeLists.txt | 8 +++- cmake/addons/depends/windowsstore/CMakeLists.txt | 52 ++++++++++++++++++++++ cmake/addons/depends/windowsstore/Install.cmake | 24 ++++++++++ cmake/addons/depends/windowsstore/README | 19 ++++++++ .../windowsstore/p8-platform/p8-platform.txt | 1 + cmake/addons/depends/windowsstore/prebuilt/README | 21 +++++++++ 6 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 cmake/addons/depends/windowsstore/CMakeLists.txt create mode 100644 cmake/addons/depends/windowsstore/Install.cmake create mode 100644 cmake/addons/depends/windowsstore/README create mode 100644 cmake/addons/depends/windowsstore/p8-platform/p8-platform.txt create mode 100644 cmake/addons/depends/windowsstore/prebuilt/README (limited to 'cmake/addons') diff --git a/cmake/addons/CMakeLists.txt b/cmake/addons/CMakeLists.txt index a6ea149..fd1d448 100644 --- a/cmake/addons/CMakeLists.txt +++ b/cmake/addons/CMakeLists.txt @@ -75,6 +75,11 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT CMAKE_INSTALL_PREFIX) endif() list(APPEND CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}) +if (CMAKE_SYSTEM_NAME STREQUAL WindowsStore) + set(BUILD_ARGS_ext -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} + -DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}) +endif() + set(BUILD_ARGS -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DCMAKE_INSTALL_PREFIX:PATH= -DPACKAGE_CONFIG_PATH=${ADDON_DEPENDS_PATH}/lib/pkgconfig @@ -86,7 +91,8 @@ set(BUILD_ARGS -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DCORE_SYSTEM_NAME=${CORE_SYSTEM_NAME} -DBUILD_SHARED_LIBS=1 -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} - -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}) + -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} + ${BUILD_ARGS_ext}) if(MSVC) # move cmake specific targets to a CMakePredefinedTargets folder in Visual Studio diff --git a/cmake/addons/depends/windowsstore/CMakeLists.txt b/cmake/addons/depends/windowsstore/CMakeLists.txt new file mode 100644 index 0000000..c8739c0 --- /dev/null +++ b/cmake/addons/depends/windowsstore/CMakeLists.txt @@ -0,0 +1,52 @@ +cmake_minimum_required(VERSION 3.1) +project(kodi-addons-depends-windows) + +list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +include(ExternalProject) + +if(NOT ADDON_DEPENDS_PATH) + message(FATAL_ERROR "ADDON_DEPENDS_PATH (${ADDON_DEPENDS_PATH}) is not a valid target directory.") +else() + file(TO_CMAKE_PATH "${ADDON_DEPENDS_PATH}" ADDON_DEPENDS_PATH) +endif() +get_filename_component(ADDON_DEPENDS_PATH "${ADDON_DEPENDS_PATH}" ABSOLUTE) +list(APPEND CMAKE_PREFIX_PATH ${ADDON_DEPENDS_PATH}) + +if(NOT DEPENDS_TO_BUILD) + set(DEPENDS_TO_BUILD "all") +endif() + +function(add_internal id url inputfile) + externalproject_add(${id} + URL ${url} + PREFIX build/${id} + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND ${CMAKE_COMMAND} + -DINPUTDIR=${PROJECT_BINARY_DIR}/build/${id}/src/${id} + -DINPUTFILE=${inputfile} + -DDESTDIR=${ADDON_DEPENDS_PATH} + -P ${PROJECT_SOURCE_DIR}/Install.cmake + ) +endfunction() + +file(GLOB_RECURSE download_input_files prebuilt/*.txt) +foreach(file ${download_input_files}) + if(NOT file MATCHES install.txt) + file(STRINGS ${file} def) + get_filename_component(dir ${file} DIRECTORY) + string(REPLACE " " ";" def ${def}) + list(GET def 0 id) + + list(FIND DEPENDS_TO_BUILD ${id} idx) + if(idx GREATER -1 OR DEPENDS_TO_BUILD STREQUAL "all") + list(GET def 1 url) + add_internal(${id} ${url} ${dir}/install.txt) + endif() + endif() +endforeach() diff --git a/cmake/addons/depends/windowsstore/Install.cmake b/cmake/addons/depends/windowsstore/Install.cmake new file mode 100644 index 0000000..9a3adbb --- /dev/null +++ b/cmake/addons/depends/windowsstore/Install.cmake @@ -0,0 +1,24 @@ +if(EXISTS "${INPUTFILE}") + # if there's an input file we use it to determine which files to copy where + file(STRINGS ${INPUTFILE} FILES) + string(REPLACE "\n" ";" FILES "${FILES}") + foreach(file ${FILES}) + string(REPLACE " " ";" file "${file}") + list(GET file 0 dir) + list(GET file 1 dest) + list(LENGTH file deflength) + if(deflength GREATER 2) + list(GET file 2 copy) + endif() + file(GLOB files ${INPUTDIR}/${dir}) + foreach(instfile ${files}) + file(COPY ${instfile} DESTINATION ${DESTDIR}/${dest}) + if(copy) + file(COPY ${instfile} DESTINATION ${DESTDIR}/${copy}) + endif() + endforeach() + endforeach() +else() + # otherwise we assume that the content of the extracted archive is already well-formed and can just be copied + file(COPY ${INPUTDIR}/${dir} DESTINATION ${DESTDIR}) +endif() \ No newline at end of file diff --git a/cmake/addons/depends/windowsstore/README b/cmake/addons/depends/windowsstore/README new file mode 100644 index 0000000..67dc594 --- /dev/null +++ b/cmake/addons/depends/windowsstore/README @@ -0,0 +1,19 @@ +KODI WIN32 ADDON DEPENDENCIES +============================= +This directory contains the cmake-based buildsystem for dependencies (currently +only prebuilt) used by one or multiple addons. The buildsystem looks into the +"prebuilt" sub-directory, downloads all the specified dependencies, extracts +them and places them into the "depends" sub-directory. + +To trigger the cmake-based buildsystem the following command must be executed +with being the path to this directory (absolute or relative, allowing for +in-source and out-of-source builds). + + cmake [-G ] + +cmake supports multiple generators, see +http://www.cmake.org/cmake/help/v2.8.8/cmake.html#section_Generators for a list. +For win32 builds one of the "Visual Studio XX" or the "NMake Makefiles" +generators is preferred. For the "NMake Makefiles" generator to work the above +command must be called from an environment prepared for VC++ builds (see +http://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx). diff --git a/cmake/addons/depends/windowsstore/p8-platform/p8-platform.txt b/cmake/addons/depends/windowsstore/p8-platform/p8-platform.txt new file mode 100644 index 0000000..db6f782 --- /dev/null +++ b/cmake/addons/depends/windowsstore/p8-platform/p8-platform.txt @@ -0,0 +1 @@ +p8-platform https://github.com/afedchin/platform.git win10 diff --git a/cmake/addons/depends/windowsstore/prebuilt/README b/cmake/addons/depends/windowsstore/prebuilt/README new file mode 100644 index 0000000..a0c70d6 --- /dev/null +++ b/cmake/addons/depends/windowsstore/prebuilt/README @@ -0,0 +1,21 @@ +KODI WIN32 PREBUILT ADDON DEPENDENCIES +====================================== +This directory contains a file or sub-directory for every prebuilt dependency +used by one of the addons being built. There are two different modes supported. +Both include a file named .txt which must follow the defined format + + +If the archive, which the points at, contains + * only the necessary files and in the proper directory structure (i.e. an + "include" and a "lib" directory) then the file must be put into this + directory and nothing else is needed. + * unnecessary files and/or does not follow the defined directory structure + (i.e. an "include" and a "lib" directory) then the file must be put into a + sub-directory named . Furthermore an additional file called + "install.txt" must be placed in that sub-directory. install.txt contains a + line for every path/directory/file with a destination where it must be copied + to. It must follow the defined format + [] + where must be an existing file, directory or a path containing + wildcards, and the optional must be existing + directories. -- cgit v1.2.3